Beispiel #1
0
 /**
  *
  * @param \FireflyIII\Models\Account $account
  * @param \Carbon\Carbon             $date
  *
  * @return string
  */
 public function balanceIgnoreVirtual(Account $account, Carbon $date) : string
 {
     // abuse chart properties:
     $cache = new CacheProperties();
     $cache->addProperty($account->id);
     $cache->addProperty('balance-no-virtual');
     $cache->addProperty($date);
     if ($cache->has()) {
         return $cache->get();
     }
     $balance = strval($account->transactions()->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')->where('transaction_journals.date', '<=', $date->format('Y-m-d'))->sum('transactions.amount'));
     $cache->store($balance);
     return $balance;
 }
Beispiel #2
0
 /**
  *
  * @param \FireflyIII\Models\Account $account
  * @param \Carbon\Carbon             $date
  * @param bool                       $ignoreVirtualBalance
  *
  * @return float
  */
 public function balance(Account $account, Carbon $date, $ignoreVirtualBalance = false)
 {
     // abuse chart properties:
     $cache = new CacheProperties();
     $cache->addProperty($account->id);
     $cache->addProperty('balance');
     $cache->addProperty($date);
     $cache->addProperty($ignoreVirtualBalance);
     if ($cache->has()) {
         return $cache->get();
         // @codeCoverageIgnore
     }
     bcscale(2);
     $balance = $account->transactions()->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')->where('transaction_journals.date', '<=', $date->format('Y-m-d'))->sum('transactions.amount');
     if (!$ignoreVirtualBalance) {
         $balance = bcadd($balance, $account->virtual_balance);
     }
     $cache->store(round($balance, 2));
     return round($balance, 2);
 }
 /**
  * @param Account $account
  *
  * @return Carbon
  */
 public function firstUseDate(Account $account) : Carbon
 {
     $first = new Carbon('1900-01-01');
     /** @var Transaction $first */
     $date = $account->transactions()->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')->orderBy('transaction_journals.date', 'ASC')->orderBy('transaction_journals.order', 'DESC')->orderBy('transaction_journals.id', 'ASC')->first(['transaction_journals.date']);
     if (!is_null($date)) {
         $first = new Carbon($date->date);
     }
     return $first;
 }
Beispiel #4
0
 /**
  * @param Account $account
  *
  * @return Carbon|null
  */
 public function getLastActivity(Account $account)
 {
     $lastTransaction = $account->transactions()->leftJoin('transaction_journals', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')->orderBy('transaction_journals.date', 'DESC')->first(['transactions.*', 'transaction_journals.date']);
     if ($lastTransaction) {
         return $lastTransaction->transactionjournal->date;
     }
     return null;
 }