Fixes for recurring expense generation of next_send_date

This commit is contained in:
David Bomba 2023-09-15 07:28:26 +10:00
parent a3d99d185c
commit df35545fef
5 changed files with 19 additions and 15 deletions

View File

@ -34,7 +34,8 @@ class RecurringExpenseFactory
$recurring_expense->tax_amount1 = 0; $recurring_expense->tax_amount1 = 0;
$recurring_expense->tax_amount2 = 0; $recurring_expense->tax_amount2 = 0;
$recurring_expense->tax_amount3 = 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->payment_date = null;
$recurring_expense->amount = 0; $recurring_expense->amount = 0;
$recurring_expense->foreign_amount = 0; $recurring_expense->foreign_amount = 0;
@ -47,6 +48,7 @@ class RecurringExpenseFactory
$recurring_expense->custom_value4 = ''; $recurring_expense->custom_value4 = '';
$recurring_expense->uses_inclusive_taxes = true; $recurring_expense->uses_inclusive_taxes = true;
$recurring_expense->calculate_tax_by_amount = true; $recurring_expense->calculate_tax_by_amount = true;
$recurring_expense->remaining_cycles = -1;
return $recurring_expense; return $recurring_expense;
} }

View File

@ -75,6 +75,9 @@ class UpdateRecurringExpenseRequest extends Request
public function prepareForValidation() public function prepareForValidation()
{ {
/** @var \App\Models\User $user*/
$user = auth()->user();
$input = $this->all(); $input = $this->all();
$input = $this->decodePrimaryKeys($input); $input = $this->decodePrimaryKeys($input);
@ -88,7 +91,7 @@ class UpdateRecurringExpenseRequest extends Request
} }
if (! array_key_exists('currency_id', $input) || strlen($input['currency_id']) == 0) { 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); $this->replace($input);

View File

@ -11,12 +11,14 @@
namespace App\Jobs\Cron; namespace App\Jobs\Cron;
use App\Utils\Ninja;
use App\Libraries\MultiDB; use App\Libraries\MultiDB;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use App\Models\RecurringExpense; use App\Models\RecurringExpense;
use App\Models\RecurringInvoice; use App\Models\RecurringInvoice;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use App\Utils\Traits\GeneratesCounter; use App\Utils\Traits\GeneratesCounter;
use App\Events\Expense\ExpenseWasCreated;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use App\Factory\RecurringExpenseToExpenseFactory; use App\Factory\RecurringExpenseToExpenseFactory;
@ -109,6 +111,9 @@ class RecurringExpensesCron
$expense->number = $this->getNextExpenseNumber($expense); $expense->number = $this->getNextExpenseNumber($expense);
$expense->saveQuietly(); $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 = $recurring_expense->nextSendDate();
$recurring_expense->next_send_date_client = $recurring_expense->next_send_date; $recurring_expense->next_send_date_client = $recurring_expense->next_send_date;
$recurring_expense->last_sent_date = now(); $recurring_expense->last_sent_date = now();

View File

@ -49,6 +49,7 @@ class CreatedExpenseActivity implements ShouldQueue
$fields->user_id = $user_id; $fields->user_id = $user_id;
$fields->company_id = $event->expense->company_id; $fields->company_id = $event->expense->company_id;
$fields->activity_type_id = Activity::CREATE_EXPENSE; $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); $this->activity_repo->save($fields, $event->expense, $event->event_vars);
} }

View File

@ -81,7 +81,6 @@ class ClientSettingsTest extends TestCase
$response->assertStatus(200); $response->assertStatus(200);
$arr = $response->json(); $arr = $response->json();
nlog($arr);
$this->assertEquals('frank', $arr['data']['settings']['name']); $this->assertEquals('frank', $arr['data']['settings']['name']);
@ -106,7 +105,7 @@ class ClientSettingsTest extends TestCase
$response->assertStatus(200); $response->assertStatus(200);
$arr = $response->json(); $arr = $response->json();
nlog($arr);
$this->assertEquals('white', $arr['data']['settings']['name']); $this->assertEquals('white', $arr['data']['settings']['name']);
$data = [ $data = [
@ -140,7 +139,6 @@ class ClientSettingsTest extends TestCase
$response->assertStatus(200); $response->assertStatus(200);
$arr = $response->json(); $arr = $response->json();
nlog($arr);
$this->assertEquals('white', $arr['data']['settings']['name']); $this->assertEquals('white', $arr['data']['settings']['name']);
// $this->assertEquals('1', $arr['data']['settings']['currency_id']); // $this->assertEquals('1', $arr['data']['settings']['currency_id']);
@ -169,7 +167,6 @@ class ClientSettingsTest extends TestCase
])->post('/api/v1/clients/', $data); ])->post('/api/v1/clients/', $data);
} catch (ValidationException $e) { } catch (ValidationException $e) {
$message = json_decode($e->validator->getMessageBag(), 1); $message = json_decode($e->validator->getMessageBag(), 1);
nlog($message);
} }
$response->assertStatus(200); $response->assertStatus(200);
@ -203,7 +200,6 @@ class ClientSettingsTest extends TestCase
])->post('/api/v1/clients/', $data); ])->post('/api/v1/clients/', $data);
} catch (ValidationException $e) { } catch (ValidationException $e) {
$message = json_decode($e->validator->getMessageBag(), 1); $message = json_decode($e->validator->getMessageBag(), 1);
nlog($message);
} }
$response->assertStatus(200); $response->assertStatus(200);
@ -235,17 +231,14 @@ class ClientSettingsTest extends TestCase
$response = false; $response = false;
try {
$response = $this->withHeaders([ $response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'), 'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token, 'X-API-TOKEN' => $this->token,
])->post('/api/v1/clients/', $data); ])->postJson('/api/v1/clients/', $data);
} catch (ValidationException $e) {
$message = json_decode($e->validator->getMessageBag(), 1);
nlog($message);
}
$response->assertStatus(302);
$response->assertStatus(422);
} }
public function testClientIllegalLanguage() public function testClientIllegalLanguage()