From 47db00e90cadf5bf837cc07717cc9abf8915ed72 Mon Sep 17 00:00:00 2001 From: o-psi Date: Sun, 15 Oct 2023 22:14:24 -0500 Subject: [PATCH] recurring item sort logic --- post/invoice.php | 84 ++++++++++++++++++------------------------------ 1 file changed, 32 insertions(+), 52 deletions(-) diff --git a/post/invoice.php b/post/invoice.php index d9596425..3357cad9 100644 --- a/post/invoice.php +++ b/post/invoice.php @@ -247,6 +247,7 @@ if (isset($_POST['add_recurring_item'])) { $qty = floatval($_POST['qty']); $price = floatval($_POST['price']); $tax_id = intval($_POST['tax_id']); + $item_order = intval($_POST['item_order']); $subtotal = $price * $qty; @@ -261,7 +262,7 @@ if (isset($_POST['add_recurring_item'])) { $total = $subtotal + $tax_amount; - mysqli_query($mysqli,"INSERT INTO invoice_items SET item_name = '$name', item_description = '$description', item_quantity = $qty, item_price = $price, item_subtotal = $subtotal, item_tax = $tax_amount, item_total = $total, item_tax_id = $tax_id, item_recurring_id = $recurring_id"); + mysqli_query($mysqli,"INSERT INTO invoice_items SET item_name = '$name', item_description = '$description', item_quantity = $qty, item_price = $price, item_subtotal = $subtotal, item_tax = $tax_amount, item_total = $total, item_tax_id = $tax_id, item_order = $item_order, item_recurring_id = $recurring_id"); //Update Recurring Balances @@ -1085,59 +1086,38 @@ if (isset($_POST['export_client_payments_csv'])) { } -if (isset($_POST['update_invoice_item_order'])) { - - if ($_POST['update_invoice_item_order'] == 'up') { - $item_id = intval($_POST['item_id']); - $item_invoice_id = intval($_POST['item_invoice_id']); - - $sql = mysqli_query($mysqli,"SELECT * FROM invoice_items WHERE item_id = $item_id"); - $row = mysqli_fetch_array($sql); - $item_order = intval($row['item_order']); - - $new_item_order = $item_order - 1; - - //Check if new item order is used - $sql = mysqli_query($mysqli,"SELECT * FROM invoice_items WHERE item_invoice_id = $item_invoice_id AND item_order = $new_item_order"); - - //Redo the entire order of list - while ($row = mysqli_fetch_array($sql)) { - $item_id = intval($row['item_id']); - $item_order = intval($row['item_order']); - - $new_item_order = $item_order + 1; - - mysqli_query($mysqli,"UPDATE invoice_items SET item_order = $new_item_order WHERE item_id = $item_id"); - } - - - - mysqli_query($mysqli,"UPDATE invoice_items SET item_order = $item_order WHERE item_invoice_id = $item_invoice_id AND item_order = $new_item_order"); - mysqli_query($mysqli,"UPDATE invoice_items SET item_order = $new_item_order WHERE item_id = $item_id"); - - $_SESSION['alert_message'] = "Item moved up"; - - header("Location: " . $_SERVER["HTTP_REFERER"]); - - } +if (isset($_POST['update_recurring_item_order'])) { - if ($_POST['update_invoice_item_order'] == 'down') { - $item_id = intval($_POST['item_id']); - $item_invoice_id = intval($_POST['item_invoice_id']); + $item_id = intval($_POST['item_id']); + $item_recurring_id = intval($_POST['item_recurring_id']); - $sql = mysqli_query($mysqli,"SELECT * FROM invoice_items WHERE item_id = $item_id"); - $row = mysqli_fetch_array($sql); - $item_order = intval($row['item_order']); - - $new_item_order = $item_order + 1; - - mysqli_query($mysqli,"UPDATE invoice_items SET item_order = $item_order WHERE item_invoice_id = $item_invoice_id AND item_order = $new_item_order"); - mysqli_query($mysqli,"UPDATE invoice_items SET item_order = $new_item_order WHERE item_id = $item_id"); - - $_SESSION['alert_message'] = "Item moved down"; - - header("Location: " . $_SERVER["HTTP_REFERER"]); + $sql = mysqli_query($mysqli,"SELECT * FROM invoice_items WHERE item_id = $item_id"); + $row = mysqli_fetch_array($sql); + $current_order = intval($row['item_order']); + $update_direction = sanitizeInput($_POST['update_recurring_item_order']); + switch ($update_direction) + { + case 'up': + $new_order = $current_order - 1; + break; + case 'down': + $new_order = $current_order + 1; + break; } -} \ No newline at end of file + //Find item_id of current item in $new_order + $other_sql = mysqli_query($mysqli,"SELECT * FROM invoice_items WHERE item_recurring_id = $item_recurring_id AND item_order = $new_order"); + $other_row = mysqli_fetch_array($other_sql); + $other_item_id = intval($other_row['item_id']); + $other_row_str = strval($other_row['item_name']); + + mysqli_query($mysqli,"UPDATE invoice_items SET item_order = $new_order WHERE item_id = $item_id"); + + mysqli_query($mysqli,"UPDATE invoice_items SET item_order = $current_order WHERE item_id = $other_item_id"); + + $_SESSION['alert_message'] = "recurring Item Order Updated"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); +} +