Fixes for recurring invoice email logic

This commit is contained in:
David Bomba 2023-08-04 07:19:26 +10:00
parent c164ab1970
commit a0fab8d22d
4 changed files with 35 additions and 73 deletions

View File

@ -110,12 +110,31 @@ class SendRecurring implements ShouldQueue
if ($invoice->auto_bill_enabled && $invoice->client->getSetting('auto_bill_date') == 'on_send_date' && $invoice->client->getSetting('auto_email_invoice')) { if ($invoice->auto_bill_enabled && $invoice->client->getSetting('auto_bill_date') == 'on_send_date' && $invoice->client->getSetting('auto_email_invoice')) {
nlog("attempting to autobill {$invoice->number}"); nlog("attempting to autobill {$invoice->number}");
AutoBill::dispatch($invoice->id, $this->db, true)->delay(rand(1, 2)); AutoBill::dispatch($invoice->id, $this->db, true)->delay(rand(1, 2));
//edge case to support where online payment notifications are not enabled
if(!$invoice->client->getSetting('client_online_payment_notification')){
$this->sendRecurringEmails($invoice);
}
} }
elseif ($invoice->auto_bill_enabled && $invoice->client->getSetting('auto_bill_date') == 'on_due_date' && $invoice->client->getSetting('auto_email_invoice') && ($invoice->due_date && Carbon::parse($invoice->due_date)->startOfDay()->lte(now()->startOfDay()))) { elseif ($invoice->auto_bill_enabled && $invoice->client->getSetting('auto_bill_date') == 'on_due_date' && $invoice->client->getSetting('auto_email_invoice') && ($invoice->due_date && Carbon::parse($invoice->due_date)->startOfDay()->lte(now()->startOfDay()))) {
nlog("attempting to autobill {$invoice->number}"); nlog("attempting to autobill {$invoice->number}");
AutoBill::dispatch($invoice->id, $this->db, true)->delay(rand(1, 2)); AutoBill::dispatch($invoice->id, $this->db, true)->delay(rand(1, 2));
//edge case to support where online payment notifications are not enabled
if(!$invoice->client->getSetting('client_online_payment_notification')) {
$this->sendRecurringEmails($invoice);
}
} }
elseif ($invoice->client->getSetting('auto_email_invoice')) { elseif ($invoice->client->getSetting('auto_email_invoice')) {
$this->sendRecurringEmails($invoice);
}
}
private function sendRecurringEmails(Invoice $invoice)
{
//Admin notification for recurring invoice sent. //Admin notification for recurring invoice sent.
if ($invoice->invitations->count() >= 1) { if ($invoice->invitations->count() >= 1) {
$invoice->entityEmailEvent($invoice->invitations->first(), 'invoice', 'email_template_invoice'); $invoice->entityEmailEvent($invoice->invitations->first(), 'invoice', 'email_template_invoice');
@ -132,8 +151,6 @@ class SendRecurring implements ShouldQueue
nlog("Firing email for invoice {$invoice->number}"); nlog("Firing email for invoice {$invoice->number}");
} }
}); });
}
} }

View File

@ -310,25 +310,6 @@ class AutoBillInvoice extends AbstractService
return $this; return $this;
} }
// private function applyPaymentToCredit($credit, $amount) :Credit
// {
// $credit_item = new InvoiceItem;
// $credit_item->type_id = '1';
// $credit_item->product_key = ctrans('texts.credit');
// $credit_item->notes = ctrans('texts.credit_payment', ['invoice_number' => $this->invoice->number]);
// $credit_item->quantity = 1;
// $credit_item->cost = $amount * -1;
// $credit_items = $credit->line_items;
// $credit_items[] = $credit_item;
// $credit->line_items = $credit_items;
// $credit = $credit->calc()->getCredit();
// $credit->save();
// return $credit;
// }
/** /**
* Harvests a client gateway token which passes the * Harvests a client gateway token which passes the
@ -371,37 +352,4 @@ class AutoBillInvoice extends AbstractService
return false; return false;
} }
/**
* Adds a gateway fee to the invoice.
*
* @param float $fee The fee amount.
* @return AutoBillInvoice
* @deprecated / unused
*/
// private function addFeeToInvoice(float $fee)
// {
// //todo if we increase the invoice balance here, we will also need to adjust UP the client balance and ledger?
// $starting_amount = $this->invoice->amount;
// $item = new InvoiceItem;
// $item->quantity = 1;
// $item->cost = $fee;
// $item->notes = ctrans('texts.online_payment_surcharge');
// $item->type_id = 3;
// $items = (array) $this->invoice->line_items;
// $items[] = $item;
// $this->invoice->line_items = $items;
// $this->invoice->saveQuietly();
// $this->invoice = $this->invoice->calc()->getInvoice()->saveQuietly();
// if ($starting_amount != $this->invoice->amount && $this->invoice->status_id != Invoice::STATUS_DRAFT) {
// $this->invoice->client->service()->updateBalance($this->invoice->amount - $starting_amount)->save();
// $this->invoice->ledger()->updateInvoiceBalance($this->invoice->amount - $starting_amount, "Invoice {$this->invoice->number} balance updated after stale gateway fee removed")->save();
// }
// return $this;
// }
} }

View File

@ -39,7 +39,6 @@ class PdfBuilder
/** /**
* The DOM Document; * The DOM Document;
* *
* @var $document
*/ */
public DomDocument $document; public DomDocument $document;
@ -619,7 +618,6 @@ class PdfBuilder
* *
* @param mixed $items * @param mixed $items
* @param string $table_type * @param string $table_type
* @param mixed|null $custom_fields
* *
* @return array * @return array
*/ */
@ -1313,7 +1311,7 @@ class PdfBuilder
* Generates the custom values for the * Generates the custom values for the
* entity. * entity.
* *
* @param array * @param array $variables
* @return array * @return array
*/ */
public function genericDetailsBuilder(array $variables): array public function genericDetailsBuilder(array $variables): array
@ -1470,7 +1468,7 @@ class PdfBuilder
* Passes an array of items by reference * Passes an array of items by reference
* and performs a nl2br * and performs a nl2br
* *
* @param array * @param array $variables
* @return void * @return void
* *
*/ */

View File

@ -183,7 +183,6 @@ class PdfMock
/** /**
* getStubVariables * getStubVariables
* *
* @return void
*/ */
public function getStubVariables() public function getStubVariables()
{ {