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); }
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); OefNav::$_PHP_FM_SHORTDATE = $fmShortDatePhp; $model = OefNav::findOne(['nav_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('oef.models', 'Nav')])); } else { // 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]; 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->saveNav($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', 'Nav')])); return Yii::$app->getResponse()->redirect(Url::to(['update', 'id' => $id])); } else { // restore Data for View $model->trade_date = DateTimeUtils::parse($model->trade_date, DateTimeUtils::FM_DB_DATE, $fmShortDatePhp); $model->decide_date = DateTimeUtils::parse($model->decide_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); }