Fixes for recurring invoices

This commit is contained in:
David Bomba 2023-07-27 09:02:13 +10:00
parent 7818633154
commit 3229ae871a
3 changed files with 49 additions and 117 deletions

View File

@ -80,6 +80,10 @@ class StoreRecurringInvoiceRequest extends Request
$input['due_date_days'] = 'terms';
}
if(!isset($input['next_send_date']) || $input['next_send_date'] == '') {
$input['next_send_date'] = now()->format('Y-m-d');
}
if (array_key_exists('next_send_date', $input) && is_string($input['next_send_date'])) {
$input['next_send_date_client'] = $input['next_send_date'];
}

View File

@ -114,67 +114,6 @@ use Laracasts\Presenter\PresentableTrait;
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice onlyTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice query()
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereAmount($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereAssignedUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereAutoBill($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereAutoBillEnabled($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereBackup($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereBalance($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereClientId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCompanyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurcharge1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurcharge2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurcharge3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurcharge4($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurchargeTax1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurchargeTax2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurchargeTax3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomSurchargeTax4($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomValue1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomValue2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomValue3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereCustomValue4($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereDeletedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereDesignId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereDueDateDays($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereExchangeRate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereFooter($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereFrequencyId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereIsAmountDiscount($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereIsDeleted($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereLastSentDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereLastViewed($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereLineItems($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereNextSendDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereNextSendDateClient($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice wherePaidToDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice wherePartial($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice wherePartialDueDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice wherePoNumber($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice wherePrivateNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice wherePublicNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereRemainingCycles($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereStatusId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereSubscriptionId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTaxName1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTaxName2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTaxName3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTaxRate1($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTaxRate2($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTaxRate3($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTerms($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereTotalTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereUserId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereUsesInclusiveTaxes($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereVendorId($value)
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice withoutTrashed()
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
@ -183,62 +122,6 @@ use Laracasts\Presenter\PresentableTrait;
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property bool $is_proforma
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @method static \Illuminate\Database\Eloquent\Builder|RecurringInvoice whereIsProforma($value)
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @mixin \Eloquent
*/
class RecurringInvoice extends BaseModel

View File

@ -40,6 +40,8 @@ class RecurringInvoiceTest extends TestCase
use DatabaseTransactions;
use MockAccountData;
public $faker;
protected function setUp() :void
{
parent::setUp();
@ -58,6 +60,49 @@ class RecurringInvoiceTest extends TestCase
}
public function testNextSendDateCatch()
{
$line_items = [];
$item = InvoiceItemFactory::create();
$item->quantity = 1;
$item->cost = 10;
$item->task_id = $this->encodePrimaryKey($this->task->id);
$item->expense_id = $this->encodePrimaryKey($this->expense->id);
$item->notes = "Hello this is the month of :MONTH";
$line_items[] = $item;
$data = [
'frequency_id' => 1,
'status_id' => 2,
'discount' => 0,
'is_amount_discount' => 1,
'po_number' => '3434343',
'public_notes' => 'notes',
'is_deleted' => 0,
'custom_value1' => 0,
'custom_value2' => 0,
'custom_value3' => 0,
'custom_value4' => 0,
'status' => 1,
'client_id' => $this->encodePrimaryKey($this->client->id),
'line_items' => $line_items,
'remaining_cycles' => -1,
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->post('/api/v1/recurring_invoices/', $data)
->assertStatus(200);
$arr = $response->json();
$this->assertEquals(now()->startOfDay(), $arr['data']['next_send_date']);
}
public function testBulkIncreasePriceWithJob()
{