From ef5a72d2a591d98359079817d4a9b9e7d864011e Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Fri, 25 May 2018 19:53:04 -0600 Subject: [PATCH] Add transaction percentage discount (close #13) --- action.php | 29 ++++++++++++++++++++++++----- database.mwb | Bin 15211 -> 15219 bytes lang/en_us.php | 1 + pages/pos.php | 5 +++-- static/js/pos.js | 5 +++++ static/js/pos_finish.js | 7 ++++++- static/js/pos_payment.js | 20 +++++++++++++++++++- 7 files changed, 58 insertions(+), 9 deletions(-) diff --git a/action.php b/action.php index 346ca74..4a40dbf 100644 --- a/action.php +++ b/action.php @@ -37,6 +37,7 @@ switch ($VARS['action']) { $payments = $VARS['payments']; $customer = $VARS['customer']; $register = $VARS['register']; + $discountpercent = $VARS['discountpercent']; if ($customer != "" && !$database->has('customers', ['customerid' => $customer])) { exit(json_encode(["status" => "ERROR", "message" => lang("invalid customer", false)])); @@ -69,6 +70,13 @@ switch ($VARS['action']) { } } + if (is_numeric($discountpercent) && $discountpercent > 0 && $discountpercent < 100) { + $discountpercent = $discountpercent * 1.0; + $totalcharge *= 1.0 - ($discountpercent / 100.0); + } else { + $discountpercent = 0.0; + } + if ($totalcharge > $totalpaid) { exit(json_encode(["status" => "ERROR", "message" => lang("insufficient payment", false)])); } @@ -83,7 +91,8 @@ switch ($VARS['action']) { 'customerid' => ($customer != "" ? $customer : null), 'type' => 1, 'cashier' => $_SESSION['uid'], - 'cashid' => $cashid + 'cashid' => $cashid, + 'discountpercent' => $discountpercent ]); $txid = $database->id(); @@ -128,7 +137,7 @@ switch ($VARS['action']) { exit(json_encode(["status" => "ERROR", "txid" => null])); } - $tx = $database->get('transactions', ['txid', 'txdate', 'customerid', 'type', 'cashier'], ['txid' => $VARS['txid']]); + $tx = $database->get('transactions', ['txid', 'txdate', 'customerid', 'type', 'cashier', 'discountpercent'], ['txid' => $VARS['txid']]); $txid = $tx['txid']; $datetime = date(DATETIME_FORMAT, strtotime($tx['txdate'])); @@ -142,7 +151,7 @@ switch ($VARS['action']) { $itemhtml = ""; $items = $database->select('lines', ['amount', 'name', 'itemid', 'qty'], ['txid' => $txid]); - $total = 0.0; + $subtotal = 0.0; $paid = 0.0; foreach ($items as $i) { $itemhtml .= "\n"; @@ -152,9 +161,11 @@ switch ($VARS['action']) { $itemhtml .= '
x' . (float) $i['qty'] . '
'; $itemhtml .= '
$' . number_format($i['qty'] * $i['amount'] * 1.0, 2) . '
'; $itemhtml .= ''; - $total += $i['qty'] * $i['amount'] * 1.0; + $subtotal += $i['qty'] * $i['amount'] * 1.0; } + $total = $subtotal * (1.0 - ((float) $tx['discountpercent'] / 100)); + $paymenthtml = ""; $payments = $database->select('payments', [ '[>]payment_types' => ['type' => 'typeid'] @@ -177,9 +188,15 @@ switch ($VARS['action']) { $change = 0.0; } - $totalstr = number_format($total, 2); + $subtotalstr = number_format($subtotal, 2); $paidstr = number_format($paid, 2); $changestr = number_format($change, 2); + $totalstr = $subtotalstr; + $discountstr = ""; + if ($tx['discountpercent'] > 0) { + $discountstr = '
Discount: ' . (float) $tx['discountpercent'] . '% off
'; + $totalstr = number_format($total, 2); + } $html = << @@ -203,6 +220,8 @@ $customerline $itemhtml
+
Subtotal: $$subtotalstr
+$discountstr Total: $$totalstr
diff --git a/database.mwb b/database.mwb index 5e1329723a280d0d688074182b54c4ddf497f29e..cbdacbdd43e92f8efe2d624e499b55b2388a95d6 100644 GIT binary patch delta 13170 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%0DK#QMCNt}N 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 delta 13221 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 diff --git a/lang/en_us.php b/lang/en_us.php index 2baf03f..9eff48a 100644 --- a/lang/en_us.php +++ b/lang/en_us.php @@ -47,4 +47,5 @@ define("STRINGS", [ "print" => "Print", "customer" => "Customer", "customer search" => "Search customers", + "new sale" => "New Sale", ]); \ No newline at end of file diff --git a/pages/pos.php b/pages/pos.php index 4d1f8d6..f845693 100644 --- a/pages/pos.php +++ b/pages/pos.php @@ -19,7 +19,7 @@
@@ -83,7 +83,8 @@ -
+
+
diff --git a/static/js/pos.js b/static/js/pos.js index 7a544e6..fc043ae 100644 --- a/static/js/pos.js +++ b/static/js/pos.js @@ -25,6 +25,11 @@ function recalculate() { paid += line; }); + var discountpercent = $("#discountpercentbtn").data("percent"); + if (discountpercent > 0 && discountpercent < 100) { + total *= 1.0 - ((discountpercent * 1.0) / 100); + } + remaining = total - paid; change = (total - paid) * -1.0; if (remaining <= 0) { diff --git a/static/js/pos_finish.js b/static/js/pos_finish.js index fc37670..a51df59 100644 --- a/static/js/pos_finish.js +++ b/static/js/pos_finish.js @@ -9,6 +9,10 @@ function sendTransactionToServer(callback) { var payments = []; var customer = customerid; var register = ''; + var discountpercent = $("#discountpercentbtn").data("percent"); + if (discountpercent <= 0) { + discountpercent = 0.0; + } $("#pos-lines-box .list-group-item").each(function () { var each = $(".item-price", this).val() * 1.0; var qty = $(".item-qty", this).val() * 1.0; @@ -40,7 +44,8 @@ function sendTransactionToServer(callback) { items: items, payments: payments, customer: customer, - register: register + register: register, + discountpercent: discountpercent }, function (data) { if (data.status == "OK") { callback(data); diff --git a/static/js/pos_payment.js b/static/js/pos_payment.js index 496b920..24e7c75 100644 --- a/static/js/pos_payment.js +++ b/static/js/pos_payment.js @@ -108,4 +108,22 @@ $("#paymentbtn").click(function () { $(".payment-method-button").click(function () { addPayment($(this).data("payment-method"), $(this).data("icon"), $(this).data("text")); -}); \ No newline at end of file +}); + +$("#discountpercentbtn").click(function () { + bsprompt("Sale Discount", + "Enter a percentage to discount the transaction", + "Discount", + "Cancel", + "number", + function (result) { + if (result <= 0 || result >= 100) { + $("#discountpercentbtn").data("percent", 0.0); + $("#discountpercentbtnlabel").text(""); + return; + } + $("#discountpercentbtn").data("percent", result); + $("#discountpercentbtnlabel").text(result); + recalculate(); + }); +}) \ No newline at end of file