Move collecting journals to the collector.

This commit is contained in:
James Cole 2016-11-05 11:24:15 +01:00
parent aeca2ef3b2
commit 43afdb021a
No known key found for this signature in database
GPG Key ID: C16961E655E74B5E
4 changed files with 24 additions and 53 deletions

View File

@ -206,6 +206,22 @@ class JournalCollector
return $this;
}
/**
* @param Collection $bills
*
* @return JournalCollector
*/
public function setBills(Collection $bills): JournalCollector
{
if ($bills->count() > 0) {
$billIds = $bills->pluck('id')->toArray();
$this->query->whereIn('transaction_journals.bill_id', $billIds);
}
return $this;
}
/**
* @param Category $category
*

View File

@ -14,17 +14,17 @@ declare(strict_types = 1);
namespace FireflyIII\Helpers\Report;
use Carbon\Carbon;
use DB;
use FireflyIII\Helpers\Collection\Bill as BillCollection;
use FireflyIII\Helpers\Collection\BillLine;
use FireflyIII\Helpers\Collection\Category as CategoryCollection;
use FireflyIII\Helpers\Collection\Expense;
use FireflyIII\Helpers\Collection\Income;
use FireflyIII\Helpers\Collector\JournalCollector;
use FireflyIII\Helpers\FiscalHelperInterface;
use FireflyIII\Models\Bill;
use FireflyIII\Models\Budget;
use FireflyIII\Models\Category;
use FireflyIII\Models\Tag;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Account\AccountTaskerInterface;
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
@ -79,7 +79,9 @@ class ReportHelper implements ReportHelperInterface
/** @var BillRepositoryInterface $repository */
$repository = app(BillRepositoryInterface::class);
$bills = $repository->getBillsForAccounts($accounts);
$journals = $repository->getAllJournalsInRange($bills, $start, $end);
$collector = new JournalCollector(auth()->user());
$collector->setAccounts($accounts)->setRange($start, $end)->setBills($bills);
$journals = $collector->getJournals();
$collection = new BillCollection;
/** @var Bill $bill */
@ -93,14 +95,14 @@ class ReportHelper implements ReportHelperInterface
// is hit in period?
$entry = $journals->filter(
function (TransactionJournal $journal) use ($bill) {
return $journal->bill_id === $bill->id;
function (Transaction $transaction) use ($bill) {
return $transaction->bill_id === $bill->id;
}
);
$first = $entry->first();
if (!is_null($first)) {
$billLine->setTransactionJournalId($first->id);
$billLine->setAmount($first->journalAmount);
$billLine->setAmount($first->transaction_amount);
$billLine->setHit(true);
}

View File

@ -116,41 +116,6 @@ class BillRepository implements BillRepositoryInterface
return $set;
}
/**
* Returns all journals connected to these bills in the given range. Amount paid
* is stored in "journalAmount" as a negative number.
*
* @param Collection $bills
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function getAllJournalsInRange(Collection $bills, Carbon $start, Carbon $end): Collection
{
$ids = $bills->pluck('id')->toArray();
$set = $this->user->transactionJournals()
->leftJoin(
'transactions', function (JoinClause $join) {
$join->on('transactions.transaction_journal_id', '=', 'transaction_journals.id')->where('transactions.amount', '<', 0);
}
)
->whereIn('bill_id', $ids)
->before($end)
->after($start)
->groupBy(['transaction_journals.bill_id', 'transaction_journals.id'])
->get(
[
'transaction_journals.bill_id',
'transaction_journals.id',
DB::raw('SUM(transactions.amount) AS journalAmount'),
]
);
return $set;
}
/**
* @return Collection
*/

View File

@ -57,18 +57,6 @@ interface BillRepositoryInterface
*/
public function getActiveBills(): Collection;
/**
* Returns all journals connected to these bills in the given range. Amount paid
* is stored in "journalAmount" as a negative number.
*
* @param Collection $bills
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function getAllJournalsInRange(Collection $bills, Carbon $start, Carbon $end): Collection;
/**
* @return Collection
*/