From 0a8cf53be02eb2f489dc8776ed744a4bd685eb35 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 26 Jan 2024 08:09:06 +1100 Subject: [PATCH] Validations for recurring invoice start dates --- .../StoreRecurringInvoiceRequest.php | 1 + .../UpdateRecurringInvoiceRequest.php | 1 + ...01_10_071427_normalize_product_cost_types.php | 13 ++++++++----- ...24_01_12_073629_laos_currency_translation.php | 3 --- tests/Feature/RecurringInvoiceTest.php | 16 ++++++++++++++++ 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/Http/Requests/RecurringInvoice/StoreRecurringInvoiceRequest.php b/app/Http/Requests/RecurringInvoice/StoreRecurringInvoiceRequest.php index 7ac1eeef1650..af9a45673330 100644 --- a/app/Http/Requests/RecurringInvoice/StoreRecurringInvoiceRequest.php +++ b/app/Http/Requests/RecurringInvoice/StoreRecurringInvoiceRequest.php @@ -75,6 +75,7 @@ class StoreRecurringInvoiceRequest extends Request $rules['tax_name3'] = 'bail|sometimes|string|nullable'; $rules['due_date_days'] = 'bail|sometimes|string'; $rules['exchange_rate'] = 'bail|sometimes|numeric'; + $rules['next_send_date'] = 'bail|required|date|after:yesterday'; return $rules; } diff --git a/app/Http/Requests/RecurringInvoice/UpdateRecurringInvoiceRequest.php b/app/Http/Requests/RecurringInvoice/UpdateRecurringInvoiceRequest.php index 581d6a8a014d..8800ab04a0a4 100644 --- a/app/Http/Requests/RecurringInvoice/UpdateRecurringInvoiceRequest.php +++ b/app/Http/Requests/RecurringInvoice/UpdateRecurringInvoiceRequest.php @@ -69,6 +69,7 @@ class UpdateRecurringInvoiceRequest extends Request $rules['tax_name2'] = 'bail|sometimes|string|nullable'; $rules['tax_name3'] = 'bail|sometimes|string|nullable'; $rules['exchange_rate'] = 'bail|sometimes|numeric'; + $rules['next_send_date'] = 'bail|required|date|after:yesterday'; return $rules; } diff --git a/database/migrations/2024_01_10_071427_normalize_product_cost_types.php b/database/migrations/2024_01_10_071427_normalize_product_cost_types.php index 8c9530c4aca6..ce91a2aa4141 100644 --- a/database/migrations/2024_01_10_071427_normalize_product_cost_types.php +++ b/database/migrations/2024_01_10_071427_normalize_product_cost_types.php @@ -28,14 +28,17 @@ return new class extends Migration $line_items = $invoice->line_items; - foreach ($line_items as $key => $item) { + if(is_array($line_items)) + { + foreach ($line_items as $key => $item) { + + if(property_exists($item, 'product_cost')) { + $line_items[$key]->product_cost = (float) $line_items[$key]->product_cost; + } - if(property_exists($item, 'product_cost')) { - $line_items[$key]->product_cost = (float) $line_items[$key]->product_cost; } - } - + $invoice->line_items = $line_items; $invoice->saveQuietly(); diff --git a/database/migrations/2024_01_12_073629_laos_currency_translation.php b/database/migrations/2024_01_12_073629_laos_currency_translation.php index 4856bcb1be07..81796d817733 100644 --- a/database/migrations/2024_01_12_073629_laos_currency_translation.php +++ b/database/migrations/2024_01_12_073629_laos_currency_translation.php @@ -21,7 +21,6 @@ return new class extends Migration Language::create(['id' => 41, 'name' => 'Lao', 'locale' => 'lo_LA']); } - $cur = \App\Models\Currency::find(121); if(!$cur) { @@ -36,8 +35,6 @@ return new class extends Migration $cur->save(); } - - } /** diff --git a/tests/Feature/RecurringInvoiceTest.php b/tests/Feature/RecurringInvoiceTest.php index 5a8bd0c33dbf..81fc73a9fa64 100644 --- a/tests/Feature/RecurringInvoiceTest.php +++ b/tests/Feature/RecurringInvoiceTest.php @@ -61,6 +61,22 @@ class RecurringInvoiceTest extends TestCase $this->makeTestData(); } + public function testDateValidations() + { + $data = [ + 'client_id' => $this->client->hashed_id, + 'frequency_id' => 5, + 'next_send_date' => '0001-01-01', + ]; + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->postJson('/api/v1/recurring_invoices', $data) + ->assertStatus(422); + + } + public function testLinkingSubscription() { $s = Subscription::factory()