mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Fixes for subscription refactor
This commit is contained in:
parent
83c636aa55
commit
3479c127fd
@ -31,14 +31,17 @@ class SubscriptionRepository extends BaseRepository
|
|||||||
{
|
{
|
||||||
$subscription->fill($data);
|
$subscription->fill($data);
|
||||||
|
|
||||||
$subscription->price = $this->calculatePrice($subscription);
|
$calculated_prices = $this->calculatePrice($subscription);
|
||||||
|
|
||||||
|
$subscription->price = $calculated_prices['price'];
|
||||||
|
$subscription->promo_price = $calculated_prices['promo_price'];
|
||||||
|
|
||||||
$subscription->save();
|
$subscription->save();
|
||||||
|
|
||||||
return $subscription;
|
return $subscription;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function calculatePrices($subscription) :array
|
private function calculatePrice($subscription) :array
|
||||||
{
|
{
|
||||||
|
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
@ -61,6 +64,9 @@ class SubscriptionRepository extends BaseRepository
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
$invoice = InvoiceFactory::create($subscription->company_id, $subscription->user_id);
|
$invoice = InvoiceFactory::create($subscription->company_id, $subscription->user_id);
|
||||||
|
$invoice->client_id = $client->id;
|
||||||
|
|
||||||
|
$invoice->save();
|
||||||
|
|
||||||
$invitation = InvoiceInvitation::factory()->create([
|
$invitation = InvoiceInvitation::factory()->create([
|
||||||
'user_id' => $subscription->user_id,
|
'user_id' => $subscription->user_id,
|
||||||
@ -73,8 +79,8 @@ class SubscriptionRepository extends BaseRepository
|
|||||||
$invoice->setRelation('client', $client);
|
$invoice->setRelation('client', $client);
|
||||||
$invoice->setRelation('company', $subscription->company);
|
$invoice->setRelation('company', $subscription->company);
|
||||||
$invoice->load('client');
|
$invoice->load('client');
|
||||||
|
|
||||||
$invoice->line_items = $this->generateLineItems($subscription);
|
$invoice->line_items = $this->generateLineItems($subscription);
|
||||||
|
|
||||||
$data['price'] = $invoice->calc()->getTotal();
|
$data['price'] = $invoice->calc()->getTotal();
|
||||||
|
|
||||||
$invoice->discount = $subscription->promo_discount;
|
$invoice->discount = $subscription->promo_discount;
|
||||||
@ -94,12 +100,12 @@ class SubscriptionRepository extends BaseRepository
|
|||||||
|
|
||||||
foreach($subscription->service()->products() as $product)
|
foreach($subscription->service()->products() as $product)
|
||||||
{
|
{
|
||||||
$line_items[] = $this->makeLineItem($product);
|
$line_items[] = (array)$this->makeLineItem($product);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($subscription->service()->recurring_products() as $product)
|
foreach($subscription->service()->recurring_products() as $product)
|
||||||
{
|
{
|
||||||
$line_items[] = $this->makeLineItem($product);
|
$line_items[] = (array)$this->makeLineItem($product);
|
||||||
}
|
}
|
||||||
|
|
||||||
$line_items = $this->cleanItems($line_items);
|
$line_items = $this->cleanItems($line_items);
|
||||||
|
@ -119,8 +119,6 @@ class SubscriptionService
|
|||||||
if(!$invoice)
|
if(!$invoice)
|
||||||
throw new \Exception("Could not match an invoice for payment of billing subscription");
|
throw new \Exception("Could not match an invoice for payment of billing subscription");
|
||||||
|
|
||||||
//todo - need to remove the promo code - if it exists
|
|
||||||
|
|
||||||
return InvoiceToRecurringInvoiceFactory::create($invoice);
|
return InvoiceToRecurringInvoiceFactory::create($invoice);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -80,6 +80,7 @@ class SubscriptionApiTest extends TestCase
|
|||||||
'X-API-TOKEN' => $this->token,
|
'X-API-TOKEN' => $this->token,
|
||||||
])->post('/api/v1/subscriptions', ['product_ids' => $product->id, 'allow_cancellation' => true]);
|
])->post('/api/v1/subscriptions', ['product_ids' => $product->id, 'allow_cancellation' => true]);
|
||||||
|
|
||||||
|
// nlog($response);
|
||||||
$response->assertStatus(200);
|
$response->assertStatus(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user