Carry over discount amounts from recurring and quotes to invoice, fix force recurring

This commit is contained in:
johnnyq 2024-02-29 14:15:57 -05:00
parent 998a701634
commit 85cc8c163b
4 changed files with 13 additions and 6 deletions

View File

@ -541,6 +541,7 @@ while ($row = mysqli_fetch_array($sql_recurring)) {
$recurring_status = sanitizeInput($row['recurring_status']);
$recurring_last_sent = sanitizeInput($row['recurring_last_sent']);
$recurring_next_date = sanitizeInput($row['recurring_next_date']);
$recurring_discount_amount = floatval($row['recurring_discount_amount']);
$recurring_amount = floatval($row['recurring_amount']);
$recurring_currency_code = sanitizeInput($row['recurring_currency_code']);
$recurring_note = sanitizeInput($row['recurring_note']); //Escape SQL
@ -562,7 +563,7 @@ while ($row = mysqli_fetch_array($sql_recurring)) {
//Generate a unique URL key for clients to access
$url_key = randomString(156);
mysqli_query($mysqli, "INSERT INTO invoices SET invoice_prefix = '$config_invoice_prefix', invoice_number = $new_invoice_number, invoice_scope = '$recurring_scope', invoice_date = CURDATE(), invoice_due = DATE_ADD(CURDATE(), INTERVAL $client_net_terms day), invoice_amount = $recurring_amount, invoice_currency_code = '$recurring_currency_code', invoice_note = '$recurring_note', invoice_category_id = $category_id, invoice_status = 'Sent', invoice_url_key = '$url_key', invoice_client_id = $client_id");
mysqli_query($mysqli, "INSERT INTO invoices SET invoice_prefix = '$config_invoice_prefix', invoice_number = $new_invoice_number, invoice_scope = '$recurring_scope', invoice_date = CURDATE(), invoice_due = DATE_ADD(CURDATE(), INTERVAL $client_net_terms day), invoice_discount_amount = $recurring_discount_amount, invoice_amount = $recurring_amount, invoice_currency_code = '$recurring_currency_code', invoice_note = '$recurring_note', invoice_category_id = $category_id, invoice_status = 'Sent', invoice_url_key = '$url_key', invoice_client_id = $client_id");
$new_invoice_id = mysqli_insert_id($mysqli);

View File

@ -1028,7 +1028,7 @@ if (isset($_GET['email_invoice'])) {
$mysqli,
"SELECT contact_name, contact_email FROM contacts
WHERE contact_billing = 1
AND contact_email != '$contact_email_escaped'
AND contact_email != '$contact_email'
AND contact_email != ''
AND contact_client_id = $client_id"
);
@ -1072,6 +1072,7 @@ if (isset($_GET['force_recurring'])) {
$recurring_status = sanitizeInput($row['recurring_status']);
$recurring_last_sent = sanitizeInput($row['recurring_last_sent']);
$recurring_next_date = sanitizeInput($row['recurring_next_date']);
$recurring_discount_amount = floatval($row['recurring_discount_amount']);
$recurring_amount = floatval($row['recurring_amount']);
$recurring_currency_code = sanitizeInput($row['recurring_currency_code']);
$recurring_note = sanitizeInput($row['recurring_note']);
@ -1087,7 +1088,7 @@ if (isset($_GET['force_recurring'])) {
//Generate a unique URL key for clients to access
$url_key = randomString(156);
mysqli_query($mysqli,"INSERT INTO invoices SET invoice_prefix = '$config_invoice_prefix', invoice_number = $new_invoice_number, invoice_scope = '$recurring_scope', invoice_date = CURDATE(), invoice_due = DATE_ADD(CURDATE(), INTERVAL $client_net_terms day), invoice_amount = $recurring_amount, invoice_currency_code = '$recurring_currency_code', invoice_note = '$recurring_note', invoice_category_id = $category_id, invoice_status = 'Sent', invoice_url_key = '$url_key', invoice_client_id = $client_id");
mysqli_query($mysqli,"INSERT INTO invoices SET invoice_prefix = '$config_invoice_prefix', invoice_number = $new_invoice_number, invoice_scope = '$recurring_scope', invoice_date = CURDATE(), invoice_due = DATE_ADD(CURDATE(), INTERVAL $client_net_terms day), invoice_discount_amount = $recurring_discount_amount, invoice_amount = $recurring_amount, invoice_currency_code = '$recurring_currency_code', invoice_note = '$recurring_note', invoice_category_id = $category_id, invoice_status = 'Sent', invoice_url_key = '$url_key', invoice_client_id = $client_id");
$new_invoice_id = mysqli_insert_id($mysqli);
@ -1127,7 +1128,7 @@ if (isset($_GET['force_recurring'])) {
//Update Recurring Balances by tallying up recurring items also update recurring dates
$sql_recurring_total = mysqli_query($mysqli,"SELECT SUM(item_total) AS recurring_total FROM invoice_items WHERE item_recurring_id = $recurring_id");
$row = mysqli_fetch_array($sql_recurring_total);
$new_recurring_amount = floatval($row['recurring_total']);
$new_recurring_amount = floatval($row['recurring_total']) - $recurring_discount_amount;
mysqli_query($mysqli,"UPDATE recurring SET recurring_amount = $new_recurring_amount, recurring_last_sent = CURDATE(), recurring_next_date = DATE_ADD(CURDATE(), INTERVAL 1 $recurring_frequency) WHERE recurring_id = $recurring_id");
@ -1164,6 +1165,10 @@ if (isset($_GET['force_recurring'])) {
$company_email = sanitizeInput($row['company_email']);
$company_website = sanitizeInput($row['company_website']);
// Sanitize Config Vars
$config_invoice_from_email = sanitizeInput($config_invoice_from_email);
$config_invoice_from_name = sanitizeInput($config_invoice_from_name);
// Email to client
$subject = "Invoice $invoice_prefix$invoice_number";

View File

@ -99,6 +99,7 @@ if (isset($_POST['add_quote_to_invoice'])) {
$sql = mysqli_query($mysqli,"SELECT * FROM quotes WHERE quote_id = $quote_id");
$row = mysqli_fetch_array($sql);
$quote_discount_amount = floatval($row['quote_discount_amount']);
$quote_amount = floatval($row['quote_amount']);
$quote_currency_code = sanitizeInput($row['quote_currency_code']);
$quote_scope = sanitizeInput($row['quote_scope']);
@ -110,7 +111,7 @@ if (isset($_POST['add_quote_to_invoice'])) {
//Generate a unique URL key for clients to access
$url_key = randomString(156);
mysqli_query($mysqli,"INSERT INTO invoices SET invoice_prefix = '$config_invoice_prefix', invoice_number = $invoice_number, invoice_scope = '$quote_scope', invoice_date = '$date', invoice_due = DATE_ADD(CURDATE(), INTERVAL $client_net_terms day), invoice_category_id = $category_id, invoice_status = 'Draft', invoice_amount = $quote_amount, invoice_currency_code = '$quote_currency_code', invoice_note = '$quote_note', invoice_url_key = '$url_key', invoice_client_id = $client_id");
mysqli_query($mysqli,"INSERT INTO invoices SET invoice_prefix = '$config_invoice_prefix', invoice_number = $invoice_number, invoice_scope = '$quote_scope', invoice_date = '$date', invoice_due = DATE_ADD(CURDATE(), INTERVAL $client_net_terms day), invoice_category_id = $category_id, invoice_status = 'Draft', invoice_discount_amount = $quote_discount_amount, invoice_amount = $quote_amount, invoice_currency_code = '$quote_currency_code', invoice_note = '$quote_note', invoice_url_key = '$url_key', invoice_client_id = $client_id");
$new_invoice_id = mysqli_insert_id($mysqli);

View File

@ -363,7 +363,7 @@ if (isset($_GET['recurring_id'])) {
<?php if ($recurring_discount > 0) { ?>
<tr class="border-bottom">
<td>Discount</td>
<td class="text-right"><?php echo numfmt_format_currency($currency_format, $recurring_discount, $recurring_currency_code); ?></td>
<td class="text-right">-<?php echo numfmt_format_currency($currency_format, $recurring_discount, $recurring_currency_code); ?></td>
</tr>
<?php } ?>
<?php if ($total_tax > 0) { ?>