Merge pull request #6561 from turbo124/v5-develop

Autobilling
This commit is contained in:
David Bomba 2021-09-03 19:31:23 +10:00 committed by GitHub
commit 2b72ff7dec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 27 additions and 16 deletions

View File

@ -56,8 +56,8 @@ class AutoBillCron
nlog($auto_bill_partial_invoices->count(). " partial invoices to auto bill"); nlog($auto_bill_partial_invoices->count(). " partial invoices to auto bill");
$auto_bill_partial_invoices->cursor()->each(function ($invoice){ $auto_bill_partial_invoices->cursor()->each(function ($invoice) use($db){
$this->runAutoBiller($invoice); $this->runAutoBiller($invoice, $db);
}); });
$auto_bill_invoices = Invoice::whereDate('due_date', '<=', now()) $auto_bill_invoices = Invoice::whereDate('due_date', '<=', now())
@ -69,8 +69,8 @@ class AutoBillCron
nlog($auto_bill_invoices->count(). " full invoices to auto bill"); nlog($auto_bill_invoices->count(). " full invoices to auto bill");
$auto_bill_invoices->cursor()->each(function ($invoice){ $auto_bill_invoices->cursor()->each(function ($invoice) use($db){
$this->runAutoBiller($invoice); $this->runAutoBiller($invoice, $db);
}); });
@ -89,8 +89,8 @@ class AutoBillCron
nlog($auto_bill_partial_invoices->count(). " partial invoices to auto bill db = {$db}"); nlog($auto_bill_partial_invoices->count(). " partial invoices to auto bill db = {$db}");
$auto_bill_partial_invoices->cursor()->each(function ($invoice){ $auto_bill_partial_invoices->cursor()->each(function ($invoice) use($db){
$this->runAutoBiller($invoice); $this->runAutoBiller($invoice, $db);
}); });
$auto_bill_invoices = Invoice::whereDate('due_date', '<=', now()) $auto_bill_invoices = Invoice::whereDate('due_date', '<=', now())
@ -102,19 +102,20 @@ class AutoBillCron
nlog($auto_bill_invoices->count(). " full invoices to auto bill db = {$db}"); nlog($auto_bill_invoices->count(). " full invoices to auto bill db = {$db}");
$auto_bill_invoices->cursor()->each(function ($invoice){ $auto_bill_invoices->cursor()->each(function ($invoice) use($db){
$this->runAutoBiller($invoice); $this->runAutoBiller($invoice, $db);
}); });
} }
} }
} }
private function runAutoBiller(Invoice $invoice) private function runAutoBiller(Invoice $invoice, $db)
{ {
info("Firing autobill for {$invoice->company_id} - {$invoice->number}"); info("Firing autobill for {$invoice->company_id} - {$invoice->number}");
try{ try{
MultiDB::setDB($db);
$invoice->service()->autoBill()->save(); $invoice->service()->autoBill()->save();
} }
catch(\Exception $e) { catch(\Exception $e) {

View File

@ -89,7 +89,7 @@ class RecurringInvoicesCron
->with('company') ->with('company')
->cursor(); ->cursor();
nlog(now()->format('Y-m-d') . ' Sending Recurring Invoices. Count = '.$recurring_invoices->count().' On Database # '.$db); nlog(now()->format('Y-m-d') . ' Sending Recurring Invoices. Count = '.$recurring_invoices->count());
$recurring_invoices->each(function ($recurring_invoice, $key) { $recurring_invoices->each(function ($recurring_invoice, $key) {
nlog("Current date = " . now()->format("Y-m-d") . " Recurring date = " .$recurring_invoice->next_send_date ." Recurring #id = ". $recurring_invoice->id); nlog("Current date = " . now()->format("Y-m-d") . " Recurring date = " .$recurring_invoice->next_send_date ." Recurring #id = ". $recurring_invoice->id);
@ -100,7 +100,7 @@ class RecurringInvoicesCron
SendRecurring::dispatchNow($recurring_invoice, $recurring_invoice->company->db); SendRecurring::dispatchNow($recurring_invoice, $recurring_invoice->company->db);
} }
catch(\Exception $e){ catch(\Exception $e){
nlog("Unable to sending recurring invoice {$recurring_invoice->id} on db {$db}"); nlog("Unable to sending recurring invoice {$recurring_invoice->id}");
} }
} }
}); });

View File

@ -358,11 +358,11 @@ class Account extends BaseModel
if($this->isPaid()){ if($this->isPaid()){
$limit = $this->paid_plan_email_quota; $limit = $this->paid_plan_email_quota;
$limit += Carbon::createFromTimestamp($this->created_at)->diffInMonths() * 50; $limit += Carbon::createFromTimestamp($this->created_at)->diffInMonths() * 100;
} }
else{ else{
$limit = $this->free_plan_email_quota; $limit = $this->free_plan_email_quota;
$limit += Carbon::createFromTimestamp($this->created_at)->diffInMonths() * 100; $limit += Carbon::createFromTimestamp($this->created_at)->diffInMonths() * 50;
} }
return min($limit, 5000); return min($limit, 5000);

View File

@ -205,6 +205,7 @@ class BaseDriver extends AbstractPaymentDriver
$invoices->each(function ($invoice) use ($payment) { $invoices->each(function ($invoice) use ($payment) {
event(new InvoiceWasPaid($invoice, $payment, $payment->company, Ninja::eventVars())); event(new InvoiceWasPaid($invoice, $payment, $payment->company, Ninja::eventVars()));
$invoice->service()->workFlow();
}); });
return $payment->service()->applyNumber()->save(); return $payment->service()->applyNumber()->save();

View File

@ -51,6 +51,7 @@ class Charge
*/ */
public function tokenBilling(ClientGatewayToken $cgt, PaymentHash $payment_hash) public function tokenBilling(ClientGatewayToken $cgt, PaymentHash $payment_hash)
{ {
nlog(" DB = ".$this->stripe->client->company->db);
$amount = array_sum(array_column($payment_hash->invoices(), 'amount')) + $payment_hash->fee_total; $amount = array_sum(array_column($payment_hash->invoices(), 'amount')) + $payment_hash->fee_total;
$invoice = Invoice::whereIn('id', $this->transformKeys(array_column($payment_hash->invoices(), 'invoice_id')))->withTrashed()->first(); $invoice = Invoice::whereIn('id', $this->transformKeys(array_column($payment_hash->invoices(), 'invoice_id')))->withTrashed()->first();
@ -75,6 +76,10 @@ class Charge
'description' => $description, 'description' => $description,
]; ];
nlog("Stripe tokenBilling payload");
nlog($data);
$response = $this->stripe->createPaymentIntent($data, $this->stripe->stripe_connect_auth); $response = $this->stripe->createPaymentIntent($data, $this->stripe->stripe_connect_auth);
// $response = $local_stripe->paymentIntents->create($data); // $response = $local_stripe->paymentIntents->create($data);

View File

@ -51,12 +51,14 @@ class AutoBillInvoice extends AbstractService
/* Mark the invoice as paid if there is no balance */ /* Mark the invoice as paid if there is no balance */
if ((int)$this->invoice->balance == 0) if ((int)$this->invoice->balance == 0)
return $this->invoice->service()->markPaid()->save(); return $this->invoice->service()->markPaid()->workFlow()->save();
//if the credits cover the payments, we stop here, build the payment with credits and exit early //if the credits cover the payments, we stop here, build the payment with credits and exit early
if ($this->client->getSetting('use_credits_payment') != 'off') if ($this->client->getSetting('use_credits_payment') != 'off')
$this->applyCreditPayment(); $this->applyCreditPayment();
$amount = 0;
/* Determine $amount */ /* Determine $amount */
if ($this->invoice->partial > 0) { if ($this->invoice->partial > 0) {
$is_partial = true; $is_partial = true;
@ -68,14 +70,16 @@ class AutoBillInvoice extends AbstractService
return $this->invoice; return $this->invoice;
} }
info("balance remains to be paid!!"); info("Auto Bill - balance remains to be paid!! - {$amount}");
/* Retrieve the Client Gateway Token */ /* Retrieve the Client Gateway Token */
$gateway_token = $this->getGateway($amount); $gateway_token = $this->getGateway($amount);
/* Bail out if no payment methods available */ /* Bail out if no payment methods available */
if (! $gateway_token || ! $gateway_token->gateway->driver($this->client)->token_billing) if (! $gateway_token || ! $gateway_token->gateway->driver($this->client)->token_billing){
nlog("Bailing out - no suitable gateway token found.");
return $this->invoice; return $this->invoice;
}
/* $gateway fee */ /* $gateway fee */
//$fee = $gateway_token->gateway->calcGatewayFee($amount, $gateway_token->gateway_type_id, $this->invoice->uses_inclusive_taxes); //$fee = $gateway_token->gateway->calcGatewayFee($amount, $gateway_token->gateway_type_id, $this->invoice->uses_inclusive_taxes);