diff options
-rwxr-xr-x | abrechenbarkeit.lua | 58 | ||||
-rw-r--r-- | script.js | 2 |
2 files changed, 39 insertions, 21 deletions
diff --git a/abrechenbarkeit.lua b/abrechenbarkeit.lua index 79a4951..0358055 100755 --- a/abrechenbarkeit.lua +++ b/abrechenbarkeit.lua @@ -172,30 +172,27 @@ end local function r_user_post(username) local data = form_data() - local amount = nil - local comment = "" + local amount = tonumber(data.amount) + local comment = data.comment local pcode = nil local pcount = nil - if data.product then + if data.pcode then for p_barcode, p_amount, p_name in read_products() do - if p_barcode == data.product then - pcount = tonumber(data.count) or -1 + if p_barcode == data.pcode then + pcount = (tonumber(data.pcount) or 1) * (data.negate_pcount ~= nil and -1 or 1) pcode = p_barcode - amount = pcount * p_amount - comment = p_name + if amount == nil then amount = pcount * p_amount end + if comment == nil then comment = string.format("%s %d %s", pcount < 0 and "Buy" or "Restock", math.abs(pcount), p_name) end end end if amount == nil then return error_box("unknown product") end - else - amount = tonumber(data.amount) - comment = data.comment or "" end if amount == nil then return error_box("amount invalid") end - if comment:match("^[%w_ -]*$") == nil then + if comment == nil or comment:match("^[%w_ -]*$") == nil then return error_box("comment invalid") end local log = io.open("log", "a+") @@ -241,7 +238,7 @@ local function r_user(username) ]], format_duration(os.time() - last_txn), username)) end print([[<div class="transactions container firstchildlarge">]]) - print([[<div class="amount-presets backgroundbox">]]) + print([[<div class="amount-presets backgroundbox">]]) for _, type in ipairs({ 1, -1 }) do for _, amount in ipairs({ 50, 100, 150, 200, 500, 1000 }) do print(string.format([[ @@ -266,10 +263,23 @@ local function r_user(username) </form> <form class="transaction box backgroundbox" action="" method="POST" id="buy_product"> <h3>Buy Product</h3> - <label for="product">Product: </label> - <input type="text" name="product" id="product" /> + <input type="text" name="negate_pcount" value="1" hidden /> + <label for="pcount">Count: </label> + <input type="number" name="pcount" id="pcount" value="1" /> + <label for="pcode">Product Barcode: </label> + <input type="text" name="pcode" id="pcode" /> <input class="amount-neg button" type="submit" value="Buy" /> </form> + <form class="transaction box backgroundbox" action="" method="POST" id="buy_product"> + <h3>Restock Product</h3> + <label for="pcount">Count: </label> + <input type="number" name="pcount" id="pcount" value="1" /> + <label for="amount">Upstream price: </label> + <input type="number" name="amount" id="amount" /> + <label for="pcode">Product Barcode: </label> + <input type="text" name="pcode" id="pcode" /> + <input type="submit" value="Restock" /> + </form> ]]) print("</div>") end) @@ -278,7 +288,15 @@ end local function r_log(filter) return respond(200, "Abrechnungen", function() print([[<table class="log">]]) - print("<tr><th>Time</th><th>Username</th><th>Amount</th><th>P.-Barcode</th><th>P.-Count</th><th>Comment</th></tr>") + print([[<tr> + <th>Time</th> + <th>Username</th> + <th>Amount</th> + <th>P.-Barcode</th> + <th>P.-Count</th> + <th>Comment</th> + <th>Actions</th> + </tr>]]) for time, username, amount, pcode, pcount, comment in read_log() do if filter == nil or filter == username then print(string.format([[ @@ -287,7 +305,7 @@ local function r_log(filter) <td>%s</td> <td class="amount-%s">%.02f€</td> <td>%s</td> - <td>%s</td> + <td>%s %s</td> <td>%s</td> <td> <form action="/%s" method="POST"> @@ -302,7 +320,7 @@ local function r_log(filter) escape(username), amount >= 0 and "pos" or "neg", amount / 100, escape(pcode) or "", - pcount and tostring(pcount) or "", + pcount and (pcount < 0 and "buy" or "stock") or "", pcount and tostring(math.abs(pcount)) or "", escape(comment), escape(username), -amount, @@ -399,12 +417,12 @@ local function r_products() <div class="container"> <form action="/?products" method="POST" class="box backgroundbox"> <h3>Add Product</h3> - <label for="barcode">Barcode: </label> - <input type="text" name="barcode" id="barcode" /> <label for="name">Name: </label> <input type="text" name="name" id="name" /> <label for="price">Price (ct): </label> <input type="number" name="price" id="price" /> + <label for="barcode">Barcode: </label> + <input type="text" name="barcode" id="barcode" /> <input type="submit" value="Add" class="amount-ntr button" /> </form> <form action="/?products" method="POST" class="box backgroundbox"> @@ -423,7 +441,7 @@ local function r_products() <tr><td>%s</td><td class="amount-%s">%.02f€</td><td>%s</td><td>%s</td></tr> ]], name, - price >= 0 and "pos" or "neg", price / 100, + -price >= 0 and "pos" or "neg", -price / 100, barcode, pbals[barcode] or "0" )) @@ -3,7 +3,7 @@ document.addEventListener("keypress", ev => { if (!(document.activeElement instanceof HTMLInputElement)) { if (ev.code.startsWith("Digit")) - document.forms.buy_product.product.value += ev.code.substring(5) + document.forms.buy_product.pcode.value += ev.code.substring(5) if (ev.code == "Enter") document.forms.buy_product.submit() } |