diff --git a/pages.php b/pages.php
index ad2a84f..28de167 100644
--- a/pages.php
+++ b/pages.php
@@ -11,6 +11,14 @@ define("PAGES", [
"navbar" => true,
"icon" => "fas fa-home"
],
+ "pos" => [
+ "title" => "point of sale",
+ "navbar" => true,
+ "icon" => "far fa-money-bill-alt",
+ "scripts" => [
+ "static/js/pos.js",
+ ]
+ ],
"404" => [
"title" => "404 error"
]
diff --git a/pages/pos.php b/pages/pos.php
new file mode 100644
index 0000000..06cc133
--- /dev/null
+++ b/pages/pos.php
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cool Widget
+
+
+ 659321
+
+ $10.23
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/static/css/app.css b/static/css/app.css
index e255bff..320c743 100644
--- a/static/css/app.css
+++ b/static/css/app.css
@@ -47,4 +47,18 @@ body {
.footer {
margin-top: 10em;
text-align: center;
+}
+
+input[type="number"]::-webkit-outer-spin-button,
+input[type="number"]::-webkit-inner-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+}
+input[type="number"] {
+ -moz-appearance: textfield;
+}
+
+#pos-lines-box {
+ max-height: calc(100vh - 200px);
+ overflow-y: scroll;
}
\ No newline at end of file
diff --git a/static/js/pos.js b/static/js/pos.js
new file mode 100644
index 0000000..f1a1d2d
--- /dev/null
+++ b/static/js/pos.js
@@ -0,0 +1,86 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+function addItem(name, code, price) {
+ if ($(".list-group-item[data-code='" + code + "']").length) {
+ updateQty($(".list-group-item[data-code='" + code + "']").find(".qty-plus"), 1);
+ return;
+ }
+ $("#pos-lines-box").append(''
+ + '
'
+ + '
'
+ + name
+ + '
'
+ + ''
+ + '' + code + ''
+ + ''
+ + '$'
+ + price
+ + ''
+ + ''
+ + '
'
+ + ''
+ + '
'
+ + '
');
+}
+
+function recalculate() {
+ var total = 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;
+ var line = each * qty;
+ $(".line-total", this).text(line.toFixed(2));
+ $(".item-price", this).val(each.toFixed(2));
+ total += line;
+ });
+ $(".grand-total").text(total.toFixed(2));
+}
+
+function updateQty(btn, diff) {
+ var qtybox = $(btn).parent().parent().find(".item-qty");
+ var qty = parseInt(qtybox.val());
+ qty += diff;
+ if (qty > 0) {
+ qtybox.val(qty);
+ var minbtn = $(btn).parent().parent().find(".qty-minus");
+ if (qty == 1) {
+ minbtn.html("");
+ } else {
+ minbtn.html("");
+ }
+ } else {
+ qtybox.closest(".list-group-item").remove();
+ }
+ recalculate();
+}
+
+$("#pos-lines-box").on("click", ".qty-minus", function () {
+ updateQty(this, -1);
+});
+
+$("#pos-lines-box").on("click", ".qty-plus", function () {
+ updateQty(this, 1);
+});
+
+$("#pos-lines-box").on("change", ".item-qty,.item-price", function () {
+ recalculate();
+});
\ No newline at end of file