From df35545fef8634423daf06e1464b21ef6221573a Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 15 Sep 2023 07:28:26 +1000 Subject: [PATCH] Fixes for recurring expense generation of next_send_date --- app/Factory/RecurringExpenseFactory.php | 4 +++- .../UpdateRecurringExpenseRequest.php | 5 ++++- app/Jobs/Cron/RecurringExpensesCron.php | 5 +++++ .../Activity/CreatedExpenseActivity.php | 3 ++- tests/Unit/ClientSettingsTest.php | 17 +++++------------ 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/app/Factory/RecurringExpenseFactory.php b/app/Factory/RecurringExpenseFactory.php index cc92a45811e3..15d000334c17 100644 --- a/app/Factory/RecurringExpenseFactory.php +++ b/app/Factory/RecurringExpenseFactory.php @@ -34,7 +34,8 @@ class RecurringExpenseFactory $recurring_expense->tax_amount1 = 0; $recurring_expense->tax_amount2 = 0; $recurring_expense->tax_amount3 = 0; - $recurring_expense->date = null; + $recurring_expense->date = now()->format('Y-m-d'); + $recurring_expense->next_send_date = now()->format('Y-m-d'); $recurring_expense->payment_date = null; $recurring_expense->amount = 0; $recurring_expense->foreign_amount = 0; @@ -47,6 +48,7 @@ class RecurringExpenseFactory $recurring_expense->custom_value4 = ''; $recurring_expense->uses_inclusive_taxes = true; $recurring_expense->calculate_tax_by_amount = true; + $recurring_expense->remaining_cycles = -1; return $recurring_expense; } diff --git a/app/Http/Requests/RecurringExpense/UpdateRecurringExpenseRequest.php b/app/Http/Requests/RecurringExpense/UpdateRecurringExpenseRequest.php index 76c61120971e..e45f66e80099 100644 --- a/app/Http/Requests/RecurringExpense/UpdateRecurringExpenseRequest.php +++ b/app/Http/Requests/RecurringExpense/UpdateRecurringExpenseRequest.php @@ -75,6 +75,9 @@ class UpdateRecurringExpenseRequest extends Request public function prepareForValidation() { + /** @var \App\Models\User $user*/ + $user = auth()->user(); + $input = $this->all(); $input = $this->decodePrimaryKeys($input); @@ -88,7 +91,7 @@ class UpdateRecurringExpenseRequest extends Request } if (! array_key_exists('currency_id', $input) || strlen($input['currency_id']) == 0) { - $input['currency_id'] = (string) auth()->user()->company()->settings->currency_id; + $input['currency_id'] = (string) $user->company()->settings->currency_id; } $this->replace($input); diff --git a/app/Jobs/Cron/RecurringExpensesCron.php b/app/Jobs/Cron/RecurringExpensesCron.php index 1b51f2fc70f4..55eee07e5bb5 100644 --- a/app/Jobs/Cron/RecurringExpensesCron.php +++ b/app/Jobs/Cron/RecurringExpensesCron.php @@ -11,12 +11,14 @@ namespace App\Jobs\Cron; +use App\Utils\Ninja; use App\Libraries\MultiDB; use Illuminate\Support\Carbon; use App\Models\RecurringExpense; use App\Models\RecurringInvoice; use Illuminate\Support\Facades\Auth; use App\Utils\Traits\GeneratesCounter; +use App\Events\Expense\ExpenseWasCreated; use Illuminate\Foundation\Bus\Dispatchable; use App\Factory\RecurringExpenseToExpenseFactory; @@ -109,6 +111,9 @@ class RecurringExpensesCron $expense->number = $this->getNextExpenseNumber($expense); $expense->saveQuietly(); + event(new ExpenseWasCreated($expense, $expense->company, Ninja::eventVars(null))); + event('eloquent.created: App\Models\Expense', $expense); + $recurring_expense->next_send_date = $recurring_expense->nextSendDate(); $recurring_expense->next_send_date_client = $recurring_expense->next_send_date; $recurring_expense->last_sent_date = now(); diff --git a/app/Listeners/Activity/CreatedExpenseActivity.php b/app/Listeners/Activity/CreatedExpenseActivity.php index 9309db70e921..c6e46122cd5f 100644 --- a/app/Listeners/Activity/CreatedExpenseActivity.php +++ b/app/Listeners/Activity/CreatedExpenseActivity.php @@ -49,7 +49,8 @@ class CreatedExpenseActivity implements ShouldQueue $fields->user_id = $user_id; $fields->company_id = $event->expense->company_id; $fields->activity_type_id = Activity::CREATE_EXPENSE; - + $fields->recurring_expense_id = $event->expense->recurring_expense_id ?? null; + $this->activity_repo->save($fields, $event->expense, $event->event_vars); } } diff --git a/tests/Unit/ClientSettingsTest.php b/tests/Unit/ClientSettingsTest.php index c3625542827d..e0200d021628 100644 --- a/tests/Unit/ClientSettingsTest.php +++ b/tests/Unit/ClientSettingsTest.php @@ -81,7 +81,6 @@ class ClientSettingsTest extends TestCase $response->assertStatus(200); $arr = $response->json(); - nlog($arr); $this->assertEquals('frank', $arr['data']['settings']['name']); @@ -106,7 +105,7 @@ class ClientSettingsTest extends TestCase $response->assertStatus(200); $arr = $response->json(); - nlog($arr); + $this->assertEquals('white', $arr['data']['settings']['name']); $data = [ @@ -140,7 +139,6 @@ class ClientSettingsTest extends TestCase $response->assertStatus(200); $arr = $response->json(); - nlog($arr); $this->assertEquals('white', $arr['data']['settings']['name']); // $this->assertEquals('1', $arr['data']['settings']['currency_id']); @@ -169,7 +167,6 @@ class ClientSettingsTest extends TestCase ])->post('/api/v1/clients/', $data); } catch (ValidationException $e) { $message = json_decode($e->validator->getMessageBag(), 1); - nlog($message); } $response->assertStatus(200); @@ -203,7 +200,6 @@ class ClientSettingsTest extends TestCase ])->post('/api/v1/clients/', $data); } catch (ValidationException $e) { $message = json_decode($e->validator->getMessageBag(), 1); - nlog($message); } $response->assertStatus(200); @@ -235,17 +231,14 @@ class ClientSettingsTest extends TestCase $response = false; - try { + $response = $this->withHeaders([ 'X-API-SECRET' => config('ninja.api_secret'), 'X-API-TOKEN' => $this->token, - ])->post('/api/v1/clients/', $data); - } catch (ValidationException $e) { - $message = json_decode($e->validator->getMessageBag(), 1); - nlog($message); - } + ])->postJson('/api/v1/clients/', $data); + - $response->assertStatus(302); + $response->assertStatus(422); } public function testClientIllegalLanguage()