3
0
Fork 0
mirror of https://github.com/nanoy42/coope synced 2024-11-09 03:16:26 +00:00
coope/staticfiles/manage.js

163 lines
4.8 KiB
JavaScript

total = 0
products = []
menus = []
paymentMethod = null
balance = 0
username = ""
id = 0
listPintes = []
nbPintes = 0;
use_pinte_monitoring = false;
function get_config(){
res = $.get("../preferences/getConfig", function(data){
console.log(data.use_pinte_monitoring)
use_pinte_monitoring = data.use_pinte_monitoring;
});
}
function get_product(barcode){
res = $.get("getProduct/" + barcode, function(data){
nbPintes += data.nb_pintes;
add_product(data.pk, data.barcode, data.name, data.amount, data.needQuantityButton);
});
}
function get_menu(barcode){
res = $.get("getMenu/" + barcode, function(data){
nbPintes += data.nb_pintes;
add_menu(data.pk, data.barcode, data.name, data.amount, data.needQuantityButton);
});
}
function add_product(pk, barcode, name, amount, needQuantityButton){
exist = false
index = -1
for(k=0;k < products.length; k++){
if(products[k].pk == pk){
exist = true
index = k
}
}
if(needQuantityButton){
quantity = parseInt(window.prompt("Quantité ?",""));
}else{
quantity = 1;
}
if(quantity == null || !Number.isInteger(quantity)){
quantity = 1;
}
if(exist){
products[index].quantity += quantity;
}else{
products.push({"pk": pk, "barcode": barcode, "name": name, "amount": amount, "quantity": quantity});
}
generate_html()
}
function add_menu(pk, barcode, name, amount){
exist = false;
index = -1;
for(k=0; k < menus.length; k++){
if(menus[k].pk == pk){
exist = true;
index = k;
}
}
if(exist){
menus[index].quantity += 1;
}else{
menus.push({"pk": pk, "barcode": barcode, "name": name, "amount": amount, "quantity":1});
}
generate_html();
}
function generate_html(){
html = "";
for(k=0;k<products.length;k++){
product = products[k]
html += '<tr><td>' + product.barcode + '</td><td>' + product.name + '</td><td>' + String(product.amount) + '</td><td><input type="number" data-target="' + String(k) + '" onChange="updateInput(this)" value="' + String(product.quantity) + '"/></td><td>' + String(Number((product.quantity * product.amount).toFixed(2))) + '</td></tr>';
}
for(k=0; k<menus.length;k++){
menu = menus[k]
html += '<tr><td>' + menu.barcode + '</td><td>' + menu.name + '</td><td>' + String(menu.amount) + '</td><td><input type="number" data-target="' + String(k) + '" onChange="updateMenuInput(this)" value="' + String(menu.quantity) + '"/></td><td>' + String(Number((menu.quantity * menu.amount).toFixed(2))) + '</td></tr>';
}
$("#items").html(html)
updateTotal();
}
function updateTotal(){
total = 0
for(k=0;k<products.length;k++){
total += products[k].quantity * products[k].amount;
}
for(k=0; k<menus.length;k++){
total += menus[k].quantity * menus[k].amount;
}
$("#totalAmount").text(String(Number(total.toFixed(2))) + "€")
totalAfter = balance - total
$("#totalAfter").text(String(Number(totalAfter.toFixed(2))) + "€")
}
function updateInput(a){
quantity = parseInt(a.value)
k = parseInt(a.getAttribute("data-target"))
products[k].quantity = quantity
generate_html()
}
function updateMenuInput(a){
quantity = parseInt(a.value);
k = parseInt(a.getAttribute("data-target"));
menus[k].quantity = quantity;
generate_html();
}
$(document).ready(function(){
get_config();
$(".product").click(function(){
product = get_product($(this).attr('target'));
});
$(".menu").click(function(){
menu = get_menu($(this).attr('target'));
})
$("#id_client").on('change', function(){
id = $("#id_client").val();
$.get("/users/getUser/" + id, function(data){
balance = data.balance;
username = data.username;
$("#balance").html(balance + "€");
updateTotal();
}).fail(function(){
alert("Une erreur inconnue est survenue");
window.location.reload()
});
});
$(".pay_button").click(function(){
if(use_pinte_monitoring){
message = "Il reste " + nbPintes.toString() + " pintes à renseigner. Numéro de la pinte ?"
while(nbPintes > 0){
id_pinte = window.prompt(message,"");
if(id_pinte == null){
return;
}else{
id_pinte = parseInt(id_pinte);
if(!Number.isInteger(id_pinte) || id_pinte < 0){
message = "Numéro incorrect. Il reste " + nbPintes.toString() + " pintes à renseigner. Numéro de la pinte ?";
}else{
listPintes.push(id_pinte)
nbPintes -= 1;
message = "Il reste " + nbPintes.toString() + " pintes à renseigner. Numéro de la pinte ?"
}
}
}
}
$.post("order", {"user":id, "paymentMethod": $(this).attr('data-payment'), "order_length": products.length + menus.length, "order": JSON.stringify(products), "amount": total, "menus": JSON.stringify(menus), "listPintes": JSON.stringify(listPintes)}, function(data){
alert(data);
location.reload();
}).fail(function(data){
alert("Impossible d'effectuer la transaction. Veuillez contacter le trésorier ou le président");
location.reload();
});
});
});