From ffcd3b05d4cf95b91e4331ae968eda9ea9ae689a Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 6 Jul 2022 17:12:29 +1000 Subject: [PATCH] Add quantities to subscriptions --- app/Http/Livewire/BillingPortalPurchase.php | 2 +- app/Repositories/SubscriptionRepository.php | 4 +++- app/Services/Subscription/SubscriptionService.php | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/Http/Livewire/BillingPortalPurchase.php b/app/Http/Livewire/BillingPortalPurchase.php index 9916b46d0102a..8053b6c67a50e 100644 --- a/app/Http/Livewire/BillingPortalPurchase.php +++ b/app/Http/Livewire/BillingPortalPurchase.php @@ -360,7 +360,7 @@ class BillingPortalPurchase extends Component $this->invoice = $this->subscription ->service() - ->createInvoice($data) + ->createInvoice($data, $this->quantity) ->service() ->markSent() ->fillDefaults() diff --git a/app/Repositories/SubscriptionRepository.php b/app/Repositories/SubscriptionRepository.php index 0b41dca749116..cbd3a481a7ed6 100644 --- a/app/Repositories/SubscriptionRepository.php +++ b/app/Repositories/SubscriptionRepository.php @@ -28,6 +28,8 @@ class SubscriptionRepository extends BaseRepository { use CleanLineItems; + public int $quantity = 1; + public function save($data, Subscription $subscription): ?Subscription { $subscription->fill($data); @@ -124,7 +126,7 @@ class SubscriptionRepository extends BaseRepository private function makeLineItem($product, $multiplier) { $item = new InvoiceItem; - $item->quantity = $product->quantity; + $item->quantity = $this->quantity; $item->product_key = $product->product_key; $item->notes = $product->notes; $item->cost = $product->price*$multiplier; diff --git a/app/Services/Subscription/SubscriptionService.php b/app/Services/Subscription/SubscriptionService.php index c16c20bfd9095..c4f3ff7bc260b 100644 --- a/app/Services/Subscription/SubscriptionService.php +++ b/app/Services/Subscription/SubscriptionService.php @@ -706,11 +706,12 @@ class SubscriptionService * @param array $data * @return Invoice */ - public function createInvoice($data): ?\App\Models\Invoice + public function createInvoice($data, $quantity = 1): ?\App\Models\Invoice { $invoice_repo = new InvoiceRepository(); $subscription_repo = new SubscriptionRepository(); + $subscription_repo->quantity = $quantity; $invoice = InvoiceFactory::create($this->subscription->company_id, $this->subscription->user_id); $invoice->line_items = $subscription_repo->generateLineItems($this->subscription);