From 57bd8eba02348b6ceb9a7b00a4793ba2d528fa7f Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 27 Jul 2023 18:38:34 +1000 Subject: [PATCH] fixes for reminder calculations --- app/Utils/Traits/MakesReminders.php | 12 +++--------- tests/Unit/LateFeeTest.php | 13 +++++++++++-- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/Utils/Traits/MakesReminders.php b/app/Utils/Traits/MakesReminders.php index d886ffaacbb8..06560db29e38 100644 --- a/app/Utils/Traits/MakesReminders.php +++ b/app/Utils/Traits/MakesReminders.php @@ -30,18 +30,13 @@ trait MakesReminders $offset = $this->client->timezone_offset(); - // nlog($schedule_reminder. " ". $num_days_reminder); - // nlog("date = " . Carbon::parse($this->date)->addDays($num_days_reminder)->startOfDay()->addSeconds($offset)); - // nlog("due date = " . Carbon::parse($this->due_date)->addDays($num_days_reminder)->startOfDay()->addSeconds($offset)); - // nlog("now = " . Carbon::now()->startOfDay()->format('Y-m-d H:i:s')); - switch ($schedule_reminder) { case 'after_invoice_date': - return Carbon::parse($this->date)->addDays($num_days_reminder)->startOfDay()->addSeconds($offset)->eq(Carbon::now()); + return Carbon::parse($this->date)->addDays($num_days_reminder)->startOfDay()->addSeconds($offset)->isSameDay(Carbon::now()); case 'before_due_date': - return Carbon::parse($this->due_date)->subDays($num_days_reminder)->startOfDay()->addSeconds($offset)->eq(Carbon::now()); + return Carbon::parse($this->due_date)->subDays($num_days_reminder)->startOfDay()->addSeconds($offset)->isSameDay(Carbon::now()); case 'after_due_date': - return Carbon::parse($this->due_date)->addDays($num_days_reminder)->startOfDay()->addSeconds($offset)->eq(Carbon::now()); + return Carbon::parse($this->due_date)->addDays($num_days_reminder)->startOfDay()->addSeconds($offset)->isSameDay(Carbon::now()); default: return null; } @@ -81,7 +76,6 @@ trait MakesReminders return $entity_string; } - //also implement endless reminders here } private function checkEndlessReminder($last_sent_date, $endless_reminder_frequency_id) :bool diff --git a/tests/Unit/LateFeeTest.php b/tests/Unit/LateFeeTest.php index 72dad042580d..383e9b2424dd 100644 --- a/tests/Unit/LateFeeTest.php +++ b/tests/Unit/LateFeeTest.php @@ -96,6 +96,8 @@ class LateFeeTest extends TestCase public function testLateFeeAdded() { + $this->travelTo(now()->subDays(15)); + $settings = CompanySettings::defaults(); $settings->client_online_payment_notification = false; $settings->client_manual_payment_notification = false; @@ -105,6 +107,7 @@ class LateFeeTest extends TestCase $settings->enable_reminder1 = true; $settings->num_days_reminder1 = 10; $settings->schedule_reminder1 = 'after_due_date'; + $settings->entity_send_time = '0'; $client = $this->buildData($settings); @@ -117,7 +120,7 @@ class LateFeeTest extends TestCase 'status_id' => 2, 'total_taxes' => 1, 'date' => now()->format('Y-m-d'), - 'due_date' => now()->subDays(10)->format('Y-m-d'), + 'due_date' => now()->addDays(10)->format('Y-m-d'), 'terms' => 'nada', 'discount' => 0, 'tax_rate1' => 0, @@ -131,7 +134,11 @@ class LateFeeTest extends TestCase ]); $i = $i->calc()->getInvoice(); - $i->service()->applyNumber()->createInvitations()->save(); + $i->service()->markSent()->setReminder()->applyNumber()->createInvitations()->save(); + + // $this->travelBack(); + $this->travelTo(now()->addDays(20)->startOfDay()->format('Y-m-d')); + $i = $i->fresh(); $this->assertEquals(10, $i->amount); $this->assertEquals(10, $i->balance); @@ -144,6 +151,8 @@ class LateFeeTest extends TestCase $this->assertEquals(20, $i->balance); + $this->travelBack(); + } public function testLateFeeAddedToNewInvoiceWithLockedInvoiceConfig()