Exemplo n.º 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;
 }
Exemplo n.º 2
0
 public function actionIndex()
 {
     $arrDeposits = [];
     $sumDeposits = ['opening_balance' => 0, 'closing_interest_unit' => 0, 'closing_interest' => 0, 'closing_balance' => 0, 'now_interest_unit' => 0, 'now_interest' => 0, 'capital' => 0, 'result_interest' => 0];
     $minClosingTimestamp = null;
     $arrTmAtm = [];
     $arrCredit = [];
     $arrLunchFound = [];
     $arrOtherFound = [];
     $sumTmAtm = ['opening_balance' => 0, 'closing_balance' => 0, 'now_balance' => 0];
     $sumTmAtmDeposit = ['opening_balance' => 0, 'closing_balance' => 0, 'now_balance' => 0];
     $sumTotal = ['opening_balance' => 0, 'closing_balance' => 0, 'now_balance' => 0];
     $arrFinAccount = FinAccount::find()->where(['delete_flag' => 0])->orderBy('order_num')->all();
     foreach ($arrFinAccount as $finAccount) {
         $instance = $finAccount->instance();
         $instance->initialize();
         if ($instance instanceof FinAccount01I00 || $instance instanceof FinAccount02I00) {
             // add instance TM or ATM
             $arrTmAtm[] = $instance;
             // sum TM - ATM
             $sumTmAtm['opening_balance'] += $instance->opening_balance;
             $sumTmAtm['closing_balance'] += $instance->closing_balance;
             $sumTmAtm['now_balance'] += $instance->now_balance;
             // sum TM - ATM - Deposits
             $sumTmAtmDeposit['opening_balance'] += $instance->opening_balance;
             $sumTmAtmDeposit['closing_balance'] += $instance->closing_balance;
             $sumTmAtmDeposit['now_balance'] += $instance->now_balance;
             // sum Total
             $sumTotal['opening_balance'] += $instance->opening_balance;
             $sumTotal['closing_balance'] += $instance->closing_balance;
             $sumTotal['now_balance'] += $instance->now_balance;
         } elseif ($instance instanceof FinAccount03I00) {
             // add instance CREDIT
             $arrCredit[] = $instance;
             // sum Total
             $sumTotal['opening_balance'] += $instance->opening_balance;
             $sumTotal['closing_balance'] += $instance->closing_balance;
             $sumTotal['now_balance'] += $instance->now_balance;
         } elseif ($instance instanceof FinAccount04I00) {
             // add instance Deposits
             $arrDeposits[] = $instance;
             // sum deposits
             $sumDeposits['opening_balance'] += $instance->opening_balance;
             $sumDeposits['closing_interest_unit'] += $instance->closing_interest_unit;
             $sumDeposits['closing_interest'] += $instance->closing_interest;
             $sumDeposits['closing_balance'] += $instance->closing_balance;
             $sumDeposits['now_interest_unit'] += $instance->now_interest_unit;
             $sumDeposits['now_interest'] += $instance->now_interest;
             $sumDeposits['capital'] += $instance->capital;
             $sumDeposits['result_interest'] += $instance->result_interest;
             // sum TM - ATM - Deposits
             $nowbalance = $instance->opening_balance + $instance->now_interest;
             $sumTmAtmDeposit['opening_balance'] += $instance->opening_balance;
             $sumTmAtmDeposit['closing_balance'] += $instance->closing_balance;
             $sumTmAtmDeposit['now_balance'] += $nowbalance;
             // sum Total
             $sumTotal['opening_balance'] += $instance->opening_balance;
             $sumTotal['closing_balance'] += $instance->closing_balance;
             $sumTotal['now_balance'] += $nowbalance;
             // next closing
             $timestamp = DateTimeUtils::getDateTimeFromDB($instance->closing_date)->getTimestamp();
             if (is_null($minClosingTimestamp) || $minClosingTimestamp > $timestamp) {
                 $minClosingTimestamp = $timestamp;
             }
         } elseif ($instance instanceof FinAccount05I00) {
             // add instance LUNCH FOUND
             $arrLunchFound[] = $instance;
             // sum Total
             $sumTotal['opening_balance'] += $instance->opening_balance;
             $sumTotal['closing_balance'] += $instance->closing_balance;
             $sumTotal['now_balance'] += $instance->now_balance;
         } elseif ($instance instanceof FinAccount06I00 || $instance instanceof FinAccount07I00) {
             // add instance OTHER FOUND
             $arrOtherFound[] = $instance;
             // sum Total
             $sumTotal['opening_balance'] += $instance->opening_balance;
             $sumTotal['closing_balance'] += $instance->closing_balance;
             $sumTotal['now_balance'] += $instance->now_balance;
         }
     }
     return $this->render('index', ['arrDeposits' => $arrDeposits, 'sumDeposits' => $sumDeposits, 'minClosingTimestamp' => $minClosingTimestamp, 'arrTmAtm' => $arrTmAtm, 'sumTmAtm' => $sumTmAtm, 'sumTmAtmDeposit' => $sumTmAtmDeposit, 'arrCredit' => $arrCredit, 'arrLunchFound' => $arrLunchFound, 'arrOtherFound' => $arrOtherFound, 'sumTotal' => $sumTotal]);
 }