$(document).ready(function() {
   
    fetch("../controlador/config/electronica.php").then(res=>res.text()).then(r=>{
			
        console.log(r)
    }
    
    // fetch("../controlador/config/electronica.php").then(res=>res.json()).then(r=>{
			
    //     console.log(r)
    // }


    )
    const parametro = new URLSearchParams(window.location.search).get('click');
    
    if(parametro=="factura"  &&( TipoNecocio==1 || TipoNecocio=="1")){
        $('#productos').modal('show');

        // buscarpr(null,"000");
        buscarpr(null,"zzz");
    }else{
        
        if((parametro==null || parametro=="null") &&( TipoNecocio==1 || TipoNecocio=="1")){
            $("#factura").click();
            
        }
     
    }

    var e = jQuery.Event("keypress");
    e.which = 13;
    e.keyCode = 13;
    
    let campoCliente=document.getElementById("nit");

    let campoVendedor=document.getElementById("vendedorr");
    if(campoCliente){
        $("#nit").trigger(e);
    }
   
    if(campoVendedor){
        $("#vendedorr").trigger(e);
        buscarMesasVendedor=1;
    }





})

let botonServicio= document.getElementById("calcularServicio");
if(botonServicio){
botonServicio.addEventListener("click",function() {

    let porceservicio=document.getElementById("porceservicio").value;
    let totalfactu=$("#totalfact").val();

    let propina=(parseInt(totalfactu)/100)*porceservicio
    console.log(propina)
   let valorPropina= Math.round(propina / 50) * 50;
    document.getElementById("propina").value=valorPropina

    $("#efectivo").focus();

    sumarformapago();

})
}
var clicguardar = false;

//funcion crear cliente
$("#guardar").click(function() {

    let campoCedula=document.getElementById("idenc").value;


    $.ajax({

        data: $("#crearcliente").serialize(), //datos que se envian a traves de ajax
        url: "../controlador/config/cliente.php", //archivo que recibe la peticion
        type: 'post', //método de envio

        // beforeSend: function () {
        //    alert("Procesando, espere por favor...");
        // },
        success: function(response) { //una vez que el archivo recibe el request lo procesa y lo devuelve
            //$("#resultado").html(response);

            try {
                  const params = new URLSearchParams(window.location.search);
              
               let respuesta = JSON.parse(response);
           
                alert(respuesta.mensaje);



            if(respuesta.v==1)
            {
                    if(confirm("Quieres Selecionar El cliente creado")){
                            // Obtener los parámetros de la URL
                        

                            // Capturar el valor del parámetro "click"
                            const click = params.get("click");

                            // Validar si es igual a "factura"
                            if (click === "factura") {

                           $("#nit").val(campoCedula).trigger(
                            jQuery.Event("keypress", { which: 13, keyCode: 13 })
                            );



                            document.getElementById("modalsaliclic").click()



                            } else if (click === "entrada") {
                                console.log("Estás en entrada ✅");
                            } else {
                                console.log("Otro valor:", click);
                            }
                    
                        }
            }
        } catch (error) {
             window.location.reload();
            
          
        }
    
        }

    });

});

//funcion buscar cuidades
document.querySelector("#ciudades").addEventListener("keypress", function(e) {
    let ciudad = e.target.value;
    
    if (ciudad.length >= 3 || e.which == 13) {
        
        ciudades(ciudad);
    }

});



 function ciudades(ciudad)  {
        //ciudades
        var campoCiuda = document.getElementById("ciuda");

        let ciud = [];
        $.ajax({
            data: {
                "ciudades": ciudad
            },
            url: "../controlador/config/cliente.php", //archivo que recibe la peticion
            type: 'post', //método de envio

            // beforeSend: function () {
            //    alert("Procesando, espere por favor...");
            // },
            success: function(response) { //una vez que el archivo recibe el request lo procesa y lo devuelve
                //$("#resultado").html(response);
                let respuesta = JSON.parse(response);
                
                for (const key in respuesta) {
                    let datCiud = `<option value='${respuesta[key].CodigoDIAN}'>${respuesta[key].Ciudad}  </option>`;
                    ciud.push(datCiud);
                    
                }
                let ciudades = ciud.join("");
                campoCiuda.innerHTML = ciudades;
                
            }

        });

    }
    // fin funcion buscar cuidades

//funcion buscar productos

$("#bus").on('click', function() {
    
    $('#productos').modal('show');
    
    if(tipoMenus==0){

        let select = document.getElementById("listPrecioMes");
        select.value = "lista1";

    }
    $("#busproducto").val("");
    $('#tablap tr').remove();

});


//buscar producto por boton buscar
$("#buscarp").on('click', function() {
    $('#tablap tr').remove();
    var producto = $("#busproducto").val();
    buscarpr(producto);

});

//selecionar producto ventana molda doble click
$("#tablap").on("dblclick", "tr", function() {

    var id = $(this).find(':first-child').text();

   if(solobarrar==1){

   }else{
    $("#producto").val(id);
    //simular enter 
    var e = jQuery.Event("keypress");
    e.which = 13;
    e.keyCode = 13;
    $("#producto").trigger(e);

    $('#tablap tr').remove();
    $("#salir").click();

   } 
 






});

function enfocarsobrecaja() {
    $("#caja").focus();
}

function enfocarsobrefrcc() {
    $("#frcc").focus();
}


// ///buscar productos por menu mesas
// $(document).on('click', '.mesacaja', function (e) {


//     let cantidad=e.target.parentElement.getElementsByTagName("input")[0].value;
//     let codigo=e.target.parentElement.getElementsByTagName("input")[1].id;
// let ventaCaja=e.target.parentElement.parentElement.getElementsByTagName("input")[0].value;
// let ventaFrcc=e.target.parentElement.parentElement.getElementsByTagName("input")[1].value;
// let valorCaja=ventaCaja.replace(/[.,]/g, "");
// let valorFrcc=ventaFrcc.replace(/[.,]/g, "");
// console.log(ventaCaja)
// console.log(ventaFrcc)
//  cambiarcantidadMesas=1;

//     selecinarProductosMesas (codigo,caja=1, frcc=0,cantidad,valorCaja,valorFrcc)
   
// })

// Buscar productos por menú mesas
$(document).on("click", ".mesacaja", function() {
    let card = $(this).closest(".card"); // sube hasta la tarjeta que contiene todo

    let cantidad = card.find("#cantidadMesas").val();       // input de cantidad
    let codigo   = card.find(".mesacaja").attr("id");    // id del input código
    let ventaCaja = card.find("#ventacajacModal").val();     // precio caja
    let ventaFrcc = card.find("#ventafrccModal").val();      // precio fracción

    // Limpieza de valores
    let valorCaja = ventaCaja.replace(/[.,]/g, "");
    let valorFrcc = ventaFrcc.replace(/[.,]/g, "");

    console.log("Cantidad:", cantidad);
    console.log("Código:", codigo);
    console.log("Venta Caja:", ventaCaja);
    console.log("Venta Frcc:", ventaFrcc);
    console.log("Valor Caja:", valorCaja);
    console.log("Valor Frcc:", valorFrcc);

    cambiarcantidadMesas = 1;
    selecinarProductosMesas(codigo, caja=1, frcc=0, cantidad, valorCaja, valorFrcc);
});




$(document).on('click', '.mesafrcc', function (e) {


//     let cantidad=e.target.parentElement.getElementsByTagName("input")[0].value;
//     let codigo=e.target.parentElement.getElementsByTagName("input")[2].id;

//     let ventaCaja=e.target.parentElement.parentElement.getElementsByTagName("input")[0].value;
// let ventaFrcc=e.target.parentElement.parentElement.getElementsByTagName("input")[1].value;
// let valorCaja=ventaCaja.replace(/[.,]/g, "");
// let valorFrcc=ventaFrcc.replace(/[.,]/g, "");
// // console.log(valorCaja)
// // console.log(valorFrcc)
//  cambiarcantidadMesas=1;

  let card = $(this).closest(".card"); // sube hasta la tarjeta que contiene todo

    let cantidad = card.find("#cantidadMesas").val();       // input de cantidad
    let codigo   = card.find(".mesacaja").attr("id");    // id del input código
    let ventaCaja = card.find("#ventacajacModal").val();     // precio caja
    let ventaFrcc = card.find("#ventafrccModal").val();      // precio fracción

    // Limpieza de valores
    let valorCaja = ventaCaja.replace(/[.,]/g, "");
    let valorFrcc = ventaFrcc.replace(/[.,]/g, "");

    console.log("Cantidad:", cantidad);
    console.log("Código:", codigo);
    console.log("Venta Caja:", ventaCaja);
    console.log("Venta Frcc:", ventaFrcc);
    console.log("Valor Caja:", valorCaja);
    console.log("Valor Frcc:", valorFrcc);

    cambiarcantidadMesas = 1;
  
    
    selecinarProductosMesas (codigo,caja=0, frcc=1,cantidad,valorCaja,valorFrcc)
   
})

  // agregar automaticamnete PRODUCTOS SELECIONADO DESDE LAS MESAS
//   if( cambiarcantidadMesas==1){
//     $("#agregar").click()
// }

 async function   selecinarProductosMesas (codigo,caja=0, frcc=0,cantidad,ventaCaja=0,ventaFrcc=0)
 
{
    

    let campoPro=   $("#producto"); 
     campoPro.val("");
    //simular enter 
    // var e = jQuery.Event("keypress");

    // e.which = 13;
    // e.keyCode = 13;
    console.log(1)

    campoPro.val(codigo);

    await buscarproducto();
    // campoPro.trigger(e);

    
    console.log(2)


   
if(TipoNecocio==1  || modificarPrecioVenta==1  ){
           
            $("#pcaja").val(ventaCaja);
            $("#pfrcc").val(ventaFrcc);
            console.log(3)
}
        
      
    if(caja==1){
    
       
        $("#caja").val(cantidad);
        
    
       
    
        // $("#caja").trigger(e);
    }else{
            $("#caja").val(0);
    }
    
    
    if(frcc==1){
    
        
    
            $("#frcc").val(cantidad);
    
            // $("#frcc").trigger(e);
    }else{
    
            $("#frcc").val(0);
    }

          if( cambiarcantidadMesas==1){

                 $("#agregar").click()
                 
                 }
    
   

}

//// FIn buscar productos por menu mesas

//buscar porducto por categoria

$(".categoriasProductos").on("click",function(e){
    var valorCate=(e.target.value);
    $('#tablap tr').remove();
    buscarpr(null,valorCate);
})



//buscar producto  por codigo o barras al presionar enter
$("#producto").keypress(async function(e) {

    if (e.which == 13) {

    let espe=   await buscarproducto();
     
       
       if(agradadoAutomatico==true && solobarrar==3){
       
        //  await  preciocaja()
      
        //  $("#agregar").click();
        console.warn("antes de calculaer precio");
    if(espe){
        
        let ok = await preciocaja();
            console.warn("despue de calculaer precio");


            
       

            if (ok) {
                $("#agregar").click();
                
            } else {
               console.warn("No se pudo calcular el precio correctamente");
            }
        
                 
       }
    }

    }

});




function buscarproducto() {
            
   return new Promise((resolver)=>{

    if(solobarrar !=3){
        $(".caja").val("");
    }
    $(".limpiarDatoP").val("");

    let id = $("#producto").val();

    if(id==" " || id=="" ){
        return 1;
    }


    let cantidadBas=0;
    if(acortarCodigo==true){
        if(id.length==12){
            let code = id.substring(0, 6);
             cantidadBas=parseInt( id.substring(6,11 ));
            id=code;
          
        }else if(id.length==13){
             const primerDigito = id.charAt(0);       // "2"
          

            if(primerDigito==2){
              let code = id.substring(1, 7);
                 cantidadBas=parseInt( id.substring(7,12 ));
                 id=code;

            }
          


            
                
        }

          // Asignar al input de inmediato (para mostrarlo rápido)
        if(cantidadBas != 0){
            $("#caja").val(cantidadBas);
        }
       
    }




    let bodega = document.getElementById("idbodegas").value;
  document.getElementById("venciemintosid").innerHTML="";
  document.getElementById("lotevencimiento").value="";
    let listaPrecioCliente=document.getElementById("listaPreciF").value;

   let costoc = 0;
   let costof = 0;
   let ventaca = 0;
   let ventafr = 0;
   let precioBlister=0;

    $.ajax({
        data: { "prod": id, "bodega": bodega }, //datos que se envian a traves de ajax
        url: "../controlador/config/productos.php", //archivo que recibe la peticion
        type: 'post', //método de envio

        // beforeSend: function () {
        //    alert("Procesando, espere por favor...");
        // },
        success: function(response) { //una vez que el archivo recibe el request lo procesa y lo devuelve
            //$("#resultado").html(response);
            var respuest = JSON.parse(response);

            let codigo = respuest["codigo"];

            if (codigo) {
                var nombre = respuest["nombre"];
                var inventario = respuest["inventario"];
                var factor = respuest["factor"];
                var invetariofrcc = Math.round(factor * inventario);
               
                var utilic = respuest["utilidacaja"];
                var utilif = respuest["utilidafrcc"];
                var iva = respuest["impuesto"];
                //var ventaca = ((costoc / 100) * utilic) + parseInt(costoc);
                //var ventafr = ((costof / 100) * utilif) + parseInt(costof);
                console.log(`una solo lista precios 1 Activado , 0 Desativado Valor Actual ${unasolaListaPrecio}`);
                if(unasolaListaPrecio==1 || unasolaListaPrecio=="1" )
                {
                    // costoc = respuest["CostoCajaP"];
                    // costof = respuest["CostoFrccP"];
                    if(costopromedio==1){
                        costoc = respuest["CostoPromedioP"];

                        if(factor>0){
                            if(costoc==0 || costoc=="0" || costoc=="" || costoc==" "){
                                costof=0;
                            }else{
                                costof = costoc/factor;
                            }
                            
                        }

                    }else{
                        costoc = respuest["costocaja"];
                         costof = respuest["costofrcc"];
                    }
                    

                    ventaca = respuest["VentaCajaP"];
                    ventafr = respuest["VentaFrccP"];
                    precioBlister=respuest["PrecioBlisterCaja"];


                        if(ventaca==0 || ventaca =="0" || ventaca==""){
                            ventaca = respuest["VentaCaja"];
                        }
                        if(ventafr==0 || ventafr =="0" || ventafr==""){
                            ventafr = respuest["VentaFrcc"];
                        }
                        if(precioBlister==0 || precioBlister =="0" || precioBlister==""){
                            precioBlister=respuest["precioblister"];
                        }

                     
                        
                        if(costoc==0 || costoc =="0" || costoc==""){
                            costoc = respuest["CostoCajaP"];
                        
                        }

                        if(costof==0 || costof =="0" || costof==""){
                            costof = respuest["CostoFrccP"];
                        }


                    }else{

                        if(costopromedio==1){
                            costoc = respuest["costopromediocaja"];
    
                            if(factor>0){
                                if(costoc==0 || costoc=="0" || costoc=="" || costoc==" "){
                                    costof=0;
                                }else{
                                    costof = costoc/factor;
                                }
                                
                            }
    
                        }else{
                        costoc = respuest["costocaja"];
                        costof = respuest["costofrcc"];

                        }

                        ventaca = respuest["VentaCaja"];
                        ventafr = respuest["VentaFrcc"];
                        precioBlister=respuest["precioblister"];
                    }



                  
               
                let pabierto = respuest["pabierto"];

                var ventaca2 = respuest["VentaCaja2"];
                let ventafr2 = respuest["VentaFrcc2"];
                
                let factorblister=respuest["factorblister"];
                let descup=respuest["descuentoPor"];
                let dtomar=respuest["dtomar"];
                let dtocat=respuest["dtocat"];
                let dtemax=respuest["dteMax"];
                let controlInventario=respuest["controlInventario"];
                
                var ventaca3 = respuest["VentaCaja3"];
                let ventafr3= respuest["VentaFrcc3"];
                let iddescuento=document.getElementById("idUsuario").value;
                let mensajePro=respuest["MensajePromo"];
                let cocina=respuest["DeCocina"];


                let estadoProd=respuest["ACTIVO"];
         
                
               
                let dto=0;
             
                if(descup>0){
                    dto=descup;

                    if(iddescuento==3 ){
                        $("#DescuPor").removeAttr("disabled");
                    }else{
                        if(iddescuento==1){
                            $("#DescuPor").removeAttr("disabled");
                            $("#DescuValor").removeAttr("disabled");
                            

                        }else{
                            $("#DescuPor").attr("disabled", "disabled");
                            $("#DescuValor").attr("disabled", "disabled");
                        }
                        
                    }

                   
                }else{


                    if(iddescuento==1){
                        $("#DescuPor").removeAttr("disabled");
                        $("#DescuValor").removeAttr("disabled");
                        

                    }else{
                        $("#DescuPor").attr("disabled", "disabled");
                        $("#DescuValor").attr("disabled", "disabled");
                    }
                    

                    if(dtomar>0){

                        dto=dtomar;
                        

                    } else{

                        if(dtocat>0){
                            dto=dtocat;
                           
                        } 

                    }
                }

        
                
                if(factorblister>0){
                    $("#canblister").removeAttr("disabled");
                }else{
                    $("#canblister").attr("disabled", "disabled");
                }
            


                if (pabierto == "si" || userPeabierto=="si") {

                    $("#pfrcc").removeAttr("disabled");
                    $("#pcaja").removeAttr("disabled");
                } else {
                    $("#pcaja").attr("disabled", "disabled");
                    $("#pfrcc").attr("disabled", "disabled");
                }
               
            
                if((listaPrecio==""|| listaPrecio==" " ||listaPrecio=="NULL") && (tipoMenus==0 || tipoMenus=="0") ){
                  let  ventaca1=ventaca;
                   let  ventafr1=ventafr;
                    if(ventaca2==0 || ventaca2 =="0" || ventaca2==""){
                        ventaca2=ventaca;
                    }
                    if(ventafr2==0 || ventafr2 =="0" || ventafr2==""){
                        ventafr2=ventafr;
                    }

                    if(ventaca3==0 || ventaca3 =="0" || ventaca3==""){
                        ventaca3=ventaca;
                    }
                    if(ventafr3==0 || ventafr3 =="0" || ventafr3==""){
                        ventafr3=ventafr;
                    }
                           
                        let listaPrES=document.getElementById("listPrecioMes").value;
                        if(listaPrES=="lista2"){
                            ventaca1=ventaca2
                            ventafr1=ventafr2

                        }else if (listaPrES=="lista3") {
                            ventaca1=ventaca3
                            ventafr1=ventafr3  

                        }  
                        if(listaPrecioCliente=="lista2") {
                            $("#pcaja").val(ventaca2); //ventaca
                            $("#pfrcc").val(ventafr2);
                        }else if(listaPrecioCliente=="lista3"){
                            $("#pcaja").val(ventaca3); //ventaca
                            $("#pfrcc").val(ventafr3);
                        }else{
                            $("#pcaja").val(ventaca1); //ventaca
                            $("#pfrcc").val(ventafr1);
                        }

                        
                }else{

                    if(listaPrecioCliente=="lista2") {
                        $("#pcaja").val(ventaca2); //ventaca
                        $("#pfrcc").val(ventafr2);
                    }else if(listaPrecioCliente=="lista3"){
                        $("#pcaja").val(ventaca3); //ventaca
                        $("#pfrcc").val(ventafr3);
                    }else{
                    $("#pcaja").val(ventaca); //ventaca
                    $("#pfrcc").val(ventafr);
                    }
                }
                
             
               
                $("#producto").val(codigo);
                $("#nproducto").val(nombre);
              

                $("#pcajaValor2").val(ventaca2);
                $("#pfrccValor2").val(ventafr2);

                $("#pcajaValor3").val(ventaca3);
                $("#pfrccValor3").val(ventafr3);

                $("#pcajaValor1").val(ventaca);
                $("#pfrccValor1").val(ventafr);

                

                $("#cocina").val(cocina);
                $("#saldo").val(inventario);
                $("#saldof").val(invetariofrcc);
                $("#iva").val(iva);

                $("#costoCaja").val(costoc);
                $("#costoFrcc").val(costof);


                $("#DescuPor").val(dto);
                
                $("#dteMaximi").val(dtemax);

               $("#controlinventarioF").val(controlInventario);


                $("#factorblister").val(factorblister);
                $("#pblister").val(precioBlister);
                if(decimales==1 || decimales=="1"){
                $("#pfrcc").number(true, 2);
                $("#pcaja").number(true, 2);
                $("#pblister").number(true, 2);
                }else{
                    $("#pfrcc").number(true, 0);
                    $("#pcaja").number(true, 0);
                    $("#pblister").number(true, 0);
                }
            



                if (factor > 0) {
                    enfocarsobrefrcc();
                    $("#frcc").removeAttr("disabled");
                   if( cambiarcantidadMesas==0){
                    $("#caja").val(0)
                   }else{

                   }

                   agradadoAutomatico=false;
                   
                } else {
                    enfocarsobrecaja();
                    $("#frcc").attr("disabled", "disabled");
                   
                    if( cambiarcantidadMesas==0){
                        
                        let caja= $("#caja").val()
                        if(solobarrar==3){
                           
                            if(caja =="" || caja==" " || caja==0 || caja==null){

                                $("#caja").val(1)
                                $("#agregar").focus();
                            }else{
                                $("#agregar").focus();
                            }

                        }else{
                            $("#caja").val(1)
                        }
                       }else{
                        
                       }
                    
                }

                // if(acortarCodigo==true){
                //     if(cantidadBas !=0){
                //         $("#caja").val(cantidadBas) 
                //         $("#agregar").focus();
                //     }
                   
                // }


                var selectVencimeintos=document.getElementById("venciemintosid");
                let datosVenciemintos=[];

                if(estadoProd==0 || estadoProd== "0" ){
                    alert("PRODUCTO INACTIVO");
                    $("#producto").val("");
                    return 0;
                  
                }


                    ///mostrar vencimeintos
                        $.ajax({
                            data: { "codeProd": codigo, "bodega": bodega }, //datos que se envian a traves de ajax
                            url: "../controlador/config/terminado1.php", //archivo que recibe la peticion
                            type: 'post', //método de envio
                
                            // beforeSend: function () {
                            //    alert("Procesando, espere por favor...");
                            // },
                            success: function(response) { //una vez que el archivo recibe el request lo procesa y lo devuelve
                                //$("#resultado").html(response);
                                var respuest = JSON.parse(response);
                                //  console.log(response)

                                let valores=`<option value="0"  ></option>`

                                datosVenciemintos.push(valores);

                                $.each(respuest.vencim, function(index, respuesta) {

                                    let idt= respuesta["idv"];
                                    let lote = respuesta["lote"];
                                    let fechav=respuesta["fechaVencimiento"].substr(0, 10);

                                let valores=`<option value="${fechav+":LT="+lote}"  >${fechav +"-"+  lote }</option>`

                                datosVenciemintos.push(valores);
                               

                            })

                            if(listaPrecio !="hidden" || listaPrecioCliente !="lista1" ){


                                const selectElement = $('#listaPr'); // Seleccionar el select con jQuery
                                const options = selectElement.find('option'); // Obtener todas las opciones
                            
                                // Encontrar el índice de la opción "lista3"
                                let startIndex = -1;
                                options.each(function(i, option) {
                                if ($(option).val() === 'lista3') {
                                    startIndex = i + 1; // Eliminar desde la opción siguiente a "lista3"
                                    return false; // Salir del bucle
                                }
                                });
                            
                                // Eliminar opciones desde el índice encontrado
                                if (startIndex !== -1) {
                                         options.slice(startIndex).remove();
                                }
                                
// console.log(respuest.listap)
                              // Supongamos que `respuest.listap` contiene nuevas opciones para agregar
                                $.each(respuest.listap, function(index, respuesta) {
                                  
                                
                                    // Agregar nuevas opciones al select (opcional, según tu lógica)
                                    if (respuest.listap.length > 0) {
                                    respuest.listap.forEach(item => {
                                        
                                        let pblister=0;
                                        if(item.PrecioBlistL==0 || item.PrecioBlistL=="" || item.PrecioBlistL==" "){
                                            pblister=precioBlister;
                                        }else{
                                            pblister=item.PrecioBlistL;
                                        }
                                        selectElement.append(
                                            $('<option>', {
                                                value: item.CodeLista,               // Valor para el atributo "value"
                                                text: item.CodeLista,                // Texto visible
                                                'precioCaja': item.precioCajaL,      // Atributo personalizado 1
                                                'precioFrcc': item.precioFrccL, // Atributo personalizado 2
                                                'precioBlist': pblister    // Atributo personalizado 3
                                              })
                                        );



                                        if(listaPrecioCliente==item.CodeLista) {
                                            $("#pcaja").val(item.precioCajaL); //ventaca
                                            $("#pfrcc").val(item.precioFrccL);
                                            $("#canblister").val(pblister);
    
                                        }

                                    });


                                    




                                    }
                                });
  


                               


                            }
                           





                            let datosmostrar=datosVenciemintos.join("");
                            selectVencimeintos.innerHTML=datosmostrar;
                        
                            

                            if(inventario<=0 && controlInventario !="no" ){

                                alert("PRODUCTO SIN INVENTARIO O SALDO DISPONIBLE");
        
                            }else{
                                if(mensajePro!=null){

                                
                                    if(mensajePro.length>5){
                                        alert(`MENSAJE PROMICIONAL:    ${mensajePro}
                                    
                                        `);
                                                                            
                                    
                                    }
                            }
                            }
                            
                           

                            // // agregar automaticamnete PRODUCTOS SELECIONADO DESDE LAS MESAS
                            //     if( cambiarcantidadMesas==1){
                            //         $("#agregar").click()
                            //     }

                             // Asignar cantidad final aquí
                        if(acortarCodigo==true && cantidadBas != 0){
                            $("#caja").val(cantidadBas);
                        }
                           
                             resolver(true);
                            
                     
                        }
                        });


                    //fin mostras venciemintos
                
                    let listaPr=$("#listaPr").val("lista1")
                    

                   



            } else {
                if (id == "") {

                } else {



                    $('#productos').modal('show');
                    $('#tablap tr').remove();

                    $("#busproducto").val(id);
                    $("#buscarp").click();
                    if(tipoMenus==0){

                        let select = document.getElementById("listPrecioMes");
                        select.value = "lista1";
                
                    }

                }

            }



        }

    });

}) 

}

//funcion buscar producto presionando enter modal
$("#busproducto").keypress(function(e) {

    if (e.which == 13) {
        $('#tablap tr').remove();
        var producto = $("#busproducto").val();
        buscarpr(producto);

       




    }

});


//funcion buscar producto  ventana modal
function buscarpr(producto,categori=null) {

    let bodega = document.getElementById("idbodegas").value;
     let menuMesas=document.getElementById("menuMesas");

    

   let enceros= document.getElementById("idCerosInclui").checked;
//    console.log(enceros)
  
   let listaPrecioCliente=document.getElementById("listaPreciF").value;
    $.ajax({
        data: { "producto": producto, "bodega": bodega,"categoria":categori,"enceros":enceros }, //datos que se envian a traves de ajax
        url: "../controlador/config/productos.php", //archivo que recibe la peticion
        type: 'post', //método de envio


        success: function(response) { //una vez que el archivo recibe el request lo procesa y lo devuelve
            //$("#resultado").html(response);
            var respuest = JSON.parse(response);
            //console.log(response);
            menuMesas.innerHTML=""
            
            $.each(respuest, function(index, respuesta) {
                let costoc = 0;
                let costof = 0;
                let utilic = 0;
                let utilif =0;
               
                let ventaca = 0;
                let ventafr = 0;
                let precioBlister=0;
                let codeLista=respuesta["CodeLista"];

                let precioAbierto=respuesta["pabierto"];

                var codigo = respuesta["codigo"];
                var nombre = respuesta["nombre"];
                var inventario = respuesta["inventario"];
                let factor = respuesta["factor"];
                var invetariofrcc = Math.round(factor * inventario);
                let inventarioTraslado=respuesta["cantidTraslada"];
                


                let colorLEtraTraslado="";
                if(inventarioTraslado>0){
                    colorLEtraTraslado="text-warning bg-dark";
                }
             
               

                if(unasolaListaPrecio==1 || unasolaListaPrecio=="1" )
                {

                    // costoc = respuesta["CostoCajaP"];
                    // costof = respuesta["CostoFrccP"];

                     costoc = respuesta["costocaja"];
                     costof = respuesta["costofrcc"];

                    ventaca = respuesta["VentaCajaP"];
                    ventafr = respuesta["VentaFrccP"];
                   
                    utilic = respuesta["UtilidadCajaP"];
                    utilif= respuesta["UtilidadFrccP"];


                    if(costoc==0 || costoc =="0" || costoc==""){
                        costoc = respuesta["CostoCajaP"];
                    }
                    if(costof==0 || costof =="0" || costof==""){
                        costof = respuesta["CostoFrccP"];
                    }
                    if(ventaca==0 || ventaca =="0" || ventaca==""){
                        ventaca=respuesta["VentaCaja"];
                    }

                    if(ventafr==0 || ventafr =="0" || ventafr==""){
                        ventafr=respuesta["VentaFrcc"];
                    }

                    if(utilif==0 || utilif =="0" || utilif==""){
                        utilif=respuesta["utilidafrcc"];
                    }


                    if(utilic==0 || utilic =="0" || utilic==""){
                        utilic=respuesta["utilidacaja"];
                    }

                  

                    if(precioBlister==0 || precioBlister =="0" || precioBlister==""){
                        precioBlister=respuesta["PrecioBlisterCaja"];
                    }

                


                }else{

                    costoc = respuesta["costocaja"];
                     costof = respuesta["costofrcc"];
                    utilic = respuesta["utilidacaja"];
                     utilif = respuesta["utilidafrcc"];
                    // var ventaca = ((costoc / 100) * utilic) + parseInt(costoc);
                    // var ventafr = ((costof / 100) * utilif) + parseInt(costof);
                     ventaca = respuesta["VentaCaja"];
                     ventafr = respuesta["VentaFrcc"];
                     precioBlister=respuesta["precioblister"];

                }


                if(listaPrecioCliente=="lista2"){
                    ventaca = respuesta["VentaCaja2"];
                    ventafr = respuesta["VentaFrcc2"];


                }else if (listaPrecioCliente=="lista3"){

                    ventaca = respuesta["VentaCaja3"];
                    ventafr = respuesta["VentaFrcc3"];
                }else if(listaPrecioCliente==codeLista){

                    ventaca = respuesta["precioCajaL"];
                     ventafr = respuesta["precioFrccL"];
                     precioBlister=respuesta["PrecioBlistL"];

                }





                let nombremarc = respuesta["nommarca"];
                let ubicacion1 = respuesta["ubicacion1"];
                let ubicacion2 = respuesta["ubicacion2"];
                let comision = respuesta["ComisionP"];
                let bodegaMo = respuesta["idbodega"];
                let tipoProducto=respuesta["tipoProducto"];
                let controlInventario=respuesta["controlInventario"];
                let modificar="disabled";

                let estadoProd=respuesta["ACTIVO"];
                let colorEstado=""
                if(estadoProd=="0"){
                        colorEstado="hidden"
                }

                if(modificarPrecioVenta==1 || modificarPrecioVenta=="1" || precioAbierto=="si"){
                    modificar="";
                }
                
                if (inventario > 0 || controlInventario=="no" || enceros==true) {

                        if(tipoProducto=="Fabricacion"){
                            
                        }else{

                        if(tipoMenus==1){
                            if (comision > 0) {
                                $("#tablap").append(
                                    "<tr class='comission " + colorLEtraTraslado+" ' " + colorEstado + ">" +
                                        "<td>" + codigo + "</td>" + 
                                        "<th>" + nombre + "</th>" + 
                                        "<th>" + inventario + "</th>" + 
                                        "<th class='valll'>" + ventaca + "</th>" + 
                                        "<th>" + invetariofrcc + "</th>" + 
                                        "<th class='valll'>" + ventafr + "</th>" + 
                                        "<th class='valll'>" + precioBlister + "</th>" + 
                                        "<th>" + nombremarc + "</th>" + 
                                        "<th>" + ubicacion1 + "</th>" + 
                                        "<th>" + ubicacion2 + "</th>" + 
                                        "<th>" + bodegaMo + "</th>" + 
                                        "<th><input type='button' class='btn bg-info btn-sm' onclick='impriBarcode(\"" + codigo + "\", \"" + nombre + "\", \"" + ventaca + "\",\"" + usuarioA + "\")' value='B'></th>" +

                                        "<th><input type='button' class='btn bg-primary btn-sm' onclick='requisicion(\"" + codigo + "\")' value='R'></th>" +
                                    "</tr>"
                                );
                            } else {
                                $("#tablap").append(
                                    "<tr class='" + colorLEtraTraslado+"' " + colorEstado + ">" +
                                        "<td>" + codigo + "</td>" + 
                                        "<th>" + nombre + "</th>" + 
                                        "<th>" + inventario + "</th>" + 
                                        "<th class='valll'>" + ventaca + "</th>" + 
                                        "<th>" + invetariofrcc + "</th>" + 
                                        "<th class='valll'>" + ventafr + "</th>" + 
                                        "<th class='valll'>" + precioBlister + "</th>" + 
                                        "<th>" + nombremarc + "</th>" + 
                                        "<th>" + ubicacion1 + "</th>" + 
                                        "<th>" + ubicacion2 + "</th>" + 
                                        "<th>" + bodegaMo + "</th>" + 
                                        "<th><input type='button' class='btn bg-info btn-sm' onclick='impriBarcode(\"" + codigo + "\", \"" + nombre + "\", \"" + ventaca + "\",\"" + usuarioA + "\")' value='B'></th>" +
                                        "<th><input type='button' class='btn bg-primary btn-sm' onclick='requisicion(\"" + codigo + "\")' value='R'></th>" +
                                    "</tr>"
                                );
                                

                            }

                        }else{

                            
                            if(listaPrecio==""|| listaPrecio==" " ||listaPrecio=="NULL"){

                                    let  ventaca2 = respuesta["VentaCaja2"];
                                    let ventafr2 = respuesta["VentaFrcc2"];
                                    let ventaca3 = respuesta["VentaCaja3"];
                                    let ventafr3= respuesta["VentaFrcc3"];
                                    if(ventaca2==0 || ventaca2 =="0" || ventaca2==""){
                                        ventaca2=ventaca;
                                    }
                                    if(ventafr2==0 || ventafr2 =="0" || ventafr2==""){
                                        ventafr2=ventafr;
                                    }

                                    if(ventaca3==0 || ventaca3 =="0" || ventaca3==""){
                                        ventaca3=ventaca;
                                    }
                                    if(ventafr3==0 || ventafr3 =="0" || ventafr3==""){
                                        ventafr3=ventafr;
                                    }
                                        
                                        let listaPr=document.getElementById("listPrecioMes").value;
                                        if(listaPr=="lista2"){
                                            ventaca=ventaca2
                                            ventafr=ventafr2

                                        }else if (listaPr=="lista3") {
                                            ventaca=ventaca3
                                            ventafr=ventafr3  

                                        } 

                             }

                             ///nueva forma de las mesas
                 

                             if (factor > 0) {

                                var itemMesa = `
<div ${colorEstado} class="card product-card col-md-4 col-xl-4 col-12 col-sm-6 border border-dark mb-4 shadow-sm rounded-3">
<img src="../public/img/${empresa}/${codigo}.jpg" 
     class="card-img-top mt-2 rounded-top" 
     alt="...">
    <div class="card-body p-2 text-center">
        <h6 class="card-title fw-bold text-dark mb-1">${nombre}</h6>
        <p class="card-subtitle small mb-2">(${nombremarc})</p>
    </div>
    <ul class="list-group list-group-flush">
        <li class="list-group-item d-flex justify-content-between align-items-center py-1">
            <span>Inv. Caja: <span class="fw-bold text-primary">${inventario}</span></span>
            <input type="text" inputmode="numeric" class="valrmesa form-control form-control-sm w-50 text-end fw-bold" ${modificar} value="${ventaca}" id="ventacajacModal">
        </li>
        <li class="list-group-item d-flex justify-content-between align-items-center py-1">
            <span>Inv. Frcc: <span class="fw-bold text-success">${invetariofrcc}</span></span>
            <input type="text" inputmode="numeric" class="valrmesa form-control form-control-sm w-50 text-end fw-bold" ${modificar} value="${ventafr}" id="ventafrccModal">
        </li>
        <li class="list-group-item py-1">
            <div class="d-flex gap-1 justify-content-center align-items-center">
                <input id="cantidadMesas" type="number" value="1" class="form-control text-center fw-bold" style="max-width: 100px; height: 32px;" inputmode="numeric">
                <input type="button" class="mesacaja btn btn-primary btn-sm fw-bold px-3" id="${codigo}" value="CAJA" style="height: 32px;">
                <input type="button" class="mesafrcc btn btn-success btn-sm fw-bold px-3" id="${codigo}" value="FRCC" style="height: 32px;">
            </div>
        </li>
    </ul>
</div>`;
                            } else {

                                var itemMesa = `
<div ${colorEstado} class="card product-card col-md-4 col-xl-4 col-12 col-sm-6 border border-dark mb-4 shadow-sm rounded-3">
<img src="../public/img/${empresa}/${codigo}.jpg" 
     class="card-img-top mt-2 rounded-top" 
     alt="...">
    <div class="card-body p-2 text-center">
        <h6 class="card-title fw-bold text-dark mb-1">${nombre}</h6>
        <p class="card-subtitle small mb-2">(${nombremarc})</p>
    </div>
    <ul class="list-group list-group-flush">
        <li class="list-group-item d-flex justify-content-between align-items-center py-1">
            <span>Inv. Caja: <span class="fw-bold text-primary">${inventario}</span></span>
            <input type="text" inputmode="numeric" class="valrmesa form-control form-control-sm w-50 text-end fw-bold" ${modificar} value="${ventaca}" id="ventacajacModal">
        </li>
        <li class="list-group-item hidden d-flex justify-content-between align-items-center py-1">
            <span hidden>Inv. Frcc: <span class="fw-bold text-success">${invetariofrcc}</span></span>
            <input hidden type="text" inputmode="numeric" class="valrmesa form-control form-control-sm w-50 text-end fw-bold" ${modificar} value="${ventafr}" id="ventafrccModal">
        </li>
        <li class="list-group-item py-1">
            <div class="d-flex gap-1 justify-content-center align-items-center">
                <input id="cantidadMesas" type="number" value="1" class="form-control text-center fw-bold" style="max-width: 100px; height: 32px;" inputmode="numeric">
                <input type="button" class="mesacaja btn btn-primary btn-sm fw-bold px-3" id="${codigo}" value="CAJA" style="height: 32px;">
                <input hidden type="button" class="mesafrcc hidden btn btn-success btn-sm fw-bold px-3" id="${codigo}" value="FRCC" style="height: 32px;">
            </div>
        </li>
    </ul>
</div>`;
                              
                                    // var itemMesa = `
                                    // <div ${colorEstado} class="card product-card col-md-4 col-xl-4 col-12 col-sm-6 border border-dark mb-12">
                                    //     <img src="../public/img/${empresa}/${codigo}.jpg" class="card-img-top mt-1" alt="...">
                                    //     <ul class="list-group list-group-flush">
                                    //        <li class="list-group-item">
                                    //         <strong>${nombre}</strong> -> (${nombremarc})
                                    //         </li>
                                                                
                                    //          <li class="list-group-item">Inv_Caja: <span class='h2'>${inventario}</span> || Precio:
                                    //             <input type="text" inputmode="numeric" class='valrmesa h3 col-md-10' ${modificar} value="${ventaca}" id="ventacajacModal">
                                    //         </li>
                                    //         <li class="list-group-item" hidden>Inv_Frcc: <span class='h2'>${invetariofrcc}</span> || Precio:
                                    //             <input type="text" inputmode="numeric" class='valrmesa h3 col-md-10' ${modificar} value="${ventafr}" id="ventafrccModal">
                                    //         </li>

                                    //         <li class="list-group-item col-md-12">
                                    //             <label for="" class="col-md-4">
                                    //                 <input id="cantidadMesas" type="number" value="1" class="form-control" inputmode="numeric">
                                    //             </label>
                                    //             <input type="button" class="mesacaja btn btn-primary" id="${codigo}" value="CAJA">
                                    //             <input type="button" class="mesafrcc btn btn-success" hidden id="${codigo}" value="FRCC">
                                    //         </li>
                                    //     </ul>
                                    // </div>`;






                                     
                               
                            }

                             ///fin nueva forma mesas



                      


                            menuMesas.innerHTML +=itemMesa




                        }

                        }
                }





            });
            if(decimales==1 || decimales=="1"){
            $(".valll").number(true, 1);
            $(".valrmesa").number(true, 1);
            
            }else{
                $(".valll").number(true, 0);
            $(".valrmesa").number(true, 0);
            }

        }

    });




}


function requisicion(code){

    let bodega = document.getElementById("idbodegas").value;
    
    $.ajax({

       data: { "codePRq":code,"bodega":bodega }, //datos que se envian a traves de ajax
       url: "../controlador/config/funcionesgenerales.php", //archivo que recibe la peticion
       type: 'post', //método de envio
       // beforeSend: function () {
       success: function(response) {
        alert(response)
       }

    })

}


// fin imprimir varcode

$("#menuMesas").on("click", ".valrmesa", function() {
   
 $(this).select(); // Esto debería funcionar ahora
});


// funciona metodos de pago funcion panaderia 
$("#facturarr").click(function() {
    $("#facturar").trigger('click');
});

//funcion metodo de pago


// calculos de base, descuentos y totales
async function ejecutarCalculos() {
    return new Promise((resolve) => {
        sumartotal();
        descuentoFac();
        
        $("#base5").val(baseiva5());
        $("#base19").val(baseiva19());
        $("#baseexento").val(excenton());
        $("#totaliva5").val(sumariva5());
        $("#totaliva19").val(sumariva19());
        $("#dbaseexcluido").val(excluido());
        
        $("#ivaotro").val(otroiva());
        $("#baseotro").val(baseotroiva());
        
        $("#ivaipc").val(ivaipc());
        $("#baseipc").val(baseoipc());

        // Aseguramos que todas las funciones se hayan ejecutado antes de continuar
        resolve();
    });
}



$("#facturar").click(async function() {
    let bodega = document.getElementById("idbodegas").value;
    let  idParticipantes=document.getElementById("idParticipantes").value;
console.log(1)
let descu=await descuentoGeneralFActuras();





    await ejecutarCalculos();
console.log(2)
   
    if(ParticiObligatorio==1 && (idParticipantes==1  || idParticipantes=="" || idParticipantes==" ")){
        alert(`Selecione un Participante valido`);
        return 0;
    }
 


//     let totalFactu=$("#totalfact").val();
// let sum=0;
//   $('#tabla tr').each(function() {
//        let  valor = $(this).find("th").eq(7).html();
//         sum=sum+parseFloat(valor,10);
    
//     });

//     console.log("total Factura",totalFactu,"total Suma",sum)
// if(totalFactu != sum ){
//     alert("Error en el calculo de los totales");
//     return 0;
// }




let totalFactu = parseFloat($("#totalfact").val());
let sum = 0;

$('#tabla tr').each(function() {
    // Obtenemos el texto, quitamos espacios y convertimos a número
    let valor = $(this).find("th").eq(7).text().trim(); 
    if (valor !== "") {
        sum += parseFloat(valor);
    }
});

// Math.abs convierte cualquier resultado en positivo.
// Esto permite un margen de error de +/- 5
let diferencia = Math.abs(totalFactu - sum);

console.log("Factura:", totalFactu, "| Suma Tabla:", sum, "| Diferencia:", diferencia);

if (diferencia > 5) {
    alert("Error: La diferencia es de " + diferencia.toFixed(2) + ". No puede ser mayor a 5.");
    return 0;
}





    if(bodegaUser==bodega){     
        facturar();
         
    }else{

        if(multibodega==1 || multibodega==3){
            facturar();
            
        }else{
            alert(`No esta autorizado Para facturar por la bodega ${bodega}`);
        }
    }

    document.getElementById("idbodegaVenta").value=bodega;



})

facturar=()=>{
    clicguardar = false;
    $('#titupagos h4').remove();
    clicguardarCotizaCIon=false;

    $('#fpagos').modal('show');
    var totall = $("#totalfact").val();
    let descuentoFa = $("#TotalDescu").val();

    $("#efectivo").val(0);
    $("#Tcredicto").val(0);
    $("#Tdebito").val(0);
    $("#propina").val(0);


    $("#descuentovalor").val(descuentoFa);

    $("#creditoc").val(0);
    $("#valentragdo").val(0);

    $("#efectivo").number(true, 0);
    $("#Tcredicto").number(true, 0);
    $("#Tdebito").number(true, 0);
    $("#creditoc").number(true, 0);
    $("#valentragdo").number(true, 0);

    $("#tfactur").val(totall);
    $("#efectivo").focus();
    $("#tfactur").number(true, 0);
    $("#propina").number(true, 0);

 $("#otrosBANCO").val(0);


     $("#otrosBANCO").number(true, 0);


    sumarformapago();

}



//funcion mascaras formas de pago
$("#efectivo").keypress(function(e) {

    if (e.which == 13) {
        sumarformapago();
        $("#guarfactu").focus();
    }

});

$("#efectivo").blur(function() {

    sumarformapago();

});

$("#creditoc").blur(function() {

    sumarformapago();

});


$("#Tcredicto").keypress(function(e) {

    if (e.which == 13) {
        sumarformapago();
        $("#guarfactu").focus();
    }

});
$("#Tcredicto").blur(function() {

    sumarformapago();


});

$("#Tdebito").keypress(function(e) {

    if (e.which == 13) {
        sumarformapago();
        $("#guarfactu").focus();
    }

});
$("#Tdebito").blur(function() {

    sumarformapago();
    

});

$("#creditoc").keypress(function(e) {

    if (e.which == 13) {
        sumarformapago();
        $("#guarfactu").focus();
    }

});

$("#propina").keypress(function(e) {

    if (e.which == 13) {
        sumarformapago();
        $("#guarfactu").focus();
    }

});
$("#propina").blur(function() {

    sumarformapago();
    

});

$("#otrosBANCO").keypress(function(e) {

    if (e.which == 13) {
        sumarformapago();
        $("#guarfactu").focus();
    }

});

$("#otrosBANCO").blur(function() {

    sumarformapago();
    

});




function sumarformapago() {
    let efectivo = $("#efectivo").val();
    let tcredict = $("#Tcredicto").val();
    let tdebitoo = $("#Tdebito").val();
    let creditc = $("#creditoc").val();
    let propina=$("#propina").val();
    let otrosBANCO=$("#otrosBANCO").val();

    if(efectivo==""){
        efectivo=0;
    }
    if(tcredict==""){
        tcredict=0;
    }
    if(tdebitoo==""){
        tdebitoo=0;
    }
    if(creditc==""){
        creditc=0;
    } 
    if(propina==""){
        propina=0;
    } 
       if(otrosBANCO==""){
        otrosBANCO=0;
    } 


    //let totall = $("#totalfact").val();tfactur
    let totall = $("#totalfact").val();
     let   totall2=parseInt(totall)+parseInt(propina);
    var tot = ( parseInt(efectivo) +  parseInt(tcredict) +  parseInt(tdebitoo) +  parseInt(creditc) +parseInt(otrosBANCO) );
    let devuelta =parseInt( tot - totall2);

    $("#valentragdo").val(devuelta);

    $("#tfactur").val(totall2);

}

// establecer valor en metodos de pago segun el nombre de la forma de pago



$(".FORMADEPAGO").on('click', function(e) {
    let totall = $("#tfactur").val();
let metodopago=e.target.parentNode.children[1].id;
console.log(metodopago)
if(metodopago=="efectivo"){
    $("#efectivo").val(totall);
    $("#creditoc").val(0);
    $("#Tcredicto").val(0);
    $("#Tdebito").val(0);
        $("#otrosBANCO").val(0);
}else if(metodopago=="Tcredicto"){//trasferencias
    $("#Tcredicto").val(totall);
    $("#efectivo").val(0);
    $("#creditoc").val(0);
  
    $("#Tdebito").val(0);
        $("#otrosBANCO").val(0);
}else if(metodopago=="Tdebito"){//tarjetas
    $("#Tdebito").val(totall);

    $("#Tcredicto").val(0);
    $("#efectivo").val(0);
    $("#creditoc").val(0);
        $("#otrosBANCO").val(0);
  
    
}else if(metodopago=="creditoc"){//creditos
    $("#creditoc").val(totall);
     $("#otrosBANCO").val(0);

    $("#Tdebito").val(0);

    $("#Tcredicto").val(0);
    $("#efectivo").val(0);
   
}else if(metodopago=="otrosBANCO"){//creditos
    $("#otrosBANCO").val(totall);

    $("#Tdebito").val(0);
    $("#creditoc").val(0);

    $("#Tcredicto").val(0);
    $("#efectivo").val(0);
   
}


sumarformapago();



})
// funciones descuento en factura de venta

$("#DescuPor").blur(function() {
    descuentoporcenta();
});
$("#DescuPor").keypress(function(e) {
    if (e.which == 13) {
        descuentoporcenta();

    }

});

$("#DescuValor").blur(function() {
    descuentoporValor();
});
$("#DescuValor").keypress(function(e) {
    if (e.which == 13) {
        descuentoporValor();

    }

});


descuentoporcenta = () => {
    preciocaja();
    let idUser = $("#idUsuario").val();
    console.log(idUser)
    if (idUser == 1 || idUser == 3  || idUser == 2) {
        let dtoclie=$("#dtoclie").val().trim();
        let totalValor = $("#Tprecio").val();
        let porcentadesceunto =$("#DescuPor").val();

        
        //no permiter por debajo del costo
        let costoCaja=$("#costoCaja").val();
        let costoFrcc=$("#costoFrcc").val();
        let caja=$("#caja").val();
        let frcc=$("#frcc").val();

        let totalCostoC=costoCaja*caja;
        let totalCosotF=costoFrcc*frcc;

        let totalCosto=parseInt(totalCostoC+totalCosotF);
        //

       
        if(dtoclie>0){
            porcentadesceunto=dtoclie;
        }
       
        let descuento = 0;
        let descuento1=0;
     
        
        let nuevototal=0;

        if(dtoclie>0 && inventirPolicacliente==1){

            //  descuento =((totalCosto / 100) * porcentadesceunto)          
            //  descuento1 =descuento+parseInt(totalCosto);
            // nuevototal = ((totalCosto / 100) * porcentadesceunto) + parseInt(totalCosto);

             nuevototal = ((totalCosto / 100) * porcentadesceunto) + totalCosto;
             
             if(nuevototal<100){
                nuevototal=  (nuevototal / 50) * 50;
                nuevototal=  Math.round(nuevototal);
             }else{
                nuevototal=  Math.round(nuevototal / 100) * 100;
             }

             $("#DescuValor").val(0);
            $("#Tprecio").val(Math.round(nuevototal));
            
            

        }else{

         descuento = Math.round((totalValor / 100) * porcentadesceunto, 0);
         descuento1=Math.round(descuento / 100) * 100;
     
        
         nuevototal = totalValor - descuento1;

         if(nuevototal>totalCosto){

            
            $("#DescuValor").val(descuento1);
            $("#Tprecio").val(nuevototal);

        }else{

            // $("#Tprecio").val(totalCosto); 

            $("#DescuValor").val(descuento1);
            $("#Tprecio").val(nuevototal);
        }


        }

         // 

         
     



    }

}
descuentoporValor = () => {
    preciocaja();
    let idUser = $("#idUsuario").val();

    if (idUser == 1) {



        let totalValor = $("#Tprecio").val();
        let valordes = $("#DescuValor").val();
        let nuevototal = Math.round((totalValor - valordes), 0);

        let utilida =Math.round( 100-(((totalValor - valordes) / totalValor) * 100),0);

      console.log(utilida);


        //no permiter por debajo del costo
        let costoCaja=$("#costoCaja").val();
        let costoFrcc=$("#costoFrcc").val();
        let caja=$("#caja").val();
        let frcc=$("#frcc").val();

        let totalCostoC=costoCaja*caja;
        let totalCosotF=costoFrcc*frcc;

        let totalCosto=totalCostoC+totalCosotF;
        //
        // if(nuevototal>totalCosto){
            $("#Tprecio").val(nuevototal);

            return utilida;
    

        // }else{

        //     return 0;  
        // }

      
    }

}

///funcion aplicar descuentoGeneral Facturar

function descuentoGeneralFActuras (){

      let descuentoBarraIvas = $("#TotalDescu").val();
  

     let totalFac=$("#totalfact").val();
   
      return new Promise(async (resolve, reject) => {

        //   if( descuentoGeneralValores >1 ){
        if(DescuentoGeneralDespuesDe > 1 && parseInt(totalFac) >= parseInt( DescuentoGeneralDespuesDe) && porcentajeDescuento > 0 ){

                 let rowsBody = $("#table").find('tbody > tr');

                    if (rowsBody.length > 0) {
                        for (let i = 0; i < rowsBody.length; i++) {
                            let producto = rowsBody[i].getElementsByTagName('th')[0].innerText;
                           
                            let descueapica=porcentajeDescuento;
                               
                                
                                // Obtener todas las celdas de la fila (excluyendo el <th>)
                                let celdas = rowsBody[i].getElementsByTagName('th');
                              
                              
                              let baseIva=  celdas[4].innerText // Base
                               let ivaA= celdas[5].innerText // IVA
                               let tipoivaA= celdas[6].innerText // IVA
                               let totalPr= celdas[7].innerText  // Total precio
                              let descuentoFa=  celdas[8].innerText // Descuento
                                if(descuentoFa == 0){
                                    
                                  
                                    if(tipoivaA==19 || tipoivaA==5){
                                        descueapica = parseInt(descueapica);
                                        descueapica = descueapica - 2;
                                        // para doña rosa solo ivas aplica 10
                                    }
                                    let descuento = totalPr * (descueapica / 100);
                                   

                                     descuento= Math.round(descuento / 100) * 100;

                                    let precioFinal = totalPr - descuento;
                            let base=0;
                            let valoriva=0;
                            if(regimen==1){
                                if (tipoivaA == 19) {
                                 base = (precioFinal / 1.19).toFixed(2);
                                 valoriva = (precioFinal - base).toFixed(2);
                                    } else if (tipoivaA == 5) {
                                         base = (precioFinal / 1.05).toFixed(2);
                                         valoriva = (precioFinal - base).toFixed(2);
                                    } else if (tipoivaA == 8) {
                                         base = (precioFinal / 1.08).toFixed(2);
                                         valoriva = (precioFinal - base).toFixed(2);
                                    } else if (tipoivaA == 10) {
                                         base = (precioFinal / 1.10).toFixed(2);
                                         valoriva = (precioFinal - base).toFixed(2);
                                    } else if (tipoivaA == 0) {
                                         base = precioFinal;
                                         valoriva = 0;
                                    } else if (tipoivaA == 1) {
                                         base = precioFinal;
                                         valoriva = 0;
                                    } else {
                                         valoriva = 0;
                                         base = 0;
                                    }


                                    

                                }

                             celdas[4].innerText =base// Base
                               celdas[5].innerText=valoriva // IVA
                               
                               celdas[7].innerText= precioFinal // Total precio
                              celdas[8].innerText=parseInt( descuento) // Descuento


                                    
                                }
                               console.log("base"+baseIva)
                                console.log("iva"+ivaA)
                                console.log("tipo"+tipoivaA)
                               console.log("total"+totalPr)
                                console.log("descue"+descuentoFa)

                                //celdas[4].innerText =0;
                            }

                          await ejecutarCalculos();
                          resolve(false)

                        }                       
                    else{
                        resolve(false); 
                    }





        }else{

                if (document.getElementById("DescuentoGeneralFact").disabled) {

                        console.log("Está deshabilitado");
                         resolve(false)
                     return; 
                }

                let descuentoGeneralValores=document.getElementById("DescuentoGeneralFact").value;

                if(descuentoBarraIvas > 50){
                     resolve(false)
                     return; 
                }

                if( descuentoGeneralValores >= 50 ){

                   let terminarCiclo=false;



                let rowsBody = $("#table").find('tbody > tr');

                    if (rowsBody.length > 0) {

                         console.log("total Producotos en lista" );
                        let totaprodList=rowsBody.length;
                       let acomulado=descuentoGeneralValores;
                        console.log("descuento general"+ acomulado);
                       
                        for (let i = 0; i < rowsBody.length; i++) {
                            let producto = rowsBody[i].getElementsByTagName('th')[0].innerText;
                           
                            
                                
                                // Obtener todas las celdas de la fila (excluyendo el <th>)
                                let celdas = rowsBody[i].getElementsByTagName('th');
                              
                              
                              let baseIva=  celdas[4].innerText // Base
                               let ivaA= celdas[5].innerText // IVA
                               let tipoivaA= celdas[6].innerText // IVA
                               let totalPr= celdas[7].innerText  // Total precio
                              let descuentoFa=  celdas[8].innerText // Descuento
                                if(descuentoFa == 0){
                                  
                                    
                                    // let descuento = Math.round(descuentoGeneralValores / totaprodList);  
                                let descuento =Math.round(descuentoGeneralValores / totaprodList);
                                   //  descuento= Math.round(descuento / 50) * 50;

                                
                                    let precioFinal=0;

                                    if(totalPr -acomulado > 100){
                                        precioFinal = totalPr - acomulado;
                                        descuento=acomulado;
                                        terminarCiclo=true;

                                     }else{
                                          precioFinal = totalPr - descuento;
                                        acomulado=acomulado-descuento
                                     }

                            let base=0;
                            let valoriva=0;
                            if(regimen==1){
                                if (tipoivaA == 19) {
                                 base = (precioFinal / 1.19).toFixed(2);
                                 valoriva = (precioFinal - base).toFixed(2);
                                    } else if (tipoivaA == 5) {
                                         base = (precioFinal / 1.05).toFixed(2);
                                         valoriva = (precioFinal - base).toFixed(2);
                                    } else if (tipoivaA == 8) {
                                         base = (precioFinal / 1.08).toFixed(2);
                                         valoriva = (precioFinal - base).toFixed(2);
                                    } else if (tipoivaA == 10) {
                                         base = (precioFinal / 1.10).toFixed(2);
                                         valoriva = (precioFinal - base).toFixed(2);
                                    } else if (tipoivaA == 0) {
                                         base = precioFinal;
                                         valoriva = 0;
                                    } else if (tipoivaA == 1) {
                                         base = precioFinal;
                                         valoriva = 0;
                                    } else {
                                         valoriva = 0;
                                         base = 0;
                                    }


                                    

                                }

                                if(precioFinal > 100){
                                
                               

                                        celdas[4].innerText =base// Base
                                        celdas[5].innerText=valoriva // IVA
                                        
                                        celdas[7].innerText= precioFinal // Total precio
                                        celdas[8].innerText=parseInt( descuento) // Descuento
                                
                                    
                                        if(terminarCiclo==true){
                                             await ejecutarCalculos();
                                           resolve(false)
                                           return; 
                                        }

                                }
                                    
                                }
                               console.log("base"+baseIva)
                                console.log("iva"+ivaA)
                                console.log("tipo"+tipoivaA)
                               console.log("total"+totalPr)
                                console.log("descue"+descuentoFa)

                                //celdas[4].innerText =0;
                            }

                          await ejecutarCalculos();
                          resolve(false)

                        }                       
                    else{
                        resolve(false); 
                    }





                }else{
                    resolve(false); 
                }







            }
        
  
                     // Retornas el valor exitosamente
    
  });

   


}


/// aplicar descuento general 


// fin funciones descuento en factura de venta


// var clickfacturaelectronica = false;

//funcion ejecutar guardar factura

$("#guarfactu").click( async function() {

  


    if(clicguardar==true || clicguardar=="true"){
        $('#titupagos').html("<h4 style='color: red'>la Factura esta en Proceso. por favor espera un momento</h4>");
       
        return 0;
    }


    let tipoDeFactura = $("#tipoFactu").val();
    let validadro=true;
    // let valorFact=parseInt( $("#totalfact").val());

    let idSorteo=document.getElementById("idSorteo");

    let sorteo="";
    
    sumarformapago();
    let vencimientoFactura=document.getElementById("vencimientoFactura").value;
    let totall = parseInt($("#totalfact").val());
    let tipoAtencion=$("#tipoAtencion").val();
   

    // if(totall>=parseInt(ValorUvt) && ( tipoDeFactura=="Pos" || tipoDeFactura=="Domicilio" ) && tipoAtencion !="Convenios" ) {   
   
    //     alert("Esta  factura supera los 5 UVT permitidos Para POS, Debes de Generar Factura Electronica");
    //     return 0;
    // }else{



    let efectivo = $("#efectivo").val();
    let tcredict = $("#Tcredicto").val();
    let tdebitoo = $("#Tdebito").val();
    let creditc = $("#creditoc").val();
    let cambio = $("#valentragdo").val();
    let detallef = $("#comentarios").val();
    let descuento = $("#descuentovalor").val();
    let propina=$("#propina").val();
      let otrosBANCO=$("#otrosBANCO").val();
      let cuentaDestino=$("#cuentaDestino").val();
    //let cliente = $("#nit").val();

    let descuentoCentaIvas=document.getElementById("TotalDescu").value;


    if(vencimientoFactura.trim()==""|| vencimientoFactura.trim()==" "){
        vencimientoFactura=0; 
    }
        if(idSorteo.checked){
            sorteo=1;
        }else{
            sorteo=0;
        }

   let formaPag=1;//1 contado, 2 Credito
   if(creditc>0){
    formaPag=2;
   }



let medioPag=10;
//10: efectivo
//49: tarjetas
//47: trasferencia
if(efectivo>0){
    medioPag=10
}else if (tcredict>0) {
    medioPag=47
} else if (tdebitoo>0) {
    medioPag=49  
} else{
 medioPag=49  
}


      if(otrosBANCO>0 &&  (cuentaDestino=="" || cuentaDestino==0)){
          clicguardar = false;
        alert("NO ha selecionado una cuenta para este pago");
        return 0;
      }

        if(otrosBANCO=="" || otrosBANCO==0 || otrosBANCO==" "){
            otrosBANCO=0;
            cuentaDestino=0;
        }

     

    var totalpagado = $("#valentragdo").val();
    if(efectivo==0 && tcredict==0 && tdebitoo==0 &&creditc==0 && otrosBANCO==0){
        clicguardar = false;
        alert("Revisar valores Ingresados");
        return 0;
    }else{ //1

        if(vencimientoFactura==0 && creditc>0 && tipoAtencion !="Convenios"){
             clicguardar = false;
            alert("DEBE DE ASIGNAR LOS DIAS DE VENCIMIENTO DE LA FACTURA");
            return 0;
        }else{//2

          if( creditc>0 && totalpagado >0 ) {
             clicguardar = false;
            alert("EL VALOR INGRESADO  NO PUEDE SER SUPERIOR AL CREDITO");
            return 0;
          } else{//3
            if (totalpagado >= 0) {//4

                if(efectivo==0 && cambio > 0 ){
                    alert("El VALOR  DEBE DE SER IGUAL AL VALOR  A PAGAR");
                    clicguardar = false;
                    return 0;
                }

                
                if((tcredict>0 || tdebitoo>0 || creditc>0 || otrosBANCO > 0) && efectivo>0 && cambio > 0 ){
                    alert("El valor en EFECTIVO DEBE DE SER IGUAL AL VALOR RESTANTE");
               
                    return 0;
                }else{//5

                if (clicguardar == false) {

                if(tipoDeFactura=="Pos" || tipoDeFactura=="Domicilio" ){
                   

                    
                   
                     clicguardar = true;
                            generarfactura(creditc, efectivo, tcredict, tdebitoo, cambio,
                                 detallef, descuento, tipoDeFactura,"0",sorteo,formaPag,medioPag,propina,otrosBANCO,cuentaDestino);
                        

                }else{//6

                    
                    
                    if((ActivarFacturaElectronica==1 || vencimientoElectronico>0) || (vencimientoPosElectronico>0 || ActivarPosElectronico==1 )){  


                        if(ActivarFacturaElectronica==0 && tipoDeFactura=="Electronica" ){

                            alert("No esta Hbilitado para Generar Factura Electronica");
                        return 0;
                        }


                        if(ActivarPosElectronico==0 && tipoDeFactura=="Pos_Elec" ){

                            alert("No esta Hbilitado para Generar Pos Electronica");
                          return 0;
                        }




                        if(vencimientoElectronico>0){
                            alert("Su resolucion de facturacion esta Vencidad");
                            return 0;
                       
                        }else{
                            
                            // let vencimientoFactura=document.getElementById("vencimientoFactura").value;
                            let nombreClienteElectro = $("#Nombre_elect").val();
                            let apellidoClienteElectro = $("#Apellido_elect").val();
                            let naturaleza = $("#Naturaleza_elect").val();
                            let regimen = $("#Regimen_elect").val();
                            let responsabilidad_elec = $("#responsabilidad_elec").val();
                            let tipoIdentificacion = $("#tipoIdentificacion_elect").val();
                            let correo = $("#Correoc").val();
                            let telecliente = document.querySelector("#telCli").value;
                            let ciudad = document.querySelector("#ciudad_elec").value;
                            let cliente = $("#nit").val();
                            if (cliente.includes('-') || cliente == "1" || cliente == "22222222") {
                                alert("el nit no puede contener '-'  O el cliente debe ser diferente  ");
                                return 0;                   
                            } else {
                    
                            //  if(vencimientoFactura.trim()=="" && formaPag=="2"){
                    
                            //     alert("DEBE DE ASIGNAR LOS DIAS DE VENCIMIENTO DE LA FACTURA");
                           
                    
                            //  }else{
                                if (correo.includes('@') && nombreClienteElectro != ""  && naturaleza != "" && regimen != "" && regimen != "no" &&
                                    responsabilidad_elec != "" && ciudad != "") {
                    

                                        
                                        let array = [];
                                        let rowsBody = $("#table").find('tbody > tr');
                                        let rowsHead = $("#table").find('thead > tr > th');

                                      


                                        if (rowsBody.length > 0) {
                                            
                                            for (var i = 0; i < rowsBody.length; i++) {
                                                var obj = {};
                                                for (var j = 0; j < rowsHead.length; j++){

                                                    obj[rowsHead[j].innerText] = rowsBody[i].getElementsByTagName('th')[j].innerText;
                                                }
                                                array.push(obj);
                                                //Añadimos al Array Principal
                                            }
                                        }


                                        // console.log(array)
                                        array.forEach(function(valor) {
                                            let caja = valor.Cantida_caja;
                                            let frcc = valor.Cantida_frcc;

                                            if (caja > 0 && frcc > 0) {
                                                validadro = false;
                                            }

                                        


                                        })
                                    
                                    if (validadro==false) {
                                        alert("Revise la factura, No se puede Generar factura Electronica con productos que tenga cantidad caja y fraccion AL tiempo");
                                      
                                        return 0;
                    
                                    }else {
                              
                                        clicguardar = true;
                                         generarfactura(creditc, efectivo, tcredict, tdebitoo, cambio, detallef, descuento, tipoDeFactura,"0",sorteo,formaPag,medioPag,propina,otrosBANCO,cuentaDestino);
                                         
                                    }
                                    // 
                                } else {
                                      alert("debe de actulizar los datos del cliente Para Generar la factura Electronica");
                                      return 0;
                                }
                            
                    
                            }
                    
                        }
                        // } else {
                        //     console.log("No se ha terminado de procesar la factura anterior");
                    
                        // }
                    
                    }else{
                    
                        alert("No esta Hbilitado para Generar Factura Electronica");
                        return 0;
                    }

                    

                }//6

                
                }
            }//5


            } else {//4
                alert("El valor debe ser superior o igual al valor a pagar", totalpagado);
                return 0;
            }
        }//3
    }//2



    }//1



    //}
})

// $("#guarfactu").click(async function () {

//     if (clicguardar == true || clicguardar == "true") {
//         $('#titupagos').html("<h4 style='color: red'>la Factura esta en Proceso. por favor espera un momento</h4>");
//         return 0;
//     }

//     let tipoDeFactura = $("#tipoFactu").val();
//     let validadro = true;

//     let idSorteo = document.getElementById("idSorteo");
//     let sorteo = "";

//     // 🔹 Calcula totales (incluye dinámicos)
//     sumarformapago();

//     let vencimientoFactura = document.getElementById("vencimientoFactura").value;
//     let totall = parseInt($("#totalfact").val()) || 0;
//     let tipoAtencion = $("#tipoAtencion").val();

//     // 🔹 Pagos fijos
//     let efectivo = $("#efectivo").val();
//     let tcredict = $("#Tcredicto").val();
//     let tdebitoo = $("#Tdebito").val();
//     let creditc = $("#creditoc").val();

//     let cambio = $("#valentragdo").val();
//     let detallef = $("#comentarios").val();
//     let descuento = $("#descuentovalor").val();
//     let propina = $("#propina").val();

//     let descuentoCentaIvas = document.getElementById("TotalDescu").value;

//     // 🔹 PAGOS DINÁMICOS (ANEXADO)
//     let totalDinamico = 0;
//     let pagosDinamicos = [];

//     document.querySelectorAll('.cuenta-input').forEach(input => {
//         let valor = parseFloat(input.value) || 0;
//         if (valor > 0) {
//             totalDinamico += valor;
//             pagosDinamicos.push({
//                 codeC: input.dataset.id,
//                 valor: valor
//             });
//         }
//     });

//     if (vencimientoFactura.trim() == "" || vencimientoFactura.trim() == " ") {
//         vencimientoFactura = 0;
//     }

//     sorteo = idSorteo.checked ? 1 : 0;

//     // //10: efectivo
// // //49: tarjetas
// // //47: trasferencia

//     // 🔹 Forma de pago
//     let formaPag = 1; // 1 contado, 2 crédito
//     if (creditc > 0) {
//         formaPag = 2;
//     }

//     // 🔹 Medio de pago
//     let medioPag = 10; // efectivo
//     if (efectivo > 0) {
//         medioPag = 10;
//     } else if (tcredict > 0) {
//         medioPag = 47;
//     } else if (tdebitoo > 0) {
//         medioPag = 49;
//     }

//     // 🔹 Si hay pagos dinámicos, marcar mixto
//     if (totalDinamico > 0) {
//         medioPag = 49; // mixto / otros
//     }

//     // 🔹 TOTAL PAGADO REAL (fijos + dinámicos)
//     let totalPagadoReal =
//         (parseFloat(efectivo) || 0) +
//         (parseFloat(tcredict) || 0) +
//         (parseFloat(tdebitoo) || 0) +
//         (parseFloat(creditc) || 0) +
//         totalDinamico;

//     // 🔴 VALIDACIÓN PRINCIPAL (corregida)
//     if (totalPagadoReal <= 0) {
//         clicguardar = false;
//         alert("Revisar valores Ingresados");
//         return 0;
//     } else {

//         if (vencimientoFactura == 0 && creditc > 0 && tipoAtencion != "Convenios") {
//             clicguardar = false;
//             alert("DEBE DE ASIGNAR LOS DIAS DE VENCIMIENTO DE LA FACTURA");
//             return 0;
//         } else {

//             if (creditc > 0 && cambio > 0) {
//                 clicguardar = false;
//                 alert("EL VALOR INGRESADO NO PUEDE SER SUPERIOR AL CREDITO");
//                 return 0;
//             } else {

//                 if (cambio >= 0) {

//                     if (efectivo == 0 && cambio > 0) {
//                         alert("El VALOR DEBE DE SER IGUAL AL VALOR A PAGAR");
//                         clicguardar = false;
//                         return 0;
//                     }

//                     if ((tcredict > 0 || tdebitoo > 0 || creditc > 0 || totalDinamico > 0) && efectivo > 0 && cambio > 0) {
//                         alert("El valor en EFECTIVO DEBE DE SER IGUAL AL VALOR RESTANTE");
//                         return 0;
//                     } else {

//                         if (clicguardar == false) {

//                             if (tipoDeFactura == "Pos" || tipoDeFactura == "Domicilio") {

//                                 clicguardar = true;
//                                 generarfactura(
//                                     creditc,
//                                     efectivo,
//                                     tcredict,
//                                     tdebitoo,
//                                     cambio,
//                                     detallef,
//                                     descuento,
//                                     tipoDeFactura,
//                                     "0",
//                                     sorteo,
//                                     formaPag,
//                                     medioPag,
//                                     propina,
//                                     pagosDinamicos,
//                                     totalDinamico
//                                 );

//                             } else {

//                                 if (
//                                     (ActivarFacturaElectronica == 1 || vencimientoElectronico > 0) ||
//                                     (vencimientoPosElectronico > 0 || ActivarPosElectronico == 1)
//                                 ) {

//                                     if (ActivarFacturaElectronica == 0 && tipoDeFactura == "Electronica") {
//                                         alert("No esta Hbilitado para Generar Factura Electronica");
//                                         return 0;
//                                     }

//                                     if (ActivarPosElectronico == 0 && tipoDeFactura == "Pos_Elec") {
//                                         alert("No esta Hbilitado para Generar Pos Electronica");
//                                         return 0;
//                                     }

//                                     if (vencimientoElectronico > 0) {
//                                         alert("Su resolucion de facturacion esta Vencida");
//                                         return 0;
//                                     } else {

//                                         // ⚠️ aquí sigue TODA tu lógica electrónica intacta
//                                         clicguardar = true;
//                                         generarfactura(
//                                             creditc,
//                                             efectivo,
//                                             tcredict,
//                                             tdebitoo,
//                                             cambio,
//                                             detallef,
//                                             descuento,
//                                             tipoDeFactura,
//                                             "0",
//                                             sorteo,
//                                             formaPag,
//                                             medioPag,
//                                             propina,
//                                             pagosDinamicos,
//                                             totalDinamico
//                                         );
//                                     }

//                                 } else {
//                                     alert("No esta Hbilitado para Generar Factura Electronica");
//                                     return 0;
//                                 }
//                             }
//                         }
//                     }

//                 } else {
//                     alert("El valor debe ser superior o igual al valor a pagar");
//                     return 0;
//                 }
//             }
//         }
//     }
// });






//funcion generar factura de venta
//tipopago es venta credicto OJOOOOOOOOOOOOOOOOOOOOO
function generarfactura(tipopago, efectivo, tarcredicto, targedebito, cambio, detallef, descuento,
     tipoDeFactura, cufe = "0",sorteo="0",formaPag,medioPag,propina=0,otrosBANCO=0,cuentaDestino=0) {
    let array = [];
    let rowsBody="";
    let rowsHead="";
    let bodega = document.getElementById("idbodegas").value;
    let bodegaVenta = document.getElementById("idbodegaVenta").value;
    
    // console.log(totalDinamico)
    // return 1;

    if(multibodega==0 && bodega !=bodegaVenta  ){
        alert("No esta Habilitado para Facturar por la bodega "  +  bodegaVenta);        
        clicguardar = false;
       
        throw new Error('Ocurrió un error');
        return 0;
    }
    let numerocotizacion= document.getElementById("mesas").value;



    
                   if(numerocotizacion=="m0"){
                         numerocotizacion=usuarioA;
                   }
    
    if(clicguardar==true || clicguardar=="true"){

                    
      if (bodega == "" || bodega == 0) {

        alert("No ha selecionado una Bodega");
        clicguardar = false;
        return 0;
     } else {
        
        /* Obtenemos todos los tr del Body*/
         rowsBody = $("#table").find('tbody > tr');
        /* Obtenemos todos los th del Thead */
         rowsHead = $("#table").find('thead > tr > th');
    
        /* Iteramos sobre as filas del tbody*/
       
        
        if (rowsBody.length > 0) {
            
          
            for (let i = 0; i < rowsBody.length; i++) {
                let obj = {}; /* auxiliar*/
                for (let j = 0; j < rowsHead.length; j++){ /*  Iteramos sobre los th de THead*/
                /*Asignamos como clave el text del th del thead*/
                /*Asignamos como Valor el text del tr del tbody*/
                    obj[rowsHead[j].innerText] = rowsBody[i].getElementsByTagName('th')[j].innerText;
                
                }
            
            array.push(obj); /* Añadimos al Array Principal*/
            
            }
            
       

            let vencimientoFactura=document.getElementById("vencimientoFactura").value;
            
            let factura = JSON.stringify(array);
            var cliente = $("#nit").val();
            var vendedor = $("#vendedorr").val();
             let total = $("#totalfact").val();

             let sucursalClien= $("#sucursalClienteF").val();
             if(sucursalClien=="" || sucursalClien==" "){
                sucursalClien=0;
             }

            // if (tipoDeFactura == "Electronica") {
            //     var total = $("#totalfact").val();

            // } else {
            //     var total = $("#tfactur").val();
            // }
            if(vencimientoFactura==""|| vencimientoFactura==" "){
                vencimientoFactura=0;
            }

            var nombreclien = $("#nombre").val();
            var direcion = $("#diree").val();
            var nombreve = $("#nvende").val();

            let participante = document.querySelector("#idParticipantes").value;


            //gerimen comun
            var base5 = $("#base5").val();
            var base19 = $("#base19").val();
            var excento = $("#baseexento").val();
            var iva5 = $("#totaliva5").val();
            var iva19 = $("#totaliva19").val();
            var excluido = $("#dbaseexcluido").val();
            var ivaotro=$("#ivaotro").val();
            var baseotro=$("#baseotro").val();
           var ivaipc= $("#ivaipc").val();
           var baseipc= $("#baseipc").val();
           let tipoAtencion=$("#tipoAtencion").val();
            
            let correo = $("#Correoc").val();
            let telecliente = document.querySelector("#telCli").value;

            let fechaFactElectroVencime=$("#fechaV").val();
            // let formaPago=$("#mpago").val();

            let formaPago= formaPag;
            let medioPago=medioPag;
            // let medioPago=$("#mediopago").val();

           

            if(participante.trim()=="" || participante.trim()==" "){
                participante=1; 
            }

            if(propina=="" || propina==" "){
                propina=0;
            }

            
        
            $.ajax({
                data: {
                    "efectivo": efectivo,
                    "tcred": tarcredicto,
                    "tdebi": targedebito,
                    "fpago": tipopago,
                    "exento": excento,
                    "iva19": iva19,
                    "iva5": iva5,
                    "base19": base19,
                    "base5": base5,
                    "cliente": cliente,
                    "vendedor": vendedor,
                    "total": total,
                    "factura": factura,
                    "excluido": excluido,
                    "devuleta": cambio,
                    "detallef": detallef,
                    "descuento": descuento,
                    "tipoFactura": tipoDeFactura,
                    "bodega": bodega,
                    "cufe": cufe,
                    "usuarioA":usuarioA,
                    "numerocotizacion":numerocotizacion,
                    "otroiva":ivaotro,
                    "baseotro":baseotro,
                    "ivaipc":ivaipc,
                    "baseipc":baseipc,
                    "sorteo":sorteo,
                    "vencimientoFactura":vencimientoFactura,
                    "fechaFactElectroVencime":fechaFactElectroVencime,
                    "formaPago":formaPago,
                    "medioPago":medioPago,
                    "participante":participante,
                    "tipoAtencion":tipoAtencion,
                    "propina":propina,
                    "bodegaVenta":bodegaVenta,
                    "sucursalClien":sucursalClien,
                    "otrosBANCO":otrosBANCO,
                    "cuentaDestino":cuentaDestino
                    

                    
                }, //datos que se envian a traves de ajax
                url:"../controlador/config/facturacion.php", //archivo que recibe la peticion
                type: 'post', //método de envio



                beforeSend: function() {
                    $('#titupagos').html("<h4 style='color: red'>Procesando, Espere por favor</h4>");
                    

                },
                

                success: function(response) { //una vez que el archivo recibe el request lo procesa y lo devuelve
                    // var respuest=JSON.parse(response); 
                    
                   
               
                    // guardar respuesta 
                    
                    // fetch(`../controlador/config/fechas.php?resp=${JSON.stringify(response)}`);

                    // 0= regimen simple
                    //1 regimen comun

                    console.log(response);

                        try {
                            var respuestaA = JSON.parse(response);
                        
                        } catch (e) {
                            
                            let resput=JSON.stringify(response);
                             fetch(`../controlador/config/fechas.php?resp=${resput}`);
                            clicguardar = false;
                            console.log(response);
                            // alert("Error de conexion trate de facturar nuevamente, O Ingrese Nuevemente al Sistema");
                            // array = [];
                            // window.location.reload();

                            return 0;
                      
                        }

                

                    if (respuestaA["respueta"] == 1) {

                        // si de calll
                        if(multibodega==3){

                            alert("Factura Generada Con Exito");
                            array = [];
                             window.location.reload();
                            // $("#factura").click();

                        }else{

                        var numfactur = respuestaA["factura"];
                        var fecha = respuestaA["fech"];

                        let Rifa=respuestaA["Rifa"];
                        let puntos=respuestaA["puntos"];
                        
                        cufe=respuestaA["cufe"];
                       

                        if(puntos==0 || puntos=="" || puntos==" "){
                            $puntoMens="";
                        }else{
                            $puntoMens="   Puntos: "+puntos;
                        }
                        //organizar german electronica y adjuntar a los formatos
                        // let tipoimprision = 0;
                        //0 para pos
                        //1 distribuidora
                        if (tipoDeFactura == "Pos" || tipoDeFactura == "Domicilio") {
                            var valorcufe = 0;
                        } else {

                            var valorcufe = 1;
                            // clicguardar = false;
                            // alert(respuesta["respueta"] + respuesta["produc"]);

                        }

                        if (tipoDeFactura=="Electronica" || tipoDeFactura=="Pos_Elec" ) {
                          //  alert("Factura electronica Generada, pendiente Aprobacion Dian");
                            $('#modalcarga').modal('hide');
                        } 


                        if (regimen == 1 || regimen==3) {
                            //METODO POST IMPRESION
                            // OPCION FACTURACION PUNTO DE VENTAS

                            if (tipoimprision == 0) {
                                $.ajax({
                                    data: {
                                        'factura': factura,
                                        'numf': numfactur,
                                        'total': total,
                                        'idc': cliente,
                                        'nombrec': nombreclien,
                                        'direc': direcion,
                                        'nombrev': nombreve,
                                        'fecha': fecha,
                                        'base5': base5,
                                        'base19': base19,
                                        'iva5': iva5,
                                        'iva19': iva19,
                                        'excento': excento,
                                        'excluido': excluido,
                                        "devuleta": cambio,
                                        "telcli": telecliente,
                                        "detallef": detallef +" "+Rifa +$puntoMens,
                                        "descuento": descuento,
                                        "tipofactura": tipoDeFactura,
                                        "bodega": bodegaVenta,
                                        "valorcufe": valorcufe,
                                        "cufe": cufe,
                                        "otroiva":ivaotro,
                                        "baseotro":baseotro,
                                        "ivaipc":ivaipc,
                                        "baseipc":baseipc,
                                        "credit": tipopago,
                                        "vencimientoFactura":vencimientoFactura,
                                        "efectivo": efectivo,
                                        "tcred": tarcredicto,
                                        "tdebi": targedebito,
                                        "puntos":puntos,
                                        "propina":propina,
                                        "tipoAtencion":tipoAtencion
                   
                                    },
                                    url: "facturacion/impresion.php",
                                    type: "post",


                                    success: function(response) {

                                        let ventana = window.open("facturacion/impresiongeneral.php");
                                        ventana.document.write(response);
                                        $("#factura").click();
                                    }
                                });

                            } else {



                                // OPCION FACTURACION DISTRIBUIDPORA

                                $.ajax({
                                    data: {
                                        'factura': factura,
                                        'numf': numfactur,
                                        'total': total,
                                        'idc': cliente,
                                        'nombrec': nombreclien,
                                        'direc': direcion,
                                        'nombrev': nombreve,
                                        'fecha': fecha,
                                        'base5': base5,
                                        'base19': base19,
                                        'iva5': iva5,
                                        'iva19': iva19,
                                        'excento': excento,
                                        'excluido': excluido,
                                        "devuleta": cambio,
                                        "correo": correo,
                                        "detallef": detallef+" "+Rifa+$puntoMens,
                                        "cufe": cufe,
                                        "regimen": regimen,
                                        "valorcufe": valorcufe,
                                        "tipofactura": tipoDeFactura,
                                        "descuento": descuento,
                                        "bodega": bodegaVenta,
                                        "telcli": telecliente,
                                        "otroiva":ivaotro,
                                        "baseotro":baseotro,
                                        "ivaipc":ivaipc,
                                        "baseipc":baseipc,
                                        "credit": tipopago,
                                        "vencimientoFactura":vencimientoFactura,
                                        "efectivo": efectivo,
                                        "tcred": tarcredicto,
                                        "tdebi": targedebito,
                                        "puntos":puntos,
                                        "propina":propina,
                                        "tipoAtencion":tipoAtencion
                                    },
                                    url: "facturacion/impresion_venta_alterno.php",
                                    type: "post",

                                    success: function(response) {

                                        let ventana = window.open("facturacion/impresiongeneral.php");
                                        ventana.document.write(response);
                                        $("#factura").click();
                                    }
                                });

                            }
                        } else {
                            //metodo post IMPRESION
                            //IMPRESION FORMATO PUNTO DE VENTA
                            if (tipoimprision == 0) {
                                $.ajax({
                                    data: {
                                        "factura": factura,
                                        'numf': numfactur,
                                        'total': total,
                                        'idc': cliente,
                                        'nombrec': nombreclien,
                                        'direc': direcion,
                                        'nombrev': nombreve,
                                        'fecha': fecha,
                                        "devuleta": cambio,
                                        "telcli": telecliente,
                                        "detallef": detallef+" "+Rifa +$puntoMens,
                                        "descuento": descuento,
                                        "tipofactura": tipoDeFactura,
                                        "bodega": bodegaVenta,
                                        "valorcufe": valorcufe,
                                        "cufe": cufe,
                                        "credit": tipopago,
                                        "vencimientoFactura":vencimientoFactura,
                                        "efectivo": efectivo,
                                        "tcred": tarcredicto,
                                        "tdebi": targedebito,
                                        "puntos":puntos,
                                        "propina":propina,
                                        "tipoAtencion":tipoAtencion
                                       
                                    },
                                    url: "facturacion/impresions.php",
                                    type: "post",


                                    success: function(response) {

                                        let ventana = window.open("facturacion/impresiongeneral.php");
                                        ventana.document.write(response);
                                        $("#factura").click();
                                    }


                                });

                            } else {
                                //opcion ditribuidora regimen simplificado

                                $.ajax({
                                    data: {
                                        'factura': factura,
                                        'numf': numfactur,
                                        'total': total,
                                        'idc': cliente,
                                        'nombrec': nombreclien,
                                        'direc': direcion,
                                        'nombrev': nombreve,
                                        'fecha': fecha,
                                        'base5': base5,
                                        'base19': base19,
                                        'iva5': iva5,
                                        'iva19': iva19,
                                        'excento': excento,
                                        'excluido': excluido,
                                        "devuleta": cambio,
                                        "correo": correo,
                                        "detallef": detallef+" "+Rifa+ $puntoMens,
                                        "descuento": descuento,
                                        "tipofactura": tipoDeFactura,
                                        "valorcufe": valorcufe,
                                        "cufe": cufe,
                                        "regimen": regimen,
                                        "bodega": bodegaVenta,
                                        "telcli": telecliente,
                                        "otroiva":ivaotro,
                                        "baseotro":baseotro,
                                        "ivaipc":ivaipc,
                                        "baseipc":baseipc,
                                        "credit": tipopago,
                                        "vencimientoFactura":vencimientoFactura,
                                        "efectivo": efectivo,
                                        "tcred": tarcredicto,
                                        "tdebi": targedebito,
                                        "puntos":puntos,
                                        "propina":propina,
                                        "tipoAtencion":tipoAtencion
                                    },
                                    url: "facturacion/impresion_venta_alterno.php",
                                    type: "post",


                                    success: function(response) {

                                        let ventana = window.open("facturacion/impresiongeneral.php");
                                        ventana.document.write(response);
                                        $("#factura").click();
                                    }
                                });

                            }


                        }


                    } //fin si call   

                    } else {
                        clicguardar = false;
                        alert(respuestaA["respueta"] + respuestaA["produc"]);
                        array = [];
                        return 0;
                    }



                },
                error: function(xhr, status, error) {

                    // Manejar el error cuando el servidor no responde o hay problemas
                    console.error("Error en la solicitud cliente fronted  :", status, error);
                    alert("El servidor no responde. Por favor,  verifica la facturacion  REIMPRIMA LA FACTURA.");
                   window.location.reload();


                       // Mostrar qué fue lo que realmente devolvió el servidor

                        // console.error("AJAX Error:", status, error);
                        // console.log("Respuesta del servidor (cruda):", xhr.responseText);

                        // // Registrar el error en tu script PHP de log
                        // fetch(`../controlador/config/fechas.php?resp=${encodeURIComponent(error)}`);

                        // alert("El servidor no responde o devolvió un formato inválido. Verifique la facturación.");
                        // array = [];
                        // window.location.reload();





                    
                },
                timeout: 30000 // 
           

         
            });

        
       
        } else {
            clicguardar = false;
            array = [];
            alert("no tiene ningun producto para facturar");
            return 0;

        }





    }

}

};




//buscar participantes  facturacion
var bntparti=document.querySelector("#idParticipantes");

if(bntparti){
    bntparti.addEventListener("keypress", function(e) {
    let datos = document.querySelector("#idParticipantes").value;
    if (datos.length >= 3 || e.which == 13) {
        console.log(datos)

        participantes(datos);
    }

});
}
participantes = (datos) => {

    let campoCliente = document.querySelector("#Participantes");
    let valores = [];
    fetch("../controlador/config/funcionesgenerales.php", {
        method: 'POST',
        body: JSON.stringify({
            "nombre": datos
        }),
        headers: {
            'Content-Type': 'application/json'
        }
    }).then(res => res.json())

    .
    then(response => {
        console.log(response);
        response.forEach(element => {

            let datosClientes = `
                <option value="${element.idPartici}">${element.nombreParti} ${element.apellidoPart}</option>  
                
                `;
            valores.push(datosClientes);


        });

        valores.join("");
        campoCliente.innerHTML = valores;


    });



}




// fin buscar clientes para ventana ventas detalladas por cliente