From 4b27ab38f8701c38cc9ba11e30c0ea535b0131d5 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 2 Nov 2024 05:14:03 +0100 Subject: [PATCH] Fix https://github.com/firefly-iii/firefly-iii/issues/9416 --- app/Models/TransactionJournal.php | 7 +++++-- app/Repositories/Bill/BillRepository.php | 2 ++ app/Transformers/BillTransformer.php | 12 ++++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/Models/TransactionJournal.php b/app/Models/TransactionJournal.php index 83f3d47df8..9ef2581695 100644 --- a/app/Models/TransactionJournal.php +++ b/app/Models/TransactionJournal.php @@ -37,6 +37,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Facades\Log; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** @@ -167,12 +168,14 @@ class TransactionJournal extends Model public function scopeAfter(EloquentBuilder $query, Carbon $date): EloquentBuilder { - return $query->where('transaction_journals.date', '>=', $date->format('Y-m-d 00:00:00')); + Log::debug(sprintf('scopeAfter("%s")', $date->format('Y-m-d H:i:s'))); + return $query->where('transaction_journals.date', '>=', $date->format('Y-m-d H:i:s')); } public function scopeBefore(EloquentBuilder $query, Carbon $date): EloquentBuilder { - return $query->where('transaction_journals.date', '<=', $date->format('Y-m-d 00:00:00')); + Log::debug(sprintf('scopeBefore("%s")', $date->format('Y-m-d H:i:s'))); + return $query->where('transaction_journals.date', '<=', $date->format('Y-m-d H:i:s')); } public function scopeTransactionTypes(EloquentBuilder $query, array $types): void diff --git a/app/Repositories/Bill/BillRepository.php b/app/Repositories/Bill/BillRepository.php index cba752dd33..d0fa449775 100644 --- a/app/Repositories/Bill/BillRepository.php +++ b/app/Repositories/Bill/BillRepository.php @@ -306,6 +306,8 @@ class BillRepository implements BillRepositoryInterface { // app('log')->debug('Now in getPaidDatesInRange()'); + Log::debug(sprintf('Search for linked journals between %s and %s', $start->toW3cString(), $end->toW3cString())); + return $bill->transactionJournals() ->before($end)->after($start)->get( [ diff --git a/app/Transformers/BillTransformer.php b/app/Transformers/BillTransformer.php index b2e471bdff..85a9741091 100644 --- a/app/Transformers/BillTransformer.php +++ b/app/Transformers/BillTransformer.php @@ -194,11 +194,19 @@ class BillTransformer extends AbstractTransformer $searchStart = clone $start; $start->subDay(); - app('log')->debug(sprintf('Parameters are start: %s end: %s', $start->format('Y-m-d'), $this->parameters->get('end')->format('Y-m-d'))); + /** @var Carbon $end */ + $end = clone $this->parameters->get('end'); + $searchEnd = clone $end; + + // move the search dates to the start of the day. + $searchStart->startOfDay(); + $searchEnd->endOfDay(); + + app('log')->debug(sprintf('Parameters are start: %s end: %s', $start->format('Y-m-d'), $end->format('Y-m-d'))); app('log')->debug(sprintf('Search parameters are: start: %s', $searchStart->format('Y-m-d'))); // Get from database when bill was paid. - $set = $this->repository->getPaidDatesInRange($bill, $searchStart, $this->parameters->get('end')); + $set = $this->repository->getPaidDatesInRange($bill, $searchStart, $searchEnd); app('log')->debug(sprintf('Count %d entries in getPaidDatesInRange()', $set->count())); // Grab from array the most recent payment. If none exist, fall back to the start date and pretend *that* was the last paid date.