Beispiel #1
0
 public function initialize()
 {
     $thisMonth = DateTimeUtils::getNow(DateTimeUtils::FM_DEV_YM . '01 000000', DateTimeUtils::FM_DEV_DATETIME);
     DateTimeUtils::addDateTime($thisMonth, 'P1M', null, false);
     DateTimeUtils::subDateTime($thisMonth, 'P1D', null, false);
     $this->closing_date = $thisMonth->format(DateTimeUtils::FM_DB_DATETIME);
     $oTime = DateTimeUtils::getDateTimeFromDB($this->opening_date);
     $cTime = DateTimeUtils::getDateTimeFromDB($this->closing_date);
     $now = new \DateTime();
     $this->closing_diff = $cTime->diff($oTime)->days;
     $this->now_diff = $now->diff($oTime)->days;
     // calculate Closing Interest
     $this->closing_interest_unit = NumberUtils::getInterest($this->opening_balance, $this->term_interest_rate);
     $this->closing_interest = NumberUtils::rounds($this->closing_interest_unit * $this->closing_diff, NumberUtils::NUM_ROUND);
     $this->closing_balance = $this->opening_balance + $this->capital + $this->closing_interest;
     // calculate Interest of current date
     $this->now_interest_unit = NumberUtils::getInterest($this->opening_balance, $this->noterm_interest_rate);
     $delta = $this->now_diff - $this->closing_diff;
     if ($delta < 0) {
         $this->now_interest = NumberUtils::rounds($this->now_interest_unit * $this->now_diff, NumberUtils::NUM_ROUND);
     } else {
         $this->now_interest = $this->closing_interest + NumberUtils::getInterest($this->closing_balance, $this->noterm_interest_rate, NumberUtils::NUM_ROUND, $delta);
     }
     $this->now_balance = $this->opening_balance + $this->capital + $this->now_interest;
 }
Beispiel #2
0
 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 actionIndex()
 {
     // master value
     $fmShortDatePhp = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_PHP, null);
     $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');
     NetPayment::$_PHP_FM_SHORTDATE = $fmShortDatePhp;
     $searchModel = new NetPayment();
     // submit data
     $postData = Yii::$app->request->post();
     // populate model attributes with user inputs
     $searchModel->load($postData);
     // init value
     if (Yii::$app->request->getIsGet()) {
         $today = DateTimeUtils::getNow();
         $tdInfo = getdate($today->getTimestamp());
         $searchModel->entry_date_to = $today->format($fmShortDatePhp);
         $searchModel->entry_date_from = DateTimeUtils::parse($tdInfo[DateTimeUtils::FN_KEY_GETDATE_YEAR] - 1 . '0101', DateTimeUtils::FM_DEV_DATE, $fmShortDatePhp);
     }
     $searchModel->scenario = MasterValueUtils::SCENARIO_LIST;
     // sum Debit Amount & Credit Amount
     $sumEntryValue = false;
     // query for dataprovider
     $dataQuery = null;
     if ($searchModel->validate()) {
         $dataQuery = NetPayment::find()->select('t1.*, t2.bill_date')->from('net_payment t1')->leftJoin('net_bill t2', 't1.order_id = t2.id')->where(['=', 't1.delete_flag', MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
         $sumEntryQuery = (new Query())->select(['SUM(credit) AS credit, SUM(debit) AS debit'])->from('net_payment')->where(['=', 'delete_flag', MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
         if (!empty($searchModel->entry_date_from)) {
             $searchDate = DateTimeUtils::parse($searchModel->entry_date_from, $fmShortDatePhp, DateTimeUtils::FM_DB_DATE);
             $dataQuery->andWhere(['>=', 't1.entry_date', $searchDate]);
             $sumEntryQuery->andWhere(['>=', 'entry_date', $searchDate]);
         }
         if (!empty($searchModel->bill_date_to)) {
             $searchDate = DateTimeUtils::parse($searchModel->entry_date_to, $fmShortDatePhp, DateTimeUtils::FM_DB_DATE);
             $dataQuery->andWhere(['<=', 't1.entry_date', $searchDate]);
             $sumEntryQuery->andWhere(['<=', 'entry_date', $searchDate]);
         }
         if ($searchModel->customer_id > 0) {
             $dataQuery->andWhere(['=', 't1.customer_id', $searchModel->customer_id]);
             $sumEntryQuery->andWhere(['=', 'customer_id', $searchModel->customer_id]);
         }
         $dataQuery->orderBy('entry_date DESC, update_date DESC');
         $sumEntryValue = $sumEntryQuery->createCommand()->queryOne();
     } else {
         $dataQuery = NetPayment::find()->where(['customer_id' => -1]);
     }
     // render GUI
     $renderData = ['searchModel' => $searchModel, 'fmShortDateJui' => $fmShortDateJui, 'arrNetCustomer' => $arrNetCustomer, 'dataQuery' => $dataQuery, 'sumEntryValue' => $sumEntryValue];
     return $this->render('index', $renderData);
 }
Beispiel #4
0
 public function actionIndex()
 {
     $fmShortDatePhp = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_PHP, null);
     $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])->orderBy('order_num'), 'id', 'name');
     NetBill::$_PHP_FM_SHORTDATE = $fmShortDatePhp;
     $searchModel = new NetBill();
     // submit data
     $postData = Yii::$app->request->post();
     // populate model attributes with user inputs
     $searchModel->load($postData);
     // init value
     $today = DateTimeUtils::getNow();
     if (Yii::$app->request->getIsGet()) {
         $tdInfo = getdate($today->getTimestamp());
         $searchModel->bill_date_to = $today->format($fmShortDatePhp);
         $searchModel->bill_date_from = DateTimeUtils::parse($tdInfo[DateTimeUtils::FN_KEY_GETDATE_YEAR] - 1 . '0101', DateTimeUtils::FM_DEV_DATE, $fmShortDatePhp);
     }
     $searchModel->scenario = MasterValueUtils::SCENARIO_LIST;
     // sum Bill
     $sumBillValue = false;
     // query for dataprovider
     $dataQuery = null;
     if ($searchModel->validate()) {
         $dataQuery = NetBill::find()->where(['=', 'delete_flag', MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
         $sumBillQuery = (new Query())->select(['SUM(total) AS total'])->from('net_bill')->where(['=', 'delete_flag', MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
         if (!empty($searchModel->bill_date_from)) {
             $searchDate = DateTimeUtils::parse($searchModel->bill_date_from, $fmShortDatePhp, DateTimeUtils::FM_DB_DATE);
             $dataQuery->andWhere(['>=', 'bill_date', $searchDate]);
             $sumBillQuery->andWhere(['>=', 'bill_date', $searchDate]);
         }
         if (!empty($searchModel->bill_date_to)) {
             $searchDate = DateTimeUtils::parse($searchModel->bill_date_to, $fmShortDatePhp, DateTimeUtils::FM_DB_DATE);
             $dataQuery->andWhere(['<=', 'bill_date', $searchDate]);
             $sumBillQuery->andWhere(['<=', 'bill_date', $searchDate]);
         }
         $dataQuery->orderBy('bill_date DESC');
         $sumBillValue = $sumBillQuery->createCommand()->queryOne();
     } else {
         $dataQuery = NetBill::find()->where(['id' => -1]);
     }
     // render GUI
     $renderData = ['searchModel' => $searchModel, 'fmShortDatePhp' => $fmShortDatePhp, 'fmShortDateJui' => $fmShortDateJui, 'arrNetCustomer' => $arrNetCustomer, 'dataQuery' => $dataQuery, 'sumBillValue' => $sumBillValue];
     return $this->render('index', $renderData);
 }
 public function actionIndex()
 {
     // master value
     $fmShortDatePhp = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_PHP, null);
     $fmShortDateJui = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_JUI, null);
     $arrPurchaseType = MasterValueUtils::getArrData('oef_purchase_type');
     OefPurchase::$_PHP_FM_SHORTDATE = $fmShortDatePhp;
     $searchModel = new OefPurchase();
     // submit data
     $postData = Yii::$app->request->post();
     // populate model attributes with user inputs
     $searchModel->load($postData);
     // init value
     $today = DateTimeUtils::getNow();
     if (Yii::$app->request->getIsGet()) {
         $tdInfo = getdate($today->getTimestamp());
         $searchModel->purchase_date_to = $today->format($fmShortDatePhp);
         $searchModel->purchase_date_from = DateTimeUtils::parse($tdInfo[DateTimeUtils::FN_KEY_GETDATE_YEAR] - 1 . '0101', DateTimeUtils::FM_DEV_DATE, $fmShortDatePhp);
     }
     $searchModel->scenario = MasterValueUtils::SCENARIO_LIST;
     // sum purchase, fee, stock
     $sumPurchaseValue = false;
     // query for dataprovider
     $dataQuery = null;
     if ($searchModel->validate()) {
         $dataQuery = OefPurchase::find()->where(['delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
         $sumPurchaseQuery = (new Query())->select(['SUM(purchase) AS purchase', 'SUM(purchase_fee) AS purchase_fee', 'SUM(found_stock_sold) AS found_stock_sold', 'SUM(found_stock) AS found_stock', 'SUM(transfer_fee) AS transfer_fee', 'SUM(other_fee) AS other_fee'])->from('oef_purchase')->where(['delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
         if (!empty($searchModel->purchase_date_from)) {
             $dataQuery->andWhere(['>=', 'purchase_date', $searchModel->purchase_date_from]);
             $sumPurchaseQuery->andWhere(['>=', 'purchase_date', $searchModel->purchase_date_from]);
         }
         if (!empty($searchModel->purchase_date_to)) {
             $dataQuery->andWhere(['<=', 'purchase_date', $searchModel->purchase_date_to]);
             $sumPurchaseQuery->andWhere(['<=', 'purchase_date', $searchModel->purchase_date_to]);
         }
         $dataQuery->orderBy('purchase_date DESC');
         $sumPurchaseValue = $sumPurchaseQuery->createCommand()->queryOne();
     } else {
         $dataQuery = OefNav::find()->where(['id' => -1]);
     }
     // render GUI
     $renderData = ['searchModel' => $searchModel, 'fmShortDateJui' => $fmShortDateJui, 'dataQuery' => $dataQuery, 'sumPurchaseValue' => $sumPurchaseValue, 'arrPurchaseType' => $arrPurchaseType];
     return $this->render('index', $renderData);
 }
Beispiel #6
0
 public function actionIndex()
 {
     // master value
     $fmShortDatePhp = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_PHP, null);
     $fmShortDateJui = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_JUI, null);
     OefNav::$_PHP_FM_SHORTDATE = $fmShortDatePhp;
     $searchModel = new OefNav();
     // submit data
     $postData = Yii::$app->request->post();
     // populate model attributes with user inputs
     $searchModel->load($postData);
     // init value
     $today = DateTimeUtils::getNow();
     if (Yii::$app->request->getIsGet()) {
         $tdInfo = getdate($today->getTimestamp());
         $searchModel->trade_date_to = $today->format($fmShortDatePhp);
         $searchModel->trade_date_from = DateTimeUtils::parse($tdInfo[DateTimeUtils::FN_KEY_GETDATE_YEAR] - 1 . '0101', DateTimeUtils::FM_DEV_DATE, $fmShortDatePhp);
     }
     $searchModel->scenario = MasterValueUtils::SCENARIO_LIST;
     // query for dataprovider
     $dataQuery = null;
     if ($searchModel->validate()) {
         $dataQuery = OefNav::find()->where(['delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
         if (!empty($searchModel->trade_date_from)) {
             $dataQuery->andWhere(['>=', 'trade_date', $searchModel->trade_date_from]);
         }
         if (!empty($searchModel->trade_date_to)) {
             $dataQuery->andWhere(['<=', 'trade_date', $searchModel->trade_date_to]);
         }
         $dataQuery->orderBy('trade_date DESC');
     } else {
         $dataQuery = OefNav::find()->where(['nav_id' => -1]);
     }
     // render GUI
     $renderData = ['searchModel' => $searchModel, 'fmShortDatePhp' => $fmShortDatePhp, 'fmShortDateJui' => $fmShortDateJui, 'dataQuery' => $dataQuery];
     return $this->render('index', $renderData);
 }
Beispiel #7
0
<?php

use app\components\DateTimeUtils;
use app\components\MasterValueUtils;
use app\components\NumberUtils;
use app\components\StringUtils;
$this->title = Yii::t('oth.note', 'Notes List');
$currentDate = DateTimeUtils::getNow();
$currentDateStr = DateTimeUtils::htmlDateFormat($currentDate, DateTimeUtils::FM_VIEW_DATE, null, true);
$rowindex = 0;
?>

<div class="row"><div class="col-md-12"><div class="box">
    <div class="box-header with-border">
        <h3 class="box-title"><?php 
echo Yii::t('oth.note', 'Items');
?>
</h3>
    </div>
    <div class="box-body table-responsive no-padding"><table class="table table-bordered"><tbody>
        <tr class="warning">
            <th style="text-align: center"><?php 
echo Yii::t('fin.grid', 'No.');
?>
</th>
            <th style="text-align: center"><?php 
echo Yii::t('fin.grid', 'Note');
?>
</th>
            <th style="text-align: center"><?php 
echo Yii::t('fin.grid', 'Start Date');
 public function actionIndex()
 {
     $fmShortDatePhp = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_PHP, null);
     $fmShortDateJui = DateTimeUtils::getDateFormat(DateTimeUtils::FM_KEY_JUI, null);
     JarPayment::$_PHP_FM_SHORTDATE = $fmShortDatePhp;
     $arrAccount = ModelUtils::getArrData(JarAccount::find()->select(['account_id', 'account_name'])->where(['delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE])->orderBy('account_type, status, order_num'), 'account_id', 'account_name');
     $arrEntryLog = MasterValueUtils::getArrData('jar_payment_status');
     $searchModel = new JarPayment();
     // submit data
     $postData = Yii::$app->request->post();
     // populate model attributes with user inputs
     $searchModel->load($postData);
     // init value
     $today = DateTimeUtils::getNow();
     if (Yii::$app->request->getIsGet()) {
         $tdInfo = getdate($today->getTimestamp());
         $searchModel->entry_date_to = $today->format($fmShortDatePhp);
         $searchModel->entry_date_from = DateTimeUtils::parse($tdInfo[DateTimeUtils::FN_KEY_GETDATE_YEAR] - 1 . '0101', DateTimeUtils::FM_DEV_DATE, $fmShortDatePhp);
     }
     $searchModel->scenario = MasterValueUtils::SCENARIO_LIST;
     // sum current month
     $beginMonth = DateTimeUtils::parse($today->format(DateTimeUtils::FM_DEV_YM) . '01', DateTimeUtils::FM_DEV_DATE);
     $endMonth = DateTimeUtils::addDateTime($beginMonth, 'P1M');
     DateTimeUtils::subDateTime($endMonth, '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('jar_payment')->where(['delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
     $sumCurrentMonthQuery->andWhere(['OR', ['=', 'account_source', MasterValueUtils::MV_JAR_ACCOUNT_NONE], ['=', 'account_target', MasterValueUtils::MV_JAR_ACCOUNT_NONE]]);
     $sumCurrentMonthQuery->andWhere(['>=', 'entry_date', $beginMonth->format(DateTimeUtils::FM_DB_DATE)]);
     $sumCurrentMonthQuery->andWhere(['<=', 'entry_date', $endMonth->format(DateTimeUtils::FM_DB_DATE)]);
     $sumCurrentMonthData = $sumCurrentMonthQuery->createCommand()->queryOne();
     // sum Debit Amount & Credit Amount
     $sumEntryValue = false;
     // query for dataprovider
     $dataQuery = null;
     if ($searchModel->validate()) {
         $dataQuery = JarPayment::find()->where(['delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
         $sumEntryQuery = (new Query())->select(['SUM(IF(account_source > 0, entry_value, 0)) AS debit', 'SUM(IF(account_target > 0, entry_value, 0)) AS credit']);
         $sumEntryQuery->from('jar_payment')->where(['delete_flag' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
         $sumEntryQuery->andWhere(['OR', ['=', 'account_source', MasterValueUtils::MV_JAR_ACCOUNT_NONE], ['=', 'account_target', MasterValueUtils::MV_JAR_ACCOUNT_NONE]]);
         if (!empty($searchModel->entry_date_from)) {
             $dataQuery->andWhere(['>=', 'entry_date', $searchModel->entry_date_from]);
             $sumEntryQuery->andWhere(['>=', 'entry_date', $searchModel->entry_date_from]);
         }
         if (!empty($searchModel->entry_date_to)) {
             $dataQuery->andWhere(['<=', 'entry_date', $searchModel->entry_date_to]);
             $sumEntryQuery->andWhere(['<=', 'entry_date', $searchModel->entry_date_to]);
         }
         if (is_array($searchModel->entry_status)) {
             $dataQuery->andWhere(['entry_status' => $searchModel->entry_status]);
             $sumEntryQuery->andWhere(['entry_status' => $searchModel->entry_status]);
         }
         if (!empty($searchModel->description)) {
             $dataQuery->andWhere(['like', 'description', $searchModel->description]);
             $sumEntryQuery->andWhere(['like', 'description', $searchModel->description]);
         }
         if ($searchModel->account_source > 0) {
             $dataQuery->andWhere(['=', 'account_source', $searchModel->account_source]);
         }
         if ($searchModel->account_target > 0) {
             $dataQuery->andWhere(['=', 'account_target', $searchModel->account_target]);
         }
         $dataQuery->orderBy('entry_date DESC, id DESC');
         $sumEntryValue = $sumEntryQuery->createCommand()->queryOne();
     } else {
         $dataQuery = JarPayment::find()->where(['id' => -1]);
     }
     // render GUI
     $renderData = ['searchModel' => $searchModel, 'fmShortDatePhp' => $fmShortDatePhp, 'fmShortDateJui' => $fmShortDateJui, 'arrEntryLog' => $arrEntryLog, 'arrAccount' => $arrAccount, 'dataQuery' => $dataQuery, 'sumEntryValue' => $sumEntryValue, 'sumCurrentMonthData' => $sumCurrentMonthData];
     return $this->render('index', $renderData);
 }
Beispiel #9
0
use yii\helpers\Html;
use app\components\DateTimeUtils;
use app\components\MasterValueUtils;
use app\components\NumberUtils;
$formModeValue = $formMode[MasterValueUtils::PG_MODE_NAME];
$this->title = Yii::t('fin.interest', 'Create Interest Unit');
if ($formModeValue === MasterValueUtils::PG_MODE_EDIT) {
    $this->title = Yii::t('fin.interest', 'Edit Interest Unit');
} elseif ($formModeValue === MasterValueUtils::PG_MODE_COPY) {
    $this->title = Yii::t('fin.interest', 'Copy Interest Unit');
}
$startDate = DateTimeUtils::parse($model->start_date, $fmShortDatePhp);
$endDateHtml = null;
$endDate = null;
if (empty($model->end_date)) {
    $endDate = DateTimeUtils::getNow();
    $endDateHtml = '<span class="text-fuchsia">' . $endDate->format(DateTimeUtils::FM_VIEW_DATE_WD) . '</span>';
} else {
    $endDate = DateTimeUtils::parse($model->end_date, $fmShortDatePhp);
    $endDateHtml = DateTimeUtils::htmlDateFormat($endDate, DateTimeUtils::FM_VIEW_DATE_WD, null, true);
}
$interval = $endDate->diff($startDate);
$days = ($interval->invert === 1 ? 1 : -1) * $interval->days + 1;
?>

<div class="box box-default">
    <div class="box-header with-border"><h3 class="box-title"><?php 
echo Yii::t('fin.form', 'Confirm Values');
?>
</h3></div>
    <div id="finInterestConfirmForm" class="box-body"><?php 
Beispiel #10
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);
 }
Beispiel #11
0
    return ['style' => 'vertical-align: middle; text-align: right', 'class' => MasterValueUtils::getColorRow($index)];
}, 'value' => function ($model) {
    return NumberUtils::format($model->interest_unit, 2);
}], ['label' => Yii::t('fin.grid', 'Days'), 'headerOptions' => ['style' => 'text-align: center'], 'contentOptions' => function ($model, $key, $index) {
    return ['style' => 'vertical-align: middle; text-align: center', 'class' => MasterValueUtils::getColorRow($index)];
}, 'value' => function ($model) {
    $startDate = DateTimeUtils::parse($model->start_date, DateTimeUtils::FM_DB_DATE);
    $endDate = is_null($model->end_date) ? DateTimeUtils::getNow() : DateTimeUtils::parse($model->end_date, DateTimeUtils::FM_DB_DATE);
    $interval = $endDate->diff($startDate);
    $days = ($interval->invert === 1 ? 1 : -1) * $interval->days + 1;
    return $days;
}], ['label' => Yii::t('fin.grid', 'Interest'), 'headerOptions' => ['style' => 'text-align: center'], 'contentOptions' => function ($model, $key, $index) {
    return ['style' => 'vertical-align: middle; text-align: right', 'class' => MasterValueUtils::getColorRow($index)];
}, 'value' => function ($model) {
    $startDate = DateTimeUtils::parse($model->start_date, DateTimeUtils::FM_DB_DATE);
    $endDate = is_null($model->end_date) ? DateTimeUtils::getNow() : DateTimeUtils::parse($model->end_date, DateTimeUtils::FM_DB_DATE);
    $interval = $endDate->diff($startDate);
    $days = ($interval->invert === 1 ? 1 : -1) * $interval->days + 1;
    return NumberUtils::format($model->interest_unit * $days, 2);
}], ['label' => Yii::t('fin.grid', 'Action'), 'headerOptions' => ['style' => 'text-align: center; width: 100px;'], 'contentOptions' => function ($model, $key, $index) {
    return ['style' => 'vertical-align: middle; text-align: center', 'class' => MasterValueUtils::getColorRow($index)];
}, 'format' => 'raw', 'value' => function ($model, $key, $index) {
    $btnClass = MasterValueUtils::getColorRow($index);
    $lblView = Yii::t('button', 'View');
    $lblEdit = Yii::t('button', 'Edit');
    $lblCopy = Yii::t('button', 'Copy');
    $arrBtns = [];
    $entryId = $model->id;
    $urlEdit = BaseUrl::toRoute(['interest/update', 'id' => $entryId]);
    $arrBtns[] = StringUtils::format('<li><a href="{0}">{1}</a></li>', [$urlEdit, $lblEdit]);
    $urlView = BaseUrl::toRoute(['interest/view', 'id' => $entryId]);
 public function actionIndex()
 {
     $searchModel = new FinAccountEntry();
     $phpFmShortDate = DateTimeUtils::getPhpDateFormat();
     $arrFinAccount = ModelUtils::getArrData(FinAccount::find()->select(['account_id', 'account_name'])->where(['delete_flag' => 0])->orderBy('account_type, order_num'), 'account_id', 'account_name');
     $arrEntryLog = MasterValueUtils::getArrData('fin_entry_log');
     // submit data
     $postData = Yii::$app->request->post();
     // populate model attributes with user inputs
     $searchModel->load($postData);
     // init value
     $today = new \DateTime();
     if (Yii::$app->request->getIsGet()) {
         $searchModel->entry_date_to = $today->format($phpFmShortDate);
         $lastMonth = DateTimeUtils::getNow(DateTimeUtils::FM_DEV_YM . '01', DateTimeUtils::FM_DEV_DATE);
         DateTimeUtils::subDateTime($lastMonth, 'P1M', null, false);
         $searchModel->entry_date_from = $lastMonth->format($phpFmShortDate);
     }
     FinAccountEntry::$_PHP_FM_SHORTDATE = $phpFmShortDate;
     $searchModel->scenario = MasterValueUtils::SCENARIO_LIST;
     // sum current month
     $beginMonth = DateTimeUtils::parse($today->format(DateTimeUtils::FM_DEV_YM) . '01', DateTimeUtils::FM_DEV_DATE);
     $endMonth = DateTimeUtils::addDateTime($beginMonth, 'P1M');
     DateTimeUtils::subDateTime($endMonth, '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', $beginMonth->format(DateTimeUtils::FM_DB_DATE)]);
     $sumCurrentMonthQuery->andWhere(['<=', 'entry_date', $endMonth->format(DateTimeUtils::FM_DB_DATE)]);
     $sumCurrentMonthData = $sumCurrentMonthQuery->createCommand()->queryOne();
     // sum Debit Amount & Credit Amount
     $sumEntryValue = false;
     // query for dataprovider
     $dataQuery = null;
     if ($searchModel->validate()) {
         $t2leftJoin = '';
         $t2leftJoin .= ' (';
         $t2leftJoin .= ' t1.entry_date = t2.opening_date AND t2.delete_flag = :deleteFlagFalse';
         $t2leftJoin .= '   AND (';
         $t2leftJoin .= '     (t1.entry_status = :entryTypeDeposit AND t2.add_flag = :trantypeAdding AND t1.account_source = t2.current_assets AND t1.account_target = t2.saving_account)';
         $t2leftJoin .= '     OR';
         $t2leftJoin .= '     (t1.entry_status = :entryTypeDeposit AND t2.add_flag = :trantypeWithdrawal AND t1.account_source = t2.saving_account AND t1.account_target = t2.current_assets)';
         $t2leftJoin .= '     OR';
         $t2leftJoin .= '     (t1.entry_status = :entryTypeInterestDeposit AND t1.account_source = :accountNoneId AND t1.account_target = t2.saving_account)';
         $t2leftJoin .= '   )';
         $t2leftJoin .= ' )';
         $dataQuery = FinAccountEntry::find()->select('t1.*, t2.transactions_id AS time_deposit_tran_id')->from('fin_account_entry t1')->leftJoin('fin_time_deposit_tran t2', $t2leftJoin, ['entryTypeDeposit' => MasterValueUtils::MV_FIN_ENTRY_TYPE_DEPOSIT, 'entryTypeInterestDeposit' => MasterValueUtils::MV_FIN_ENTRY_TYPE_INTEREST_DEPOSIT, 'accountNoneId' => MasterValueUtils::MV_FIN_ACCOUNT_NONE, 'deleteFlagFalse' => MasterValueUtils::MV_FIN_FLG_DELETE_FALSE, 'trantypeAdding' => MasterValueUtils::MV_FIN_TIMEDP_TRANTYPE_ADDING, 'trantypeWithdrawal' => MasterValueUtils::MV_FIN_TIMEDP_TRANTYPE_WITHDRAWAL])->where(['=', 't1.delete_flag', MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
         $sumEntryQuery = (new Query())->select(['SUM(IF(account_source > 0, entry_value, 0)) AS entry_source', 'SUM(IF(account_target > 0, entry_value, 0)) AS entry_target']);
         $sumEntryQuery->from('fin_account_entry')->where(['=', 'delete_flag', MasterValueUtils::MV_FIN_FLG_DELETE_FALSE]);
         $sumEntryQuery->andWhere(['OR', ['=', 'account_source', MasterValueUtils::MV_FIN_ACCOUNT_NONE], ['=', 'account_target', MasterValueUtils::MV_FIN_ACCOUNT_NONE]]);
         if (!empty($searchModel->entry_date_from)) {
             $dataQuery->andWhere(['>=', 't1.entry_date', $searchModel->entry_date_from]);
             $sumEntryQuery->andWhere(['>=', 'entry_date', $searchModel->entry_date_from]);
         }
         if (!empty($searchModel->entry_date_to)) {
             $dataQuery->andWhere(['<=', 't1.entry_date', $searchModel->entry_date_to]);
             $sumEntryQuery->andWhere(['<=', 'entry_date', $searchModel->entry_date_to]);
         }
         if ($searchModel->account_source > 0) {
             $dataQuery->andWhere(['=', 't1.account_source', $searchModel->account_source]);
         }
         if ($searchModel->account_target > 0) {
             $dataQuery->andWhere(['=', 't1.account_target', $searchModel->account_target]);
         }
         $dataQuery->orderBy('t1.entry_date DESC, t1.create_date DESC');
         $sumEntryValue = $sumEntryQuery->createCommand()->queryOne();
     } else {
         $dataQuery = FinAccountEntry::find()->where(['entry_id' => -1]);
     }
     // render GUI
     $renderData = ['searchModel' => $searchModel, 'phpFmShortDate' => $phpFmShortDate, 'arrEntryLog' => $arrEntryLog, 'arrFinAccount' => $arrFinAccount, 'dataQuery' => $dataQuery, 'sumEntryValue' => $sumEntryValue, 'sumCurrentMonthData' => $sumCurrentMonthData];
     return $this->render('index', $renderData);
 }