Exemplo n.º 1
0
 public function actionCopy($id)
 {
     $this->objectId = $id;
     $model = FinTimeDepositTran::findOne(['transactions_id' => $id, 'delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
     $renderView = 'copy';
     if (is_null($model)) {
         $model = false;
         $renderData = ['model' => $model];
         Yii::$app->session->setFlash(MasterValueUtils::FLASH_ERROR, Yii::t('common', 'The requested {record} does not exist.', ['record' => Yii::t('fin.models', 'Fixed Deposit')]));
     } else {
         // master value
         $phpFmShortDate = DateTimeUtils::getPhpDateFormat();
         $arrTimedepositTrantype = MasterValueUtils::getArrData('fin_timedeposit_trantype');
         $arrSavingAccount = ModelUtils::getArrData(FinAccount::find()->select(['account_id', 'account_name'])->where(['delete_flag' => 0, 'account_type' => 4])->orderBy('account_type, order_num'), 'account_id', 'account_name');
         $arrCurrentAssets = ModelUtils::getArrData(FinAccount::find()->select(['account_id', 'account_name'])->where(['delete_flag' => 0, 'account_type' => [1, 2]])->orderBy('account_type, order_num'), 'account_id', 'account_name');
         // submit data
         $postData = Yii::$app->request->post();
         $submitMode = isset($postData[MasterValueUtils::SM_MODE_NAME]) ? $postData[MasterValueUtils::SM_MODE_NAME] : false;
         // populate model attributes with user inputs
         $model->load($postData);
         // reset value
         if (Yii::$app->request->getIsGet()) {
             $openingDate = DateTimeUtils::getDateFromDB($model->opening_date);
             $closingDate = DateTimeUtils::getDateFromDB($model->closing_date);
             $dateDiff = $closingDate->diff($openingDate);
             $interval = 'P' . $dateDiff->m . 'M';
             DateTimeUtils::addDateTime($closingDate, $interval, null, false);
             $model->opening_date = $model->closing_date;
             $model->closing_date = $closingDate->format(DateTimeUtils::FM_DB_DATE);
             $model->interest_add = 0;
             $model->add_flag = MasterValueUtils::MV_FIN_TIMEDP_TRANTYPE_ADDING;
         }
         // init value
         FinTimeDepositTran::$_PHP_FM_SHORTDATE = $phpFmShortDate;
         FinTimeDepositTran::$_ARR_SAVING_ACOUNT = $arrSavingAccount;
         $model->scenario = MasterValueUtils::SCENARIO_COPY;
         $renderData = ['model' => $model, 'phpFmShortDate' => $phpFmShortDate, 'arrTimedepositTrantype' => $arrTimedepositTrantype, 'arrSavingAccount' => $arrSavingAccount, 'arrCurrentAssets' => $arrCurrentAssets];
         switch ($submitMode) {
             case MasterValueUtils::SM_MODE_INPUT:
                 $isValid = $model->validate();
                 if ($isValid) {
                     $renderView = 'confirm';
                     $renderData['formMode'] = [MasterValueUtils::PG_MODE_NAME => MasterValueUtils::PG_MODE_COPY];
                 }
                 break;
             case MasterValueUtils::SM_MODE_CONFIRM:
                 $isValid = $model->validate();
                 if ($isValid) {
                     $result = $this->copyFixedDeposit($model);
                     if ($result === true) {
                         Yii::$app->session->setFlash(MasterValueUtils::FLASH_SUCCESS, Yii::t('common', '{record} has been saved successfully.', ['record' => Yii::t('fin.models', 'Fixed Deposit')]));
                         return Yii::$app->getResponse()->redirect(Url::to(['index']));
                     } else {
                         Yii::$app->session->setFlash(MasterValueUtils::FLASH_ERROR, $result);
                         $renderView = 'confirm';
                         $renderData['formMode'] = [MasterValueUtils::PG_MODE_NAME => MasterValueUtils::PG_MODE_COPY];
                     }
                 }
                 break;
             case MasterValueUtils::SM_MODE_BACK:
                 break;
             default:
                 break;
         }
     }
     // render GUI
     return $this->render($renderView, $renderData);
 }
Exemplo n.º 2
0
 public function actionAssets()
 {
     $model = new FinTotalAssetsMonth();
     $fmShortDatePhp = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_PHP, null);
     $startDateJui = DateTimeUtils::parse('20151101', DateTimeUtils::FM_DEV_DATE, $fmShortDatePhp);
     $fmKeyPhp = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_PHP, null, DateTimeUtils::FM_KEY_FMONTH);
     $fmKeyJui = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_JUI, null, DateTimeUtils::FM_KEY_FMONTH);
     $td = DateTimeUtils::getNow();
     // is get page than reset value
     if (Yii::$app->request->getIsGet()) {
         $tdTimestamp = $td->getTimestamp();
         $tdInfo = getdate($tdTimestamp);
         $thismonth = $td->format($fmKeyPhp);
         // for report Model
         $model->fmonth = $thismonth;
         // for search Model
         $model->fmonth_to = $thismonth;
         $model->fmonth_from = DateTimeUtils::parse($tdInfo[DateTimeUtils::FN_KEY_GETDATE_YEAR] - 1 . '0101', DateTimeUtils::FM_DEV_DATE, $fmKeyPhp);
     } else {
         // submit data
         $postData = Yii::$app->request->post();
         $model->load($postData);
         $submitMode = isset($postData[MasterValueUtils::SM_MODE_NAME]) ? $postData[MasterValueUtils::SM_MODE_NAME] : false;
         switch ($submitMode) {
             case MasterValueUtils::SM_MODE_INPUT:
                 $reportMonthStr = DateTimeUtils::parse($model->fmonth, $fmKeyPhp, DateTimeUtils::FM_DEV_YM) . '01';
                 $reportMonthObj = DateTimeUtils::parse($reportMonthStr, DateTimeUtils::FM_DEV_DATE);
                 $reportMonthInfo = getdate($reportMonthObj->getTimestamp());
                 $year = $reportMonthInfo[DateTimeUtils::FN_KEY_GETDATE_YEAR];
                 $month = $reportMonthInfo[DateTimeUtils::FN_KEY_GETDATE_MONTH_INT];
                 $reportModel = FinTotalAssetsMonth::findOne(['year' => $year, 'month' => $month, 'delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
                 if (is_null($reportModel)) {
                     $reportModel = new FinTotalAssetsMonth();
                     $reportModel->year = $year;
                     $reportModel->month = $month;
                 }
                 $prevReportMonthObj = DateTimeUtils::subDateTime($reportMonthObj, 'P1M');
                 $prevReportMonthInfo = getdate($prevReportMonthObj->getTimestamp());
                 $prevYear = $prevReportMonthInfo[DateTimeUtils::FN_KEY_GETDATE_YEAR];
                 $prevMonth = $prevReportMonthInfo[DateTimeUtils::FN_KEY_GETDATE_MONTH_INT];
                 $prevReportModel = FinTotalAssetsMonth::findOne(['year' => $prevYear, 'month' => $prevMonth, 'delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
                 $prevAssetsValue = is_null($prevReportModel) ? 0 : $prevReportModel->assets_value;
                 $totalEntryMonth = FinTotalEntryMonth::findOne(['year' => $year, 'month' => $month, 'delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
                 $sumdebit = 0;
                 $sumcredit = 0;
                 if (!is_null($totalEntryMonth)) {
                     $sumdebit = is_null($totalEntryMonth->value_out) ? 0 : $totalEntryMonth->value_out;
                     $sumcredit = is_null($totalEntryMonth->value_in) ? 0 : $totalEntryMonth->value_in;
                 }
                 $reportModel->assets_value = $prevAssetsValue + $sumcredit - $sumdebit;
                 $reportModel->save();
                 Yii::$app->session->setFlash(MasterValueUtils::FLASH_SUCCESS, Yii::t('common', 'Monthly Assets Report of {month} has been saved successfully.', ['month' => $model->fmonth]));
                 return Yii::$app->getResponse()->redirect(Url::to(['assets']));
                 break;
             default:
                 break;
         }
     }
     $renderData = ['fmKeyJui' => $fmKeyJui, 'fmKeyPhp' => $fmKeyPhp, 'model' => $model, 'startDateJui' => $startDateJui];
     $fMonthInfo = getdate(DateTimeUtils::parse($model->fmonth_from, $fmKeyPhp)->getTimestamp());
     $tMonthInfo = getdate(DateTimeUtils::parse($model->fmonth_to, $fmKeyPhp)->getTimestamp());
     $fYear = $fMonthInfo[DateTimeUtils::FN_KEY_GETDATE_YEAR];
     $fMonth = $fMonthInfo[DateTimeUtils::FN_KEY_GETDATE_MONTH_INT];
     $fMonthMM = str_pad($fMonth, 2, '0', STR_PAD_LEFT);
     $tYear = $tMonthInfo[DateTimeUtils::FN_KEY_GETDATE_YEAR];
     $tMonth = $tMonthInfo[DateTimeUtils::FN_KEY_GETDATE_MONTH_INT];
     $tMonthMM = str_pad($tMonth, 2, '0', STR_PAD_LEFT);
     $gridData = null;
     $resultModel = FinTotalAssetsMonth::find()->select('t1.*, t2.value_in AS credit, t2.value_out AS debit')->from('fin_total_assets_month t1')->leftJoin('fin_total_entry_month t2', '(t1.year = t2.year AND t1.month = t2.month)')->where(['t1.delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE])->andWhere(['>=', 't1.year', $fYear])->andWhere(['OR', ['>', 't1.year', $fYear], ['>=', 't1.month', $fMonth]])->andWhere(['<=', 't1.year', $tYear])->andWhere(['OR', ['<', 't1.year', $tYear], ['<=', 't1.month', $tMonth]])->orderBy('t1.year, t1.month')->all();
     if (count($resultModel) > 0) {
         // Init data for chart
         $sMonth = $fYear . $fMonthMM . '01';
         $eMonth = $tYear . $tMonthMM . '01';
         $currentMonthObj = DateTimeUtils::parse($sMonth, DateTimeUtils::FM_DEV_DATE);
         $arrDataChartTemp = [];
         while ($sMonth < $eMonth) {
             $sMonth = $currentMonthObj->format(DateTimeUtils::FM_DEV_DATE);
             $arrDataChartTemp[$sMonth] = ['credit' => 0, 'debit' => 0, 'assets' => 0];
             DateTimeUtils::addDateTime($currentMonthObj, 'P1M', null, false);
         }
         $firstResult = $resultModel[0];
         $prevCredit = is_null($firstResult->credit) ? 0 : $firstResult->credit;
         $prevDebit = is_null($firstResult->debit) ? 0 : $firstResult->debit;
         $prevAssets = is_null($firstResult->assets_value) ? 0 : $firstResult->assets_value;
         $gridData = [];
         foreach ($resultModel as $rm) {
             $key = $rm->year . str_pad($rm->month, 2, '0', STR_PAD_LEFT) . '01';
             $tempCredit = is_null($rm->credit) ? 0 : $rm->credit;
             $tempDebit = is_null($rm->debit) ? 0 : $rm->debit;
             $tempAssets = is_null($rm->assets_value) ? 0 : $rm->assets_value;
             $compareCredit = $tempCredit - $prevCredit;
             $compareDebit = $tempDebit - $prevDebit;
             $compareAssets = $tempAssets - $prevAssets;
             $prevCredit = $tempCredit;
             $prevDebit = $tempDebit;
             $prevAssets = $tempAssets;
             $girdRow = ['month' => DateTimeUtils::parse($key, DateTimeUtils::FM_DEV_DATE), 'credit' => $prevCredit, 'debit' => $prevDebit, 'assets' => $prevAssets, 'compareCredit' => $compareCredit, 'compareDebit' => $compareDebit, 'compareAssets' => $compareAssets];
             $gridData[$key] = $girdRow;
             // data for chart
             if (isset($arrDataChartTemp[$key])) {
                 $arrDataChartTemp[$key]['credit'] = $prevCredit;
                 $arrDataChartTemp[$key]['debit'] = $prevDebit;
                 $arrDataChartTemp[$key]['assets'] = $prevAssets;
             }
         }
         // data for chart
         $arrLabelChart = [];
         $arrCreditDataChart = [];
         $arrDebitDataChart = [];
         $arrAssetsDataChart = [];
         $arrCreditAliasDataChart = [];
         $arrDebitAliasDataChart = [];
         $arrAssetsAliasDataChart = [];
         foreach ($arrDataChartTemp as $labelChart => $dataChartTemp) {
             $arrLabelChart[] = DateTimeUtils::parse($labelChart, DateTimeUtils::FM_DEV_DATE, $fmKeyPhp);
             $arrCreditDataChart[] = $dataChartTemp['credit'];
             $arrDebitDataChart[] = $dataChartTemp['debit'];
             $arrAssetsDataChart[] = $dataChartTemp['assets'];
             $arrCreditAliasDataChart[] = NumberUtils::format($dataChartTemp['credit']);
             $arrDebitAliasDataChart[] = NumberUtils::format($dataChartTemp['debit']);
             $arrAssetsAliasDataChart[] = NumberUtils::format($dataChartTemp['assets']);
         }
         $renderData['chartData'] = json_encode(['label' => $arrLabelChart, 'credit' => $arrCreditDataChart, 'creditAlias' => $arrCreditAliasDataChart, 'debit' => $arrDebitDataChart, 'debitAlias' => $arrDebitAliasDataChart, 'assets' => $arrAssetsDataChart, 'assetsAlias' => $arrAssetsAliasDataChart], JSON_NUMERIC_CHECK);
     }
     $renderData['gridData'] = $gridData;
     // sum payment current month
     $beginCurrentMonth = DateTimeUtils::parse($td->format(DateTimeUtils::FM_DEV_YM) . '01', DateTimeUtils::FM_DEV_DATE);
     $endCurrentMonth = DateTimeUtils::addDateTime($beginCurrentMonth, 'P1M');
     DateTimeUtils::subDateTime($endCurrentMonth, 'P1D', null, false);
     $sumCurrentMonthQuery = (new Query())->select(['SUM(IF(account_source > 0, entry_value, 0)) AS debit', 'SUM(IF(account_target > 0, entry_value, 0)) AS credit']);
     $sumCurrentMonthQuery->from('fin_account_entry')->where(['=', 'delete_flag', MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
     $sumCurrentMonthQuery->andWhere(['OR', ['=', 'account_source', MasterValueUtils::MV_FIN_ACCOUNT_NONE], ['=', 'account_target', MasterValueUtils::MV_FIN_ACCOUNT_NONE]]);
     $sumCurrentMonthQuery->andWhere(['>=', 'entry_date', $beginCurrentMonth->format(DateTimeUtils::FM_DB_DATE)]);
     $sumCurrentMonthQuery->andWhere(['<=', 'entry_date', $endCurrentMonth->format(DateTimeUtils::FM_DB_DATE)]);
     $sumCurrentAssetsData = $sumCurrentMonthQuery->createCommand()->queryOne();
     // sum Assets current month
     $sumCurrentAssets = 0;
     $arrFinAccount = FinAccount::find()->where(['delete_flag' => 0])->all();
     foreach ($arrFinAccount as $finAccount) {
         $instance = $finAccount->instance();
         $instance->initialize();
         $sumCurrentAssets += $instance->opening_balance;
     }
     $sumCurrentAssetsData['assets'] = $sumCurrentAssets;
     $renderData['sumCurrentAssetsData'] = $sumCurrentAssetsData;
     return $this->render('assets', $renderData);
 }
Exemplo n.º 3
0
 public function actionIndex()
 {
     $arrDeposits = [];
     $sumDeposits = ['opening_balance' => 0, 'closing_interest_unit' => 0, 'closing_interest' => 0, 'closing_balance' => 0, 'now_interest_unit' => 0, 'now_interest' => 0, 'capital' => 0, 'result_interest' => 0];
     $minClosingTimestamp = null;
     $arrTmAtm = [];
     $arrCredit = [];
     $arrLunchFound = [];
     $arrOtherFound = [];
     $sumTmAtm = ['opening_balance' => 0, 'closing_balance' => 0, 'now_balance' => 0];
     $sumTmAtmDeposit = ['opening_balance' => 0, 'closing_balance' => 0, 'now_balance' => 0];
     $sumTotal = ['opening_balance' => 0, 'closing_balance' => 0, 'now_balance' => 0];
     $arrFinAccount = FinAccount::find()->where(['delete_flag' => 0])->orderBy('order_num')->all();
     foreach ($arrFinAccount as $finAccount) {
         $instance = $finAccount->instance();
         $instance->initialize();
         if ($instance instanceof FinAccount01I00 || $instance instanceof FinAccount02I00) {
             // add instance TM or ATM
             $arrTmAtm[] = $instance;
             // sum TM - ATM
             $sumTmAtm['opening_balance'] += $instance->opening_balance;
             $sumTmAtm['closing_balance'] += $instance->closing_balance;
             $sumTmAtm['now_balance'] += $instance->now_balance;
             // sum TM - ATM - Deposits
             $sumTmAtmDeposit['opening_balance'] += $instance->opening_balance;
             $sumTmAtmDeposit['closing_balance'] += $instance->closing_balance;
             $sumTmAtmDeposit['now_balance'] += $instance->now_balance;
             // sum Total
             $sumTotal['opening_balance'] += $instance->opening_balance;
             $sumTotal['closing_balance'] += $instance->closing_balance;
             $sumTotal['now_balance'] += $instance->now_balance;
         } elseif ($instance instanceof FinAccount03I00) {
             // add instance CREDIT
             $arrCredit[] = $instance;
             // sum Total
             $sumTotal['opening_balance'] += $instance->opening_balance;
             $sumTotal['closing_balance'] += $instance->closing_balance;
             $sumTotal['now_balance'] += $instance->now_balance;
         } elseif ($instance instanceof FinAccount04I00) {
             // add instance Deposits
             $arrDeposits[] = $instance;
             // sum deposits
             $sumDeposits['opening_balance'] += $instance->opening_balance;
             $sumDeposits['closing_interest_unit'] += $instance->closing_interest_unit;
             $sumDeposits['closing_interest'] += $instance->closing_interest;
             $sumDeposits['closing_balance'] += $instance->closing_balance;
             $sumDeposits['now_interest_unit'] += $instance->now_interest_unit;
             $sumDeposits['now_interest'] += $instance->now_interest;
             $sumDeposits['capital'] += $instance->capital;
             $sumDeposits['result_interest'] += $instance->result_interest;
             // sum TM - ATM - Deposits
             $nowbalance = $instance->opening_balance + $instance->now_interest;
             $sumTmAtmDeposit['opening_balance'] += $instance->opening_balance;
             $sumTmAtmDeposit['closing_balance'] += $instance->closing_balance;
             $sumTmAtmDeposit['now_balance'] += $nowbalance;
             // sum Total
             $sumTotal['opening_balance'] += $instance->opening_balance;
             $sumTotal['closing_balance'] += $instance->closing_balance;
             $sumTotal['now_balance'] += $nowbalance;
             // next closing
             $timestamp = DateTimeUtils::getDateTimeFromDB($instance->closing_date)->getTimestamp();
             if (is_null($minClosingTimestamp) || $minClosingTimestamp > $timestamp) {
                 $minClosingTimestamp = $timestamp;
             }
         } elseif ($instance instanceof FinAccount05I00) {
             // add instance LUNCH FOUND
             $arrLunchFound[] = $instance;
             // sum Total
             $sumTotal['opening_balance'] += $instance->opening_balance;
             $sumTotal['closing_balance'] += $instance->closing_balance;
             $sumTotal['now_balance'] += $instance->now_balance;
         } elseif ($instance instanceof FinAccount06I00 || $instance instanceof FinAccount07I00) {
             // add instance OTHER FOUND
             $arrOtherFound[] = $instance;
             // sum Total
             $sumTotal['opening_balance'] += $instance->opening_balance;
             $sumTotal['closing_balance'] += $instance->closing_balance;
             $sumTotal['now_balance'] += $instance->now_balance;
         }
     }
     return $this->render('index', ['arrDeposits' => $arrDeposits, 'sumDeposits' => $sumDeposits, 'minClosingTimestamp' => $minClosingTimestamp, 'arrTmAtm' => $arrTmAtm, 'sumTmAtm' => $sumTmAtm, 'sumTmAtmDeposit' => $sumTmAtmDeposit, 'arrCredit' => $arrCredit, 'arrLunchFound' => $arrLunchFound, 'arrOtherFound' => $arrOtherFound, 'sumTotal' => $sumTotal]);
 }
Exemplo n.º 4
0
 public function actionCopy($id)
 {
     $this->objectId = $id;
     $model = FinAccountEntry::findOne(['entry_id' => $id, 'entry_status' => MasterValueUtils::MV_FIN_ENTRY_TYPE_SIMPLE, 'delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
     $renderView = 'copy';
     if (is_null($model)) {
         $model = false;
         $renderData = ['model' => $model];
         Yii::$app->session->setFlash(MasterValueUtils::FLASH_ERROR, Yii::t('common', 'The requested {record} does not exist.', ['record' => Yii::t('fin.models', 'Payment')]));
     } else {
         // master value
         $phpFmShortDate = DateTimeUtils::getPhpDateFormat();
         $arrFinAccount = ModelUtils::getArrData(FinAccount::find()->select(['account_id', 'account_name'])->where(['delete_flag' => 0, 'account_type' => [1, 2, 3, 5, 6, 7]])->orderBy('account_type, order_num'), 'account_id', 'account_name');
         $arrEntryLog = MasterValueUtils::getArrData('fin_entry_log');
         // reset value
         $model->entry_date = DateTimeUtils::formatNow($phpFmShortDate);
         // submit data
         $postData = Yii::$app->request->post();
         $submitMode = isset($postData[MasterValueUtils::SM_MODE_NAME]) ? $postData[MasterValueUtils::SM_MODE_NAME] : false;
         // populate model attributes with user inputs
         $model->load($postData);
         if (is_null($model->arr_entry_log)) {
             $model->arr_entry_log = StringUtils::unserializeArr($model->description);
         }
         // init value
         FinAccountEntry::$_PHP_FM_SHORTDATE = $phpFmShortDate;
         $model->scenario = MasterValueUtils::SCENARIO_COPY;
         $renderData = ['model' => $model, 'phpFmShortDate' => $phpFmShortDate, 'arrFinAccount' => $arrFinAccount, 'arrEntryLog' => $arrEntryLog];
         switch ($submitMode) {
             case MasterValueUtils::SM_MODE_INPUT:
                 $isValid = $model->validate();
                 if ($isValid) {
                     $renderView = 'confirm';
                     $renderData['formMode'] = [MasterValueUtils::PG_MODE_NAME => MasterValueUtils::PG_MODE_COPY];
                 }
                 break;
             case MasterValueUtils::SM_MODE_CONFIRM:
                 $isValid = $model->validate();
                 if ($isValid) {
                     $result = $this->copyPayment($model);
                     if ($result === true) {
                         Yii::$app->session->setFlash(MasterValueUtils::FLASH_SUCCESS, Yii::t('common', '{record} has been saved successfully.', ['record' => Yii::t('fin.models', 'Payment')]));
                         return Yii::$app->getResponse()->redirect(Url::to(['index']));
                     } else {
                         Yii::$app->session->setFlash(MasterValueUtils::FLASH_ERROR, $result);
                         $renderView = 'confirm';
                         $renderData['formMode'] = [MasterValueUtils::PG_MODE_NAME => MasterValueUtils::PG_MODE_COPY];
                     }
                 }
                 break;
             case MasterValueUtils::SM_MODE_BACK:
                 break;
             default:
                 break;
         }
     }
     // render GUI
     return $this->render($renderView, $renderData);
 }