diff --git a/app/Filters/PurchaseOrderFilters.php b/app/Filters/PurchaseOrderFilters.php index ad86221ff6a8..adb019ded898 100644 --- a/app/Filters/PurchaseOrderFilters.php +++ b/app/Filters/PurchaseOrderFilters.php @@ -70,7 +70,7 @@ class PurchaseOrderFilters extends QueryFilters if(count($status_parameters) >=1) { $query->whereIn('status_id', $status_parameters); } - }) + }); return $this->builder; } diff --git a/app/Http/Livewire/BillingPortalPurchasev2.php b/app/Http/Livewire/BillingPortalPurchasev2.php index 10abb8b32ebf..b22075aaa491 100644 --- a/app/Http/Livewire/BillingPortalPurchasev2.php +++ b/app/Http/Livewire/BillingPortalPurchasev2.php @@ -567,6 +567,12 @@ class BillingPortalPurchasev2 extends Component } + + /** + * Starts the trial + * + * @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse + */ public function handleTrial() { return $this->subscription->service()->startTrial([ @@ -578,6 +584,12 @@ class BillingPortalPurchasev2 extends Component ]); } + /** + * When the subscription total comes to $0 we + * pass back a $0 Invoice. + * + * @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse + */ public function handlePaymentNotRequired() { @@ -600,7 +612,7 @@ class BillingPortalPurchasev2 extends Component ->save(); $invoice->number = null; - + $invoice->service() ->markPaid() ->save(); diff --git a/app/Services/Subscription/SubscriptionService.php b/app/Services/Subscription/SubscriptionService.php index 0068173408ee..636126b8e59e 100644 --- a/app/Services/Subscription/SubscriptionService.php +++ b/app/Services/Subscription/SubscriptionService.php @@ -1291,7 +1291,12 @@ class SubscriptionService } - private function getDaysInFrequency() + /** + * Get the number of days in the currency frequency + * + * @return int Number of days + */ + private function getDaysInFrequency() :int { switch ($this->subscription->frequency_id) { @@ -1325,7 +1330,15 @@ class SubscriptionService } - public function getNextDateForFrequency($date, $frequency) + /** + * Get the next date by frequency_id + * + * @param Carbon $date The current carbon date + * @param int $frequency The frequncy_id of the subscription + * + * @return ?Carbon The next date carbon object + */ + public function getNextDateForFrequency($date, $frequency) :?Carbon { switch ($frequency) { case RecurringInvoice::FREQUENCY_DAILY: @@ -1353,7 +1366,7 @@ class SubscriptionService case RecurringInvoice::FREQUENCY_THREE_YEARS: return $date->addYears(3); default: - return 0; + return null; } } @@ -1363,6 +1376,7 @@ class SubscriptionService * @param Invoice $invoice The Invoice * @param array $bundle The bundle array * @param ClientContact $contact The Client Contact + * * @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse */ public function handleNoPaymentFlow(Invoice $invoice, $bundle, ClientContact $contact) diff --git a/tests/Feature/PurchaseOrderTest.php b/tests/Feature/PurchaseOrderTest.php index 1b7c41d6b410..aa7c4f152b94 100644 --- a/tests/Feature/PurchaseOrderTest.php +++ b/tests/Feature/PurchaseOrderTest.php @@ -40,6 +40,16 @@ class PurchaseOrderTest extends TestCase $this->makeTestData(); } + public function testPurchaseOrderGetWithClientStatus() + { + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->get('/api/v1/purchase_orders?client_status=sent'.$this->encodePrimaryKey($this->purchase_order->id)); + + $response->assertStatus(200); + } + public function testPostNewPurchaseOrderPdf() { $purchase_order = [