<script type="text/javascript">
  var table_editarproducto;
  $(document).ready(function() {

    var ventaimprimir = 0;
    var clientesCD = [];
    ProductosArr = [];
    DataExtras = {};
    <?php if ($this->venta) { ?>

      //clientesCD = JSON.parse(localStorage.getItem('cuentadividida'));
      /*
      if(localStorage.getItem('cuentadividida') == null){

         clientesCD = localStorage.setItem('cuentadividida', JSON.stringify());
      }*/
      //drawDataLS(<?= $this->venta ?>);

      VerificarVenta();
      drawDataProductoLS(null, null);
      $("#CategoriaproductoTodos").load("<?= $this->url ?>/ajax_TodosProductos");

    <?php } ?>
    var down = false;
    var scrollLeft = 0;
    var x = 0;

    $('#categoriasP').mousedown(function(e) {
      down = true;
      scrollLeft = this.scrollLeft;
      x = e.clientX;
    }).mouseup(function() {
      down = false;
    }).mousemove(function(e) {
      if (down) {
        this.scrollLeft = scrollLeft + x - e.clientX;
      }
    }).mouseleave(function() {
      down = false;
    });

    //$('#listaproducto').load("<?= $this->url ?>/listaproducto");
    $(".limpiar").addClear();
    $('.money').number(true, 2);

    $("#clientes").autocomplete({
      source: "<?= $this->url ?>/autocompletar",
      minLength: 2,
      select: function(event, ui) {
        $("#cliente").val(ui.item.cliente);
        save();
      }
    });




    $("#clientesrapido").autocomplete({
      source: "<?= $this->url ?>/autocompletarrapido",
      minLength: 2,
      select: function(event, ui) {
        $("#clienterapido").val(ui.item.clienterapido);
        saverapido();
      }
    });

    // $('#descu-entox').on('keyup', function() {
    //   var descuento = parseFloat($('#MontoPagar2 span').text()) * parseFloat($(this).val()) / 100;
    //   $('#descuento').val(descuento);
    //   //var change = parseFloat($('#totalVenta').text()) - parseFloat($(this).val());
    //   var change = parseFloat($('#totalVenta').text()) - descuento;
    //   if (change > 0) {
    //     $('#pago').val(change.toFixed(2));
    //     $('#pago').removeClass("red");
    //     $('#pago').addClass("light-blue");
    //   } else {
    //     $('#pago').val('0.00');
    //     $('#pago').addClass("red");
    //     $('#pago').removeClass("light-blue");
    //   }
    // });

    $('#descuento').on('keyup', function() {

      var change = parseFloat($('#totalVenta').text()) - parseFloat($(this).val());
      if (change > 0) {
        $('#pago').val(change.toFixed(2));
        $('#pago').removeClass("red");
        $('#pago').addClass("light-blue");
      } else {
        $('#pago').val('0.00');
        $('#pago').addClass("red");
        $('#pago').removeClass("light-blue");
      }


    });

    $('#pago').on('keyup', function() {
      //var change = parseFloat($(this).val()) - (parseFloat($('#totalVenta').text()) - parseFloat($('#descuento').val()));
      var change = parseFloat($(this).val()) - (parseFloat($('#MontoPagar2 span').text()) - parseFloat($('#descuento').val()));
      if (change > 0) {
        $('#ReturnChange span').text(change.toFixed(2));
        $('#ReturnChange span').removeClass("red");
        $('#ReturnChange span').addClass("light-blue");
      } else {
        $('#ReturnChange span').text('0.00');
        $('#ReturnChange span').addClass("red");
        $('#ReturnChange span').removeClass("light-blue");
      }
    });

    $("input").keyup(function() {
      if ($(this).val() != "") {
        $(this).parent().removeClass("has-error");
        $(this).next().text("");
      }
    });



    $("select").change(function() {
      if ($(this).val() != "") {
        $(this).parent().removeClass("has-error");
        $(this).next().text("");
      }
    });



    // $('#descu-entoxrapido').on('keyup', function() {
    //   var descuento = parseFloat($('#MontoPagar2rapido span').text()) * parseFloat($(this).val()) / 100;
    //   $('#descuentorapido').val(descuento);
    //   //var change = parseFloat($('#MontoPagar2rapido span').text()) - parseFloat($(this).val());
    //   var change = parseFloat($('#MontoPagar2rapido span').text()) - descuento;
    //   if (change > 0) {
    //     $('#pagorapido').val(change.toFixed(2));
    //     $('#pagorapido').removeClass("red");
    //     $('#pagorapido').addClass("light-blue");
    //   } else {
    //     $('#pagorapido').val('0.00');
    //     $('#pagorapido').addClass("red");
    //     $('#pagorapido').removeClass("light-blue");
    //   }
    // });

    $('#descuentorapido').on('keyup', function() {

      var change = parseFloat($('#MontoPagar2rapido span').text()) - parseFloat($(this).val());

      if (change > 0) {
        $('#pagorapido').val(change.toFixed(2));
        $('#pagorapido').removeClass("red");
        $('#pagorapido').addClass("light-blue");
      } else {
        $('#pagorapido').val('0.00');
        $('#pagorapido').addClass("red");
        $('#pagorapido').removeClass("light-blue");
      }


    });

    $('#pagorapido').on('keyup', function() {
      var change = parseFloat($(this).val()) - (parseFloat($('#MontoPagar2rapido span').text()) - parseFloat($('#descuentorapido').val()));
      if (change > 0) {
        $('#ReturnChangerapido span').text(change.toFixed(2));
        $('#ReturnChangerapido span').removeClass("red");
        $('#ReturnChangerapido span').addClass("light-blue");
      } else {
        $('#ReturnChangerapido span').text('0.00');
        $('#ReturnChangerapido span').addClass("red");
        $('#ReturnChangerapido span').removeClass("light-blue");
      }
    });



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

    $("#codigodebarra").autocomplete({
      source: "<?= $this->url ?>/autocompleteCodigoBarra",
      minLength: 2,
      select: function(event, ui) {
        if (ui.item.status) {
          $("#busquedacodigobarra").html(`<i class="fa fa-spin fa-spinner"></i>`);
          agregaarventa(ui.item.idproducto, ui.item.idcategoria, ui.item.precioproducto, 0)
        } else {
          $("#busquedacodigobarra").html(`<i class="fa fa-search"></i>`);
        }

      }
    });

    $("#codigodebarra").keypress(function() {

      let datacodigobarra = $("#codigodebarra").val();

      if (datacodigobarra.length > 10) {

        $("#busquedacodigobarra").html(`<i class="fa fa-spin fa-spinner"></i>`);
        $.ajax({
          url: "<?= $this->url ?>/ajax_codigodebarra",
          type: "POST",
          data: {
            codigodebarra: datacodigobarra,
          },
          dataType: "JSON",
          success: function(data) {
            if (data.status) {
              agregaarventa(data.idproducto, data.idcategoria, data.precioproducto, 0);
            } else {

              $("#busquedacodigobarra").html(`<i class="fa fa-search"></i>`);
              $("#codigodebarra").val("");
              /*
              if(data.sinstock){
                $("#codigodebarra").val(`El CB: ${data.codeproducto}, esta sin stock`);
              }
              if(data.sininfo){
                $("#codigodebarra").val(`SIN RESULTADOS`);
              }
              */

            }
          },
          error: function(jqXHR, textStatus, errorThrown) {
            //toast.error("Algo inesperado ha sucedido");
            Lobibox.notify('error', {
              size: 'mini',
              position: 'top right',
              msg: 'Error al obtener datos de ajax.'
            });
          }
        });

      } else {
        $("#busquedacodigobarra").html(`<i class="fa fa-search"></i>`);
      }


    });




    //  search product
    $("#searchProd").focus(function() {

      $("#searchProd").keyup(function() {
        let valor = $("#searchProd").val();
        if (valor.length < 3) {
          $("#CategriaSeleccionar").show();
          $("#Categoriaproducto").hide();
          $("#CategoriaproductoTodos").hide();
        } else {
          $("#CategriaSeleccionar").hide();
          $("#Categoriaproducto").hide();
          $("#CategoriaproductoTodos").show();
          //! Busquedad
          var filter = $(this).val();
          // Loop through the list
          $("#CategoriaproductoTodos .title").each(function() {
            // If the list item does not contain the text phrase fade it out
            if ($(this).text().search(new RegExp(filter, "i")) < 0) {
              // Show the list item if the phrase matches
              $(this).closest('.grid-item').hide();
            } else {
              $(this).closest('.grid-item').show();
            }
          });
        }
      });
      //alert("Esta con foco")
      // Retrieve the input field text
      /*
      var filter = $(this).val();
      var verifi = true;
      if (filter != '') {
        $("#CategriaSeleccionar").hide();
        $("#Categoriaproducto").show();
        $("#Categoriaproducto").load("<?= $this->url ?>/load_todosproductos");
        verifi = false;

      } else if (filter.length == 0) {
        $("#CategriaSeleccionar").show();
        $("#Categoriaproducto").hide();
        verifi = false;
      }
      */
      /*
      // Loop through the list
      $("#productList2 #proname").each(function() {
        // If the list item does not contain the text phrase fade it out
        if ($(this).text().search(new RegExp(filter, "i")) < 0) {
          // Show the list item if the phrase matches
          $(this).parent().parent().parent().hide();
        } else {
          $(this).parent().parent().parent().show();
        }
      });*/

    });



    /*
    !Comentado del id productList
    //  **********************select categorie
    $(".categories").on("click", function() {
      // Retrieve the input field text
      var filter = $(this).attr('id');
      $(this).parent().children().removeClass('selectedGat');
      $(this).addClass('selectedGat');
      // Loop through the list
      if (filter != 0) {
        $("#productList2 #category").each(function() {
          // If the list item does not contain the text phrase fade it out
          if ($(this).val() != filter) {
            $(this).parent().parent().parent().hide();
          } else {
            $(this).parent().parent().parent().show();
          }
        });
      } else {
        $("#productList2 #category").each(function() {
          $(this).parent().parent().parent().show();
        });
      }

    });
    */

    $('#documento').attr('minLength', 8);
    $('#documento').attr('maxlength', 8);

    $('#documento3').attr('minLength', 8);
    $('#documento3').attr('maxlength', 8);

    $('#tipo3').change(function(e) {
      $("#documento3").val("");
      $("#nombre3").val("");
      $("#apellido3").val("");
      $("#direccion3").val("");
      $("#telefono3").val();
      if ($('#tipo3').val() == 'DNI') { //muestro el div1 y oculto los demas
        $('#documento3').attr('minLength', 8);
        $('#documento3').attr('maxlength', 8);
        $('#nombre3').siblings('label').text("Nombre");
        $('#apellido3').parent().show();
        $("#documento3").prop("placeholder", "BUSCAR POR RENIEC");
        $('#nacimiento3').parent().show();
      } else if ($('#tipo3').val() == 'RUC') { //muestro el div2 y oculto los demas
        $('#documento3').attr('minLength', 11);
        $('#documento3').attr('maxlength', 11);
        $('#nombre3').siblings('label').text("Razón social");
        $('#apellido3').parent().hide();
        $('#telefono3').parent().hide();
        $("#documento3").prop("placeholder", "BUSCAR POR SUNAT");
        $('#nacimiento3').parent().hide();
      }
    });

    $("#nombre").mayusculassintildes();
    $(".libre").mayusculassintildes();
    $("#apellido").mayusculassintildes();
    $("#direccion").mayusculassintildes();
    $('#documento').numeric();
    $("#documento").prop("placeholder", "BUSCAR POR RENIEC");
    $('#tipo').change(function(e) {
      $("#documento").val("");
      $("#nombre").val("");
      $("#apellido").val("");
      $("#direccion").val("");
      $("#telefono").val();
      if ($('#tipo').val() == 'DNI') { //muestro el div1 y oculto los demas
        $('#documento').attr('minLength', 8);
        $('#documento').attr('maxlength', 8);
        $('#nombre').siblings('label').text("Nombre");
        $('#apellido').parent().show();
        $("#documento").prop("placeholder", "BUSCAR POR RENIEC");
        $('#nacimiento').parent().show();
      } else if ($('#tipo').val() == 'RUC') { //muestro el div2 y oculto los demas
        $('#documento').attr('minLength', 11);
        $('#documento').attr('maxlength', 11);
        $('#nombre').siblings('label').text("Razón social");
        $('#apellido').parent().hide();
        //$('#telefono').parent().hide();
        $("#documento").prop("placeholder", "BUSCAR POR SUNAT");
        $('#nacimiento').parent().hide();
      }
    });

    $('#cachIH').submit(function(event) {

      event.preventDefault();

      $('#aperturar').button('loading');

      $.ajax({
        url: "<?= $this->url ?>/openregister",
        type: "POST",
        data: {
          empresaIH: $("#empresaIH").val(),
          saldoinicial: $("#saldoinicial").val(),
        },
        dataType: "JSON",
        success: function(data) {
          //$('#cachIH').serialize(),
          if (data.status) {
            location.reload();
          }

          //window.location.href = "<?= $this->url ?>/aperturar/" + $("#empresaIH").val();
        },
        error: function(jqXHR, textStatus, errorThrown) {
          $('#aperturar').button('reset');

          Lobibox.notify('error', {
            size: 'mini',
            position: 'top right',
            msg: 'Error al obtener datos de ajax.'
          });
        }
      });

    });


    $('#botoncito').on('click', function() {
      $(this).button('loading');
      let tipo = $("#tipo").val() == "DNI" ? "dni" : "ruc";
      $.ajax({
        method: 'GET',
        // url: `https://apiperu.dev/api/${tipo}/${$('#documento').val()}?api_token=bdfa8657e3b70aaacabe568201917549aa8ada6bdd6cf3e1707c4e7e26dae946`,
        url: `https://my.apidev.pro/api/${tipo}/${$('#documento').val()}?api_token=bdfa8657e3b70aaacabe568201917549aa8ada6bdd6cf3e1707c4e7e26dae946`,
        beforeSend: function() {
          $('[name="nombre"]').val("");
          $('[name="direccion"]').val("");
          $('[name="apellido"]').val("");
        },
        success: function(data) {
          $('#botoncito').button('reset');
          if (data.success === true) {
            if ($("#tipo").val() == "DNI") {
              $("#nombre").val(data.data.nombres);
              $("#apellido").val(data.data.apellido_paterno + " " + data.data.apellido_materno);
              $("#direccion").val(data.data.direccion_completa);
              $("#nacimiento").val(data.data.fecha_nacimiento);
            } else {
              $("#nombre").val(data.data.nombre_o_razon_social);
              $("#direccion").val(data.data.direccion_completa);
            }
          } else {
            let dataMSG = $("#tipo").val() == "DNI" ? "El DNI EXISTE" : "El RUC NO EXISTE";
            Lobibox.notify('warning', {
              size: 'mini',
              position: "top right",
              msg: dataMSG
            });
          }
        },
        error: function(data) {
          $('#botoncito').button('reset');
          Lobibox.notify('error', {
            size: 'mini',
            position: "top right",
            msg: 'Error al obtener datos de ajax.'
          });
        }
      });
    });

    $('#botoncito3').on('click', function() {
      $(this).button('loading');
      let tipo = $("#tipo3").val() == "DNI" ? "dni" : "ruc";
      $.ajax({
        method: 'GET',
        // url: `https://apiperu.dev/api/${tipo}/${$('#documento3').val()}?api_token=bdfa8657e3b70aaacabe568201917549aa8ada6bdd6cf3e1707c4e7e26dae946`,
        url: `https://my.apidev.pro/api/${tipo}/${$('#documento3').val()}?api_token=bdfa8657e3b70aaacabe568201917549aa8ada6bdd6cf3e1707c4e7e26dae946`,
        beforeSend: function() {
          $('[name="nombre3"]').val("");
          $('[name="apellido3"]').val("");
          $('[name="direccion3"]').val("");
        },
        success: function(data) {
          $('#botoncito3').button('reset');
          if (data.success === true) {
            if ($("#tipo3").val() == "DNI") {
              $("#nombre3").val(data.data.nombres);
              $("#apellido3").val(data.data.apellido_paterno + " " + data.data.apellido_materno);
              $("#direccion3").val(data.data.direccion_completa);
              $("#nacimiento3").val(data.data.fecha_nacimiento);
            } else {
              $("#nombre3").val(data.data.nombre_o_razon_social);
              $("#direccion3").val(data.data.direccion_completa);
            }
          } else {
            let dataMSG = $("#tipo3").val() == "DNI" ? "El DNI EXISTE" : "El RUC NO EXISTE";
            Lobibox.notify('warning', {
              size: 'mini',
              position: "top right",
              msg: dataMSG
            });
          }
        },
        error: function(data) {
          $('#botoncito3').button('reset');
          Lobibox.notify('error', {
            size: 'mini',
            position: "top right",
            msg: 'Error al obtener datos de ajax.'
          });
        }
      });
    });




    $('#botoncito2').on('click', function() {
      $(this).button('loading');
      $.ajax({
        method: 'post',
        url: "<?= $this->url ?>/consulta_reniec",
        data: {
          tipo: $('#tipo2').val(),
          documento: $('#documento2').val()
        },
        beforeSend: function() {
          $('[name="nombre2"]').val("");
          $('[name="apellido2"]').val("");
          $('[name="direccion2"]').val("");
        },
        success: function(data) {
          $('#botoncito2').button('reset');
          nombre = data.nombre;
          apellido = data.apellido;
          direccion = data.direccion;
          $('[name="nombre2"]').val(nombre);
          $('[name="apellido2"]').val(apellido);
          $('[name="direccion2"]').val(direccion);
        },
        error: function(data) {
          $('#botoncito2').button('reset');
          //toast.error("Algo inesperado ha sucedido");
          Lobibox.notify('error', {
            size: 'mini',
            position: 'top right',
            msg: 'Error al obtener datos de ajax.'
          });
        }
      });
    });



    // $('#botoncito').on('click', function() {
    //   $(this).button('loading');
    //   // if ($('#tipo').val() == 'DNI') {
    //   //   var url = "https://dni.optimizeperu.com/api/persons/" + $('#documento').val() + "?format=json";
    //   // } else {
    //   //   var url = "https://dni.optimizeperu.com/api/company/" + $('#documento').val() + "?format=json";
    //   // }
    //   $.ajax({
    //     method: 'GET',
    //     url: url,
    //     beforeSend: function() {
    //       $('[name="nombre"]').val("");
    //       $('[name="apellido"]').val("");
    //       $('[name="direccion"]').val("");
    //     },
    //     success: function(data) {
    //       $('#botoncito').button('reset');
    //       if ($('#tipo').val() == 'DNI') {
    //         nombre = data.name;
    //         if (data.first_name === undefined) {
    //           apellido = '';
    //         } else {
    //           apellido = data.first_name + " " + data.last_name;
    //         }
    //         direccion = "";
    //       } else {
    //         nombre = data.razon_social;
    //         apellido = "";
    //         direccion = data.domicilio_fiscal;
    //       }
    //       $('[name="nombre"]').val(nombre);
    //       $('[name="apellido"]').val(apellido);
    //       $('[name="direccion"]').val(direccion);
    //     },
    //     error: function(data) {
    //       $('#botoncito').button('reset');
    //       Lobibox.notify('error', {
    //         size: 'mini',
    //         position: 'top center',
    //         msg: 'Error al obtener datos de ajax.'
    //       });
    //     }
    //   });
    // });

    $('#formapago').change(function(e) {

      if ($('#formapago').val() == 'CONTADO') {
        $('#metodo').show();
        $('#pagado').show();
        $("#descontado").show();
        $("#vencimiento").hide();
        $('.ReturnChange').show();
      } else {
        $('#metodo').hide();
        $('#pagado').hide();
        $("#descontado").hide();
        $("#vencimiento").show();
        $('.ReturnChange').hide();
      }
    });
  });

  function OpenRegister(estado, tienda) {
    if (estado == 1) {
      $("#empresaIH").val(tienda);
      $('#CashinHand').modal('show');
    } else {
      window.location.href = "<?= $this->url ?>/aperturar/" + tienda;
    }
  };


  function saverapido() {
    $.ajax({
      url: "<?= $this->url ?>/ajax_update_rapido",
      type: "POST",
      data: $('#form_vender_rapido').serialize(),
      dataType: "JSON",
      success: function(data) {
        //if success close modal and reload ajax table
        if (data.status) {
          toast.success("El registro fue creado exitosamente");
          // Lobibox.notify('success', {
          //   size: 'mini',
          //   position: 'top center',
          //   msg: "El registro fue actualizado exitosamente."
          // });
        } else {
          for (var i = 0; i < data.inputerror.length; i++) {
            $('[name="' + data.inputerror[i] + '"]').parent().parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
            $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string
          }
        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.error("El registro no se pudo actualizar. Verifique la operación");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: "El registro no se pudo actualizar. Verifique la operación"
        // });
      }
    });
  }

  function saverapido() {
    // ajax adding data to database
    $.ajax({
      url: "<?= $this->url ?>/ajax_updaterapido",
      type: "POST",
      data: $('#form_vender_rapido').serialize(),
      dataType: "JSON",
      success: function(data) {
        //if success close modal and reload ajax table
        if (data.status) {

        } else {
          for (var i = 0; i < data.inputerror.length; i++) {
            $('[name="' + data.inputerror[i] + '"]').parent().parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
            $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string
          }
        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.error("El registro no se pudo actualizar. Verifique la operación");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: "El registro no se pudo actualizar. Verifique la operación"
        // });
      }
    });
  };

  function save() {
    // ajax adding data to database
    $.ajax({
      url: "<?= $this->url ?>/ajax_update",
      type: "POST",
      data: $('#form_principal').serialize(),
      dataType: "JSON",
      success: function(data) {
        //if success close modal and reload ajax table
        if (data.status) {
          toast.success("El registro fue creado exitosamente");
          // Lobibox.notify('success', {
          //   size: 'mini',
          //   position: 'top center',
          //   msg: "El registro fue actualizado exitosamente."
          // });
        } else {
          for (var i = 0; i < data.inputerror.length; i++) {
            $('[name="' + data.inputerror[i] + '"]').parent().parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
            $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string
          }
        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.error("El registro no se pudo actualizar. Verifique la operación");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: "El registro no se pudo actualizar. Verifique la operación"
        // });
      }
    });
  };

  function grabarcliente() {
    $('#cliente_form').modal('show');
  };

  function saveclienterapido() {
    $('#btnSaveclienteRapido').text('guardando...'); //change button text
    $('#btnSaveclienteRapido').attr('disabled', true); //set button disable
    // ajax adding data to database
    let idventa = $("#ventaapagar").val();
    $.ajax({
      url: '<?= $this->url ?>/ajax_addcliente3/' + idventa,
      type: "POST",
      data: $('#form_clienterapido').serialize(),
      dataType: "JSON",
      success: function(data) {
        //if success close modal and reload ajax table
        if (data.status) {
          $('#cliente_form_3').modal('hide');
          $('#form_clienterapido')[0].reset();
          $("#clienterapido").val(data.cliente);
          $("#clientesrapido").val(data.clientes);
          //toast.success("El registro fue creado exitosamente");
          Lobibox.notify('success', {
            size: 'mini',
            position: 'top right',
            msg: 'El registro fue creado exitosamente.'
          });
        } else {
          for (var i = 0; i < data.inputerror.length; i++) {
            $('[name="' + data.inputerror[i] + '"]').parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
            $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string
          }
        }
        $('#btnSaveclienteRapido').text('GRABAR'); //change button text
        $('#btnSaveclienteRapido').attr('disabled', false); //set button enable
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.error("Algo inesperado ha sucedido");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: 'El registro no se pudo crear verifique las validaciones.'
        // });
        $('#btnSaveclienteRapido').text('GRABAR'); //change button text
        $('#btnSaveclienteRapido').attr('disabled', false); //set button enable
      }
    });
  };

  function savecliente() {
    $('#btnSavecliente').text('guardando...'); //change button text
    $('#btnSavecliente').attr('disabled', true); //set button disable
    // ajax adding data to database
    $.ajax({
      url: '<?= $this->url ?>/ajax_addcliente',
      type: "POST",
      data: $('#form_cliente').serialize(),
      dataType: "JSON",
      success: function(data) {
        //if success close modal and reload ajax table
        if (data.status) {
          $('#cliente_form').modal('hide');
          $('#form_cliente')[0].reset();
          $("#cliente").val(data.cliente);
          $("#clientes").val(data.clientes);
          //toast.success("El registro fue creado exitosamente");
          Lobibox.notify('success', {
            size: 'mini',
            position: 'top right',
            msg: 'El registro fue creado exitosamente.'
          });
          // cambiarventa(); //! ELiminar
        } else {
          for (var i = 0; i < data.inputerror.length; i++) {
            $('[name="' + data.inputerror[i] + '"]').parent().parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
            $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string
          }
        }
        $('#btnSavecliente').text('GRABAR'); //change button text
        $('#btnSavecliente').attr('disabled', false); //set button enable
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.error("Algo inesperado ha sucedido");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: 'El registro no se pudo crear verifique las validaciones.'
        // });
        $('#btnSavecliente').text('GRABAR'); //change button text
        $('#btnSavecliente').attr('disabled', false); //set button enable
      }
    });
  };


  function savecliente2(identificador, idventa) {
    $('#btnSavecliente2').text('guardando...'); //change button text
    $('#btnSavecliente2').attr('disabled', true); //set button disable
    // ajax adding data to database
    $.ajax({
      url: '<?= $this->url ?>/ajax_addcliente2',
      type: "POST",
      data: $('#form_cliente2').serialize(),
      dataType: "JSON",
      success: function(data) {
        //if success close modal and reload ajax table
        if (data.status) {
          $('#cliente_form2').modal('hide');
          $('#form_cliente2')[0].reset();
          $(`#cliente${identificador}`).val(data.cliente);
          $(`#clientes${identificador}`).val(data.clientes);
          //TODO: Insertando al localStorage
          let clientesCD = JSON.parse(localStorage.getItem(`cuentadividida_${idventa}`));
          let dataselect = document.querySelector(`#tipoventa${identificador}`);
          clientesCD.forEach(function(value, index) {
            if (value.indice == identificador) {
              value.cliente = data.cliente;
              value.textocliente = data.clientes
            }
          });
          localStorage.setItem(`cuentadividida_${idventa}`, JSON.stringify(clientesCD));
          //TODO: ------END-----
          //toast.success("El registro fue creado exitosamente");
          Lobibox.notify('success', {
            size: 'mini',
            position: 'top right',
            msg: 'El registro fue creado exitosamente.'
          });
          // cambiarventa(); //! ELiminar
        } else {
          for (var i = 0; i < data.inputerror.length; i++) {
            $('[name="' + data.inputerror[i] + '"]').parent().parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
            $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string
          }
        }
        $('#btnSavecliente2').text('GRABAR'); //change button text
        $('#btnSavecliente2').attr('disabled', false); //set button enable
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.error("Algo inesperado ha sucedido");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: 'El registro no se pudo crear verifique las validaciones.'
        // });
        $('#btnSavecliente2').text('GRABAR'); //change button text
        $('#btnSavecliente2').attr('disabled', false); //set button enable
      }
    });
  };

  function GenerarPedido(tipoimpresora) {

    $('#generarpedido').button('loading');

    /*if (tipoimpresora === 0) {
      $.ajax({
        url: '<?= $this->url ?>/imprimircomanda',
        type: 'POST',
      });
    }*/
    /*if (tipoimpresora === 1) {
      var Url = '<?= $this->url ?>/showcomanda';
      window.open(Url, 'Pruebas', 'fullscreen=yes, scrollbars=auto');
    }*/
    // setTimeout('comandar()', 3000);

    comandar();

  }

  function comandar() {
    $.ajax({
      url: "<?= $this->url ?>/GenerarPedido",
      type: "POST",
      success: function(data) {
        cambiarventa();
        //$('#listaproducto').load("<?= $this->url ?>/listaproducto");
        $('#generarpedido').button('reset');
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.error("Algo inesperado ha sucedido");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: 'Error al obtener datos de ajax.'
        // });
        $('#generarpedido').button('reset');
      }
    });
  };

  function delete_posale(id) {
    // ajax delete data to database
    $.ajax({
      url: "<?= $this->url ?>/delete/" + id,
      type: "POST",
      dataType: "JSON",
      success: function(data) {
        cambiarventa();
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.error("Algo inesperado ha sucedido");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: 'Error al obtener datos de ajax.'
        // });
      }
    });
  };
  //TODO: SelectHold() es la fucntion que trae los datos tanto como del PEDIDO Y VENTA 
  function SelectHold(number) { //
    // ajax delete data to database
    $.ajax({
      url: "<?= $this->url ?>/SelectHold/" + number,
      type: "POST",
      dataType: "JSON",
      success: function(data) {
        cambiarventa();
        //$('#listaproducto').load("<?= $this->url ?>/listaproducto");
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.error("Algo inesperado ha sucedido");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: 'Error al obtener datos de ajax.'
        // });
      }
    });
  };
  /********************************** end Hold functions ************************************/
  /*
  function add_posale(id, variante) {
    // ajax delete data to database
    // $(".loader").show();
    $("#productoVariante").val(id);
    $("#productomodificador").val("");
    $("#precioVariante").val("");
    if (variante != 0) {
      $("#listaVariante").remove("li");
      $("#listaVariante").load("<?= $this->url ?>/listVariante/" + id);
      $("#listaModificador").remove("li");
      $("#listaModificador").load("<?= $this->url ?>/listModificador/" + id);
      $("#addVariante").modal('show');
    } else {
      $.ajax({
        url: "<?= $this->url ?>/addpdc/" + id,
        type: "POST",
        success: function(data) {
          if (data === 'stock') {
            swal("Bajo inventario");
          } else {
            cambiarventa();
          }
        },
        error: function(jqXHR, textStatus, errorThrown) {
          toast.error("Algo inesperado ha sucedido");
          // Lobibox.notify('error', {
          //   size: 'mini',
          //   position: 'top center',
          //   msg: 'Error al obtener datos de ajax.'
          // });
        }
      });
    }
  };
  */
  //TODO -----------------------------------------------------------------------------------------------------------
  //!                  RECORDAR EN LOCALSTORAGE SE GUARDA LA SIGUIENTE IFORMACION EN EL SIGUIENTE ORDEN           -
  //!                   [IDRODUCTO, CANDTIDA DEL PRODUCTO A LLEVADR, OBSERVACION DEL PRODUCTO/OPCION ]            -
  //TODO -----------------------------------------------------------------------------------------------------------
  function addoptions(key_primary) {
    //cambiosxxx
    let idventa = $("#ventaseleccionada").val();
    let identificador;
    for (index in ProductosArr) {
      // console.log(ProductosArr);
      if (ProductosArr[index].key_primary == key_primary) {
        identificador = index;
        break;
      } else {
        continue;
      }
    }
    // console.log(ProductosArr[identificador].id_producto);
    $('#form_options')[0].reset(); // reset form on modals

    $(`[name="indiceactualizar"]`).val(identificador);
    $(`[name="VentaModalOpcion"]`).val(idventa);
    $('[name="opcion"]').val(ProductosArr[identificador].opcion);

    var opt = ProductosArr[identificador].opciones;
    opt = opt.trim();
    opt = opt.replace(/^,|,$/g, '');
    opt = opt.replace(/ /g, '%20');
    opt = opt.replace(/,/g, '_');
    // console.log('opciones:' + opt);
    $('#checkboxes').load('<?= $this->url ?>/cargarcheckboxes/' + ProductosArr[identificador].id_producto + '/' + (opt.length < 1 ? 'VACIO' : opt), function() {});
    $('#options').modal('show');
    $('.modal-title').html('<i class="fas fa-sliders-h"></i> AGREGAR OPCION');
  };

  function addPoptions() {
    let indiceEnco = $("#indiceactualizar").val();
    let idventa = $("#VentaModalOpcion").val();
    // console.log('pos: ' + indiceEnco);
    // console.log('venta ' + idventa);

    // recoger valores
    var optseleted = '';
    $('.checkbox' + ProductosArr[indiceEnco].id_producto + ':checked').each(function() {
      // console.log($(this).val());
      optseleted += $(this).val().trim() + ',';
    });
    // console.log(optseleted);
    // fin recoger valores

    ProductosArr[indiceEnco].opcion = $("#opcion").val();
    ProductosArr[indiceEnco].opciones = optseleted;

    localStorage.setItem(`productos_${idventa}`, JSON.stringify(ProductosArr));
    // $(`#viewoption-${ProductosArr[indiceEnco].id_producto}`).html($("#opcion").val());
    var vistaopcion = $("#opcion").val().length > 0 ? $("#opcion").val() + ',' : '';
    vistaopcion += optseleted
    $(`#viewoption-${ProductosArr[indiceEnco].key_primary}`).html(vistaopcion);
    $('#options').modal('hide');
    $('#form_options')[0].reset();

  };

  function edit_posale(id) {
    var qt1 = $('#qt-' + id).val();
    $.ajax({
      url: "<?= $this->url ?>/edit/" + id,
      type: "POST",
      data: {
        qt: qt1
      },
      success: function(data) {
        if (data === 'stock') {
          swal("Bajo inventario");
        }
        cambiarventa();
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.warning("Cuidado!");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: 'Error al obtener datos de ajax.'
        // });
      }
    });
  };

  function showticket() { //var opcion = [5, 6];//ventasenviadas
    var det = '';
    $.each($('input:checkbox'), function(index, val) { //console.log($(val).is(':checked'));console.log(index);console.log($(val).val());
      if ($(val).is(':checked') && index > 0) { //det.push($(val).val());
        // console.log($(val).val());
        //var sgte = $(val).next('input');
        //det += '' + $(sgte).val() + '_';
        det += '' + $(val).val() + '_';
      }
    });
    // console.log(det);
    $('#precuenta').modal('show');
    $('.modal-title').text('PRE CUENTA');
    $('#printSectionprecuenta').load("<?= $this->url ?>/showticket_new/" + det);
    //$('#btncomprobante').hide();
    //$("#SendWP").hide();
    //$('#btnprecuenta').show();
  };

  function imprimirprecuenta(id, tipoimpresora) {
    var det = '';
    $.each($('input:checkbox'), function(index, val) {
      if ($(val).is(':checked') && index > 0) {
        //var sgte = $(val).next('input');
        //det += '' + $(sgte).val() + '_';
        det += '' + $(val).val() + '_';
      }
    });
    if (tipoimpresora === 0) {
      $.ajax({
        url: '<?= $this->url ?>/imprimirprecuenta/' + id,
        type: 'POST',
      });
    }
    if (tipoimpresora === 1) {

      var Url = '<?= $this->url ?>/showprecuenta/' + id + '/' + det;
      window.open(Url, 'Pruebas', 'fullscreen=yes, scrollbars=auto');
    }
  };


  function cambiarmesa() {
    $('#CambiarMesa').modal('show');
  };

  function EditarPedido() {
    $.ajax({
      url: "<?= $this->url ?>/EditarPedido",
      // data: {
      //   motivo: result
      // },
      type: "POST",
      dataType: "JSON",
      success: function(data) {

        //? nuevos datos: id_variante, text_variante

        for (let i = 0; i < data.DataVD.length; i++) {

          let idventa = data.venta;

          let dataCandado = {
            key: i,
            venta: idventa,
            idproducto: data.DataVD[i][0],
            cantidad: parseFloat(data.DataVD[i][1]),
            dataopcion: data.DataVD[i][2],
            total: parseFloat(data.DataVD[i][3]),
            EstadoBotonMas: data.DataVD[i][4],
            EstadoBotonMenos: data.DataVD[i][5],
            nameproducto: data.DataVD[i][6],
            precioproducto: parseFloat(data.DataVD[i][7]),
            idcategoria: data.DataVD[i][8],
            picture: "",
            idvariante: data.DataVD[i][9],
            datavariante: data.DataVD[i][10],
            dataopciones: data.DataVD[i][11],
          };

          datainsertCandado(dataCandado);


        }

        let keyStorage = `productos_${data.venta}`;

        localStorage.setItem(keyStorage, JSON.stringify(ProductosArr));

        drawDataProductoLS(null, null);
        ResalteSeleccionados();


        //$("#PedidoClienteContenido").remove();
        //ProductosSeleccionados();
        DatosSecundariosPedido(data.venta, null);
        opcionesmenu();

        $("#VentaMenuNav").removeClass("active");
        $("#VentaEnviadas").hide();
        $("#PedidoMenuNav").addClass("active");
        $("#SeleccionPedido").show();
        ventasEnviadas();

      },
      error: function(jqXHR, textStatus, errorThrown) {
        Lobibox.notify('error', {
          size: 'mini',
          position: 'top right',
          msg: 'Error al obtener datos de ajax.'
        });
      }
    });

    function datainsertCandado(dataObject) {

      //? nuevos datos: id_variante, text_variante

      let data = {
        key_primary: dataObject.key,
        id_producto: dataObject.idproducto,
        text_proudcto: dataObject.nameproducto,
        img_producto: dataObject.picture,
        id_categoria: dataObject.idcategoria,
        total_pagar: dataObject.total,
        precio_producto: dataObject.precioproducto,
        cantidad: dataObject.cantidad,
        EstadoMas: dataObject.EstadoBotonMas,
        EstadoMenos: dataObject.EstadoBotonMenos,
        opcion: dataObject.dataopcion,
        opciones: dataObject.dataopciones,
        id_variante: dataObject.idvariante,
        text_variante: dataObject.datavariante
      }



      ProductosArr.push(data);

    }

    // bootbox.prompt({
    //   title: "Ingrese el motivo para anular este registro",
    //   className: 'rubberBand animated',
    //   inputType: "text",
    //   callback: function(result) {
    //     if (result == "" || result == null) {
    //       Lobibox.notify('error', {
    //         size: 'mini',
    //         msg: 'Ingrese un motivo'
    //       });
    //     } else {
    //       $.ajax({
    //         url: "<?= $this->url ?>/EditarPedido",
    //         data: {
    //           motivo: result
    //         },
    //         type: "POST",
    //         dataType: "JSON",
    //         success: function(data) {
    //           cambiarventa();
    //           $('#listaproducto').load("<?= $this->url ?>/listaproducto");
    //         },
    //         error: function(jqXHR, textStatus, errorThrown) {
    //           Lobibox.notify('error', {
    //             size: 'mini',
    //             position: "top center",
    //             msg: 'Error al obtener datos de ajax.'
    //           });
    //         }
    //       });
    //     }
    //   }
    // });
  };



  function saleBtn() {
    $('#vendiendo').html("<i class='fa fa-spinner fa-spin'></i>");
    $('#vendiendo').attr("disabled", true);

    let t_i_VentaDetalle = $(`#TotalItemVentaDetalle`).val();
    let ventadetalle = [];
    let totalchecked = 0;
    let monto_total = 0;
    let total_items = 0;
    let conteo_total = 0;

    let pago = $('#pago').val();
    let montototal = parseFloat($('#MontoPagar2 span').text());
    let tchecked = $(".chechekPVA").length; //busca si hay algun checkbox que valga la pena XD

    if (tchecked > 0) {
      $("#contenedorPV .chechekPVA").each(function(indice, elemento) {
        let verificar = $(elemento).is(":checked");
        if (verificar) {
          let producto = $(elemento).val();
          ventadetalle.push(producto); //$(`#ventadetalle${producto}`).val()
          totalchecked += 1;
          var montox = parseFloat($(`#PrecioPV${producto}`).text());
          monto_total += montox > 0 ? montox : 0;
          total_items += parseFloat($(`#CantidadPV${producto}`).text());
        } else {}
        conteo_total += 1;
        //? si ya conto verifico todos los checks entrara en true
        if (t_i_VentaDetalle == conteo_total) {
          if (t_i_VentaDetalle == totalchecked) {
            if (pago >= montototal) {
              pagarSoloUno();
            } else {
              pagarSoloUnoMetodoPago();
            }
          } else {
            //console.log(ventadetalle);
            separarCuenta(totalchecked, ventadetalle, monto_total, total_items);
          }
        } else {}

      });
    } else {
      if (pago >= montototal) {
        pagarSoloUno();
      } else {
        pagarSoloUnoMetodoPago();
      }
    }
    console.log(`Total de checks contadis: ${conteo_total}`);
    console.log(`Total de chechk seleccionados: ${t_i_VentaDetalle}`);
    console.log(`Total de chechk totalchecked: ${totalchecked}`);
    console.log(`Monto total: ${monto_total}`);
    console.log(`pago total: ${pago}`);
    console.log(`monto total: ${montototal}`);
  };

  function pagarSoloUno() {
    console.log('pagarSoloUno()');
    let is_consumo;
    if ($("#chkConsumo").is(":checked")) {
      is_consumo = 1;
    } else {
      is_consumo = 0;
    }

    $.ajax({
      url: '<?= $this->url ?>/AddNewSale',
      type: "POST",
      data: {
        'formapago': $(`#formapago`).val(),
        'metodopago': $(`[name="metodopago"]`).val(),
        'descuento': parseFloat($(`[name="descuento"]`).val()),
        'pago': parseFloat($(`[name="pago"]`).val()),
        'tipotarjeta': $(`[name="tipotarjeta"]`).val(),
        'operacion': $(`[name="operacion"]`).val(),
        'vence': $(`[name="vence"]`).val(),
        'fecha': $(`[name="fecha"]`).val(),
        'is_consumo': is_consumo,
        'totalpagar': parseFloat($("#MontoPagar2 span").text()),
      },
      dataType: "JSON",
      success: function(data) {
        console.log(data);
        if (data.status) {
          if (data.formapago == 'CONTADO') {
            if (data.status && data.querydeuda) {
              $('#AddSale').modal('hide');
              $('#form_vender')[0].reset();
              printfcomprobante();
              ventasEnviadas();
            } else {
              $('#AddSale').modal('hide');
              $('#form_vender')[0].reset();
              $("#Categoriaproducto").hide();
              $("#topbuscador").hide();
              $("#CategriaSeleccionar").hide();
              $("#VentasEnviadas").hide();
              $("#msjNohayPro").hide();
              $("#Genrara_Se_Pe").show();
              $("#VentaGenerada").show();
              $("#VentaGenerada2").show();
              $("#messageVide").show();
              opcionesmenu();
              printfcomprobante();
            }
          } else {
            //? si entra a este bloque es porque es tipo de pago fue a credito
            $('#AddSale').modal('hide');
            $('#form_vender')[0].reset();
            $("#Categoriaproducto").hide();
            $("#topbuscador").hide();
            $("#CategriaSeleccionar").hide();
            $("#VentasEnviadas").hide();
            $("#msjNohayPro").hide();
            $("#Genrara_Se_Pe").show();
            $("#VentaGenerada").show();
            $("#VentaGenerada2").show();
            $("#messageVide").show();
            opcionesmenu();
          }


        } else {
          for (var i = 0; i < data.inputerror.length; i++) {
            $('[name="' + data.inputerror[i] + '"]').parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
            $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string
          }
        }

        $('#vendiendo').text('Enviar');
        $('#vendiendo').attr("disabled", false);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        Lobibox.notify('error', {
          size: 'mini',
          position: 'top right',
          msg: 'El registro no se pudo crear verifique las validaciones. aca we '
        });
      }
    });
  }

  function separarCuenta(totalchecked, ventadetalle, monto_total, total_items) {
    console.log('separarCuenta(...)');
    let is_consumo;
    if ($("#chkConsumo").is(":checked")) {
      is_consumo = 1;
    } else {
      is_consumo = 0;
    }

    $.ajax({
      url: '<?= $this->url ?>/ajax_separarCuenta',
      type: "POST",
      data: {
        'formapago': $(`[name="formapago"]`).val(),
        'metodopago': $(`[name="metodopago"]`).val(),
        'descuento': parseFloat($(`[name="descuento"]`).val()),
        'pago': parseFloat($(`[name="pago"]`).val()),
        'tipotarjeta': $(`[name="tipotarjeta"]`).val(),
        'operacion': $(`[name="operacion"]`).val(),
        'vence': $(`[name="vence"]`).val(),
        'fecha': $(`[name="fecha"]`).val(),
        'totalchecked': totalchecked,
        'ventadetalle': JSON.stringify(ventadetalle),
        'monto_total': monto_total,
        'total_items': total_items,
        'is_consumo': is_consumo,
        "totalpagar": parseFloat($("#MontoPagar2 span").text())
      },
      dataType: "JSON",
      success: function(data) {
        if (data.status) {
          $('#AddSale').modal('hide');
          $('#form_vender')[0].reset();
          printfcomprobanteCuentaDividida(data.venta);
          ventasEnviadas();
          $("#clientes").val(data.clientes);
          $("#cliente").val(data.cliente);
        } else {
          for (var i = 0; i < data.inputerror.length; i++) {
            $('[name="' + data.inputerror[i] + '"]').parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
            $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string
          }
        }
        $('#vendiendo').text('Enviar');
        $('#vendiendo').attr("disabled", false);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        Lobibox.notify('error', {
          size: 'mini',
          position: 'top right',
          msg: 'Error de AJAX'
        });
      }
    });
  }

  function pagarSoloUnoMetodoPago() {
    console.log('pagarSoloUnoMetodoPago()');
    let is_consumo;
    //if ($("#chkConsumo").is(":checked")) {is_consumo = 1;} else {is_consumo = 0;}
    is_consumo = $("#chkConsumo").is(":checked") ? 1 : 0;
    $.ajax({
      url: '<?= $this->url ?>/ajax_AddNewSaleMetodoPago',
      type: "POST",
      data: {
        'formapago': $(`#formapago`).val(),
        'metodopago': $(`[name="metodopago"]`).val(),
        'descuento': parseFloat($(`[name="descuento"]`).val()),
        'pago': parseFloat($(`[name="pago"]`).val()),
        'tipotarjeta': $(`[name="tipotarjeta"]`).val(),
        'operacion': $(`[name="operacion"]`).val(),
        'vence': $(`[name="vence"]`).val(),
        'fecha': $(`[name="fecha"]`).val(),
        'is_consumo': is_consumo,
        'totalpagar': parseFloat($("#MontoPagar2 span").text()),
      },
      dataType: "JSON",
      success: function(data) {
        console.log(data);
        //window.location.reload();
        if (data.status) {
          if (data.formapago == 'CONTADO') {
            if (data.status && data.querydeuda) {
              $('#AddSale').modal('hide');
              $('#form_vender')[0].reset();
              printfcomprobante();
              ventasEnviadas();

            } else {
              $('#AddSale').modal('hide');
              $('#form_vender')[0].reset();
              $("#Categoriaproducto").hide();
              $("#topbuscador").hide();
              $("#CategriaSeleccionar").hide();
              $("#VentasEnviadas").hide();
              $("#msjNohayPro").hide();
              $("#Genrara_Se_Pe").show();
              $("#VentaGenerada").show();
              $("#VentaGenerada2").show();
              $("#messageVide").show();
              opcionesmenu();
              printfcomprobante();
            }
          } else {
            //? si entra a este bloque es porque es tipo de pago fue a credito
            $('#AddSale').modal('hide');
            $('#form_vender')[0].reset();
            $("#Categoriaproducto").hide();
            $("#topbuscador").hide();
            $("#CategriaSeleccionar").hide();
            $("#VentasEnviadas").hide();
            $("#msjNohayPro").hide();
            $("#Genrara_Se_Pe").show();
            $("#VentaGenerada").show();
            $("#VentaGenerada2").show();
            $("#messageVide").show();
            opcionesmenu();
          }


        } else {
          for (var i = 0; i < data.inputerror.length; i++) {
            $('[name="' + data.inputerror[i] + '"]').parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
            $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string
          }
        }

        $('#vendiendo').text('Enviar');
        $('#vendiendo').attr("disabled", false);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        Lobibox.notify('error', {
          size: 'mini',
          position: 'top right',
          msg: 'El registro no se pudo crear verifique las validaciones. aca we '
        });
      }
    });
  }

  function pagarsolounorapido() {
    console.log('pagarsolounorapido()');
    $("#vendiendorapido").attr("disabled", true);
    $("#vendiendorapido").html("<i class='fa fa-spinner fa-spin'></i>");
    let is_consumo;
    if ($("#chkConsumo").is(":checked")) {
      is_consumo = 1;
    } else {
      is_consumo = 0;
    }
    $.ajax({
      url: '<?= $this->url ?>/AddNewSalerapido',
      type: "POST",
      data: {
        'formapago': $(`#formapagorapido`).val(),
        'metodopago': $(`[name="metodopagorapido"]`).val(),
        'descuento': parseFloat($(`[name="descuentorapido"]`).val()),
        'pago': parseFloat($(`[name="pagorapido"]`).val()),
        'tipotarjeta': $(`[name="tipotarjetarapido"]`).val(),
        'operacion': "",
        'vence': $(`[name="vencerapido"]`).val(),
        'fecha': $(`[name="fecharapido"]`).val(),
        'is_consumo': is_consumo,
        'idapagar': $("#ventaapagar").val(),
        "totalpagar": parseFloat($("#MontoPagar2rapido span").text())
      },
      dataType: "JSON",
      success: function(data) {
        if (data.status) {
          if ($(`#formapagorapido`).val() == "CONTADO") {
            if (data.querydeuda) {
              window.location.reload();
            } else {
              printfcomprobanterapido($("#ventaapagar").val());
            }
          } else {
            Lobibox.notify('success', {
              size: 'mini',
              position: 'top right',
              msg: 'Credito generado correctamente'
            });
            window.location.reload();
          }
        } else {
          for (var i = 0; i < data.inputerror.length; i++) {
            $('[name="' + data.inputerror[i] + '"]').parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
            $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string
            $('[name="' + data.inputerror[i] + '"]').next().next().text(data.error_string[i]);
          }
        }
        $('#vendiendorapido').text('Enviar');
        $('#vendiendorapido').attr("disabled", false);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        Lobibox.notify('error', {
          size: 'mini',
          position: 'top right',
          msg: 'El registro no se pudo crear verifique las validaciones. aca we '
        });
      }
    });
  }

  function printfcomprobanterapido(idventas) {

    $("#ventarapida").modal("hide");

    $('#comprobante').modal({
      backdrop: 'static',
      keyboard: false
    });

    $('#btnprecuenta').hide();
    $('#btncomprobante').show();
    $("#SendWP").show();
    $.ajax({
      url: "<?= $this->url ?>/data_printfcomprobanterapido",
      data: {
        "idventa": idventas
      },
      type: "POST",
      dataType: "JSON",
      success: function(data) {
        $('#printSection').html(data.html);
        $(`#SendWP`).html(data.msjWP);
        $('#fotter-cerrar').html(data.fotter);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        Lobibox.notify('error', {
          size: 'mini',
          position: 'top right',
          msg: 'Error al obtener datos de ajax.'
        });
      }
    });
  };

  function printfcomprobanteCuentaDividida(venta) {
    //Ajax Load data from ajax
    $.ajax({
      url: "<?= $this->url ?>/ajax_updateventaCuentaNueva",
      type: "POST",
      data: {
        'venta': venta
      },
      dataType: "JSON",
      success: function(data) {

        if (data.formapago == 'CONTADO') {
          if (data.montoactual == 0) {
            $('#comprobante').modal('show');
            $('#btnprecuenta').hide();
            $('#btncomprobante').show();
            $("#SendWP").show();
            $('.modal-title').text('COMPROBANTE');
            printSectioCD(data.venta);
          }
        } else {
          Lobibox.notify('success', {
            size: 'mini',
            position: 'top right',
            msg: 'El credito se registro correctamente'
          });

        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        Lobibox.notify('error', {
          size: 'mini',
          position: 'top right',
          msg: 'Error al obtener datos de ajax.'
        });
      }
    });
  };

  function printSectioCD(venta) {
    $.ajax({
      url: "<?= $this->url ?>/printfcomprobante_CD",
      type: "POST",
      data: {
        'venta': venta
      },
      dataType: "JSON",
      success: function(data) {
        $('#printSection').html(data.html);
        $("#fotter-cerrar").html(data.fotter);
        $("#SendWP").html(data.wp);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        Lobibox.notify('error', {
          size: 'mini',
          position: 'top right',
          msg: 'Error al obtener datos de ajax.'
        });
      }
    });
  }

  function printfcomprobante() {
    $('#comprobante').modal('show');
    $('#btnprecuenta').hide();
    $('#btncomprobante').show();
    $("#SendWP").show();

    let idventaselect = $("#ventaseleccionada").val();

    $.ajax({
      url: "<?= $this->url ?>/printfcomprobante",
      data: {
        "idventa": idventaselect
      },
      type: "POST",
      dataType: "JSON",
      success: function(data) {
        $('#printSection').html(data.html);
        $('#fotter-cerrar').html(data.fotter);
        $("#SendWP").html(data.dataWhatApp);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        Lobibox.notify('error', {
          size: 'mini',
          position: 'top right',
          msg: 'Error al obtener datos de ajax.'
        });
      }
    });


  };
  /*
  function printSection_solo_uno() {
    let idventaselect = $("#ventaseleccionada").val();
    $.ajax({
      url: "<?= $this->url ?>/printfcomprobante",
      data: {
        "idventa": idventaselect
      },
      type: "POST",
      dataType: "JSON",
      success: function(data) {
        $('#printSection').html(data.html);
        $('#fotter-cerrar').html(data.fotter);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        Lobibox.notify('error', {
          size: 'mini',
          msg: 'Error al obtener datos de ajax.'
        });
      }
    });
  } */

  function launchFullScreen(element) {

    if ($("#screnAumento").hasClass("ActiveScren")) {
      $("#screnAumento").removeClass("ActiveScren");
      $("#screnAumento").removeClass("fa fa-compress");
      $("#screnAumento").addClass("fa fa-expand");
      if (document.cancelFullScreen) {
        document.cancelFullScreen();
      } else if (document.mozCancelFullScreen) {
        document.mozCancelFullScreen();
      } else if (document.webkitCancelFullScreen) {
        document.webkitCancelFullScreen();
      }
    } else {
      $("#screnAumento").addClass("ActiveScren");
      $("#screnAumento").removeClass("fa fa-expand");
      $("#screnAumento").addClass("fa fa-compress");
      if (element.requestFullScreen) {
        element.requestFullScreen();
      } else if (element.mozRequestFullScreen) {
        element.mozRequestFullScreen();
      } else if (element.webkitRequestFullScreen) {
        element.webkitRequestFullScreen();
      }
    }


  }



  function imprimircomprobante(tipoimpresora, venta) {
    if (tipoimpresora === 0) {
      $.ajax({
        url: '<?= $this->url ?>/imprimircomprobante',
        type: 'POST',
        data: {
          'venta': venta
        }
      });
    }
    if (tipoimpresora === 1) {
      var Url = '<?= $this->url ?>/showcomprobante/' + venta;
      window.open(Url, 'Pruebas', 'fullscreen=yes, scrollbars=auto');
    }
  };

  function opcionesmenu() {

    $(`#opcionmenu`).load("<?= $this->url ?>/opcionmenu");
  }

  function salirventa(venta) {
    if (localStorage.getItem(`cuentadividida_${venta}`)) {
      localStorage.removeItem(`cuentadividida_${venta}`);
    }

    $.ajax({
      url: "<?= $this->url ?>/ajax_salir_venta",
      type: "POST",
      dataType: "json",
      success: function(data) {
        if (data.status) {
          location.reload();
        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        //toast.error("Ocurrió algo inesperado");
        Lobibox.notify('error', {
          size: 'mini',
          position: 'top right',
          msg: 'Error al obtener datos de ajax.'
        });
      }
    });

  }

  function cambiarventa() {
    var ajaxLoads = {
      "#productList": "<?= $this->url ?>/load_posales", //TODO: Traemos todos los pedidos temporales
      //"#botones": "<?= $this->url ?>/botonpedido", // TODO trae el boton que genera el pedido
      "#opcionmenu": "<?= $this->url ?>/opcionmenu", //TODO: trae las opciones de menu que estan pegados y color negro
      "#customerName span": "<?= $this->url ?>/CustomerName", //TODO: busca si el cliente esta registrado o no
      ".holdList": "<?= $this->url ?>/holdList" //TODO: Esto es el menu superior PEDIDO y VENTA
    }
    $.each(ajaxLoads, function(div, url) {
      $(div).load(url);
    });
    $.when(
        $.ajax({
          url: "<?= $this->url ?>/ajax_updateventa",
          type: "GET",
          dataType: "JSON"
        })
      )
      .then(function(data) {
        $('[name="cliente"]').val(data.cliente);
        $('[name="clientes"]').val(data.nombrecompleto);
        $('[name="nombrecompleto"]').val(data.nombrecompleto);
        $('[name="tipoventa"]').val(data.tipoventa);
        $('#ItemsNum span, #ItemsNum2 span').text(data.totalitems);
        $(".product").removeClass("productoIsSelected");
        $.each(data.productos, function(index, value) {
          $("#box" + value).addClass("productoIsSelected");
        });
        if (data.NumberTable == 1) {
          $('#lectorproducto').show();
          $('#addcliente').hide();
          $('#izquierda').show();
          $('#derecha').removeClass('col-md-12');
          $('#derecha').addClass('col-md-4');
        } else {
          $('#izquierda').hide();
          $('#derecha').removeClass('col-md-4');
          $('#derecha').addClass('col-md-12');
          // $('#searchContaner').hide();
          $('#addcliente').show();
        }
        if (data.estado === '0') {
          $('#usuarios').attr('disabled', false);
          $('#clientes').attr('disabled', false);
          $('#proformas').hide();
          $('#botoncliente').show();
          $('#numeraciones').hide();
          $('#totalitos').hide();
          $('#descuentos').hide();
          $('#tipoventas').show();
          $('#addproduct').show();
          $('#Subtot').text(data.montototal);
          $('#Deuda').text(data.montoactual);
          $('#total').text(data.montototal);
          $('#pago').val(data.montoactual);
        }
        if (data.estado === '1') {
          $('#usuarios').attr('disabled', true);
          $('#clientes').attr('disabled', true);
          $('#proformas').hide();
          $('#botoncliente').hide();
          $('#numeraciones').show();
          $('#totalitos').show();
          $('#descuentos').show();
          $('#tipoventas').hide();
          $('#addproduct').hide();
          $('#lectorproducto').hide();
          $('#addcliente').hide();
          $('#Subtot').text('0.00');
          $('#Deuda').text('0.00');
          $('#total').text('0.00');
        }
      }).fail(function(err) {
        console.log('Something went wrong', err);
      });


    //Ajax Load data from aj
  };

  function CloseRegister() {
    $.ajax({
      url: "<?= $this->url ?>/CloseRegister",
      type: "POST",
      dataType: "json",
      success: function(data) {
        if (data.status) {
          $('#closeregsection').html(data.data);
          $('#CloseRegister').modal('show');
        } else {
          swal("Mesas Abiertas !!", "" + data.data, "error");
        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.error("Ocurrió algo inesperado");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: 'Error al obtener datos de ajax.'
        // });
      }
    });
  };

  function cambiarproceso(tipoproceso) {
    $("#tipoproceso").val(tipoproceso);
    if (tipoproceso == "1") {
      document.getElementById("montototalcaja").focus();
    } else {}

  }

  function SubmitRegister() {

    $("#montototalcaja").keyup(function() {
      if ($(this).val() != "") {
        $(this).parent().removeClass("has-error");
        $(this).next().text("");
      }
    });

    $('#cerrarcaja').attr('disabled', true);
    $('#cerrarcaja').html('<i class="fa fa-spinner fa-spin"></i>');

    swal({
        title: 'Estas seguro ?',
        text: 'Usted no será capaz de recuperar las bodegas más tarde!',
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        confirmButtonText: 'Sí, Ciérralo!',
        closeOnConfirm: false
      },
      function() {

        $.when(
            $.ajax({
              url: "<?= $this->url ?>/SubmitRegister",
              type: "POST",
              data: $('#form_cierre').serialize(),
              dataType: "JSON",
            })
            /*
            $.ajax({
              url: '<?= base_url() ?>venta/enviomasivo/<?= date('Y-m-d') ?>/<?= date('Y-m-d') ?>',
              method: 'POST',
              dataType: "JSON",
            })
            */
          ).then(function(response1) {
            if (response1.status) {

              //toast.success("El registro fue creado exitosamente");

              /*
              Lobibox.notify('success', {
                size: 'mini',
                msg: 'El registro fue creado exitosamente.'
              });*/

              /*
              if (response2[0].respuesta == 'ok') {
                swal({
                  title: 'Resultado',
                  text: 'Su comprobante se ha procesado correctamente!',
                  html: true,
                  type: "success",
                  confirmButtonText: "Ok",
                  confirmButtonColor: "#2196F3"
                });
              } else {
                swal({
                  title: 'ERROR',
                  text: 'No Existen comprobantes pendientes de envio',
                  html: true,
                  type: "error",
                  confirmButtonText: "Ok",
                  confirmButtonColor: "#2196F3"
                });
              }
              */

              //? El perfil de 3 es caja
              //if (response1.usuarioperfil == 1 || response1.usuarioperfil == 2) {
              printfcierre(); //? le muestra el reporte al cerrar caja
              //}


              setTimeout("location.href='<?= $this->url ?>/backup'", 1000);
            } else {
              $('#cerrarcaja').attr('disabled', false);
              $('#cerrarcaja').text('Cerrar registrarse');
              for (var i = 0; i < response1.inputerror.length; i++) {
                $('[name="' + response1.inputerror[i] + '"]').parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
                $('[name="' + response1.inputerror[i] + '"]').next().text(response1.error_string[i]); //select span help-block class set text error string
              }
            }
          })
          .fail(function(err) {
            console.log('Something went wrong', err);

          });
        swal.close();
        $('#cerrarcaja').attr('disabled', false);
        $('#cerrarcaja').text('Cerrar registrarse');
      });


  };

  function printfcierre() {
    //Ajax Load data from ajax
    $.ajax({
      url: "<?= $this->url ?>/ajax_updatecaja",
      type: "GET",
      dataType: "JSON",
      success: function(data) {
        if (data.tipoimpresora === '0') {
          $.ajax({
            url: '<?= $this->url ?>/imprimircierre',
            type: 'POST',
          });
        }
        if (data.tipoimpresora === '1') {
          var Url = '<?= $this->url ?>/showcierre';
          window.open(Url, 'Pruebas', 'fullscreen=yes, scrollbars=auto');
        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.error("Ocurrió algo inesperado");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: 'Error al obtener datos de ajax.'
        // });
      }
    });
  };

  /*
  function setVariante(precio, id) {
    $("#precioVariante").val(precio);
    $(".variantes").removeClass("active");
    $("#v" + $("#precioVariante").val()).toggleClass("active");
  }
  */

  function setModificador(precio, id) {
    $("#productomodificador").val(precio);
    $(".modificadores").removeClass("active");
    $("#m" + $("#productomodificador").val()).toggleClass("active");
  }

  /*
  function addVariante() {
    // e.preventDefault();
    $.ajax({
      url: "<?= $this->url ?>/addpdcVariante/" + $("#productoVariante").val() + "/" + $("#precioVariante").val() + "/" + $("#productomodificador").val(),
      type: "POST",
      success: function(data) {
        cambiarventa();
        $("#addVariante").modal("hide");
      },
      error: function(jqXHR, textStatus, errorThrown) {
        toast.error("Ha ocurrido algo inesperado");
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   position: 'top center',
        //   msg: 'Error al obtener datos de ajax.'
        // });
      }
    });
  }
  */

  function agregarExtra(idextra, textextra, precioextra) {
    var ExtrasSelect = [];

  }

  function modalMesa(zona) {
    $("#addMesa").modal('show');
    $("#zonaT").val(zona);
    $("#nombre").val('');
    setTimeout(function() {
      $("#nombre").focus();
    }, 450);
  }

  function sentTicketWA() {

    let idventa = $("#ventaseleccionada").val();
    const phone = $("#telefonoWP").val();
    //window.location.href = "<?= $this->url ?>/sentTicketWA/" + phone + "/" + venta;
    window.open("<?= $this->url ?>/sentTicketWA/" + phone + "/" + idventa);
  }

  function sentTicketWA2(idventa) {
    const phone = $("#telefonoWP").val();
    //window.location.href = "<?= $this->url ?>/sentTicketWA/" + phone + "/" + venta;
    window.open("<?= $this->url ?>/sentTicketWA/" + phone + "/" + idventa);
  }

  function enviomasivo_documento_electronico() {
    var slider = document.createElement("input");
    slider.type = "range";
    swal({
      content: slider,
    });
    $.ajax({
      url: '<?= base_url() ?>venta/enviomasivo/' + <?= date('Y-m-d') ?> + '/' + <?= date('Y-m-d') ?>,
      method: 'POST',
      dataType: "JSON",
    }).then(function(data) {
      if (data.respuesta == 'ok') {
        swal({
          title: 'Resultado',
          text: 'Su comprobante se ha procesado correctamente!',
          html: true,
          type: "success",
          confirmButtonText: "Ok",
          confirmButtonColor: "#2196F3"
        });
      } else {
        swal({
          title: 'ERROR',
          text: 'No Existen comprobantes pendientes de envio',
          html: true,
          type: "error",
          confirmButtonText: "Ok",
          confirmButtonColor: "#2196F3"
        });
      }
    }, function(reason) {
      console.log(reason);
    });
  };

  function openDatos(evt, cityName) {
    var i, tabcontent2, tablinks;

    // Hide all tab content by removing active-tab class
    tabcontent2 = document.getElementsByClassName("tabcontent2");
    for (i = 0; i < tabcontent2.length; i++) {
      tabcontent2[i].classList.remove("active-tab");
      tabcontent2[i].style.display = "none"; // Safety for legacy styles
    }

    // Remove active class from all tab pills/links
    tablinks = document.querySelectorAll(".tablinks, .tab-pill");
    for (i = 0; i < tablinks.length; i++) {
      tablinks[i].classList.remove("active");
    }

    // Show the current tab and mark button as active
    var target = document.getElementById(cityName);
    if (target) {
      target.classList.add("active-tab");
      target.style.display = "flex"; // Force flex for the layout
    }
    evt.currentTarget.classList.add("active");
  }
  // TODO: --------------------------------Esto es el codigo nuevo-----------------------------

  function categoriaSeleccionar() {
    $("#retrocederFila").hide();
    $("#Categoriaproducto").hide();
    $("#CategriaSeleccionar").load('<?= $this->url ?>/load_CategriaSeleccionar');
  }




  function grabarclienterapido() {
    $("#form_clienterapido")[0].reset();
    $('.modal-title').text('CREAR CLIENTE');
    $(".input-group").removeClass("has-error");
    $(".help-block").text("");
    $('#documento3').attr('minLength', 8);
    $('#documento3').attr('maxlength', 8);
    $('#cliente_form_3').modal('show');

  }



  function categoria(categoria) {

    $.ajax({
      url: "<?= $this->url ?>/ajax_productos_categoria",
      type: "POST",
      data: {
        'categoria': categoria
      },
      success: function(data) {
        $("#CategriaSeleccionar").hide();
        $("#retrocederFila").show();
        $("#Categoriaproducto").show();
        $("#CategoriaproductoTodos").hide();
        $("#Categoriaproducto").html(data);
        ResalteSeleccionados();
      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error");
      }
    });

  }

  function seleccionarExtra(idextra) {

    if ($(`#extra-${idextra}`).hasClass("active-tachar-content") == false) {
      if ($(`#extra-${idextra}`).hasClass("extra-active")) {
        $(`#extra-${idextra}`).removeClass("extra-active");
        $(`#checkep_extra-${idextra}`).prop("checked", false);
      } else {
        $(`#extra-${idextra}`).addClass("extra-active");
        $(`#checkep_extra-${idextra}`).prop("checked", true);
      }
    }


  }

  function seleccionarExtraChecked(idextra) {

    if ($(`#extra-${idextra}`).hasClass("active-tachar-content") == false) {
      if ($(`#extra-${idextra}`).hasClass("extra-active")) {
        $(`#extra-${idextra}`).removeClass("extra-active");
        $(`#checkep_extra-${idextra}`).prop("checked", false);
      } else {
        $(`#extra-${idextra}`).addClass("extra-active");
        $(`#checkep_extra-${idextra}`).prop("checked", true);
      }
    }

  }

  function sinextraope(idextra) {

    if ($(`#extra-${idextra}`).hasClass("active-tachar-content")) {
      $(`#sinextra-${idextra} i`).removeClass("active-sin-extra");
      $(`#checkep_extra-${idextra}`).attr("disabled", false);

      $(`#extra-${idextra}`).removeClass("active-tachar-content");
      $(`#extraname-${idextra}`).removeClass("active-tachar-extra");
      $(`#extraprecio-${idextra}`).removeClass("active-tachar-extra");

    } else {

      $(`#sinextra-${idextra} i`).addClass("active-sin-extra");
      $(`#checkep_extra-${idextra}`).attr("checked", false);
      $(`#checkep_extra-${idextra}`).attr("disabled", true);
      $(`#extra-${idextra}`).removeClass("extra-active");
      $(`#extra-${idextra}`).addClass("active-tachar-content");
      $(`#extraname-${idextra}`).addClass("active-tachar-extra");
      $(`#extraprecio-${idextra}`).addClass("active-tachar-extra");

    }

  }


  function procesoagregaarventa(idproducto, idcategoria, precioproducto) {
    $(`#varianteseleccionada`).val("");
    $(`#notas-especiales`).val("");
    let ventaseleccionada = $(`#ventaseleccionada`).val();
    let dataLS = JSON.parse(localStorage.getItem(`productos_${ventaseleccionada}`));
    let bloquear = false;
    let estadovarinte;
    $.ajax({
      url: '<?= $this->url ?>/ajax_listVariante/' + idproducto,
      type: "POST",
      dataType: "JSON",
      success: function(data) {
        console.log(data);
        if (data.totalvariantes > 0 && data.totalextras > 0) {

          $(`#ColumnaVariante`).show();
          $(`#ColumnaExtra`).show()

          $(`#ColumnaVariante`).removeClass("col-lg-12");
          $(`#ColumnaExtra`).removeClass("col-lg-12");

          $(`#ColumnaExtra`).addClass("col-lg-6");
          $(`#ColumnaVariante`).addClass("col-lg-6");

        } else {

          if (data.totalvariantes > 0) {
            $(`#ColumnaVariante`).show();
            $(`#ColumnaExtra`).hide()
            $(`#ColumnaVariante`).removeClass("col-lg-6");
            $(`#ColumnaVariante`).addClass("col-lg-12");
          } else {
            $(`#ColumnaExtra`).show();
            $(`#ColumnaVariante`).hide();
            $(`#ColumnaExtra`).removeClass("col-lg-6");
            $(`#ColumnaExtra`).addClass("col-lg-12");
          }

        }

        $("#listaVariante").html(data.variantes);
        $("#listExtras").html(data.extras);
        $(`#ProcesoAddVE`).html(data.boton);
        $("#addProcesoVE").modal('show');

      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("Error AJAX")
      }
    });

  }

  function seleccionarVariante(idvariante) {

    //? ocultamos el mensaje de alerta de variantes
    $(`#MensajeVariante`).hide("fast");



    $(`.variantes`).each(function(index, element) {
      let idvariante = $(element).val();
      $(`#label-variante-${idvariante}`).removeClass("selectVariantes");
    });

    $(`#label-variante-${idvariante}`).addClass("selectVariantes");

    $("#varianteseleccionada").val(idvariante);



  }


  function procesoAgregarExtra(idproducto, idcategoria, statusvariantes) {

    $("#procesoAgregarExtra").attr("disabled", true);
    $("#procesoAgregarExtra").html(`<i class="fa fa-spin fa-spinner"></i>`);

    let precioproducto = 0;
    let idvariante = $(`#varianteseleccionada`).val();

    if (statusvariantes == 0) {
      //? si es 0 tomara el precio del producto normal
      precioproducto = parseFloat($(`#precio-producto-${idproducto}`).val());
    } else {
      //? Tomara el precio de la variante selecionada

      precioproducto = parseFloat($(`#precioproducto-${idvariante}`).val());
    }

    let NombresExtras = "";

    if (statusvariantes == 1) {
      //? concatenara el nombre de la variante con el producto
      NombresExtras += ` ${$(`#text-variante-${idvariante}`).val()} `;
    } else {
      NombresExtras += "";
    }


    let TotalExtras = 0;

    //? sumamos el total de todos extras que se agregaran
    $(`.ExtraIdenti`).each(function(index, value) {

      let idextra = $(this).val();

      if ($(`#checkep_extra-${idextra}`).is(":checked")) {

        CantidadExtra = 1;
        let PrecioExtra = $(`#PrecioExtra-${idextra}`).val();
        let operacion = parseFloat(PrecioExtra * CantidadExtra);

        TotalExtras += operacion
        NombresExtras += `, + 1 ${$(`#NombreExtra-${idextra}`).val()}`;

      } else {
        if ($(`#extra-${idextra}`).hasClass("active-tachar-content")) {
          NombresExtras += `, Sin ${$(`#NombreExtra-${idextra}`).val()}`;
        }
      }



    });
    
    let OpcionesAdicionales = $("#notas-especiales").val();
    if (OpcionesAdicionales && OpcionesAdicionales.trim() !== "") {
      NombresExtras += ` (${OpcionesAdicionales.trim()}) `;
    }

    let TotalGlobal = TotalExtras + precioproducto;


    if (statusvariantes == 1) {

      let variante = $(`#varianteseleccionada`).val();
      if (variante != "") {
        agregaarventa(idproducto, idcategoria, TotalGlobal, NombresExtras);
      } else {
        $(`#MensajeVariante`).show("fast");
        $("#procesoAgregarExtra").attr("disabled", false);
        $("#procesoAgregarExtra").text(`Agregar`);
      }
    } else {
      agregaarventa(idproducto, idcategoria, TotalGlobal, NombresExtras);
    }

  }


  function OperacionExtra(statusExtra, idextra) {

    //? el array es: DataExtras

    if (statusExtra) {

      if ($(`#CantidadExtra-${idextra}`).val() == "-") {
        $(`#texto-extras-${idextra}`).css("text-decoration", "none");
        $(`#CantidadExtra-${idextra}`).val(0);

      } else {

        let cantidadActual = parseInt($(`#CantidadExtra-${idextra}`).val());
        let result = cantidadActual + 1;
        $(`#CantidadExtra-${idextra}`).val(result);

      }


    } else {

      let cantidadActual = parseInt($(`#CantidadExtra-${idextra}`).val());

      if (cantidadActual >= 1) {

        let result = cantidadActual - 1;
        $(`#CantidadExtra-${idextra}`).val(result);
      } else {
        $(`#texto-extras-${idextra}`).css("text-decoration", "line-through");
        $(`#CantidadExtra-${idextra}`).val("-");
      }

    }

  }


  function productolibre() {
    $("#addproductolibre").modal('show');
  }

  function saveLibre() {
    $('#btnSaveLibre').text('guardando...'); //change button text
    $('#btnSaveLibre').attr('disabled', true); //set button disable
    // ajax adding data to database
    $.ajax({
      url: '<?= $this->url ?>/ajax_addproductolibre',
      type: "POST",
      data: $('#form_libre').serialize(),
      dataType: "JSON",
      success: function(data) {
        //if success close modal and reload ajax table
        if (data.status) {
          $('#addproductolibre').modal('hide');
          $('#form_libre')[0].reset();
          agregaarventa(data.producto, data.categoria, data.precio, 0);
          DatosSecundariosPedido(null, null);
          // cambiarventa();
        } else {
          for (var i = 0; i < data.inputerror.length; i++) {
            $('[name="' + data.inputerror[i] + '"]').parent().parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
            $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string
          }
        }
        $('#btnSaveLibre').text('GRABAR'); //change button text
        $('#btnSaveLibre').attr('disabled', false); //set button enable
      },
      error: function(jqXHR, textStatus, errorThrown) {
        // Lobibox.notify('error', {
        //   size: 'mini',
        //   msg: 'El registro no se pudo crear verifique las validaciones.'
        // });
        $('#btnSaveLibre').text('GRABAR'); //change button text
        $('#btnSaveLibre').attr('disabled', false); //set button enable
      }
    });
  };

  function ResalteSeleccionados() {
    let idventa = $("#ventaseleccionada").val();
    let dataPLS = localStorage.getItem(`productos_${idventa}`);
    if (dataPLS != null) {
      let array = JSON.parse(dataPLS);
      for (value of array) {
        $(`#ProductoLista${value.id_producto}`).addClass("productoIsSelected");
      }
    }
  }

  function retroceder() {
    $('#Categoriaproducto').hide();
    $("#CategriaSeleccionar").show();
    categoriaSeleccionar();
  }

  function agregaarventa(idproducto, idcategoria, precioproducto, estadovariante) {

    let idventaseleccionada = $("#ventaseleccionada").val();
    $(`#boton-product-${idproducto}`).attr("disabled", true);
    let idvariante, text_variante, updateprecio, cantidadmedida;

    if (estadovariante == 0) {
      idvariante = false;
      text_variante = false;
      updateprecio = precioproducto;
      $(`#boton-variante-${idproducto}`).css(`text-align`, `center`);
      $(`#boton-variante-${idproducto}`).attr("disabled", true);
      $(`#boton-variante-${idproducto}`).html(`<i class="fa fa-spin fa-spinner"></i>`);
    } else {
      idvariante = false;
      //idvariante = $(`#variante-${estadovariante}`).val();
      //text_variante = $(`#text-variante-${idvariante}`).val();
      text_variante = false;
      updateprecio = precioproducto;
      /*
      $(`#boton-variante-${idvariante}`).css(`text-align`, "center");
      $(`#boton-variante-${idvariante}`).attr("disabled", true);
      $(`#boton-variante-${idvariante}`).html(`<i class="fa fa-spin fa-spinner"></i>`);
      */
    }
    $("#messageVide").hide();
    if (idventaseleccionada != "") {
      $.ajax({
        url: "<?= $this->url ?>/ajax_verif_stock",
        type: "POST",
        data: {
          "idproducto": idproducto,
          "venta": idventaseleccionada
        },
        dataType: "JSON",
        success: function(data) {
          if (data.estadoventa) {
            if (data.status) {
              //? bloquear producto
              $(`#boton-product-${idproducto}`).attr("disabled", true);
              $(`#ProductoLista${idproducto}`).addClass("opacar_div");
              $(`#boton-product-${idproducto}`).append(`<label id="Agotado${idproducto}" class="agotado">AGOTADO</label>`);
              //? Bloquear el boton mas (+)
              $(`#BotonMas-${idproducto}`).attr("disabled", true);
              $("#messageVide").show();
            } else {
              //? agregamos el producto
              if (data.EstadoProductoSeleccion == true) {
                //? bloqueamos el aproducto si despues de la seleccion ya no cuenta con stock
                $(`#boton-product-${idproducto}`).attr("disabled", true);
                $(`#ProductoLista${idproducto}`).addClass("opacar_div");
                $(`#boton-product-${idproducto}`).append(`<label id="Agotado${idproducto}" class="agotado">AGOTADO</label>`);
                $(`#BotonMas-${idproducto}`).attr("disabled", true);
              }
              let idventa = $("#ventaseleccionada").val();
              let textoproducto = data.productotext;
              let picture = "";
              let EstadoBusqueda = false;
              let verifi = localStorage.getItem(`productos_${idventa}`);
              console.log("verifi:" + verifi);
              // if (verifi != null) {
              //   for (value of ProductosArr) {
              //     if (value.id_producto == idproducto) {
              //       EstadoBusqueda = true;
              //       let cantidad = value.cantidad + 1;
              //       let total = parseFloat(value.precio_producto * cantidad);
              //       value.cantidad = cantidad;
              //       value.total_pagar = total;
              //       if (value.cantidad == 1) {
              //         value.EstadoMenos = true;
              //       } else {
              //         value.EstadoMenos = false;
              //       }
              //       if (data.EstadoProductoSeleccion == true) {
              //         value.EstadoMas = true;
              //       }
              //       break;
              //     } else {
              //       continue;
              //     }
              //   }
              // }
              let nombredelproductoinsert = textoproducto + (estadovariante == 0 ? "" : estadovariante);
              if (EstadoBusqueda == false) {
                datainsert(idproducto, idcategoria, updateprecio, idventa, nombredelproductoinsert, picture, data.EstadoProductoSeleccion, idvariante, text_variante);
              }
              guardarProductoLS(idventa, idproducto); //? en este metodo agregarmos "productoIsSelected" 
              drawDataProductoLS(data.EstadoProductoSeleccion, idproducto);
              DatosSecundariosPedido();
              //? Nos manda a la parte donde estan los productos selecionados
              $("#PedidoMenuNav").addClass("active");
              $("#SeleccionPedido").show();
              $("#VentaEnviadas").hide();
            }
          } else {
            Lobibox.alert("info", {
              title: "Informacion",
              msg: "La mesa ya fue cobrada",
            });
            setTimeout(() => {
              window.location.reload();
            }, 3000);
          }
        },
        error: function(jqXHR, textStatus, errorThrown) {
          alert("error");
        }
      });
    } else {
      //? mensaje para informar que tiene que seleccionar crear un venta
      Lobibox.alert("info", {
        title: "Informacion",
        msg: "Tienes que crear una venta",
      });
      $(`#boton-product-${idproducto}`).attr("disabled", false);
    }
  }

  /* function productoscache() {
    //console.log(JSON.stringify(ProductosArr));
    let idventa = $("#ventaseleccionada").val();
    console.log($("#contenedorPV"));
  } */


  function datainsert(idproducto, idcategoria, precioproducto, idventa, nameproducto, picture, estadobusqueda, idvariante, textvariante) {
    let key = asignarindicePro(idventa);
    let DataEstadoMas;
    if (estadobusqueda == true) {
      DataEstadoMas = true;
    } else {
      DataEstadoMas = false;
    }
    let data = {
      key_primary: key,
      id_producto: idproducto,
      text_proudcto: nameproducto,
      img_producto: picture,
      id_categoria: idcategoria,
      total_pagar: precioproducto,
      precio_producto: precioproducto,
      cantidad: 1,
      EstadoMas: DataEstadoMas,
      EstadoMenos: true,
      opcion: "",
      opciones: "",
      id_variante: idvariante,
      text_variante: textvariante,
      id_detalle: 0,
    }
    ProductosArr.push(data);
  }

  function guardarProductoLS(idventa, idproducto) {
    localStorage.setItem(`productos_${idventa}`, JSON.stringify(ProductosArr));
    $(`#ProductoLista${idproducto}`).addClass("productoIsSelected");
  }

  function varianteMSG() {
    $("#MensajeVariante").hide("farst");
  }


  function drawDataProductoLS(status, idproducto) {

    $("#pedidosventa").html("");
    $("#busquedacodigobarra").html(`<i class="fa fa-search"></i>`);
    $("#codigodebarra").val("");
    $("#varianteseleccionada").val();
    $("#procesoAgregarExtra").attr("disabled", false);
    $("#procesoAgregarExtra").text(`Agregar`);

    let idventa = $("#ventaseleccionada").val();
    if (idventa != "") {
      ProductosArr = JSON.parse(localStorage.getItem(`productos_${idventa}`));

      if (ProductosArr) {

        if (ProductosArr.length > 0) {
          $("#msjNohayPro").hide();
        } else {
          $("#msjNohayPro").show();
        }
        ProductosArr.forEach(function(value, index) {

          $("#pedidosventa").append(drawaHtmlProd(value));

        })
      } else {
        ProductosArr = [];
      }

      if (status != null) {
        if (status == false) {
          //? si cuenta con stock suficiente para otra seleccion
          $(`#boton-product-${idproducto}`).attr("disabled", false);
        }
      }
    }

  }


  function drawaHtmlProd(value) {
    let optionsText = (value.opcion || value.opciones) ? `<div class="sel-options-text"><i class="fas fa-info-circle mr-1"></i> ${value.opcion || ''} ${value.opciones || ''}</div>` : '';
    
    let html = `
    <div class="seleccion-modern" id="content-padre-${value.key_primary}">
      <div class="sel-header">
        <div class="sel-info">
          <div class="sel-title">${value.text_proudcto}</div>
          <div class="sel-price">S/ ${value.precio_producto}</div>
        </div>
        <div class="sel-total">S/ ${value.total_pagar}</div>
      </div>
      
      <div class="sel-footer">
        <div class="quantity-pill">
          <button ${value.EstadoMenos == true ? "disabled" : ""} 
                  onclick="MasMenos(0, ${value.id_producto}, ${value.key_primary})" 
                  id="BotonMenos-${value.key_primary}" 
                  class="qty-btn">
            <i class="fas fa-minus"></i>
          </button>
          <input readonly class="qty-input" value="${value.cantidad}">
          <button ${value.EstadoMas == true ? "disabled" : ""} 
                  onclick="MasMenos(1, ${value.id_producto}, ${value.key_primary})" 
                  id="BotonMas-${value.key_primary}" 
                  class="qty-btn">
            <i class="fas fa-plus"></i>
          </button>
        </div>
        
        <div class="sel-actions">
          <button onclick="addoptions(${value.key_primary})" class="btn-opt">
            <i class="fas fa-cog"></i>
          </button>
          <button class="btn-del" title="Eliminar" onclick="EliminaProducto(${value.key_primary}, ${value.key_primary})">
            <i class="fas fa-trash-alt"></i>
          </button>
        </div>
      </div>
      ${optionsText}
    </div>`;
    return html;
  }


  function DatosSecundariosPedido() {
    let idventa = $("#ventaseleccionada").val();
    $(`#addProcesoVE`).modal("hide");

    let key = localStorage.getItem(`productos_${idventa}`);
    let TotalItem = 0;
    let MontoPagar = 0;

    if (key != null) {
      let ProductoLS = JSON.parse(key);
      for (value of ProductoLS) {
        TotalItem += parseFloat(value.cantidad);
        MontoPagar += parseFloat(value.total_pagar);
      }
    }

    if (TotalItem == 0) {
      $("#generarpedido").attr("disabled", true);
    } else {
      $("#generarpedido").attr("disabled", false);
    }

    $("#CantidadItemGenerar").text(TotalItem);
    $("#SubTotalGenerar").text(MontoPagar);

  }


  function asignarindicePro(idventa) {
    let dataproductoLS = JSON.parse(localStorage.getItem(`productos_${idventa}`));
    let indiceinsert;
    if (dataproductoLS == null) {
      indiceinsert = 0;
    } else {
      if (dataproductoLS.length > 0) {
        let indiceEncont = dataproductoLS.length - 1; //obtenemos el ultimo arreglo insertado
        let dataArreglo = dataproductoLS[indiceEncont];
        indiceinsert = dataArreglo.key_primary + 1;
      } else {
        indiceinsert = 0;
      }
    }
    return indiceinsert;
  }






  function buscarkeydisponible(venta) {
    //? la "V" siginica de variable
    var keyDisponibleV;
    var correlativoV;
    var TotalKey = localStorage.length + 5; //? le ponemos que busque para que de 5 vueltas mas por si hay otro plugin que inserta datos en el LS
    //TODO: Buscamos en el for que key esta disponible en localStorage
    for (let i = 1; i <= TotalKey; i++) {
      let keyBuscar = `${venta}_${i}`;
      if (localStorage.getItem(keyBuscar)) {
        continue;
      } else {
        keyDisponibleV = `${venta}_${i}`; //todo: si lo encontramos lo guardamos
        correlativoV = i;
        break;
      }
    }
    let datosReturn = {
      keyDisponible: keyDisponibleV,
      correlativo: correlativoV
    };

    return datosReturn;
  }




  function DescontarStock(idproducto) {

    $.ajax({
      url: "<?= $this->url ?>/ajax_descontar_stock",
      type: "POST",
      data: {
        'idproducto': idproducto,
      },
      dataType: "JSON",
      success: function(data) {
        if (data.estandar || data.combo) {
          if (data.EstadoProducto) {
            categoria(data.categoria);
            $(`#BotonMas${idproducto}`).attr("disabled", true);
          }
        } else {

        }

      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error");

      }
    });
    return true;

  }
  /*
  function ProductosSeleccionados() {
    if (localStorage.length != 0) {
      for (var i = 1; i <= 50; i++) {
        let keyStorage = <?= $this->venta ?> + "_" + i;
        if (localStorage.getItem(keyStorage)) {
          let dataStorage = JSON.parse(localStorage.getItem(keyStorage));
          $(`#ProductoLista${dataStorage[0]}`).addClass("productoIsSelected");
          $.ajax({
            url: "<?= $this->url ?>/ajax_ProductosSeleccionados",
            type: "POST",
            data: {
              "idproducto": dataStorage[0],
              "cantidad": dataStorage[1],
              "total": dataStorage[3],
              "opcion": dataStorage[2],
              'correlativo': i,
              "hacerpedido": i - 1
            },
            success: function(data) {
              $(".messageVide").hide();
              $("#PedidoClienteContenido").after(data);

              if (dataStorage[1] == 1) {
                $(`#BotonMenos${dataStorage[0]}`).attr("disabled", true);
              } else {
                $(`#BotonMenos${dataStorage[0]}`).attr("disabled", false);
              }
            },
            error: function(jqXHR, textStatus, errorThrown) {
              alert("error");
            }
          });
        } else {

        }
      }
    }
  }
  */

  function EliminaProducto(producto, key) {

    $(`#BTN-EliminaProducto-${producto}`).attr("disabled", true);
    $(`#BTN-EliminaProducto-${producto}`).html(`<i class="fa fa-spin fa-spinner"></i>`);

    let idventa = $("#ventaseleccionada").val();
    let ProductosLS = localStorage.getItem(`productos_${idventa}`);
    if (ProductosLS != null) {

      for (index in ProductosArr) {
        if (ProductosArr[index].key_primary == key) {
          $.ajax({
            url: "<?= $this->url ?>/ajax_restablecer_stock",
            type: "POST",
            data: {
              "idproducto": ProductosArr[index].id_producto,
              "CantidadProducto": ProductosArr[index].cantidad,
            },
            dataType: "JSON",
            success: function(data) {

              if (data.EstadoProducto) {
                //hay stock suficiente para otra seleccion
                $(`#boton-product-${producto}`).attr("disabled", false);
              } else {
                $(`#boton-product-${producto}`).attr("disabled", true);
              }

              $(`#ProductoLista${producto}`).removeClass("productoIsSelected opacar_div");
              $(`#Agotado${producto}`).remove();
              $(`#content-padre-${producto}`).remove();

              EliminarProductoArray(index, ProductosArr[index].id_producto);

              $(`#BTN-EliminaProducto-${producto}`).attr("disabled", false);
              $(`#BTN-EliminaProducto-${producto}`).html(`<i class="fa fa-minus-circle"></i>`);
              DatosSecundariosPedido();

            },
            error: function(jqXHR, textStatus, errorThrown) {
              Lobibox.notify('error', {
                size: 'mini',
                position: 'top right',
                msg: 'Error al obtener datos de ajax.'
              });
            }
          });
          break;
        } else {
          continue;
        }

      }

    }

  }


  function EliminarProductoArray(index, id_producto) {

    let venta = $("#ventaseleccionada").val();
    ProductosArr.splice(index, 1);
    localStorage.setItem(`productos_${venta}`, JSON.stringify(ProductosArr));


    //? si elimina todos los productos del array tambien eliminamos del LS
    let dataLsProductos = JSON.parse(localStorage.getItem(`productos_${venta}`));
    if (dataLsProductos.length <= 0) {
      localStorage.removeItem(`productos_${venta}`);
      $("#msjNohayPro").show();
    }


  }

  function RestablecerStock(producto, cantidad) {
    $.ajax({
      url: "<?= $this->url ?>/ajax_restablecer_stock",
      type: "POST",
      data: {
        "idproducto": producto,
        "CantidadProducto": cantidad
      },
      dataType: "JSON",
      success: function(data) {
        if (data.status) {
          categoria(data.categoria);
        } else {}
      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error");
      }
    });
  }

  function ventasEnviadas() {

    $.ajax({
      url: "<?= $this->url ?>/ajax_Datos_Venta",
      type: "POST",
      data: {
        "idventa": $("#ventaseleccionada").val()
      },
      dataType: "JSON",
      success: function(data) {
        $('#VentasEnviadas').html(data.ventasEnviadas);
        $("#DeudaVenta").text(data.montoactual);
        productopagar();
        $(`#TotalItemVentaDetalle`).val(data.totalitems);

        $("#DeudaVenta").text(data.montoactual);
        $("#SubtotVenta").text(data.montototal);
        $("#ItemsNumVenta span").text(data.totalitems);
        $("#totalVenta").text(data.montototal);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error");
      }
    });


  }

  function productopagar() {
    let cantidadItem = 0;
    let subtotal = 0;
    $("#contenedorPV .chechekPVA").each(function(indice, elemento) {
      let verificar = $(elemento).is(":checked");
      if (verificar) {
        //let producto = $(elemento).val();
        //cantidadItem += parseFloat($(`#CantidadPV${producto}`).text());
        //subtotal += parseFloat($(`#PrecioPV${producto}`).text());
        let detalle = $(elemento).val();
        cantidadItem += parseFloat($(`#CantidadPV${detalle}`).text());
        subtotal += parseFloat($(`#PrecioPV${detalle}`).text());
      } else {
        cantidadItem += 0;
        subtotal += 0;
      }
    });
    $("#SubtotVenta").text(subtotal);
    $("#ItemsNumVenta span").text(cantidadItem);
    $("#totalVenta").text(subtotal);
  }

  function EnviarPedido() {

    $("#generarpedido").attr("disabled", true);
    $("#generarpedido").html("<i class='fa fa-spin fa-spinner'></i>");

    let idventa = $("#ventaseleccionada").val();
    var procesados = 0;
    var DeudaTotal = 0;
    var CantidadItem = 0;

    //TODO:-------------------------------Guardamos los produtos en ventadetalle------------------------------------------------

    if (idventa != "") {
      let ProductosDataLS = JSON.parse(localStorage.getItem(`productos_${idventa}`));
      console.log(ProductosDataLS);
      if (ProductosDataLS != null) {
        /*
        $.ajax({
          url: "<?= $this->url ?>/ajax_vd_comanda",
          type: "POST",
          data: {
            "idventa": idventa,
          },
          dataType: "JSON",
          success: function(data) {

            if (data.status) {
              
              for (value of ProductosDataLS) {

                $(`#ProductoLista${value.id_producto}`).removeClass("productoIsSelected");
                CantidadItem += parseFloat(value.cantidad);
                DeudaTotal += parseFloat(value.total_pagar);

                $.ajax({
                  url: "<?= $this->url ?>/ajax_EnviarPedido",
                  type: "POST",
                  data: {
                    "idventa": idventa,
                    "idproducto": value.id_producto,
                    "CantidadProducto": value.cantidad,
                    "opcion": value.opcion,
                    "precio_producto": value.precio_producto,
                    "id_variante": value.id_variante,
                    "text_proudcto": value.text_proudcto,
                    "nombrevariante": value.text_variante
                  },
                  dataType: "JSON",
                  success: function(data) {


                  },
                  error: function(jqXHR, textStatus, errorThrown) {
                    alert("error ajax_EnviarPedido");
                  }
                });
              }
              


            }

          },
          error: function(jqXHR, textStatus, errorThrown) {
            alert("error");
          }
        });
        */

        $.ajax({
          url: "<?= $this->url ?>/ajax_EnviarPedido",
          type: "POST",
          data: {
            "idventa": idventa,
            "dataproductos": JSON.stringify(ProductosDataLS),
          },
          dataType: "JSON",
          success: function(data) {
            ActualizarVenta(data.cantidaditem, data.deudaTotal);
          },
          error: function(jqXHR, textStatus, errorThrown) {
            alert("error ajax_EnviarPedido");
          }
        });

      } else {
        Lobibox.alert("info", {
          title: "Informacion",
          msg: "No existen productos",
        });
      }
    } else {
      Lobibox.alert("info", {
        title: "Informacion",
        msg: "Tienes que seleccionar una venta",
      });
    }
    //TODO:--------END guardamos productos ventadetall-------
  }

  function imprimircomanda() {
    let venta = $(`#ventaseleccionada`).val();
    let url = "<?= $this->url ?>/imprimir_comanda/" + venta;
    window.open(url, "COMANDA", 'fullscreen=yes, scrollbars=auto');
  }

  function imprimircomandaINICIO(id) {
    let url = "<?= $this->url ?>/imprimir_comanda/" + id;
    window.open(url, "COMANDA", 'fullscreen=yes, scrollbars=auto');
  }

  function ActualizarVenta(CantidadItem, DeudaTotal) {

    let idventa = $("#ventaseleccionada").val();
    $.ajax({
      url: "<?= $this->url ?>/ajax_Actualiar_venta",
      type: "POST",
      data: {
        "CantidadItem": CantidadItem,
        "DeudaTotal": DeudaTotal,
        "idventa": idventa
      },
      dataType: "JSON",
      success: function(data) {


        //todo: para que imprima comanda
        //? que imprima automaticamente

        if (data.tipoimpresora == 0) {
          $.ajax({
            url: '<?= $this->url ?>/imprimircomanda',
            type: 'POST',
            data: {
              "dataLS": JSON.stringify(ProductosArr)
            }
          });
        }


        if (data.tipoimpresora == 1) {
          imprimircomanda();
        }


        opcionesmenu();
        $("#pedidosventa").empty();
        ProductosArr = [];
        $("#msjNohayPro").show();
        $("#generarpedido").attr("disabled", false);
        $("#generarpedido").text("GENERAR PEDIDO");
        localStorage.removeItem(`productos_${idventa}`);
        DatosSecundariosPedido();
        ventasEnviadas() //? trae todas las los datos de ventadetalle


        // setTimeout('comandar()', 3000);

        //swal(`PEDIDOS PROCESADOS ${CantidadItem}`);


      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error");
        $("#generarpedido").attr("disabled", false);
        $("#generarpedido").text("GENERAR PEDIDO");
      }
    });

  }

  function modal_comanda(venta) {
    if (venta === 0 || !venta) {
      venta = $("#ventaseleccionada").val();
    }
    ventaimprimir = venta;
    $('#modal_comanda').modal({
      backdrop: 'static',
      keyboard: false
    });
    $.ajax({
      url: "<?= $this->url ?>/showcomandaopcion/" + venta,
      type: "POST",
      dataType: "JSON",
      success: function(data) {
        $('#comandacocina').hide();
        $('#comandaBar').hide(); // ID was comandaBar in the HTML!
        if (data.cocina > 0) {
          $('#comandacocina').show();
        }
        if (data.barra > 0) {
          $('#comandaBar').show();
        }
        $("#modal_comanda").modal('show');
      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error");
      }
    });
  }

  function modal_comanda_directa(venta) {
    if (venta === 0 || !venta) {
      venta = $("#ventaseleccionada").val();
    }
    ventaimprimir = venta;
    $.ajax({
      url: "<?= $this->url ?>/showcomandaopcion/" + venta,
      type: "POST",
      dataType: "JSON",
      success: function(data) {
        if (data.cocina > 0) {
          imprimir2('cocina');
        }
        if (data.barra > 0) {
          if (data.cocina > 0) {
            setTimeout(function() {
              imprimir2('bar');
            }, 600);
          } else {
            imprimir2('bar');
          }
        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error");
      }
    });
  }

  function imprimir2(tipo) {
    var Url = '<?= $this->url ?>/printshowcomanda/' + ventaimprimir + '/' + tipo;
    window.open(Url, 'Pruebas', 'fullscreen=yes, scrollbars=auto');
  }



  function irGrabar() {
    $.ajax({
      url: "<?= $this->url ?>/ajax_DatosPago",
      type: "POST",
      dataType: "JSON",
      success: function(data) {

        if (data.estadoventa) {
          $(`#ReturnChange span`).text("0.00");
          $(`#ReturnChange span`).addClass("red");
          $('#AddSale .modal-title').html('<i class="fas fa-cash-register mr-2"></i> PROCESAR VENTA');
          $("#tipocard").hide();
          $("#vencimiento").hide();
          $("#numberoperacion").hide();
          $('#operacion').attr('minLength', 4);
          $('#operacion').attr('maxlength', 4);
          if ($('#formapago').val() == 'CONTADO') {
            $('#metodo').show();
            $('#pagado').show();
            $("#descontado").show();
            $("#vencimiento").hide();
            $('.ReturnChange').show();
          } else {
            $('#metodo').hide();
            $('#pagado').hide();
            $("#descontado").hide();
            $("#vencimiento").show();
            $('.ReturnChange').hide();
          }
          $('#metodopago').change(function(e) {
            if ($('#metodopago').val() == 'EFECTIVO') {
              $('#tipocard').hide();
              //$('#numberoperacion').hide();
            } else if ($('#metodopago').val() == 'TARJETA') {
              $('#tipocard').show();
              //($('#numberoperacion').show();
            } else if ($('#metodopago').val() == 'YAPE') {
              $('#tipocard').hide();
              console.log('YAPE');
            } else if ($('#metodopago').val() == 'PLIN') {
              $('#tipocard').hide();
              console.log('PLIN');
            } else if ($('#metodopago').val() == 'TRANSFERNECIA') {
              $('#tipocard').hide();
              console.log('TRANSFERNECIA');
            } else {
              $('#tipocard').hide();
              console.log('VACIO');
            }
          });

          $("#customerName span").text(data.nombreapellido);
          $('[name="cliente"]').val(data.cliente);
          $('[name="clientes"]').val(data.nombrecompleto);
          $('[name="tipoventa"]').val(data.tipoventa);
          $("#MontoPagar2 span").text(data.monotaPagar);
          $("#ItemsNum2 span").text(data.totalItems);
          $("#pago").val(data.monotaPagar);
          $('#AddSale').modal('show');
        } else {
          Lobibox.alert("info", {
            title: "Informacion",
            msg: "La mesa ya fue cobrada"
          });
          setTimeout(window.location.reload(), 3000);
        }

        $("#ProcesarVenta").attr("disabled", false);
        $("#ProcesarVenta").text("PROCESAR VENTA");


      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error");
        $("#ProcesarVenta").attr("disabled", false);
        $("#ProcesarVenta").text("PROCESAR VENTA");
      }
    });
    // Total data is now handled in the success callback for better synchronization
  }

  function grabar() {
    let idventa = $("#ventaseleccionada").val();
    let keyLS = JSON.parse(localStorage.getItem(`productos_${idventa}`));
    console.log(keyLS);
    $("#ProcesarVenta").attr("disabled", true);
    $("#ProcesarVenta").html("<i class='fa fa-spin fa-spinner'></i>");
    $('#form_vender')[0].reset(); // reset form on modals
    $('.form-group').removeClass('has-error'); // clear error class
    $('.help-block').empty(); // clear error string
    if (keyLS) {
      if (keyLS.length > 0) {
        Lobibox.alert("info", {
          title: "Informacion",
          msg: "En pedido, hay productos seleccionados",
        });
      } else {
        irGrabar();
      }

    } else {
      irGrabar();
    }
  };

  function pagorapido(idventa) {

    $('#form_vender_rapido')[0].reset(); // reset form on modals
    $('.form-group').removeClass('has-error'); // clear error class
    $('.help-block').empty(); // clear error string
    $("#ventaapagar").val(idventa);
    $(`#btn-cobrar-${idventa}`).attr("disabled", true);
    $(`#btn-cobrar-${idventa}`).html("<i class='fa fa-spin fa-spinner'></i>");
    DatosPagoRapidoRapido(idventa);


  }

  function DatosPagoRapidoRapido(idventa) {

    $.ajax({
      url: "<?= $this->url ?>/ajax_DatosPagoRapido",
      type: "POST",
      data: {
        "idventa": idventa
      },
      dataType: "JSON",
      success: function(data) {
        if (data.estadoventa) {
          //? ----------Proceso mostrar-----------
          $(`#ReturnChangerapido span`).text("0.00");
          $(`#ReturnChangerapido span`).addClass("red");

          $('#ventarapida').modal('show');
          $('#ventarapida .modal-title').html('<i class="fas fa-bolt mr-2"></i> VENTA RÁPIDA');
          $("#tipocardrapido").hide();
          $("#vencimientorapido").hide();

          $('#formapagorapido').change(function(e) {

            if ($('#formapagorapido').val() == 'CONTADO') {
              $('#metodorapido').show();
              $('#pagadorapido').show();
              $("#descontadorapido").show();
              $("#vencimientorapido").hide();
              $('.ReturnChangeContent').show();
            } else {
              $('#metodorapido').hide();
              $('#pagadorapido').hide();
              $("#descontadorapido").hide();
              $("#vencimientorapido").show();
              $('.ReturnChangeContent').hide();
            }

          });

          $('#metodopagorapido').change(function(e) {
            if ($('#metodopagorapido').val() == 'EFECTIVO') {
              $('#tipocardrapido').hide();
              //$('#numberoperacion').hide();
            } else if ($('#metodopagorapido').val() == 'TARJETA') {
              $('#tipocardrapido').show();
              //$('#numberoperacion').hide();
            } else if ($('#metodopagorapido').val() == 'YAPE') {
              $('#tipocardrapido').hide();
              console.log('YAPE');
            } else if ($('#metodopagorapido').val() == 'PLIN') {
              $('#tipocardrapido').hide();
              console.log('PLIN');
            } else if ($('#metodopagorapido').val() == 'TRANSFERNECIA') {
              $('#tipocardrapido').hide();
              console.log('TRANSFERNECIA');
            } else {
              $('#tipocardrapido').hide();
              console.log('VACIO');
            }
          });

          //?--------------------------

          $("#MontoPagar2rapido span").text(data.monotaPagar);
          $("#ItemsNum2rapido span").text(data.totalItems);
          $('[name="clienterapido"]').val(data.cliente);
          $('[name="formapagorapido"]').val(data.formapago);
          $('[name="formapagorapido"]').val(data.formapago);
          $('[name="clientesrapido"]').val(data.nombrecompleto);
          $('[name="pagorapido"]').val(data.monotaPagar);
          $('[name="tipoventarapida"]').val(data.tipoventa);

          if (data.formapago == "CONTADO") {
            $('#metodorapido').show();
            $('#pagadorapido').show();
            $("#descontadorapido").show();
            $("#vencimientorapido").hide();
            $('.ReturnChangeContent').show();
          } else {
            $('#metodorapido').hide();
            $('#pagadorapido').hide();
            $("#descontadorapido").hide();
            $("#vencimientorapido").show();
            $('.ReturnChangeContent').hide();
          }
        } else {
          Lobibox.alert("info", {
            title: "Informacion",
            msg: "La mesa ya fue cobrada"
          });
          setTimeout(window.location.reload(), 3000);
        }

        $(`#btn-cobrar-${idventa}`).attr("disabled", false);
        $(`#btn-cobrar-${idventa}`).html("<i class='fa fa-money'></i>");


      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error");
      }
    });

  }



  function MasMenos(estadoBTN, producto, key_primary) {
    if (estadoBTN) {
      //? si es true ese por que selecciono el boton mas 
      DescontarStock(producto, key_primary, estadoBTN);
    } else {
      RestablecerStockOne(producto, key_primary, estadoBTN);
    }
  }

  function RestablecerStockOne(idproducto, key_primary, estadoBTN) {

    $(`#BotonMenos-${key_primary}`).attr("disabled", true);
    $(`#BotonMenos-${key_primary}`).html("<i class='fa fa-spin fa-spinner'></i>");
    $.ajax({
      url: "<?= $this->url ?>/ajax_RestablecerStockOne",
      type: "POST",
      data: {
        'idproducto': idproducto
      },
      dataType: "JSON",
      success: function(data) {
        VerificarProducto(data.EstadoProducto, idproducto, key_primary, estadoBTN);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error metodo RestablecerStockOne");
      }
    });

  }

  function DescontarStock(idproducto, key_primary, estadoBTN) {
    $(`#BotonMas-${key_primary}`).attr("disabled", true);
    $(`#BotonMas-${key_primary}`).html("<i class='fa fa-spin fa-spinner'></i>");
    $.ajax({
      url: "<?= $this->url ?>/ajax_descontar_stock",
      type: "POST",
      data: {
        'idproducto': idproducto,
      },
      dataType: "JSON",
      success: function(data) {
        VerificarProducto(data.EstadoProducto, idproducto, key_primary, estadoBTN);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error");
      }
    });
  }

  function VerificarProducto(estado, idproducto, key_primary, estadoBTN) {
    let indexBusqueda;
    let venta = $("#ventaseleccionada").val();

    //? Con el key_primary buscamos en que indice se encuentra y asi traer el objetos 
    for (index in ProductosArr) {
      if (ProductosArr[index].key_primary == key_primary) {
        indexBusqueda = index;
        break;
      } else {
        continue;
      }
    }

    if (estado) {
      //? hay stock suficiente para otra seleccion
      $(`#BotonMas-${key_primary}`).attr("disabled", false);
      $(`#BotonMas-${key_primary}`).html("<i class='fa fa-plus'></i>");
      $(`#ProductoLista${idproducto}`).removeClass("opacar_div");
      $(`#Agotado${idproducto}`).remove();
      $(`#boton-product-${idproducto}`).attr("disabled", false);

      ProductosArr[indexBusqueda].EstadoMas = false;

    } else {
      //? bloquear producto
      ProductosArr[indexBusqueda].EstadoMas = true; // cuando es true  se bloqueea el producto
      $(`#BotonMas-${key_primary}`).attr("disabled", true);
      $(`#BotonMas-${key_primary}`).html("<i class='fa fa-plus'></i>");
      $(`#boton-product-${idproducto}`).attr("disabled", true);
      $(`#ProductoLista${idproducto}`).addClass("opacar_div");
      $(`#boton-product-${idproducto}`).append(`<label id="Agotado${idproducto}" class="agotado">AGOTADO</label>`);
    }

    //? Registrar 1 cantidad mas en el Array y despues lo registramos en el localstorage
    let CantidadTotal;
    if (estadoBTN) {
      CantidadTotal = ProductosArr[indexBusqueda].cantidad + 1; //Presiono el boton mas
    } else {
      CantidadTotal = ProductosArr[indexBusqueda].cantidad - 1;
    }

    ProductosArr[indexBusqueda].cantidad = CantidadTotal;
    let TotalPagar = parseFloat(ProductosArr[indexBusqueda].precio_producto * CantidadTotal);
    ProductosArr[indexBusqueda].total_pagar = TotalPagar;

    if (ProductosArr[indexBusqueda].cantidad == 1) {
      ProductosArr[indexBusqueda].EstadoMenos = true;
    } else {
      ProductosArr[indexBusqueda].EstadoMenos = false;
    }

    localStorage.setItem(`productos_${venta}`, JSON.stringify(ProductosArr));
    DatosSecundariosPedido();
    drawDataProductoLS(estado, idproducto);
  }

  /*
  function RestablecerStockOne(idproducto) {
    $.ajax({
      url: "<?= $this->url ?>/ajax_RestablecerStockOne",
      type: "POST",
      data: {
        'idproducto': idproducto
      },
      dataType: "JSON",
      success: function(data) {
        if (data.estandar || data.combo) {
          if (data.EstadoProducto) {
            categoria(data.categoria);
            $(`#BotonMas${idproducto}`).attr("disabled", false)
          }
        } else {

        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error metodo RestablecerStockOne");
      }
    });
  }
*/
  function drawdatoshead(monto) {
    let html = `
    <div class="col-lg-12">
      <div class="panel panel-default">
        <div class="panel-title"></div>
        <div class="panel-body text-center">
        <h1 class="panel-title label label-success">Cancelado: S/${monto}</h1>
        </div>
      </div>
    </div>
    `;
    return html;
  }

  function VerificarVenta() {
    let totalpagado = 0;
    $.ajax({
      url: "<?= $this->url ?>/ajax_VerificarVenta",
      type: "POST",
      dataType: "JSON",
      success: function(data) {
        if (data.status) {
          //TODO: cuando la deuda ya esta cancelada entras este bloque
          $("#Categoriaproducto").hide();
          $("#topbuscador").hide();
          $("#CategriaSeleccionar").hide();
          $("#VentasEnviadas").hide();
          $("#msjNohayPro").hide();
          $("#generarpedido").attr("disabled", true);
          $("#ProcesarVenta").attr("disabled", true);
          $("#Genrara_Se_Pe").show();
          $("#VentaGenerada").show();
          $("#messageVide").hide();
          if (data.dividircuenta == true) {
            //? si la venta es dividir cuenta ocultamos estos div
            $("#contenedorfour").hide();
            $("#VentaGenerada2").hide();
            $("#contenedorthree").hide();
            $("#contenedortwo").hide();

            $("#contenedorfive_head").show(); //? mostramos el contenedor donde estan los clientes de cuenta dividida

            $("#contenedorfive_button").remove(); //? eliminamos el boton del proceso de pago si es cuenta divida
            //todo: contamos el monto a pagar de cada cliente del local storage
            clientesCD.forEach(function(value, index) {
              totalpagado += value.montopagar;
            });
            $("#contenedorfive_head").html(drawdatoshead(totalpagado));
            //todo: ----------------------------------end------------------------------------
          } else {
            $("#contenedorfour").show();
            $("#VentaGenerada2").show();
            $("#contenedorthree").show();
            $("#contenedortwo").show();
          }

          //? eliminamos los checheds 
          $("#divChechek").remove();
          //?----------end------------
          $("#botonestop").removeClass("col-lg-6");
          $("#botonestop").addClass("col-lg-12");
          opcionesmenu();
          $("#clientes").attr('readonly', true);
          $("#cliente").val("");
        } else {
          opcionesmenu();
          //ProductosSeleccionados();
          //cambiarventa(); //! Se tiene que eliminar 
          categoriaSeleccionar();
          ventasEnviadas();
          DatosSecundariosPedido(data.venta, null);
          $("#clientes").val(data.clientes);
          $("#cliente").val(data.cliente);

          checkeds();
        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error metodo RestablecerStockOne");
      }
    });
  }

  //TODO: Este metodo nos sirve para verificar si esta activo o no el checked de dividir cuenta
  function checkeds() {
    $.ajax({
      url: "<?= $this->url ?>/ajax_checkeds",
      type: "POST",
      dataType: "JSON",
      success: function(data) {
        if (data.status) {
          //? Si esta activo llenamos los datos de su enta total que tiene la venta
          $('#contenedorfive_head').html(data.datahtml);
          //? -------------------------------

          $("#chkDVcuenta").attr('checked', true);
          $("#contenedorone").hide('fast');
          $("#contenedortwo").hide('fast');
          $("#contenedorthree").hide('fast');
          $("#contenedorfour").hide('fast');
          $('#contenedorfive_head').show('slow');
          $("#contenedorfive_body").show('slow');
          $("#contenedorfive_button").show('slow');

        } else {
          //? Si esta inactivo llenamos los datos de su deuda total vacio
          $('#contenedorfive_head').html(data.datahtml);
          //? -------------------------------
          $("#chkDVcuenta").attr('checked', false);
          $("#contenedorone").show('slow');
          $("#contenedortwo").show('slow');
          $("#contenedorthree").show('slow');
          $("#contenedorfour").show('slow');
          $("#contenedorfive_body").hide('fast');
          $('#contenedorfive_head').hide('fast');
          $("#contenedorfive_button").hide('fast');
        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error de ajax metodo checkeds");
      }
    });
  }

  function grabarcliente2(identificador, idventa) {
    $("#form_cliente2")[0].reset();
    let footer = document.querySelector("#divfooter");
    footer.innerHTML = `
    <button type="button" id="btnSavecliente2" onclick="savecliente2(${identificador}, ${idventa})" class="btn btn-primary">GRABAR</button>
    <button type="button" class="btn btn-danger" data-dismiss="modal" >CERRAR</button>`;
    $('#cliente_form2').modal('show');
    $('.modal-title').text('CREAR CLIENTE 2');
  }

  function procesodividir() {
    var estado;
    if ($(`#chkDVcuenta`).is(':checked')) {
      estado = 1;
    } else {
      estado = 0;
    }

    $.ajax({
      url: "<?= $this->url ?>/ajax_procesodividir",
      type: "POST",
      data: {
        'estado': estado
      },
      dataType: "JSON",
      success: function(data) {

        if (data.dcuenta == '1') {
          $('#contenedorfive_head').html(data.datahtml); //insertamos del contenido
          $("#contenedorfive_body").show();
          $("#contenedorfive_button").show();
          $("#contenedorone").hide('fast');
          $("#contenedortwo").hide('fast');
          $("#contenedorthree").hide('fast');
          $("#contenedorfour").hide('fast');
          $("#contenedorfive_body").show('slow');
          $('#contenedorfive_head').show('slow'); //mostramos el div donde esta todo el contenido

          /*
          let Keypagadores = localStorage.getItem('pagadores');
          if (Keypagadores) {

          } else {
            let primerdato = [data.cliente, data.montoactual, data.venta];
            let dataLocalStorage = JSON.stringify([primerdato]);
            localStorage.setItem('pagadores', dataLocalStorage);
          }*/

        } else {
          $('#contenedorfive_head').html("");
          $("#contenedorone").show('slow');
          $("#contenedortwo").show('slow');
          $("#contenedorthree").show('slow');
          $("#contenedorfour").show('slow');
          $('#contenedorfive_head').hide('fast');
          $("#contenedorfive_body").hide('fast');
          $("#contenedorfive_button").hide('fast')
        }

      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error de ajax metodo checkeds");
      }
    });
  }



  function guardarLS(idventa) {

    localStorage.setItem(`cuentadividida_${idventa}`, JSON.stringify(clientesCD));

    //aca ira una funcion que volvera a mostrar todos los datos que  hay en el localstorage

  }

  function asignarindice(idventa) {
    let LS_datos = JSON.parse(localStorage.getItem(`cuentadividida_${idventa}`));
    let indiceinsert;
    if (LS_datos == null) {
      indiceinsert = 0;
    } else {
      if (LS_datos.length > 0) {
        let indiceEncont = LS_datos.length - 1; //obtenemos el ultimo arreglo insertado
        let dataArreglo = LS_datos[indiceEncont];
        indiceinsert = dataArreglo.indice + 1;
      } else {
        indiceinsert = 0;
      }

    }
    return indiceinsert;
  }

  function montopagarL(ventaid) {

    let deudatotal = parseFloat($(`#ventatotal${ventaid} span`).text());
    let montopagar;
    if (clientesCD.length == 0) {
      montopagar = deudatotal
    } else {
      let dividir = clientesCD.length + 1;
      montopagar = deudatotal / dividir;
    }
    return montopagar
  }

  function restablecerL(ventaid) {
    let deudatotal = parseFloat($(`#ventatotal${ventaid} span`).text());
    let montopagar;
    if (clientesCD.length == 0) {
      montopagar = deudatotal
    } else {
      let dividir = clientesCD.length;
      montopagar = deudatotal / dividir;
    }
    return montopagar
  }

  function crearDATA(ventaid, t_impresora) {

    let indi_corre = asignarindice(ventaid);
    let montopagarx = montopagarL(ventaid);
    let datacliente = {
      cliente: 1,
      textocliente: "00000000 | CLIENTES VARIOS ",
      tipoventa: "BOLETA",
      tipoimpresora: t_impresora,
      indice: indi_corre,
      montopagar: montopagarx,
      venta: ventaid,
      ventaindividual: '',
      estadoventa: false
    };
    clientesCD.push(datacliente);

    //TODO: actualizamos el monto a pagar de todos
    if (clientesCD.length > 0) {
      clientesCD.forEach(function(value, index) {
        value.montopagar = montopagarx;
      })
      //TODO: -------------------------end---------------------------
    }
  }

  function dataHTML(value) {
    let dataHtml = `
    <div class="col-lg-12">
              <div class="row">
                <div class="col-lg-12">
                  <div class="panel panel-default">
                    <div class="panel-title text-center"></div>
                    <div class="panel-body">
                      <div class="row" style="margin-bottom:10px">
                        <div class="col-lg-12">
                          <div class="input-group">
                            <input type="hidden" value="${value.cliente}" class="form-control" name="cliente${value.indice}" id="cliente${value.indice}">
                            <input ${value.estadoventa ? "readonly" : ""} type="text" value="${value.textocliente}" onKeyup="IndetiInput(${value.indice})" class="form-control" placeholder="CLIENTE" name="clientes${value.indice}" id="clientes${value.indice}" autocomplete="off">
                            <span class="input-group-btn">
                              <button ${value.estadoventa ? "disabled" : ""} type="button" class="btn waves-effect waves-light btn-primary" onclick="grabarcliente2(${value.indice}, ${value.venta})"><i class="fa fa-user-plus"></i></button>
                            </span>
                            <span class="help-block"></span>
                          </div>
                        </div>
                      </div>
                      <div class="row">
                        <div class="col-lg-4">
                          <select ${value.estadoventa ? "disabled" : ""} id="tipoventa${value.indice}" name="tipoventa${value.indice}" class="form-control" onChange="updateSelect(${value.indice}, ${value.venta})">
                            <option ${value.tipoventa == "BOLETA" ? 'selected' : ''} value="BOLETA">BOLETA</option>
                            <option ${value.tipoventa == "FACTURA" ? 'selected' : ''}  value="FACTURA">FACTURA</option>
                            <option ${value.tipoventa == "OTROS" ? 'selected' : ''} value="OTROS">TICKET</option>
                          </select>
                          <span class="help-block"></span>
                        </div>
                        <div class="col-lg-4">
                        </div>
                        <div class="col-lg-4 text-center">`;

    if (value.estadoventa == true) {
      dataHtml += `<button  class="btn btn-warning" onClick="imprimircomprobante(${value.tipoimpresora}, ${value.ventaindividual})"><i class="fa fa fa-print"></i></button>`;
    } else {
      dataHtml += `<button  class="btn btn-danger" onClick="delete_CD(${value.indice}, ${value.venta})"><i class="fa fa-trash"></i></button>`;
    }

    dataHtml += `</div></div></div></div></div></div></div>`;

    return dataHtml;
  }

  function delete_CD(indiceP, ventaid) {
    //clientesCD = JSON.parse(localStorage.getItem('cuentadividida'));
    let indiceDetele;
    clientesCD.forEach(function(value, index) {
      if (value.indice == indiceP) {
        indiceDetele = index;
      }
    });

    clientesCD.splice(indiceDetele, 1);

    //todo---------------------------------
    let montopagarx = restablecerL(ventaid);
    if (clientesCD.length > 0) {
      clientesCD.forEach(function(value, index) {
        value.montopagar = montopagarx;
      })
    }
    //todo--------------------------------

    guardarLS(ventaid);
    //TODO: Pones los valores que le toca
    drawDataLS(ventaid);
  }

  function updateSelect(identificador, ventaid) {
    //TODO:-----------------------------------------------------------------------
    //? El identificador es el indice que guarda el objeto con el nombre indice,
    //? Este indice no se repetira almenos que se elimine todos los objetos el array
    //TODO:-----------------------------------------------------------------------

    //let clientesCD = JSON.parse(localStorage.getItem('cuentadividida'));
    let dataselect = document.querySelector(`#tipoventa${identificador}`);
    clientesCD.forEach(function(value, index) {
      if (value.indice == identificador) {
        value.tipoventa = dataselect.value;
        localStorage.setItem(`cuentadividida_${ventaid}`, JSON.stringify(clientesCD));
      }
    });
  }

  function updateLS(identificador, idcliente, textoClienteXX) {
    //let clientesCD = JSON.parse(localStorage.getItem('cuentadividida'));
    clientesCD.forEach(function(value, index) {
      if (value.indice == identificador) {
        value.cliente = idcliente;
        value.textocliente = textoClienteXX;
        localStorage.setItem(`cuentadividida_${value.venta}`, JSON.stringify(clientesCD));
      }
    });
    //console.log(JSON.parse(localStorage.getItem('cuentadividida')))
  }
  //----------------------------------------Funcionalidad--------------------------------------------------
  function IndetiInput(identificador) {
    let texto = document.querySelector(`#clientes${identificador}`).value;

    $(`#clientes${identificador}`).autocomplete({
      source: "<?= $this->url ?>/auto_cuentadividida",
      length: 2,
      select: function(event, ui) {
        document.querySelector(`#cliente${identificador}`).value = ui.item.cliente;
        let textoCliente = ui.item.textocliente;
        updateLS(identificador, ui.item.cliente, textoCliente);
      }
    });
  }

  function drawDataLS(ventaid) {
    $('#contenedorfive_body').html('');
    clientesCD = JSON.parse(localStorage.getItem(`cuentadividida_${ventaid}`));
    if (clientesCD === null) {
      clientesCD = [];
    } else {
      for (value of clientesCD) {
        $(`#contenedorfive_body`).append(dataHTML(value));
      }
    }
  }

  function AddPagador(ventaid, tipoimpresora) {

    crearDATA(ventaid, tipoimpresora); //al crear un dato lo insertamos en la matriz
    guardarLS(ventaid); //guardamos la matris en localStorage
    drawDataLS(ventaid); //mostramos todo lo que hay almacenado en el localstorage

  }

  function PS_cuentadividida(venta) {
    $(`#contenedorfive_button button`).attr("disabled", true);
    $(`#contenedorfive_button button`).html(`<i class="fa fa-spin fa-spinner"></i>`);
    let estadoconsumo;
    if ($("#chkConsumo").is(":checked")) {
      estadoconsumo = 1;
    } else {
      estadoconsumo = 0;
    }
    //let datosLS = JSON.parse(localStorage.getItem('cuentadividida'));
    clientesCD.forEach(function(value, index) {
      let identificador = value.indice;
      $.ajax({
        url: "<?= $this->url ?>/ajax_PS_cuentadividida",
        type: "POST",
        data: {
          'cliente': value.cliente,
          'montopagar': value.montopagar,
          'venta': value.venta,
          'tipoventa': value.tipoventa,
          'idexMatriz': index,
          'estadoconsumo': estadoconsumo,
          'indentificador': value.indice
        },
        dataType: "JSON",
        success: function(data) {
          if (data.status) {
            clientesCD.forEach(function(value, index) {
              if (value.indice == identificador) {
                value.ventaindividual = data.idventa;
                value.estadoventa = true;
                localStorage.setItem(`cuentadividida_${value.venta}`, JSON.stringify(clientesCD));
              }
            });
            //todo: mostramos y ocultamos los elementos del DOM de acuerdo al estado de la venta y procesados
            VerificarVenta(); //? hace ma mayoria del proceso
            drawDataLS(venta); //? mostramos otros datos pero #contenedorfive_body para que imprima
            //todo: ---------------------------------end-----------------------------------------------
            $(`#contenedorfive_button button`).attr("disabled", false);
            $(`#contenedorfive_button button`).text("PROCESAR VENTA");
          }

        },
        error: function(jqXHR, textStatus, errorThrown) {
          alert("error de ajax metodo PS_cuentadividida");
          $(`#contenedorfive_button button`).attr("disabled", false);
          $(`#contenedorfive_button button`).text("PROCESAR VENTA");
        }
      });
    });
  }

  function open_editarproducto() {
    $('#modal_editarpedido').modal({
      backdrop: 'static',
      keyboard: false
    });
    $('.modal-title').text('EDITAR PEDIDO');
    table_editarproducto = $('#tabla_editarproducto').DataTable({
      language: {
        "decimal": "",
        "emptyTable": "No hay información",
        "info": "Mostrando _START_ a _END_ de _TOTAL_ Entradas",
        "infoEmpty": "Mostrando 0 to 0 of 0 Entradas",
        "infoFiltered": "(Filtrado de _MAX_ total entradas)",
        "infoPostFix": "",
        "thousands": ",",
        "lengthMenu": "Mostrar _MENU_ Entradas",
        "loadingRecords": "Cargando...",
        "processing": "Procesando...",
        "search": "Buscar:",
        "zeroRecords": "Sin resultados encontrados",
        "paginate": {
          "first": "Primero",
          "last": "Ultimo",
          "next": "Siguiente",
          "previous": "Anterior"
        }
      },
      "destroy": true,
      "ajax": {
        "url": "<?= $this->url ?>/ajax_list_editarproducto/" + $('#ventaseleccionada').val(),
        "type": "POST"
      },
    });

    $('#modal_editarpedido').modal('show'); // show bootstrap modal when complete loaded
  };

  function quitardetalle(detalle) {
    $.ajax({
      url: "<?= $this->url ?>/ajax_quitardetalle/" + detalle,
      type: "GET",
      dataType: "JSON",
      success: function(data) {
        if (data.status) {
          table_editarproducto.ajax.reload(null, false);
        }
      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert("error de ajax metodo checkeds");
      }
    });
  }
</script>

