public static function getModel($id) { $result = OefPurchase::findOne(['id' => $id, 'delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]); if (!is_null($result)) { $result->investment = $result->purchase + $result->transfer_fee + $result->other_fee; $result->investment_old = $result->investment; $result->total_fee_rate = $result->purchase_fee_rate * (100 - $result->discount_rate) / 100; $result->real_purchase = $result->purchase - $result->purchase_fee; } return $result; }
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); }
/** * @param OefFundCertificate $condition * @param String $fmShortDatePhp * @return array */ private function getFundCertificate4Sell($condition, $fmShortDatePhp) { $condition->sum_sell_certificate = 0; $condition->investment = 0; $condition->sellable_certificate = 0; $condition->revenue = 0; $condition->sell_fee = 0; $condition->profit_before_taxes = 0; $condition->income_tax = 0; $condition->profit_after_taxes = 0; $condition->investment_result = 0; $sqlLimit = 3; $sqlOffset = 0; $results = []; $condition->sell_date_obj = DateTimeUtils::parse($condition->sell_date, $fmShortDatePhp); $running = true; while ($running) { $arrOefPurchase = OefPurchase::find()->where(['delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE])->andWhere('found_stock > found_stock_sold')->addOrderBy(['purchase_date' => SORT_ASC])->offset($sqlOffset)->limit($sqlLimit)->all(); $running = count($arrOefPurchase) > 0; if ($running) { foreach ($arrOefPurchase as $oefPurchase) { $result = null; switch ($oefPurchase->purchase_type) { case MasterValueUtils::MV_OEF_PERCHASE_TYPE_NORMAL: $result = new OefFundCertificateNormal(); break; case MasterValueUtils::MV_OEF_PERCHASE_TYPE_SIP: $result = new OefFundCertificateSip(); break; case MasterValueUtils::MV_OEF_PERCHASE_TYPE_DIVIDEND: $result = new OefFundCertificateDividend(); break; case MasterValueUtils::MV_OEF_PERCHASE_TYPE_IPO: $result = new OefFundCertificateIpo(); break; } if (!is_null($result)) { $result->initialize($oefPurchase, $condition); $results[] = $result; $condition->investment += $result->investment; $condition->sellable_certificate += $result->sellable_certificate; $condition->sum_sell_certificate += $result->sell_certificate; $condition->revenue += $result->revenue; $condition->sell_fee += $result->sell_fee; $condition->profit_before_taxes += $result->profit_before_taxes; $condition->income_tax += $result->income_tax; $condition->profit_after_taxes += $result->profit_after_taxes; $condition->investment_result += $result->investment_result; $running = $condition->sum_sell_certificate < $condition->sell_certificate; if (!$running) { break; } } } $sqlOffset += $sqlLimit; } } return $results; }