Example #1
0
 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);
 }
Example #3
0
 /**
  * @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;
 }