コード例 #1
0
ファイル: SaleController.php プロジェクト: kaihatsusha/kpimon
 public function actionTool()
 {
     // master value
     $fmShortDatePhp = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_PHP, null);
     $fmShortDateJui = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_JUI, null);
     $arrPurchaseType = MasterValueUtils::getArrData('oef_purchase_type');
     OefFundCertificate::$_PHP_FM_SHORTDATE = $fmShortDatePhp;
     // 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 = new OefFundCertificate();
     $model->load($postData);
     // init value
     $model->scenario = MasterValueUtils::SCENARIO_TOOL;
     if (Yii::$app->request->getIsGet()) {
         $today = DateTimeUtils::getNow();
         $model->sell_date = $today->format($fmShortDatePhp);
         $model->income_tax_rate = ParamUtils::getIncomeTaxRateSale();
         $sumPurchaseQuery = (new Query())->select(['SUM(found_stock) AS found_stock', 'SUM(found_stock_sold) AS found_stock_sold']);
         $sumPurchaseQuery->from('oef_purchase')->where(['delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE])->andWhere('found_stock > found_stock_sold');
         $sumPurchaseData = $sumPurchaseQuery->createCommand()->queryOne();
         if (!is_null($sumPurchaseData['found_stock']) && !is_null($sumPurchaseData['found_stock_sold'])) {
             $model->sell_certificate = $sumPurchaseData['found_stock'] - $sumPurchaseData['found_stock_sold'];
         }
     }
     $isValidSellDate = $model->validate(['sell_date']);
     if ($isValidSellDate && empty($model->nav)) {
         $sellDate = DateTimeUtils::parse($model->sell_date, $fmShortDatePhp);
         $oefNavModel = OefNav::findOne(['delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE, 'trade_date' => $sellDate->format(DateTimeUtils::FM_DB_DATE)]);
         if (!is_null($oefNavModel)) {
             $model->nav = $oefNavModel->nav_value;
         }
     }
     // render GUI
     $renderView = 'tool';
     $renderData = ['model' => $model, 'fmShortDateJui' => $fmShortDateJui, 'arrPurchaseType' => $arrPurchaseType, 'arrFundCertificate4Sell' => false];
     switch ($submitMode) {
         case MasterValueUtils::SM_MODE_INPUT:
             $isValid = $model->validate();
             if ($isValid) {
                 $arrFundCertificate4Sell = $this->getFundCertificate4Sell($model, $fmShortDatePhp);
                 $renderData['arrFundCertificate4Sell'] = $arrFundCertificate4Sell;
             }
             break;
         default:
             break;
     }
     // render GUI
     return $this->render($renderView, $renderData);
 }
コード例 #2
0
 public function actionUpdate($id)
 {
     $this->objectId = $id;
     // master value
     $fmShortDatePhp = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_PHP, null);
     $fmShortDateJui = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_JUI, null);
     OefPurchase::$_PHP_FM_SHORTDATE = $fmShortDatePhp;
     $model = OefPurchase::getModel($id);
     $renderView = 'update';
     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('oef.models', 'Purchase')]));
     } else {
         // master value
         $arrPurchaseType = MasterValueUtils::getArrData('oef_purchase_type');
         // 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);
         // init value
         $model->scenario = MasterValueUtils::SCENARIO_UPDATE;
         // render GUI
         $renderData = ['model' => $model, 'fmShortDatePhp' => $fmShortDatePhp, 'fmShortDateJui' => $fmShortDateJui, 'arrPurchaseType' => $arrPurchaseType];
         switch ($submitMode) {
             case MasterValueUtils::SM_MODE_INPUT:
                 $isValid = $model->validate();
                 $model->calculate();
                 if ($isValid) {
                     $renderView = 'confirm';
                     $renderData['formMode'] = [MasterValueUtils::PG_MODE_NAME => MasterValueUtils::PG_MODE_EDIT];
                 }
                 break;
             case MasterValueUtils::SM_MODE_CONFIRM:
                 $isValid = $model->validate();
                 if ($isValid) {
                     $model->calculate();
                     $result = $this->updatePurchase($model, $fmShortDatePhp);
                     if ($result === true) {
                         Yii::$app->session->setFlash(MasterValueUtils::FLASH_SUCCESS, Yii::t('common', '{record} has been saved successfully.', ['record' => Yii::t('oef.models', 'Purchase')]));
                         return Yii::$app->getResponse()->redirect(Url::to(['update', 'id' => $id]));
                     } else {
                         // restore Data for View
                         $model->purchase_date = DateTimeUtils::parse($model->purchase_date, DateTimeUtils::FM_DB_DATE, $fmShortDatePhp);
                         if (!empty($model->sip_date)) {
                             $model->sip_date = DateTimeUtils::parse($model->sip_date, DateTimeUtils::FM_DB_DATE, $fmShortDatePhp);
                         }
                         // render View
                         Yii::$app->session->setFlash(MasterValueUtils::FLASH_ERROR, $result);
                         $renderView = 'confirm';
                         $renderData['formMode'] = [MasterValueUtils::PG_MODE_NAME => MasterValueUtils::PG_MODE_EDIT];
                     }
                 }
                 break;
             case MasterValueUtils::SM_MODE_BACK:
                 break;
             default:
                 break;
         }
     }
     // render GUI
     return $this->render($renderView, $renderData);
 }
コード例 #3
0
 public function actionUpdate($id)
 {
     $this->objectId = $id;
     // master value
     $fmShortDatePhp = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_PHP, null);
     $fmShortDateJui = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_JUI, null);
     JarPayment::$_PHP_FM_SHORTDATE = $fmShortDatePhp;
     $model = JarPayment::findOne(['id' => $id, 'delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
     $renderView = 'update';
     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('jar.models', 'Payment')]));
     } else {
         if ($model->share_id > 0) {
             return Yii::$app->getResponse()->redirect(Url::to(['/jar/distribute/update', 'id' => $model->share_id]));
         }
         // master value
         $arrAccount = ModelUtils::getArrData(JarAccount::find()->select(['account_id', 'account_name'])->where(['delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE])->orderBy('account_type, order_num'), 'account_id', 'account_name');
         $arrEntryLog = MasterValueUtils::getArrData('jar_payment_status');
         // 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);
         // init value
         $model->scenario = MasterValueUtils::SCENARIO_UPDATE;
         // render GUI
         $renderData = ['model' => $model, 'fmShortDatePhp' => $fmShortDatePhp, 'fmShortDateJui' => $fmShortDateJui, 'arrAccount' => $arrAccount, '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_EDIT];
                 }
                 break;
             case MasterValueUtils::SM_MODE_CONFIRM:
                 $isValid = $model->validate();
                 if ($isValid) {
                     $result = $this->updatePayment($model, $fmShortDatePhp);
                     if ($result === true) {
                         Yii::$app->session->setFlash(MasterValueUtils::FLASH_SUCCESS, Yii::t('common', '{record} has been saved successfully.', ['record' => Yii::t('jar.models', 'Payment')]));
                         return Yii::$app->getResponse()->redirect(Url::to(['update', 'id' => $id]));
                     } else {
                         // restore Data for View
                         $model->entry_date = DateTimeUtils::parse($model->entry_date, DateTimeUtils::FM_DB_DATE, $fmShortDatePhp);
                         // render View
                         Yii::$app->session->setFlash(MasterValueUtils::FLASH_ERROR, $result);
                         $renderView = 'confirm';
                         $renderData['formMode'] = [MasterValueUtils::PG_MODE_NAME => MasterValueUtils::PG_MODE_EDIT];
                     }
                 }
                 break;
             case MasterValueUtils::SM_MODE_BACK:
                 break;
             default:
                 break;
         }
     }
     // render GUI
     return $this->render($renderView, $renderData);
 }
コード例 #4
0
ファイル: BillController.php プロジェクト: kaihatsusha/kpimon
 public function actionUpdate($id)
 {
     $this->objectId = $id;
     // master value
     $fmShortDatePhp = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_PHP, null);
     NetBill::$_PHP_FM_SHORTDATE = $fmShortDatePhp;
     NetBillDetail::$_PHP_FM_SHORTDATE = $fmShortDatePhp;
     // 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 = $this->loadBill($id, $postData, $fmShortDatePhp);
     $renderView = 'update';
     if ($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', 'Bill')]));
     } else {
         // master value
         $fmShortDateJui = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_JUI, null);
         $arrNetCustomer = ModelUtils::getArrData(NetCustomer::find()->select(['id', 'name'])->where(['delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE, 'status' => MasterValueUtils::MV_NET_CUSTOMER_STATUS_ON])->orderBy('order_num'), 'id', 'name');
         $billDetail = new NetBillDetail();
         // populate model attributes with user inputs
         $billDetail->load($postData);
         $arrBillDetail = $this->loadBillDetails($id, $postData, $fmShortDatePhp);
         // init value
         $model->scenario = MasterValueUtils::SCENARIO_UPDATE;
         $renderData = ['model' => $model, 'billDetail' => $billDetail, 'fmShortDatePhp' => $fmShortDatePhp, 'arrBillDetail' => $arrBillDetail, 'fmShortDateJui' => $fmShortDateJui, 'arrNetCustomer' => $arrNetCustomer];
         switch ($submitMode) {
             case MasterValueUtils::SM_MODE_ADD_ITEM:
                 $itemNo = empty($billDetail->item_no) ? count($arrBillDetail) + 1 : $billDetail->item_no;
                 $billDetail->item_no = $itemNo;
                 $arrBillDetail[$itemNo] = $billDetail;
                 $isValid = $this->validate($model, $arrBillDetail, false);
                 if ($isValid !== true) {
                     $renderData['isValid'] = $isValid;
                 }
                 $renderData['model'] = $model;
                 $renderData['arrBillDetail'] = $arrBillDetail;
                 break;
             case MasterValueUtils::SM_MODE_DEL_ITEM:
                 $arrBillDetail[$billDetail->item_no]->delete_flag = MasterValueUtils::MV_FIN_FLG_DELETE_TRUE;
                 $renderData['arrBillDetail'] = $arrBillDetail;
                 break;
             case MasterValueUtils::SM_MODE_INPUT:
                 $isValid = $this->validate($model, $arrBillDetail);
                 if ($isValid === true) {
                     $renderView = 'confirm';
                     $renderData['formMode'] = [MasterValueUtils::PG_MODE_NAME => MasterValueUtils::PG_MODE_EDIT];
                 } else {
                     $renderData['isValid'] = $isValid;
                 }
                 $renderData['model'] = $model;
                 $renderData['arrBillDetail'] = $arrBillDetail;
                 break;
             case MasterValueUtils::SM_MODE_CONFIRM:
                 $isValid = $this->validate($model, $arrBillDetail);
                 if ($isValid === true) {
                     $result = $this->updateBill($model, $arrBillDetail, $fmShortDatePhp);
                     if ($result === true) {
                         Yii::$app->session->setFlash(MasterValueUtils::FLASH_SUCCESS, Yii::t('common', '{record} has been saved successfully.', ['record' => Yii::t('fin.models', 'Bill')]));
                         return Yii::$app->getResponse()->redirect(Url::to(['update', 'id' => $id]));
                     } else {
                         // restore Data for View
                         $this->restoreData4View($model, $arrBillDetail, $fmShortDatePhp);
                         // render View
                         Yii::$app->session->setFlash(MasterValueUtils::FLASH_ERROR, $result);
                         $renderView = 'confirm';
                         $renderData['formMode'] = [MasterValueUtils::PG_MODE_NAME => MasterValueUtils::PG_MODE_EDIT];
                     }
                 } else {
                     $renderData['isValid'] = $isValid;
                     $renderData['model'] = $model;
                     $renderData['arrBillDetail'] = $arrBillDetail;
                 }
                 break;
             case MasterValueUtils::SM_MODE_BACK:
                 break;
             default:
                 break;
         }
     }
     // render GUI
     return $this->render($renderView, $renderData);
 }
コード例 #5
0
 public function actionCopy($id)
 {
     // master value
     $fmShortDatePhp = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_PHP, null);
     FinTotalInterestUnit::$_PHP_FM_SHORTDATE = $fmShortDatePhp;
     $this->objectId = $id;
     $model = FinTotalInterestUnit::findOne(['id' => $id]);
     $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', 'Interest Unit')]));
     } else {
         // master value
         $fmShortDateJui = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_JUI, null);
         // modify data for View
         if (empty($model->end_date)) {
             $model->start_date = DateTimeUtils::formatNow($fmShortDatePhp);
         } else {
             $startDate = DateTimeUtils::parse($model->end_date, DateTimeUtils::FM_DB_DATE);
             $model->start_date = DateTimeUtils::addDateTime($startDate, 'P1D', $fmShortDatePhp);
             $model->end_date = null;
             $model->interest_unit = null;
         }
         // 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);
         // init value
         $model->scenario = MasterValueUtils::SCENARIO_COPY;
         $renderData = ['model' => $model, 'fmShortDatePhp' => $fmShortDatePhp, 'fmShortDateJui' => $fmShortDateJui];
         switch ($submitMode) {
             case MasterValueUtils::SM_MODE_INPUT:
                 $isValid = $model->validate();
                 if ($isValid) {
                     $renderView = 'confirm';
                     $renderData['formMode'] = [MasterValueUtils::PG_MODE_NAME => MasterValueUtils::PG_MODE_EDIT];
                 }
                 break;
             case MasterValueUtils::SM_MODE_CONFIRM:
                 $isValid = $model->validate();
                 if ($isValid) {
                     $result = $this->copyInterestUnit($model, $fmShortDatePhp);
                     if ($result === true) {
                         Yii::$app->session->setFlash(MasterValueUtils::FLASH_SUCCESS, Yii::t('common', '{record} has been saved successfully.', ['record' => Yii::t('fin.models', 'Interest Unit')]));
                         return Yii::$app->getResponse()->redirect(Url::to(['index']));
                     } else {
                         // modify data for View
                         $model->start_date = DateTimeUtils::parse($model->start_date, DateTimeUtils::FM_DB_DATE, $fmShortDatePhp);
                         if (!empty($model->end_date)) {
                             $model->end_date = DateTimeUtils::parse($model->end_date, DateTimeUtils::FM_DB_DATE, $fmShortDatePhp);
                         }
                         // render View
                         Yii::$app->session->setFlash(MasterValueUtils::FLASH_ERROR, $result);
                         $renderView = 'confirm';
                         $renderData['formMode'] = [MasterValueUtils::PG_MODE_NAME => MasterValueUtils::PG_MODE_EDIT];
                     }
                 }
                 break;
             case MasterValueUtils::SM_MODE_BACK:
                 break;
             default:
                 break;
         }
     }
     // render GUI
     return $this->render($renderView, $renderData);
 }
コード例 #6
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);
 }