mirror of
https://github.com/itflow-org/itflow
synced 2026-06-25 19:21:07 +00:00
Invoice Late Overdue notices shows correct balance when late fees are attached and if partial invoice was paid
This commit is contained in:
@@ -524,12 +524,23 @@ if ($config_send_invoice_reminders == 1) {
|
||||
$contact_name = sanitizeInput($row['contact_name']);
|
||||
$contact_email = sanitizeInput($row['contact_email']);
|
||||
|
||||
// Late Charges
|
||||
// Sum payments already applied, derive the real balance owed
|
||||
$sql_paid = mysqli_query($mysqli, "SELECT SUM(payment_amount) AS amount_paid FROM payments WHERE payment_invoice_id = $invoice_id");
|
||||
$paid_row = mysqli_fetch_assoc($sql_paid);
|
||||
$amount_paid = floatval($paid_row['amount_paid']);
|
||||
|
||||
$invoice_balance = $invoice_amount - $amount_paid;
|
||||
|
||||
// Nothing actually owed (e.g. paid in full but status lagging) - skip
|
||||
if ($invoice_balance <= 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Late Charges
|
||||
if ($config_invoice_late_fee_enable == 1 && $day > 1) {
|
||||
|
||||
$todays_date = date('Y-m-d');
|
||||
$late_fee_amount = ($invoice_amount * $config_invoice_late_fee_percent) / 100;
|
||||
$late_fee_amount = ($invoice_balance * $config_invoice_late_fee_percent) / 100;
|
||||
$new_invoice_amount = $invoice_amount + $late_fee_amount;
|
||||
|
||||
mysqli_query($mysqli, "UPDATE invoices SET invoice_amount = $new_invoice_amount WHERE invoice_id = $invoice_id");
|
||||
@@ -541,14 +552,22 @@ if ($config_send_invoice_reminders == 1) {
|
||||
|
||||
appNotify("Invoice Late Charge", "Invoice $invoice_prefix$invoice_number for $client_name in the amount of $invoice_amount was charged a late fee of $late_fee_amount", "/agent/invoice.php?invoice_id=$invoice_id", $client_id);
|
||||
|
||||
// Roll the fee into the balance and total we report below
|
||||
$invoice_amount = $new_invoice_amount;
|
||||
$invoice_balance = $invoice_balance + $late_fee_amount;
|
||||
|
||||
}
|
||||
|
||||
appNotify("Invoice Overdue", "Invoice $invoice_prefix$invoice_number for $client_name in the amount of $invoice_amount is overdue by $day days", "/agent/invoice.php?invoice_id=$invoice_id", $client_id);
|
||||
appNotify("Invoice Overdue", "Invoice $invoice_prefix$invoice_number for $client_name with a balance of " . numfmt_format_currency($currency_format, $invoice_balance, $invoice_currency_code) . " is overdue by $day days", "/agent/invoice.php?invoice_id=$invoice_id", $client_id);
|
||||
|
||||
$subject = "Overdue Invoice $invoice_prefix$invoice_number";
|
||||
$body = "Hello $contact_name,<br><br>Our records indicate that we have not yet received payment for the invoice $invoice_prefix$invoice_number. We kindly request that you submit your payment as soon as possible. If you have any questions or concerns, please do not hesitate to contact us at $company_email or $company_phone.
|
||||
|
||||
// Only show the paid line if a payment has actually been applied
|
||||
$paid_line = $amount_paid > 0 ? "Amount Paid: " . numfmt_format_currency($currency_format, $amount_paid, $invoice_currency_code) . "<br>" : "";
|
||||
|
||||
$body = "Hello $contact_name,<br><br>Our records indicate that we have not yet received payment in full for the invoice $invoice_prefix$invoice_number. We kindly request that you submit your payment as soon as possible. If you have any questions or concerns, please do not hesitate to contact us at $company_email or $company_phone.
|
||||
<br>
|
||||
Kindly review the invoice details mentioned below.<br><br>Invoice: $invoice_prefix$invoice_number<br>Issue Date: $invoice_date<br>Total: " . numfmt_format_currency($currency_format, $invoice_amount, $invoice_currency_code) . "<br>Due Date: $invoice_due<br>Over Due By: $day Days<br><br><br>To view your invoice, please click <a href=\'https://$config_base_url/guest/guest_view_invoice.php?invoice_id=$invoice_id&url_key=$invoice_url_key\'>here</a>.<br><br><br>--<br>$company_name - Billing<br>$config_invoice_from_email<br>$company_phone";
|
||||
Kindly review the invoice details mentioned below.<br><br>Invoice: $invoice_prefix$invoice_number<br>Issue Date: $invoice_date<br>Invoice Total: " . numfmt_format_currency($currency_format, $invoice_amount, $invoice_currency_code) . "<br>$paid_line" . "Balance Due: " . numfmt_format_currency($currency_format, $invoice_balance, $invoice_currency_code) . "<br>Due Date: $invoice_due<br>Over Due By: $day Days<br><br><br>To view your invoice, please click <a href=\'https://$config_base_url/guest/guest_view_invoice.php?invoice_id=$invoice_id&url_key=$invoice_url_key\'>here</a>.<br><br><br>--<br>$company_name - Billing<br>$config_invoice_from_email<br>$company_phone";
|
||||
|
||||
$mail = addToMailQueue([
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user