Skip to content

Commit a9de75a

Browse files
author
wrongecho
committed
Invoices - Send email notif when paid
1 parent c948ccf commit a9de75a

File tree

8 files changed

+58
-15
lines changed

8 files changed

+58
-15
lines changed

admin_settings_invoice.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,16 @@
5757
<small class="text-secondary">We recommend updating the invoice footer to include policies on your late charges. This will be applied every 30 days after the invoice Due Date.</small>
5858
</div>
5959

60+
<div class="form-group">
61+
<label>Email address to notify when invoices are paid online <small class="text-secondary">(Ideally a distribution list/shared mailbox)</small></label>
62+
<div class="input-group">
63+
<div class="input-group-prepend">
64+
<span class="input-group-text"><i class="fa fa-fw fa-bell"></i></span>
65+
</div>
66+
<input type="email" class="form-control" name="config_invoice_paid_notification_email" placeholder="Address to notify for paid invoices, leave bank for none" value="<?php echo nullable_htmlentities($config_invoice_paid_notification_email); ?>">
67+
</div>
68+
</div>
69+
6070
<hr>
6171

6272
<h4>Recurring Invoice</h4>

database_updates.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2231,10 +2231,16 @@
22312231
mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.5.2'");
22322232
}
22332233

2234-
// if (CURRENT_DATABASE_VERSION == '1.5.2') {
2235-
// // Insert queries here required to update to DB version 1.5.3
2234+
if (CURRENT_DATABASE_VERSION == '1.5.2') {
2235+
mysqli_query($mysqli, "ALTER TABLE `settings` ADD `config_invoice_paid_notification_email` VARCHAR(200) DEFAULT NULL AFTER `config_invoice_late_fee_percent`");
2236+
2237+
mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.5.3'");
2238+
}
2239+
2240+
// if (CURRENT_DATABASE_VERSION == '1.5.3') {
2241+
// // Insert queries here required to update to DB version 1.5.4
22362242
// // Then, update the database to the next sequential version
2237-
// mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.5.3'");
2243+
// mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.5.4'");
22382244
// }
22392245

22402246
} else {

database_version.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
* It is used in conjunction with database_updates.php
66
*/
77

8-
DEFINE("LATEST_DATABASE_VERSION", "1.5.2");
8+
DEFINE("LATEST_DATABASE_VERSION", "1.5.3");

db.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1477,6 +1477,7 @@ CREATE TABLE `settings` (
14771477
`config_invoice_from_email` varchar(200) DEFAULT NULL,
14781478
`config_invoice_late_fee_enable` tinyint(1) NOT NULL DEFAULT 0,
14791479
`config_invoice_late_fee_percent` decimal(5,2) NOT NULL DEFAULT 0.00,
1480+
`config_invoice_paid_notification_email` varchar(200) DEFAULT NULL,
14801481
`config_recurring_prefix` varchar(200) DEFAULT NULL,
14811482
`config_recurring_next_number` int(11) NOT NULL,
14821483
`config_quote_prefix` varchar(200) DEFAULT NULL,

get_settings.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
$config_invoice_from_email = $row['config_invoice_from_email'];
4747
$config_invoice_late_fee_enable = intval($row['config_invoice_late_fee_enable']);
4848
$config_invoice_late_fee_percent = floatval($row['config_invoice_late_fee_percent']);
49+
$config_invoice_paid_notification_email = $row['config_invoice_paid_notification_email'];
4950

5051
// Recurring Invoices
5152
$config_recurring_prefix = $row['config_recurring_prefix'];

guest_pay_invoice_stripe.php

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -306,23 +306,41 @@
306306
$config_smtp_password = $row['config_smtp_password'];
307307
$config_invoice_from_name = sanitizeInput($row['config_invoice_from_name']);
308308
$config_invoice_from_email = sanitizeInput($row['config_invoice_from_email']);
309+
$config_invoice_paid_notification_email = sanitizeInput($row['config_invoice_paid_notification_email']);
309310

310311
$config_base_url = sanitizeInput($config_base_url);
311312

312313
if (!empty($config_smtp_host)) {
313314
$subject = "Payment Received - Invoice $invoice_prefix$invoice_number";
314315
$body = "Hello $contact_name,<br><br>We have received your payment in the amount of " . $pi_currency . $pi_amount_paid . " for invoice <a href=\'https://$config_base_url/guest_view_invoice.php?invoice_id=$invoice_id&url_key=$invoice_url_key\'>$invoice_prefix$invoice_number</a>. Please keep this email as a receipt for your records.<br><br>Amount: " . numfmt_format_currency($currency_format, $pi_amount_paid, $invoice_currency_code) . "<br>Balance: " . numfmt_format_currency($currency_format, '0', $invoice_currency_code) . "<br><br>Thank you for your business!<br><br><br>~<br>$company_name - Billing<br>$config_invoice_from_email<br>$company_phone";
315316

316-
$data = [
317-
[
318-
'from' => $config_invoice_from_email,
319-
'from_name' => $config_invoice_from_name,
320-
'recipient' => $contact_email,
321-
'recipient_name' => $contact_name,
322-
'subject' => $subject,
323-
'body' => $body,
324-
]
317+
$data = [
318+
[
319+
'from' => $config_invoice_from_email,
320+
'from_name' => $config_invoice_from_name,
321+
'recipient' => $contact_email,
322+
'recipient_name' => $contact_name,
323+
'subject' => $subject,
324+
'body' => $body,
325+
]
326+
];
327+
328+
329+
// Email the internal notification address too
330+
if (!empty($config_invoice_paid_notification_email)) {
331+
$subject = "Payment Received - $client_name - Invoice $invoice_prefix$invoice_number";
332+
$body = "Hello, <br><br>This is a notification that an invoice has been paid in ITFlow. Below is a copy of the receipt sent to the client:-<br><br>--------<br><br>Hello $contact_name,<br><br>We have received your payment in the amount of " . $pi_currency . $pi_amount_paid . " for invoice <a href=\'https://$config_base_url/guest_view_invoice.php?invoice_id=$invoice_id&url_key=$invoice_url_key\'>$invoice_prefix$invoice_number</a>. Please keep this email as a receipt for your records.<br><br>Amount: " . numfmt_format_currency($currency_format, $pi_amount_paid, $invoice_currency_code) . "<br>Balance: " . numfmt_format_currency($currency_format, '0', $invoice_currency_code) . "<br><br>Thank you for your business!<br><br><br>~<br>$company_name - Billing<br>$config_invoice_from_email<br>$company_phone";
333+
334+
$data[] = [
335+
'from' => $config_invoice_from_email,
336+
'from_name' => $config_invoice_from_name,
337+
'recipient' => $config_invoice_paid_notification_email,
338+
'recipient_name' => $contact_name,
339+
'subject' => $subject,
340+
'body' => $body,
325341
];
342+
}
343+
326344
$mail = addToMailQueue($mysqli, $data);
327345

328346
// Email logging

post/admin/admin_settings_invoice.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,13 @@
1111
$config_invoice_late_fee_percent = floatval($_POST['config_invoice_late_fee_percent']);
1212
$config_recurring_prefix = sanitizeInput($_POST['config_recurring_prefix']);
1313
$config_recurring_next_number = intval($_POST['config_recurring_next_number']);
14+
$config_invoice_paid_notification_email = '';
15+
if (filter_var($_POST['config_invoice_paid_notification_email'], FILTER_VALIDATE_EMAIL)) {
16+
$config_invoice_paid_notification_email = sanitizeInput($_POST['config_invoice_paid_notification_email']);
17+
}
1418

1519

16-
mysqli_query($mysqli,"UPDATE settings SET config_invoice_prefix = '$config_invoice_prefix', config_invoice_next_number = $config_invoice_next_number, config_invoice_footer = '$config_invoice_footer', config_invoice_late_fee_enable = $config_invoice_late_fee_enable, config_invoice_late_fee_percent = $config_invoice_late_fee_percent, config_recurring_prefix = '$config_recurring_prefix', config_recurring_next_number = $config_recurring_next_number WHERE company_id = 1");
20+
mysqli_query($mysqli,"UPDATE settings SET config_invoice_prefix = '$config_invoice_prefix', config_invoice_next_number = $config_invoice_next_number, config_invoice_footer = '$config_invoice_footer', config_invoice_late_fee_enable = $config_invoice_late_fee_enable, config_invoice_late_fee_percent = $config_invoice_late_fee_percent, config_invoice_paid_notification_email = '$config_invoice_paid_notification_email', config_recurring_prefix = '$config_recurring_prefix', config_recurring_next_number = $config_recurring_next_number WHERE company_id = 1");
1721

1822
//Logging
1923
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Settings', log_action = 'Edit', log_description = '$session_name edited invoice settings', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id");

post/admin/admin_settings_ticket.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88
$config_ticket_email_parse_unknown_senders = intval($_POST['config_ticket_email_parse_unknown_senders']);
99
$config_ticket_default_billable = intval($_POST['config_ticket_default_billable']);
1010
$config_ticket_autoclose_hours = intval($_POST['config_ticket_autoclose_hours']);
11-
$config_ticket_new_ticket_notification_email = sanitizeInput($_POST['config_ticket_new_ticket_notification_email']);
11+
$config_ticket_new_ticket_notification_email = '';
12+
if (filter_var($_POST['config_ticket_new_ticket_notification_email'], FILTER_VALIDATE_EMAIL)) {
13+
$config_ticket_new_ticket_notification_email = sanitizeInput($_POST['config_ticket_new_ticket_notification_email']);
14+
}
1215

1316
mysqli_query($mysqli,"UPDATE settings SET config_ticket_prefix = '$config_ticket_prefix', config_ticket_next_number = $config_ticket_next_number, config_ticket_email_parse = $config_ticket_email_parse, config_ticket_email_parse_unknown_senders = $config_ticket_email_parse_unknown_senders, config_ticket_autoclose_hours = $config_ticket_autoclose_hours, config_ticket_new_ticket_notification_email = '$config_ticket_new_ticket_notification_email', config_ticket_default_billable = $config_ticket_default_billable WHERE company_id = 1");
1417

0 commit comments

Comments
 (0)