From 7dd96a308ebd791e29315ae1c96985c03b50fe6a Mon Sep 17 00:00:00 2001 From: Sevan Nerse Date: Mon, 15 Feb 2021 13:25:16 +0300 Subject: [PATCH] minor bug fixed on reflect recurring transactions to reports --- app/Abstracts/Report.php | 1 - app/Traits/DateTime.php | 8 ++++---- app/Utilities/Recurring.php | 16 ++++++++++------ 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/Abstracts/Report.php b/app/Abstracts/Report.php index cc272233a..d8684fb3f 100644 --- a/app/Abstracts/Report.php +++ b/app/Abstracts/Report.php @@ -383,7 +383,6 @@ abstract class Report break; case 'quarterly': - $start = $end = ''; $quarters = $this->getFinancialQuarters($this->year); foreach ($quarters as $quarter) { diff --git a/app/Traits/DateTime.php b/app/Traits/DateTime.php index 79b2b2fae..ef3f102e4 100644 --- a/app/Traits/DateTime.php +++ b/app/Traits/DateTime.php @@ -50,8 +50,8 @@ trait DateTime $start = Date::parse($year . '-01-01')->startOfDay()->format('Y-m-d H:i:s'); $end = Date::parse($year . '-12-31')->endOfDay()->format('Y-m-d H:i:s'); } else { - $start = $financial_start->format('Y-m-d H:i:s'); - $end = $financial_start->addYear(1)->subDays(1)->format('Y-m-d H:i:s'); + $start = $financial_start->startOfDay()->format('Y-m-d H:i:s'); + $end = $financial_start->addYear(1)->subDays(1)->endOfDay()->format('Y-m-d H:i:s'); } return $query->whereBetween($field, [$start, $end]); @@ -121,7 +121,7 @@ trait DateTime { $start = $this->getFinancialStart($year); - return CarbonPeriod::create($start, $start->copy()->addYear()->subDay()); + return CarbonPeriod::create($start, $start->copy()->addYear()->subDay()->endOfDay()); } public function getFinancialQuarters($year = null) @@ -130,7 +130,7 @@ trait DateTime $start = $this->getFinancialStart($year); for ($i = 0; $i < 4; $i++) { - $quarters[] = CarbonPeriod::create($start->copy()->addQuarters($i), $start->copy()->addQuarters($i + 1)->subDay()); + $quarters[] = CarbonPeriod::create($start->copy()->addQuarters($i), $start->copy()->addQuarters($i + 1)->subDay()->endOfDay()); } return $quarters; diff --git a/app/Utilities/Recurring.php b/app/Utilities/Recurring.php index 66372d165..0d16212ab 100644 --- a/app/Utilities/Recurring.php +++ b/app/Utilities/Recurring.php @@ -3,12 +3,17 @@ namespace App\Utilities; use App\Models\Document\Document; +use App\Traits\DateTime; use Date; class Recurring { + use DateTime; + public static function reflect(&$items, $issued_date_field) { + $financial_year = (new static)->getFinancialYear(); + foreach ($items as $key => $item) { // @todo cache recurrings if (!$item->recurring || !empty($item->parent_id)) { @@ -18,18 +23,17 @@ class Recurring foreach ($item->recurring->getRecurringSchedule(false) as $schedule) { $issued = Date::parse($item->$issued_date_field); $start = $schedule->getStart(); - - if ($issued->format('Y') != $start->format('Y')) { - continue; - } + $start_date = Date::parse($start->format('Y-m-d')); if (($issued->format('Y-m') == $start->format('Y-m')) && ($issued->format('d') >= $start->format('d'))) { continue; } - $clone = clone $item; + if ($start_date->lessThan($financial_year->getStartDate()) || $start_date->greaterThan($financial_year->getEndDate())) { + continue; + } - $start_date = Date::parse($start->format('Y-m-d')); + $clone = clone $item; if ($clone instanceof Document) { // Days between invoiced/billed and due date