Untitled

 avatar
unknown
plain_text
a month ago
4.4 kB
3
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