var tabla;
var despachovalido = [];
//declaramos variables necesarias para trabajar con las Ventas y sus detalles

var cont = 0;
var cont1 = 0;

$("#btnGuardar").hide();

//funcion que se ejecuta al inicio
function init() {
  mostrarform(false, false);
  //listar();
  listarclientepordiavisita();

  $("#btnGuardardespachoestado").on("click", function (e) {
    /*	 Evitamos el envío real del formulario  */
    e.preventDefault();
    $("#myModalFechadespachoestado").modal("hide");
    guardarestado();
  });

  $("#btnGuardarFechadespacho").click(function () {
    $("#fecha_despacho").val($("#fecha_despacho1").val());
    $("#myModalFechadespacho").modal("hide");
    $("#fecha_despacho1").val("");
    console.log('	$("#fecha_despacho").val(): ' + $("#fecha_despacho").val());
    guardaryeditar();
  });

  $("#btnGuardarFechayEstadodespacho").click(function (e) {
    e.preventDefault();
    $("#myModalFechayEstadodespachogrupo").modal("hide");
    guardarfechayestadodespacho();
  });
}

function idp(data) {
  const arraySubcadenas = data.split("-");
  return arraySubcadenas[1];
}

function actualizar() {
  location.reload();
}

//funcion limpiar
function limpiar() {
  $("#formulario").data("bootstrapValidator").resetForm(true);
  document.getElementById("formaguardarcliente").reset();
  $("#detalles").html("");
  /*
  $("#detalles").html(r);
   $("#tipo_documento").val("");
  $("#num_documento").val("");
  $("#nombre").val("");
  $("#tipo_comprobante").val("");
  $("#serie_comprobante").val("");
  $("#num_comprobante").val("");
  $("#ordendecompra").val("");
  $("#diacredito").val("");
  $("#zona").val("");
  $("#impuesto").val("");
  $("#montosubtotal").val(0);
  $("#montoapagarbs").val(0);
  $("#validar").val(0);
  $("#total_venta").val(0);
  $("#total_venta1").val(0);
  $(".filas").remove();
  $("#total").html("0");
  $("#idtransportista").val(0);
  $("#idtransportista").selectpicker("refresh");
  $("#idtransporte").val(0);
  $("#idtransporte").selectpicker("refresh");
  $("#idalmacen").val(0);
  $("#idalmacen").selectpicker("refresh");
  $("#idvendedor").val(0);
  $("#idvendedor").selectpicker("refresh");
  $("#idcliente").val(0);
  $("#idcliente").selectpicker("refresh");
  $("#idclientedespacho").html("<option value='0'></option>");
  $("#idclientedespacho").selectpicker("refresh");
  $("#licencia_licor").val(""); */
  //buscarTasaDeCambio();

  //obtenemos la fecha actual
  var now = new Date();
  var today = new Date();
  var dd = ("0" + now.getDate()).slice(-2);
  var mm = ("0" + (now.getMonth() + 1)).slice(-2);
  var yyyy = now.getFullYear();
  var today = yyyy + "-" + mm + "-" + dd;
  //$(fecha_hora).val(today);

  /* //marcamos el primer tipo_documento
  $("#tipo_comprobante").val("Factura");
  $("#tipo_comprobante").selectpicker("refresh");
  //marcarImpuesto();

  //marcamos el primer tipo_documento
  $("#tipo_documento").val("RIF");
  $("#tipo_documento").selectpicker("refresh"); */
}

//funcion mostrar formulario
function mostrarform(flag, bu) {
  limpiar();
  if (flag) {
    $("#listadoregistros").hide();
    $("#formularioregistros").show();
    $("#formularioregistros1").show();
    //$("#btnGuardar").prop("disabled",false);
    $("#btnagregar").hide();
    //listarArticulos(1);
    //listarArticulosb(1);
    //listarArticulosc(1);
    //listarArticulosd(1);
    //listarArticulose(1);
    //listarPedidos();
    //listarServicios();
    if (bu) {
      //	buscarNroFacturaControl();
    }
    buscarTasaDeCambio();

    $("#btnGuardar").hide();
    $("#btnCancelar").show();
    detalles = 0;
    $("#btnAgregarArt").show();
    $("#btnAgregarArtb").hide();
    $("#btnAgregarArtc").hide();
    $("#btnAgregarArtd").hide();
    $("#btnAgregarArte").hide();
    $("#btnAgregarSer").show();
    $("#cod_barra").val("");
    $("#cod_barra").focus();
  } else {
    $("#listadoregistros").show();
    $("#formularioregistros").hide();
    $("#formularioregistros1").hide();
    $("#btnagregar").hide();
  }
}

//cancelar form
function cancelarform() {
  limpiar();
  mostrarform(false, false);
}

function marcarImpuesto() {
  var tipo_comprobante = $("#tipo_comprobante option:selected").text();
  var impuestotexto = document.getElementById("impuesto");
  var serie_comprobante = document.getElementById("serie_comprobante");
  var serie_comprobante1 = document.getElementById("serie_comprobante1");
  var num_comprobante = document.getElementById("num_comprobante");
  var num_comprobante1 = document.getElementById("num_comprobante1");
  impuestotexto.style.backgroundColor = "#D5D5CE";
  if (tipo_comprobante == "Factura") {
    $("#impuesto").val(impuesto1);
    impuesto = $("#impuesto").val();
    serie_comprobante.type = "text";
    num_comprobante.type = "text";
    serie_comprobante1.type = "hidden";
    num_comprobante1.type = "hidden";
    $("#tipodocumentoc").html("# Control");
    $("#tipodocumentof").html("# Factura");
  } else {
    $("#impuesto").val(0);
    impuesto = 0;
    serie_comprobante.type = "hidden";
    num_comprobante.type = "hidden";
    serie_comprobante1.type = "text";
    num_comprobante1.type = "text";
    $("#tipodocumentoc").html("# Control");
    $("#tipodocumentof").html("# NEntrega");
  }
}

//funcion listar
function listar() {
  //$('#tbllistado').DataTable().destroy();
  //$('#tbllistado').DataTable().fnResetAllFilters();
  tabla = $("#tbllistado")
    .dataTable({
      aProcessing: true, //activamos el procedimiento del datatable
      aServerSide: true, //paginacion y filrado realizados por el server
      dom: "Bfrtip", //definimos los elementos del control de la tabla
      buttons: [
        {
          text: "Excel",
          extend: "excelHtml5",
          footer: true,
          filename: "Despacho",
          //orientation: 'landscape', //portrait
          //pageSize: 'A4', //A3 , A5 , A6 , legal , letter
          title: "",
          exportOptions: {
            columns: ":visible",
            search: "applied",
            order: "applied",
          },
        },
        {
          text: "PDF",
          extend: "pdfHtml5",
          className: "btn btn-danger",
          footer: true,
          filename: "Despacho",
          orientation: "landscape", //portrait
          pageSize: "A4", //A3 , A5 , A6 , legal , letter
          title: "Despacho",
          exportOptions: {
            columns: ":visible",
            search: "applied",
            order: "applied",
          },
        },
        {
          text: "Actualizar Selección", // Texto del botón personalizado
          className: "btn btn-primary btn-sm btn-rounded",
          action: function (e, dt, node, config) {
            // Acción a realizar cuando se hace clic en el botón personalizado
            seleccioncxc();
          },
        },
        {
          text: "Limpiar Selección", // Texto del botón personalizado
          className: "btn btn-primary btn-sm btn-rounded",
          action: function (e, dt, node, config) {
            // Acción a realizar cuando se hace clic en el botón personalizado
            quitarcxc();
          },
        },
      ],
      /* "columnDefs": [ //Oculto La columna por donde ordeno
			{
					"targets": [ 9 ],
					"visible": false,
					"searchable": false
			}
		], */
      ajax: {
        url: "controladores/ventanControlador.php?op=listarfechadespaho",
        type: "get",
        dataType: "json",
        error: function (e) {
          console.log(e.responseText);
        },
      },

      /* "drawCallback":function(){
			//alert("La tabla se está recargando"); 
			var api 	= this.api();
		//	var tactual	= api.column(3, {page:'current'}).data().sum();
			var total	= api.column(9).data().sum();
		//	tactual		= number_format(tactual*1,2);
			total		= number_format(total*1,2);
			/* $(api.column(4).footer()).html('Total Actual:');
			$(api.column(5).footer()).html(tactual); */
      /*	$(api.column(6).footer()).html('Total:');
			$(api.column(7).footer()).html(total);
	  },  */
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[0, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
  //tabla.column(8).visible(8);
  //tabla.dataTable();
  //table.;
  //	$('#tbllistado').DataTable().ajax.reload();
}

//funcion para listar cliente por dia de visita
function listarclientepordiavisita() {
  $.post(
    "controladores/personaControlador.php?op=listarclientepordiavisita",
    function (r) {
      $("#tabvisita").html(r);
    }
  );
}

//funcion para guardaryeditar
function guardaryeditar() {
  //e.preventDefault();//no se activara la accion predeterminada
  //$("#btnGuardar").prop("disabled",true);
  var formData = new FormData($("#formulario")[0]);

  $.ajax({
    url: "controladores/ventanControlador.php?op=guardaryeditar",
    type: "POST",
    data: formData,
    contentType: false,
    processData: false,

    success: function (datos) {
      bootbox.alert(datos);
      mostrarform(false, false);
      listar();
      limpiar();
      //actualizar();
    },
  });
}

function guardarestado() {
  //e.preventDefault();//no se activara la accion predeterminada
  //$("#btnGuardar").prop("disabled",true);
  //var idordenproduccioncamiseria = $("#idordenproduccioncamiseriac").val();
  //console.log('vamos a guardar solo costureras')
  var formData = new FormData($("#formaguarestado")[0]);

  $.ajax({
    url: "controladores/ventanControlador.php?op=guardaryeditarestado",
    type: "POST",
    data: formData,
    contentType: false,
    processData: false,

    success: function (datos) {
      bootbox.alert(datos);
      mostrarform(false);
      listar();
    },
    error: function (e) {
      console.log(e.responseText);
    },
  });

  limpiar();
}

//funcion para Anular una factura
function guardarfechayestadodespacho() {
  let fecha_despachog = $("#fecha_despachog").val();
  let estadodg = $("#estadodg").val();
  console.log("fecha: ", fecha_despachog);
  console.log("estado: ", estadodg);
  console.log("despachovalido: ", despachovalido);

  if (validarmarcadocxc()) {
    bootbox.confirm(
      "¿Está seguro de que desea actualizar la selección de Notas de Entrega?",
      function (result) {
        if (result) {
          //console.log('idventa y idusuario: '+idventa+'--'+idusuario);
          $.post(
            "controladores/ventanControlador.php?op=guardarfechayestadodespacho",
            {
              fecha_despachog: fecha_despachog,
              estadodg: estadodg,
              despachovalido: despachovalido,
            },
            function (e) {
              bootbox.alert(e);
              tabla.ajax.reload();
            }
          );
        }
      }
    );
  } else {
    bootbox.alert("No ha seleccionado una Nota de Entrega.");
  }

  /**/
}

function mostrar(idventa) {
  $.post(
    "controladores/ventanControlador.php?op=mostrar",
    { idventa: idventa },
    function (data, status) {
      data = JSON.parse(data);
      mostrarform(true, false);

      $("#idcliente").val(data.idcliente);
      $("#idcliente").selectpicker("refresh");
      $("#num_documento").val(data.num_documento);
      $("#nombre_cliente").val(data.cliente);
      $("#tipo_comprobante").val(data.tipo_comprobante);
      $("#tipo_comprobante").selectpicker("refresh");
      marcarImpuesto();
      $("#serie_comprobante").val(data.serie_comprobante);
      $("#num_comprobante").val(data.num_comprobante);
      $("#serie_comprobante1").val(data.serie_comprobante1);
      $("#num_comprobante1").val(data.num_comprobante1);
      $("#fecha_hora").val(data.fecha);
      $("#impuesto").val(data.impuesto);
      $("#idventa").val(data.idventa);
      $("#idtransportista").val(data.idtransportista);
      $("#idtransportista").selectpicker("refresh");
      $("#idtransporte").val(data.idtransporte);
      $("#idtransporte").selectpicker("refresh");
      $("#idtransporte").val(data.idtransporte);
      $("#idtransporte").selectpicker("refresh");
      $("#idalmacen1").val(data.idalmacen);
      $("#idalmacen1").selectpicker("refresh");
      $("#idvendedor").val(data.idvendedor);
      $("#idvendedor").selectpicker("refresh");
      $("#idclientedespacho").html(
        "<option value='0'>" + data.nombred + "</option>"
      );
      $("#idclientedespacho").selectpicker("refresh");
      $("#ordendecompra").val(data.ordendecompra);
      //$("#impuesto").val("");
      //ocultar y mostrar los botones
      $("#btnGuardar").hide();
      $("#btnCancelar").show();
      $("#btnAgregarArt").hide();
      $("#btnAgregarSer").hide();
      $("#btnTotalizar").hide();
      $("#btnAgregarBar").hide();
    }
  );
  $.post(
    "controladores/ventanControlador.php?op=listarDetalle&id=" + idventa,
    function (r) {
      $("#detalles").html(r);
    }
  );
}

function cambiaratributo(idventa1) {
  console.log("cambiar atributto");
  mostrarfechadespacho(idventa1);
}

//
function mostrarfechadespacho(idventa) {
  console.log("cambiar fecha");
  $("#idventa").val(idventa);
  $("#estadoporfecha").val("Despachada");
  $("#myModalFechadespacho").modal("show");
  mostrarsestadod(idventa);
  $("#myModalFechadespachoestado").modal("hide");
}

function mostrarsestadod(idventa) {
  //bootbox.alert('mostar articulo sin stock '+idordenproduccioncamiseria);
  //console.log('idordenproduccioncamiseria: '+idordenproduccioncamiseria)
  tabla1 = $("#tbestado")
    .dataTable({
      aProcessing: true, //activamos el procedimiento del datatable
      aServerSide: true, //paginacion y filrado realizados por el server
      dom: "Bfrtip", //definimos los elementos del control de la tabla
      buttons: [],
      ajax: {
        url: "controladores/ventanControlador.php?op=mostrarsestado",
        method: "post",
        data: {
          idventa: idventa,
        },
        dataType: "json",
        error: function (e) {
          console.log(e.responseText);
        },
      },
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[0, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
  $("#myModalFechadespachoestado").modal("show");
}

// Funcion para cambiar el estado y fecha de la cxc seleccionada
function seleccioncxc() {
  let inicio = 0;
  let checks1 = document.getElementsByName("iddocumento[]");

  //recorremos las cxc
  for (var i = 0, j = checks1.length; i < j; i++) {
    if (checks1[i].checked == true) {
      despachovalido[inicio] = idp(checks1[i].value);
      inicio = inicio + 1;
    }
  }
  $("#myModalFechayEstadodespachogrupo").modal("show");
}

function quitarcxc() {
  let checks1 = document.getElementsByName("iddocumento[]");
  for (var i = 0, j = checks1.length; i < j; i++) {
    checks1[i].checked = false;
  }
}

function validarmarcadocxc() {
  let checks1 = document.getElementsByName("iddocumento[]");
  let total = 0;
  let retorno = true;
  for (var i = 0, j = checks1.length; i < j; i++) {
    if (checks1[i].checked == false) {
      total = total + 1;
    }
  }

  if (total >= checks1.length) {
    retorno = false;
  }

  return retorno;
}

function evaluar() {
  $("#cod_barra").val("");
  $("#cod_barra").focus();
  if (detalles > 0) {
    $("#btnGuardar").show();
  } else {
    $("#btnGuardar").hide();
    cont = 0;
  }
}

function eliminarDetalleClave(indice) {
  $("#myModalPermiso").modal("show");
  indicepermisoborrar = indice;
}

function eliminarDetalle(indice) {
  $("#fila" + indice).remove();
  calcularTotales();
  detalles = detalles - 1;
}

init();
