var tabla;
var tabla1;
//declaramos variables necesarias para trabajar con las Ventas y sus detalles
var impuesto = $("#impuesto").val();
console.log(impuesto);
var cont = 0;
var detalles = 0;
var indicepermisoborrar = -50;

$("#btnGuardar").hide();
$("#tipo_comprobante").change(marcarImpuesto);

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

  /*Se captura el evento de guardar los datos */
  $("#btnFacturar").on("click", function (e) {
    /* Evitamos el envío real del formulario */
    e.preventDefault();
    validar();
    //console.log(detalles);
    if (detalles <= 0) {
      bootbox.alert("No agregado producto a su orden de producción");
    } else {
      var val = $("#validado").val();
      //console.log(val);
      if (val == 1) {
        // Se va a guardar la factura
        bootbox.confirm(
          "¿Esta seguro que quiere guardar los dato?",
          function (result) {
            if (result) {
              modificarValoresAnumerico();
              guardaryeditar(e);
            }
          }
        );
      }
    }
  });

  /*Se captura el evento de buscar clave de permiso */
  $("#formaguardarcliente").on("submit", function (e) {
    /* Evitamos el envío real del formulario */
    e.preventDefault();
    $("#myModalCliente").modal("hide");
    guardarcliente();
  });

  // Se busca el codigo de barra
  $("#cod_barra").keypress(function (e) {
    var keycode = e.keyCode ? e.keyCode : e.which;
    var codigobarra = $("#cod_barra").val();
    if (keycode == "13") {
      // Evitamos el envío real del enter
      e.preventDefault();
      // Hacemos la llamada al API Buscamos el codigo de barra
      buscarcodigodebarra(codigobarra);
      return false;
    }
  });

  //Capturamos los campos de los articulos pata totalizar

  // Se busca el cliente
  //setup before functions
  var typingTimer; //timer identifier
  var doneTypingInterval = 5000; //time in ms, 1 second for example
  var $input = $("#num_documento");

  //Se inicia el conteo para buscar el cliente
  $input.on("keyup", function () {
    clearTimeout(typingTimer);
    typingTimer = setTimeout(doneTyping, doneTypingInterval);
  });

  //Se limpia el contador cuando deja de escribir
  $input.on("keydown", function () {
    clearTimeout(typingTimer);
  });

  //buscamos el cliente
  function doneTyping() {
    var tipo_documento = $("#tipo_documento").val();
    var num_documento = $("#num_documento").val();
    //buscarcliente(tipo_documento,num_documento);
  }

  /* $("#num_documento").keypress(function(e) {
		var keycode = (e.keyCode ? e.keyCode : e.which);
		if (keycode == '13') {
			// Evitamos el envío real del enter
			e.preventDefault();
			// Hacemos la llamada al API Buscamos el codigo de barra
			var tipo_documento	=	$("#tipo_documento").val();
			var num_documento	=	$("#num_documento").val();
			buscarcliente(tipo_documento,num_documento);
			return false;
		}
	}); */

  /* Tras cargar el documento posicionamos el cursor en el lector de código de barras */
  document.addEventListener("DOMContentLoaded", function () {
    $("#cod_barra").val("");
    $("#cod_barra").focus();
  });

  //se verifica si cambia los campos del formulario
  $("#idcliente").change(function () {
    listarproductoformula($("#idcliente").val());
    var nroguia = $("#nroguia").val();
    buscarNroGuia(nroguia);
    //buscarclienteid($("#idcliente").val());

    //buscardespachoid($("#idcliente").val());
    $("#cod_barra").val("");
    $("#cod_barra").focus();
  });

  $("#tipo_comprobante").change(function () {
    $("#cod_barra").val("");
    $("#cod_barra").focus();
  });

  $("#fecha_hora").change(function () {
    $("#cod_barra").val("");
    $("#cod_barra").focus();
  });

  $("#nroguia").change(function () {
    var nroguia = $("#nroguia").val();
    buscarNroGuia(nroguia);
  });

  //$("#idcliente").change(function () {

  //});

  //    $("#btnGuardarCompra").on("click",function(e){
  // 	guardaryeditar(e);
  //    })

  //cargamos los items al select cliente
  $.post(
    "controladores/ordenproduccionControlador.php?op=selectCliente",
    function (r) {
      $("#idcliente").html(r);
      $("#idcliente").val(0);
      $("#idcliente").selectpicker("refresh");
    }
  );

  //cargamos el Almacen
  /*
  $.post(
    "controladores/almacenControlador.php?op=selectfactoryterminado",
    function (r) {
      $("#idalmacen").html(r);
      $("#idalmacen").val(0);
      $("#idalmacen").selectpicker("refresh");
    }
  );
  */

  //cargamos los items al select transporte
  /* $.post("controladores/ordenproduccionControlador.php?op=selectTransportista", function(r){
		$("#idtransportista").html(r);
		$('#idtransportista').val(1);
		$('#idtransportista').selectpicker('refresh');
	}); */

  /* $.post("controladores/ordenproduccionControlador.php?op=selectVendedor", function(r){
		$("#idvendedor").html(r);
		$('#idvendedor').selectpicker('refresh');
	}); */
}

//funcion limpiar
function limpiar() {
  $("#formulario").data("bootstrapValidator").resetForm(true);
  document.getElementById("formaguardarcliente").reset();
  $("#idordenproduccion").val("");
  $("#nroguia").val("");
  $("#tipo_documento").val("");
  $("#num_documento").val("");
  $("#nombre").val("");
  $("#tipo_comprobante").val("");
  $("#serie_comprobante").val("");
  $("#num_comprobante").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");
  $("#totald").html("0");
  $("#idtransportista").val("");
  $("#idtransportista").selectpicker("refresh");
  $("#idcliente").val("");
  $("#idcliente").selectpicker("refresh");
  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("ordenproduccion");
  /* $("#tipo_comprobante").selectpicker('refresh'); */
  marcarImpuesto();

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

function limpiarsolocliente() {
  $("#tipo_documento1").val("");
  $("#num_documento1").val("");
  $("#nombre1").val("");
  $("direccion1").val("");
  $("telefono1").val("");
  $("Email").val("");
  $("email1").val("");
}

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

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

//funcion mostrar formulario
function mostrarformc(flag) {
  limpiar();
  if (flag) {
    $("#listadoregistros").hide();
    $("#formularioregistros").show();
    $("#formularioregistros1").show();
    //$("#btnGuardar").prop("disabled",false);
    $("#btnagregar").hide();
    $("#btnGuardar").hide();
    $("#btnCancelar").show();
    detalles = 0;
    $("#btnAgregarArt").show();
    $("#btnAgregarArtb").hide();
    $("#btnAgregarArtc").hide();
    $("#btnAgregarSer").hide();
    $("#cod_barra").val("");
    $("#cod_barra").focus();
  } else {
    $("#listadoregistros").show();
    $("#formularioregistros").hide();
    $("#formularioregistros1").hide();
    $("#btnagregar").show();
  }
}

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

function marcarImpuesto() {
  var tipo_comprobante = $("#tipo_comprobante option:selected").text();
  var impuestotexto = document.getElementById("impuesto");
  impuestotexto.style.backgroundColor = "#D5D5CE";
  if (tipo_comprobante == "Factura") {
    $("#impuesto").val(impuesto);
  } else {
    $("#impuesto").val("0");
  }
}

//Se busca el numero la tasa de cambio
function buscarNroGuia(nroguia) {
  $.ajax({
    url: "controladores/ordenproduccionControlador.php?op=buscarNroGuia",
    method: "post",
    data: {
      nroguia: nroguia,
    },
  })
    .done(function (datos) {
      /* Depuramos los datos recibidos */
      datos = JSON.parse(datos);
      console.log(datos);
      /* Se verifica si se delvovio algun resultado */
      if (datos != null && datos != "undefined") {
        //El numero existe
        bootbox.alert(
          "El número de guía " + datos.nroguia + " ya esta registrado"
        );
        $("#nroguia").val("");
        $("#nroguia").focus();
      }
    })
    .fail(function () {
      alert("Error");
    })
    .always(function () {
      /* Seleccionamos el texto para que se pueda sobreescribir por la siguiente lectura */
      $("input[name='cod_barra']").select();
    });

  /* $.post("controladores/ordenproduccionControlador.php?op=buscarNroGuia",{nroguia : nroguia},
		function(data,status)
		{
			//data1=JSON.parse(data);
			console.log('data de la guia: '+data);
			 if ((data1 != null)&&(data1 != "undefined")) {
				bootbox.alert('El Número de Guía '+$("#nroguia").val()+' está repetido');
				$("#nroguia").val("");
			} 
			
		});

 */
}

//Se busca el numero la tasa de cambio
function buscarTasaDeCambio() {
  idempresa_venta = $("#idempresa_venta").val();
  //alert ('idempresa_venta: '+idempresa_venta);
  $.post(
    "controladores/empresaControlador.php?op=buscarTasaDeCambio",
    { idempresa_venta: idempresa_venta },
    function (data, status) {
      //alert ('estatus: '+status);
      data1 = JSON.parse(data);
      //console.log('tasa de cambiobd: '+data1.tasa_dollar);
      //$("#tasa_dollar").val(number_format(data1.tasa_dollar),2);
      $("#tasa_dollar").val(data1.tasa_dollar);
      //console.log('tasa de cambio:'+$("#tasa_dollar").val());
      //$("#tasa_euro").val(number_format(data1.tasa_euro),2);
      $("#tasa_euro").val(data1.tasa_euro);
      //		alert ('Control: '+data1.nrocontrol+' Factura: '+data1.nrofactura);
    }
  );
}

// funcion para buscar el cliente
function buscarcliente(tipo_documento, num_documento) {
  var tipo_documento11 = tipo_documento;
  var num_documento11 = num_documento;
  //alert ('tipo y numero: '+ tipo_documento11+ ' '+num_documento11);
  $.ajax({
    url: "controladores/personaControlador.php?op=buscarcliente",
    method: "post",
    data: {
      tipo_documento: tipo_documento11,
      num_documento: num_documento11,
    },
  })
    .done(function (datos) {
      /* Depuramos los datos recibidos */
      datos = JSON.parse(datos);
      console.log(datos);
      /* Se verifica si se delvovio algun resultado */
      if (datos == null || datos == "undefined") {
        /* hacer algo */
        bootbox.confirm(
          "El cliente no existe necesita crearlo",
          function (result) {
            if (result) {
              $("#tipo_documento1").val(tipo_documento11);
              $("#tipo_documento1").selectpicker("refresh");
              tipo_documento1.style.backgroundColor = "#D5D5CE";
              $("#num_documento1").val(num_documento11);
              num_documento1.style.backgroundColor = "#D5D5CE";
              $("#myModalCliente").modal("show");
            }
          }
        );
        return;
      }
      /* Colocamos los datos del cliente */
      //$("#nombre_cliente").val(datos.nombre);

      //nombre_cliente.style.backgroundColor 	= "#D5D5CE";
      //$('#formulario').bootstrapValidator('false');
      //alert ('nombre y id: '+ datos.nombre+ '--'+datos.idpersona);
      $("#idcliente").val(datos.idpersona);
      $("#idcliente").selectpicker("refresh");
      verificarlistaprecio(datos.idlistaprecio);
    })
    .fail(function () {
      alert("Error");
    })
    .always(function () {
      /* Seleccionamos el texto para que se pueda sobreescribir por la siguiente lectura */
      $("input[name='cod_barra']").select();
    });
}

//Buscamo la direccion de despacho del cliente
function buscardespachoid(idcliente) {
  var idpersona = idcliente;
  $.post(
    "controladores/personaControlador.php?op=buscardespachoid",
    { idpersona: idpersona },
    function (r) {
      $("#idclientedespacho").html(r);
      $("#idclientedespacho").selectpicker("refresh");
    }
  );
}

// funcion para buscar el cliente
function buscarclienteid(idcliente) {
  var idpersona = idcliente;
  //alert ('tipo y numero: '+ tipo_documento11+ ' '+num_documento11);
  $.ajax({
    url: "controladores/personaControlador.php?op=buscarclienteid",
    method: "post",
    data: {
      idpersona: idpersona,
    },
  })
    .done(function (datos) {
      /* Depuramos los datos recibidos */
      datos = JSON.parse(datos);
      console.log(datos);
      /* Se verifica si se delvovio algun resultado */
      if (datos == null || datos == "undefined") {
        /* hacer algo */
        bootbox.confirm(
          "El cliente no existe necesita crearlo",
          function (result) {
            if (result) {
              $("#tipo_documento1").val(tipo_documento11);
              $("#tipo_documento1").selectpicker("refresh");
              tipo_documento1.style.backgroundColor = "#D5D5CE";
              $("#num_documento1").val(num_documento11);
              num_documento1.style.backgroundColor = "#D5D5CE";
              $("#myModalCliente").modal("show");
            }
          }
        );
        return;
      }
      /* Colocamos los datos del cliente */
      //$("#nombre_cliente").val(datos.nombre);

      //nombre_cliente.style.backgroundColor 	= "#D5D5CE";
      //$('#formulario').bootstrapValidator('false');
      //alert ('nombre y id: '+ datos.nombre+ '--'+datos.idpersona);
      $("#num_documento").val(datos.num_documento);
      $("#tipo_documento").val(datos.tipo_documento);
      $("#tipo_documento").selectpicker("refresh");
      $("#idvendedor").val(datos.idvendedor);
      console.log("datos.idvendedor: " + datos.idvendedor);
      $("#idvendedor").selectpicker("refresh");
      //verificarlistaprecio(datos.idlistaprecio);
    })
    .fail(function () {
      alert("Error");
    })
    .always(function () {
      /* Seleccionamos el texto para que se pueda sobreescribir por la siguiente lectura */
      $("input[name='cod_barra']").select();
    });
}

//Se habilita la lista de precio para el cliente seleccionado
function verificarlistaprecio(idlistaprecio) {
  if (idlistaprecio == 1) {
    $("#btnAgregarArt").show();
    $("#btnAgregarArtb").hide();
    $("#btnAgregarArtc").hide();
  } else if (idlistaprecio == 2) {
    $("#btnAgregarArt").hide();
    $("#btnAgregarArtb").show();
    $("#btnAgregarArtc").hide();
  } else {
    $("#btnAgregarArt").hide();
    $("#btnAgregarArtb").hide();
    $("#btnAgregarArtc").show();
  }
}

//Se busca el numero de factura y control
function buscarNroFacturaControl() {
  idempresa_venta = $("#idempresa_venta").val();
  var serie_comprobante = document.getElementById("serie_comprobante");
  var num_comprobante = document.getElementById("num_comprobante");
  var num_ordenproduccion = document.getElementById("num_ordenproduccion");
  //	alert ('idempresa_venta: '+idempresa_venta);
  $.post(
    "controladores/empresaControlador.php?op=buscarNroFacturaControl",
    { idempresa_venta: idempresa_venta },
    function (data, status) {
      //alert ('estatus: '+status);
      data1 = JSON.parse(data);
      /* $("#serie_comprobante").val(data1.nrocontrol);
			serie_comprobante.style.backgroundColor 	= "#D5D5CE";
			$("#num_comprobante").val(data1.nrofactura);
			num_comprobante.style.backgroundColor 		= "#D5D5CE"; */
      $("#num_ordenproduccion").val(data1.nroordenproduccion);
      $("#nroguia").val(data1.nroordenproduccion);
      num_ordenproduccion.style.backgroundColor = "#D5D5CE";
      //		alert ('Control: '+data1.nrocontrol+' Factura: '+data1.nrofactura);
    }
  );
}

//funcion listar
function listar() {
  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: ["copyHtml5", "excelHtml5", "csvHtml5", "pdf"],
      ajax: {
        url: "controladores/ordenproduccionControlador.php?op=listar",
        type: "get",
        dataType: "json",
        error: function (e) {
          console.log(e.responseText);
        },
      },
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[0, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
}

function listarArticulos() {
  tabla = $("#tblarticulos")
    .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/ordenproduccionControlador.php?op=listarArticulos",
        type: "get",
        dataType: "json",
        error: function (e) {
          console.log(e.responseText);
        },
      },
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[0, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
}

function listarArticulost() {
  tabla = $("#tblarticulos")
    .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/ordenproduccionControlador.php?op=listarArticulost",
        type: "get",
        dataType: "json",
        error: function (e) {
          console.log(e.responseText);
        },
      },
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[0, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
}

function listarproductoformula(idcliente) {
  tabla = $("#tblarticulos")
    .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/ordenproduccionControlador.php?op=listarproductoformula",
        type: "post",
        data: {
          idcliente: idcliente,
        },
        dataType: "json",
        error: function (e) {
          console.log(e.responseText);
        },
      },
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[0, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
}

function listarArticulosc() {
  tabla = $("#tblarticulosc")
    .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/ordenproduccionControlador.php?op=listarArticulosc",
        type: "get",
        dataType: "json",
        error: function (e) {
          console.log(e.responseText);
        },
      },
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[0, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
}

function listarServicios() {
  tabla = $("#tblservicios")
    .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/ordenproduccionControlador.php?op=listarServicios",
        type: "get",
        dataType: "json",
        error: function (e) {
          console.log(e.responseText);
        },
      },
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[0, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
}

function guardarcliente() {
  var formDataCliente = new FormData($("#formaguardarcliente")[0]);
  var tipo_documento1 = $("#tipo_documento1").val();
  var num_documento1 = $("#num_documento1").val();
  //alert('ahora vamos aguardar el cliente tipo documento y nro ' + tipo_documento1+' -- '+num_documento1);
  $.ajax({
    url: "controladores/personaclienteControlador.php?op=guardaryeditar",
    type: "POST",
    data: formDataCliente,
    contentType: false,
    processData: false,
    success: function (datos) {
      bootbox.alert(datos);
      buscarcliente(tipo_documento1, num_documento1);
    },
  });
  limpiarsolocliente();
}

//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/ordenproduccionControlador.php?op=guardaryeditar",
    type: "POST",
    data: formData,
    contentType: false,
    processData: false,

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

  limpiar();
}
//idordenproduccion,fecha,idcliente,cliente,num_documento,tipo_documento,idusuario,usuario,tipo_comprobante
//serie_comprobante,num_comprobante,total_venta,impuesto,estado,tasa_dollar,total_ventad,num_ordenproduccion,
//idvendedor,num_ordenproduccion
function mostrar(idordenproduccion, mostrarsino) {
  if (mostrarsino == "si") {
    $("#btnFacturar").show();
    $("#btnAgregarArt").show();
    $("#btnCancelar").show();
    $("#btnAgregarSer").hide();
    $("#btnTotalizar").hide();
    $("#btnAgregarBar").hide();
    $.post(
      "controladores/ordenproduccionControlador.php?op=mostrar",
      { idordenproduccion: idordenproduccion },
      function (data, status) {
        data = JSON.parse(data);
        mostrarformc(true);

        $("#tipo_documento").val(data.tipo_documento);
        $("#num_documento").val(data.num_documento);
        $("#idcliente").val(data.idmaquila);
        $("#idcliente").selectpicker("refresh");
        listarproductoformula(data.idmaquila);
        $("#fecha_hora").val(data.fecha);
        $("#tipo_comprobante").val(data.tipo_comprobante);
        $("#num_ordenproduccion").val(data.num_ordenproduccion);
        $("#idordenproduccion").val(data.idordenproduccion);
        $("#nroguia").val(data.nroguia);

        $.post(
          "controladores/ordenproduccionControlador.php?op=listarDetalle&id=" +
            idordenproduccion,
          function (r) {
            console.log(r);
            $("#detalles").html(r);
            console.log(r);
            if (r == "") {
              console.log("vacio");
            }
            var prev = document.getElementsByName("cantidad[]");
            cont = prev.length;
            detalles = prev.length;
          }
        );
      }
    );
  } else {
    $("#btnFacturar").hide();
    $("#btnAgregarArt").hide();
    $("#btnCancelar").show();
    $("#btnAgregarSer").hide();
    $("#btnTotalizar").hide();
    $("#btnAgregarBar").hide();
    $.post(
      "controladores/ordenproduccionControlador.php?op=mostrar",
      { idordenproduccion: idordenproduccion },
      function (data, status) {
        data = JSON.parse(data);
        mostrarformc(true);

        $("#tipo_documento").val(data.tipo_documento);
        $("#num_documento").val(data.num_documento);
        $("#idcliente").val(data.idmaquila);
        $("#idcliente").selectpicker("refresh");
        listarproductoformula(data.idmaquila);
        $("#fecha_hora").val(data.fecha);
        $("#tipo_comprobante").val(data.tipo_comprobante);
        $("#num_ordenproduccion").val(data.num_ordenproduccion);
        $("#idordenproduccion").val(data.idordenproduccion);
        $("#nroguia").val(data.nroguia);

        $.post(
          "controladores/ordenproduccionControlador.php?op=listarDetallen&id=" +
            idordenproduccion,
          function (r) {
            $("#detalles").html(r);
            var prev = document.getElementsByName("cantidad[]");
            cont = prev.length;
            detalles = prev.length;
          }
        );
      }
    );
  }
}

function mostrarsinstock(idordenproduccion) {
  //bootbox.alert('mostar articulo sin stock '+idordenproduccion);
  tabla1 = $("#tblarticulosi")
    .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/ordenproduccionControlador.php?op=listarArticulossinstock",
        method: "post",
        data: {
          idordenproduccion: idordenproduccion,
        },
        dataType: "json",
        error: function (e) {
          console.log(e.responseText);
        },
      },
      bDestroy: true,
      iDisplayLength: -1, //paginacion
      order: [[0, "desc"]], //ordenar (columna, orden)
    })
    .DataTable();
  $("#myModalStock").modal("show");
}

//Procesar orden de producción
function procesarordenproduccion(idordenproduccion, nroguia) {
  console.log(
    "idordenproduccion y nroguia: " + idordenproduccion + "--" + nroguia
  );
  if (nroguia == "no") {
    bootbox.alert(
      "No se puede procesar la orden de producción por no tener Número de Guía"
    );
  } else {
    bootbox.confirm(
      "¿Esta seguro de procesar la Orden de Producción?",
      function (result) {
        if (result) {
          $.post(
            "controladores/ordenproduccionControlador.php?op=procesarordenproduccion",
            { idordenproduccion: idordenproduccion },
            function (e) {
              bootbox.alert(e);
              tabla.ajax.reload();
            }
          );
          //bootbox.alert('Procesando....');
        }
      }
    );
  }
}

//funcion para Anular una factura
function anular(idordenproduccion, idusuario) {
  bootbox.confirm(
    "¿Esta seguro de Anular esta Orden de Producción?",
    function (result) {
      if (result) {
        console.log(
          "idordenproduccion y idusuario: " +
            idordenproduccion +
            "--" +
            idusuario
        );
        $.post(
          "controladores/devolucionControlador.php?op=anular",
          { idordenproduccion: idordenproduccion, idusuario: idusuario },
          function (e) {
            bootbox.alert(e);
            tabla.ajax.reload();
          }
        );
      }
    }
  );
}

function desactivar(idordenproduccion) {
  bootbox.confirm(
    "¿Esta seguro quiere anular la Orden de Producción?",
    function (result) {
      if (result) {
        $.post(
          "controladores/ordenproduccionControlador.php?op=desactivar",
          { idordenproduccion: idordenproduccion },
          function (e) {
            bootbox.alert(e);
            tabla.ajax.reload();
          }
        );
      }
    }
  );
}

function activar(idordenproduccion) {
  bootbox.confirm(
    "¿Esta seguro quiere activar la Orden de Producción?",
    function (result) {
      if (result) {
        $.post(
          "controladores/ordenproduccionControlador.php?op=activar",
          { idordenproduccion: idordenproduccion },
          function (e) {
            bootbox.alert(e);
            tabla.ajax.reload();
          }
        );
      }
    }
  );
}

function buscarcodigodebarra(codbarra) {
  //alert ('buscando codigo de barra: '+codbarra);
  $.ajax({
    url: "complemento/leercodigobarra.php",
    method: "post",
    data: {
      codigobarra: codbarra,
    },
  })
    .done(function (datos) {
      /* Depuramos los datos recibidos */
      console.log(datos);
      /* Si no se devolvió ningún registro (false) debería hacerse algo */
      if (datos === false) {
        /* hacer algo */
        //bootbox.alert('No se encontró el código de barras');
        //Ahora buscamos en la tarjeta de cliente
        buscarcodigodebarratarjetapendiente(codbarra);
        $("#cod_barra").val("");
        $("#cod_barra").focus();
        return;
      }
      /* Agregamos una fila con los datos obtenidos */
      agregarDetalle(
        datos.idarticulo,
        datos.nombre,
        datos.precio,
        datos.porcentaje,
        datos.numerolote,
        datos.fecha
      );
    })
    .fail(function () {
      alert("Error");
    })
    .always(function () {
      /* Seleccionamos el texto para que se pueda sobreescribir por la siguiente lectura */
      $("input[name='cod_barra']").select();
    });
}

// ac.idalmacent, alt.nombre AS almacenterminado
// ac.idalmacen AS idalmaceni,    al.nombre AS almaceninsumo

function agregarDetalle(
  idarticulo,
  idalmacent,
  almacenterminado,
  idalmaceni,
  almaceninsumo,
  articulo,
  precio_venta,
  precio_ventad,
  porcentaje,
  nrolote,
  fechalote,
  exento,
  impuestoart18,
  preciopvp,
  preciopvpd,
  idarticulocompuesto
) {
  var cantidad = 1.0;
  var descuento = 0;
  var impoart18 = impuestoart18;
  var idordenproduccion = -300;
  /* en ordenproduccion oculto el art18
	/* var imp18_empresa	=	$('#impuestoart18_empresa').val(); */
  var imp18_empresa = "no";
  var tasadollar = $("#tasa_dollar").val();
  if (idarticulo != "") {
    var iva = 0;
    var subtotal = 0;
    var subtotalsiniva = 0;
    var exentot = 0;
    var precio = 0;
    var preciod = 0;
    var salida = convertDateFormat(fechalote);
    var fechalotef = convertDateLote(fechalote);
    precio_venta = precio_ventad * tasadollar;
    preciopvp = preciopvpd * tasadollar;
    if (fechalote == "N/A") {
      fechalotef = fechalote;
    }
    if (exento == "si") {
      precio = precio_venta * 1;
      preciod = precio_ventad * 1;
      exentot = precio_venta * 1;
      articulo = articulo + " (E)";
      iva = 0;
    } else {
      iva = (precio_venta * impuesto) / 100;
      precio = precio_venta * 1;
      preciod = precio_ventad * 1;
      exentot = 0;
    }

    subtotalsiniva = cantidad * precio_venta;
    /* subtotal		= cantidad*precio;
		subtotald		= cantidad*preciod; */
    subtotal = cantidad;
    subtotald = cantidad;
    console.log(
      "fecha: " + salida + "precio: " + precio + "exentot: " + exentot
    );
    var fila =
      '<tr class="filas" id="fila' +
      cont +
      '">' +
      '<td style="text-align:center"><button type="button" class="btn btn-danger" onclick="eliminarDetalle(' +
      cont +
      ')">X</button></td>' +
      '<td style="text-align:left"><input type="hidden" name="idarticulo[]" value="' +
      idarticulo +
      '">' +
      articulo +
      "</td>" +
      '<td style="text-align:center">' +
      almaceninsumo +
      "</td>" +
      '<td style="text-align:center"><input type="hidden" name="idalmacent[]" id="idalmacent[]" value="' +
      idalmacent +
      '">' +
      almacenterminado +
      "</td>" +
      '<td style="text-align:center"><input type="text" name="cantidad[]" id="cantidad[]" style="text-align:center;background-color:#cffedf;border:none" value="' +
      number_format(cantidad, 2) +
      '"></td>' +
      /* En Orden produccion oculto el precio, descuento, porcentaje  */
      '<td style="text-align:center"><input type="text" style="text-align:center;background-color:#c0bebe;border:none" name="subtotald[]" id="subtotald[]"  value="' +
      number_format(subtotald, 2) +
      '"></td>' +
      '<td style="text-align:center"><button type="button" onclick="modificarSubtotales()" class="btn btn-info"><i class="fa fa-refresh"></i></button>' +
      '<input type="hidden" name="nrolote[]" value="' +
      nrolote +
      '">' +
      '<input type="hidden" name="idordenproduccionsolo[]" id="idordenproduccionsolo[]" value="' +
      idordenproduccion * 1 +
      '">' +
      '<input type="hidden" name="idalmacen[]" id="idalmacen[]" value="' +
      idalmaceni +
      '">' +
      '<input type="hidden" name="idarticulocompuesto[]" id="idarticulocompuesto[]" value="' +
      idarticulocompuesto +
      '">' +
      '<input type="hidden" name="iva[]" value="' +
      iva +
      '">' +
      '<input type="hidden" name="exentot[]" value="' +
      exentot +
      '">' +
      '<input type="hidden" name="precio_venta[]" id="precio_venta[]" value="' +
      number_format(precio, 2) +
      '"></input>' +
      '<input type="hidden"  name="subtotal[]" id="subtotal[]"  value="' +
      number_format(subtotal, 2) +
      '">' +
      '<input type="hidden" name="precio_venta[]" id="precio_venta[]" value="' +
      number_format(precio, 2) +
      '">' +
      '<input type="hidden" name="precio_ventad[]" id="precio_ventad[]" value="' +
      number_format(precio_ventad, 2) +
      '">' +
      '<input type="hidden" name="porcentaje[]" id="porcentaje[]"  value="' +
      number_format(porcentaje, 2) +
      '">' +
      '<input type="hidden" name="descuento[]" id="descuento[]"  value="' +
      number_format(descuento, 2) +
      '" >' +
      '<input type="hidden" name="impoart18[]" id="impoart18[]" value="' +
      number_format(impoart18, 2) +
      '">' +
      '<input type="hidden" name="precio_ventapvp[]" id="precio_ventapvp[]" value="' +
      number_format(preciopvp, 2) +
      '">' +
      "</td>" +
      "</tr>";
    cont++;
    detalles++;
    $("#detalles").append(fila);
    //$("#almacent").val(almacenterminado);
    $("#idalmacent1").val(idalmacent);
    modificarSubtotales();
  } else {
    alert("error al ingresar el detalle, revisar las datos del articulo ");
  }
}

function modificarValoresAnumerico() {
  var cant = document.getElementsByName("cantidad[]");
  var prev = document.getElementsByName("precio_venta[]");
  var desc = document.getElementsByName("descuento[]");
  var porc = document.getElementsByName("porcentaje[]");
  var sub = document.getElementsByName("subtotal[]");
  var exe = document.getElementsByName("exentot[]");
  var a18 = document.getElementsByName("impoart18[]");
  var pvp = document.getElementsByName("precio_ventapvp[]");
  var tasa = $("#tasa_dollar").val();

  //$("#tasa_dollar").val(numero(tasa));

  for (var i = 0; i < cant.length; i++) {
    var Cmod = cant[i];
    var Pvmod = prev[i];
    var Dmod = desc[i];
    var Ia18 = a18[i];
    var Pmod = porc[i];
    var Smod = sub[i];
    var Pvpd = pvp[i];
    Cmod.value = numero(Cmod.value);
    Dmod.value = numero(Dmod.value);
    Ia18.value = numero(Ia18.value);
    Pvmod.value = numero(Pvmod.value);
    Pmod.value = numero(Pmod.value);
    Smod.value = numero(Smod.value);
    Pvpd.value = numero(Pvpd.value);
  }
}

function modificarSubtotales(boton) {
  var idart = document.getElementsByName("idarticulo[]");
  var cant = document.getElementsByName("cantidad[]");
  var prev = document.getElementsByName("precio_venta[]");
  var prevd = document.getElementsByName("precio_ventad[]");
  var desc = document.getElementsByName("descuento[]");
  var art8 = document.getElementsByName("impoart18[]");
  var porc = document.getElementsByName("porcentaje[]");
  var sub = document.getElementsByName("subtotal[]");
  var subd = document.getElementsByName("subtotald[]");
  var ivao = document.getElementsByName("iva[]");
  var exet = document.getElementsByName("exentot[]");
  var impart18emp = $("#impuestoart18_empresa").val();

  for (var i = 0; i < cant.length; i++) {
    var inpV = cant[i];
    var inpP = prev[i];
    var inpPd = prevd[i];
    var inpS = sub[i];
    var inpSd = subd[i];
    var des = desc[i];
    var iart18 = art8[i];
    var por = porc[i];
    var subt = sub[i];
    var subtd = subd[i];
    var ivat = ivao[i];
    var exento = exet[i];
    var imp = 1 + impuesto / 100;
    var precio = numero(inpP.value * imp);
    var preciod = numero(inpPd.value * imp);
    var precioSiva = numero(inpP.value);
    var precioSivad = numero(inpPd.value);
    var precioNew = 0;
    var precioNewCiva = 0;
    var ivaNew = 0;
    var porT = 0;
    var total = 0;

    console.log("impuesto" + imp);
    console.log("precio: " + precio);
    console.log("Precio sin iva: " + precioSiva);
    if (numero(por.value) > 0) {
      if (numero(inpP.value) > 0) {
        porT = (precioSiva * numero(por.value)) / 100;
        console.log("MontoPorcentaje: " + porT);
        precioNew = precioSiva - porT;
        ivaNew = (precioNew * impuesto) / 100;
        precioNewCiva = precioNew + ivaNew;
        if (impart18emp == "si") {
          inpS.value =
            numero(inpV.value) * precioNew +
            numero(inpV.value) * numero(iart18.value) -
            numero(des.value);
        } else {
          inpS.value = numero(inpV.value) * precioNew - numero(des.value);
        }

        console.log("precioNuevo: " + precioNew + " IvaNuevo:" + ivaNew);
        console.log("subtotal nuevo: " + inpS.value);
      } else {
        total = Totales();
        console.log("Total: " + total);
        porT = (total * numero(por.value)) / 100;
        ivaNew = (porT * impuesto) / 100;
        inpS.value = porT;
        //inpS.value=1000;
      }
      if (exento.value == 0) {
        ivat.value = number_format(ivaNew, 2);
      } else {
        ivaNew = 0;
        ivat.value = number_format(ivaNew, 2);
      }
    } else {
      /* inpS.value		=	((numero(inpV.value)*numero(inpP.value))+(numero(inpV.value)*numero(iart18.value))-numero(des.value));
			inpSd.value		=  numero(inpV.value)*numero(inpPd.value); */
      inpS.value = numero(inpV.value);
      inpSd.value = numero(inpV.value);
    }
    //document.getElementsByName("subtotal")[i].innerHTML=number_format(inpS.value,2);
    subt.value = number_format(inpS.value, 2);
    subtd.value = number_format(inpSd.value, 2);
  }
  calcularTotales(boton);
}

function calcularTotales(boton) {
  //var sub 	= document.getElementsByName("subtotal");
  var sub = document.getElementsByName("subtotal[]");
  var iv = document.getElementsByName("iva[]");
  var exento = document.getElementsByName("exentot[]");
  var cant = document.getElementsByName("cantidad[]");
  var pvp = document.getElementsByName("precio_ventapvp[]");
  var impart18emp = $("#impuestoart18_empresa").val();
  var imp = impuesto / 100;
  var total = 0;
  var ivatt = 0;
  var exentott = 0;
  var totalconiva = 0;
  var totalpvpiva = 0;
  //var tasadollar  = numero($("#tasa_dollar").val());
  var tasadollar = $("#tasa_dollar").val();
  console.log("tasadollar: " + tasadollar);
  for (var i = 0; i < sub.length; i++) {
    var subt = sub[i];
    var ivat = iv[i];
    var exentot = exento[i];
    var CanT = cant[i];
    var pvpt = pvp[i];
    //total += document.getElementsByName("subtotal")[i].value;
    total += numero(subt.value);
    ivatt += numero(subt.value) * imp;
    totalpvpiva += (numero(pvpt.value) * CanT.value - numero(subt.value)) * imp;
    exentott += numero(exentot.value) * CanT.value;
  }
  console.log("impart18emp: " + impart18emp);
  // en ordenproduccion impart18emp='no'
  impart18emp = "no";
  if (impart18emp == "si") {
    totalconiva = total + ivatt + totalpvpiva;
  } else {
    totalconiva = total + ivatt;
  }

  /* $("#subtotal").html("Bs." + number_format(total,2)); 
	$("#subtotald").html("$." +number_format(total/tasadollar,2));*/
  $("#subtotald").html("Unidades : " + number_format(total, 2));
  /* $("#iva").html("Bs." + number_format(ivatt,2)); 
	$("#ivad").html("$." +number_format(ivatt/tasadollar,2));
	$("#ivap").html("Bs." + number_format(totalpvpiva,2));
	$("#ivapd").html("$." +number_format(totalpvpiva/tasadollar,2));
	$("#exento").html("Bs." + number_format(exentott,2));
	$("#exentod").html("$." +number_format(exentott/tasadollar,2)); 
	$("#total").html("Bs." + number_format(totalconiva,2));
	$("#totald").html("$." + number_format(total/tasadollar,2));*/
  $("#totald").html(number_format(total, 0) + " Unidades");
  $("#total_venta1").val(total);
  $("#total_venta").val("");
  $("#total_venta").val(total);
  $("#total_ventad").val(total / tasadollar);
  evaluar(boton);
}

function Totales() {
  //var sub 	= document.getElementsByName("subtotal");
  var sub = document.getElementsByName("subtotal[]");
  var prev = document.getElementsByName("precio_venta[]");
  var total = 0.0;

  for (var i = 0; i < sub.length; i++) {
    if (numero(prev[i].value) > 0) {
      total += numero(sub[i].value);
    }
  }
  return total;
}

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

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

init();
