Files
Work/cashflow/CALCDLG.CPP
2024-08-07 09:12:07 -04:00

110 lines
3.4 KiB
C++

#include <cashflow/calcdlg.hpp>
#include <cashflow/cashdefs.hpp>
#include <cashflow/cashflow.hpp>
#include <cashflow/ppydlg.hpp>
#include <cashflow/graphwnd.hpp>
#include <fpsheet/fpsheet.hpp>
#include <common/stdio.hpp>
#include <common/crsctrl.hpp>
CallbackData::ReturnType CalcDlg::initHandler(CallbackData &/*someCallbackData*/)
{
mlpGraphWindow=new GraphWindow(*this,Rect(3,254,558,146));
mlpCalcThread=new CalcThread();
mlpCalcSheet=new FPSheet(*this,360,(Factor-IssBal)+1,Rect(xPos,yPos,cxPos,cyPos),mFont);
mlpCalcSheet->show();
setColumnTitles();
setColumnTypes();
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType CalcDlg::destroyHandler(CallbackData &/*someCallbackData*/)
{
if(mlpCalcThread){delete mlpCalcThread;mlpCalcThread=0;}
if(mlpCalcSheet){delete mlpCalcSheet;mlpCalcSheet=0;}
if(mlpGraphWindow){delete mlpGraphWindow;mlpGraphWindow=0;}
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType CalcDlg::closeHandler(CallbackData &/*someCallbackData*/)
{
endDialog(TRUE);
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType CalcDlg::commandHandler(CallbackData &someCallbackData)
{
switch(someCallbackData.wmCommandID())
{
case IDCANCEL :
endDialog(FALSE);
break;
case IDOK :
generateFlows();
break;
case CALC_PREPAYMENTS :
if(sendMessage(CALC_PREPAYMENTS,BM_GETCHECK,0,0L))
{
handlePrepayments();
sendMessage(CALC_PREPAYMENTS,BM_SETCHECK,0,0L);
}
break;
case CALC_TERM :
break;
case CALC_COUPON :
break;
case CALC_PRINCIPAL :
break;
case CALC_CALCULATE :
generateFlows();
break;
}
return (CallbackData::ReturnType)FALSE;
}
void CalcDlg::setColumnTitles(void)
{
mlpCalcSheet->setColumnTitle(IssBal,String("IssBal"));
mlpCalcSheet->setColumnTitle(SMM,String("SMM"));
mlpCalcSheet->setColumnTitle(MtgPay,String("MtgPay"));
mlpCalcSheet->setColumnTitle(NetIntPay,String("NetIntPay"));
mlpCalcSheet->setColumnTitle(GrossInt,String("GrossInt"));
mlpCalcSheet->setColumnTitle(SchPrn,String("SchPrn"));
mlpCalcSheet->setColumnTitle(Prepay,String("Prepay"));
mlpCalcSheet->setColumnTitle(TotPrin,String("TotPrin"));
mlpCalcSheet->setColumnTitle(Cashflow,String("Cashflow"));
mlpCalcSheet->setColumnTitle(Factor,String("Factor"));
mlpCalcSheet->setColumnWidth(IssBal,9);
mlpCalcSheet->setColumnWidth(GrossInt,9);
mlpCalcSheet->setColumnWidth(Factor,9);
}
void CalcDlg::setColumnTypes(void)
{
Block<ColumnType> columnTypes;
columnTypes.insert(&ColumnType(IssBal,ColumnType::Money,"#########.##"));
columnTypes.insert(&ColumnType(SMM,ColumnType::Float,"#.########"));
columnTypes.insert(&ColumnType(MtgPay,ColumnType::Money,"#########.##"));
columnTypes.insert(&ColumnType(NetIntPay,ColumnType::Money,"#########.##"));
columnTypes.insert(&ColumnType(GrossInt,ColumnType::Money,"#########.##"));
columnTypes.insert(&ColumnType(SchPrn,ColumnType::Money,"#########.##"));
columnTypes.insert(&ColumnType(Prepay,ColumnType::Money,"#########.##"));
columnTypes.insert(&ColumnType(TotPrin,ColumnType::Money,"#########.##"));
columnTypes.insert(&ColumnType(Cashflow,ColumnType::Money,"#########.##"));
columnTypes.insert(&ColumnType(Factor,ColumnType::Float,"#.#########"));
mlpCalcSheet->setColumnType(columnTypes);
}
void CalcDlg::handlePrepayments(void)
{
PPYDlg ppyDlg;
if(ppyDlg.createDialog(*this,mPrePay))generateFlows();
}
void CalcDlg::generateFlows(void)
{
mlpCalcThread->startCalc(*this);
}