Untitled
unknown
plain_text
7 months ago
4.4 kB
5
Indexable
let dinerValue = this.modalTable.selected_diner ? this.modalTable.selected_diner.value : 'ALL';
let isDiner = this.modalTable && dinerValue !== 'ALL'; // Es comensal ? TRUE si es comensale o ALL . False si es ALL
let target = this.$refs.order || this; // hace referencia entre this.refs.order o this de orderView
//Calculos de los subtotales en los metodos de pago.
let CalculateSubtotals = () => {
if(this.modalTable && this.modalTable.payment && this.modalTable.payment.length > 1){
for (let index = 0; index < this.modalTable.payment.length; index++) {
this.$refs.order.CalculateSubtotals(index);
}
}
}
//Función que guarda el descuento en la BD.
//Solo hace la peticion cuando se guarda desde el modalDiscount fuera del OrderForm.
let requestSetDiscount = async (data) => {
this.Loading();
await axios.post(`/transaction/${this.modalTable.id}/discount/set`, {discount : data})
.then(res => {
this.Response(res);
if (!this.dinersDiscounts[data.diner]) {
this.$set(this.dinersDiscounts, data.diner, [data]);
} else {
this.dinersDiscounts[data.diner].push(data);
}
}).catch(err => {
this.Response(err);
})
}
let setIDDiscount = (diner) => {
// diner (ALL, C1, C2, C3, ETC)
let dinerDiscounts = this.dinersDiscounts[diner]; // Son los descuentos que tiene ALL o los comensales.
let idDiscount = 1; // ID de descuento.
if(this.modalTable && diner && dinerDiscounts) {
let paidIdDiscounts = dinerDiscounts.map(discount => discount.id_discount).filter(id => id !== undefined); // Saca los ids de los descuentos realizados.
if (paidIdDiscounts.length === 0) { //En el caso que venga el array vacio, se le ingresa un 0
paidIdDiscounts = [0];
}
let maxID = Math.max(...paidIdDiscounts); // Se saca el id que tenga el mayoy valor.
idDiscount = maxID + 1; // ID sigueinte a asignar.
}
return idDiscount;
}
if(this.view == 'TABLES'){
let isCoupon = typeof discount === 'object';
let dataDiscount = {
discount : 0,
title : isCoupon ? `Código ${discount.code}` : 'Dcto ingresado en caja',
diner : dinerValue,
id_payment : null,
}
//Se completa el resto de dataDiscount segun si es cupon o customDiscount
if(isCoupon){
dataDiscount.id_coupon_code = discount.id_coupon_code;
dataDiscount.coupon = discount;
} else {
dataDiscount.id_discount = setIDDiscount(dinerValue);
dataDiscount.pos_discount = discount;
}
// Asegurar que la clave de diner existe
if (!target.dinersDiscounts[dinerValue]) this.$set(target.dinersDiscounts, dinerValue, []); // De no existe, se inicializa vacio
// Asignar el cupón o descuento personalizado
if (isCoupon) {
target.dinersDiscounts[dinerValue].push(dataDiscount);
target.coupon = discount;
} else {
if (!this.$refs.order) requestSetDiscount(dataDiscount); //Peticion para guardar customDiscount. SOLO cuando se hace fuera orderForm
target.customDiscount = discount;
}
// Recalcular subtotales si OrderForm está abierto
if (this.$refs.order){
this.$refs.order.CloseModalDiscount();
CalculateSubtotals();
}else{
this.$refs.modalDiscount.modalDiscount = null; // Se cierra modalDiscount
}
}Editor is loading...
Leave a Comment