fixes for reminder calculations

This commit is contained in:
David Bomba 2023-07-27 18:38:34 +10:00
parent f9615b3248
commit 57bd8eba02
2 changed files with 14 additions and 11 deletions

View File

@ -30,18 +30,13 @@ trait MakesReminders
$offset = $this->client->timezone_offset(); $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) { switch ($schedule_reminder) {
case 'after_invoice_date': 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': 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': 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: default:
return null; return null;
} }
@ -81,7 +76,6 @@ trait MakesReminders
return $entity_string; return $entity_string;
} }
//also implement endless reminders here
} }
private function checkEndlessReminder($last_sent_date, $endless_reminder_frequency_id) :bool private function checkEndlessReminder($last_sent_date, $endless_reminder_frequency_id) :bool

View File

@ -96,6 +96,8 @@ class LateFeeTest extends TestCase
public function testLateFeeAdded() public function testLateFeeAdded()
{ {
$this->travelTo(now()->subDays(15));
$settings = CompanySettings::defaults(); $settings = CompanySettings::defaults();
$settings->client_online_payment_notification = false; $settings->client_online_payment_notification = false;
$settings->client_manual_payment_notification = false; $settings->client_manual_payment_notification = false;
@ -105,6 +107,7 @@ class LateFeeTest extends TestCase
$settings->enable_reminder1 = true; $settings->enable_reminder1 = true;
$settings->num_days_reminder1 = 10; $settings->num_days_reminder1 = 10;
$settings->schedule_reminder1 = 'after_due_date'; $settings->schedule_reminder1 = 'after_due_date';
$settings->entity_send_time = '0';
$client = $this->buildData($settings); $client = $this->buildData($settings);
@ -117,7 +120,7 @@ class LateFeeTest extends TestCase
'status_id' => 2, 'status_id' => 2,
'total_taxes' => 1, 'total_taxes' => 1,
'date' => now()->format('Y-m-d'), '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', 'terms' => 'nada',
'discount' => 0, 'discount' => 0,
'tax_rate1' => 0, 'tax_rate1' => 0,
@ -131,7 +134,11 @@ class LateFeeTest extends TestCase
]); ]);
$i = $i->calc()->getInvoice(); $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->amount);
$this->assertEquals(10, $i->balance); $this->assertEquals(10, $i->balance);
@ -144,6 +151,8 @@ class LateFeeTest extends TestCase
$this->assertEquals(20, $i->balance); $this->assertEquals(20, $i->balance);
$this->travelBack();
} }
public function testLateFeeAddedToNewInvoiceWithLockedInvoiceConfig() public function testLateFeeAddedToNewInvoiceWithLockedInvoiceConfig()