mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Fixes for recurring invoices
This commit is contained in:
parent
7818633154
commit
3229ae871a
@ -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'];
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user