Exemplo n.º 1
0
 public function save($runValidation = true, $attributeNames = null)
 {
     $date = date('Y-m-d', strtotime($this->transaction->date . " +1 day"));
     if ($this->isNewRecord) {
         if ($date >= '2015-11-01') {
             $balance = $this->account->getBalance($date);
             if ($balance->date != $date) {
                 $balance = new Balance();
                 $balance->date = $date;
                 $balance->account_id = $this->account->id;
             }
             $balance->sum = $this->account->getBalance($date)->sum - $this->sum;
             $balance->save();
             $balance->updateFuture(-$this->sum);
         } else {
             // For previous records
             $balance = $this->account->getBalance($date);
             if (!$balance) {
                 $balance = $this->account->getClosestFutureBalance($date);
             }
             if ($balance->date != $date) {
                 $balance = new Balance();
                 $balance->date = $date;
                 $balance->account_id = $this->account->id;
             }
             $balance->sum = $this->account->getBalance($date)->sum;
             $balance->save();
             $balance->updatePast($this->sum);
         }
     } else {
         if ($date >= '2015-11-01') {
             // Substract previos from next balances
             // Add new to next balances
             $balance = $this->account->getBalance($date);
             if ($balance->date != $date) {
                 $balance = new Balance();
                 $balance->date = $date;
                 $balance->account_id = $this->account->id;
             }
             $balance->sum = $this->account->getBalance($date)->sum - $this->sum + $this->oldAttributes['sum'];
             $balance->save();
             $balance->updateFuture(-$this->sum + $this->oldAttributes['sum']);
         } else {
             //
         }
     }
     return parent::save($runValidation, $attributeNames);
 }