$(document).ready(function () {
    //Funcion de prueba para Sweet Alert 2
    $('#salir').click(function() {
        swal.fire({
            title: "¿Estás seguro?",   
            text: "Quiere salir del sistema",   
            type: "question",   
            showCancelButton: true,
            confirmButtonColor: "#3085d6",
            cancelButtonColor: "#d33",     
            confirmButtonText: "Aceptar",
            cancelButtonText: "Cancelar"
        }).then((result) => {
            $.post("controladores/usuarioControlador.php?op=salir",function(data)
            {
               //    alert("Data: " + data + "\nStatus: " + status);
               //    console.log(data);
                if (data==1){
                  //  $(location).attr("href","vistas/contenidos/escritorio-view.php");
                  window.location="login";
                }else{
                    swal(
                        'Error inesperado',
                        'No se pudo cerrar la seccion',
                        'error'
                    ); 
                }
            })
        }) //fin
    });

    $.validator.addMethod("formAlphanumeric", function (value, element) {
     // var pattern = /^[\w]+(.,-Ññ'&)+$/i; ///^[a-zA-Z0-9_\.,-Ññ'&)(\s]+$/,
      var pattern = /^[a-zA-ZÀ-ÿ0-9_.-\u00f1\u00d1\&]+(\s*[a-zA-ZÀ-ÿ0-9_.-\u00f1\u00d1\&]*)*[a-zA-ZÀ-ÿ0-9_.-\u00f1\u00d1\&]+$/gs;
      return this.optional(element) || pattern.test(value);
    }, "El campo debe tener un valor alfanumérico (azAZ09)");

    $.validator.addMethod("formEmail", function (value, element) {
      var pattern = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
      return this.optional(element) || pattern.test(value);
    }, "Formato del email incorrecto");

    $.validator.addMethod("formNumeric", function (value, element) {
      var pattern =  /^[0-9\.,\s]+$/;
      return this.optional(element) || pattern.test(value);
    }, "Solo valores númericos (123456789)");

    $.validator.addMethod("valueNotEquals", function(value, element, arg){
      return arg !== value;
     }, "Debe Seleccionar un valor");

     
     $.validator.addMethod("combo", function (value, element) {
      var combb = / /;
       return this.optional(element) || combb.test(value);
     });

     $("#tipoproducto").on('change', function() {
      $(this).trigger('blur');
    });
  
});



/******************************************************************
 * **** Funciones para el formateo de los valores numericos  ******
 ******************************************************************/
// Funcion convertir en numerico
function numero(amount) {
    amount += ''; // por si pasan un numero en vez de un string
    amount = amount.replace(/[^0-9\,-]/g, ''); // elimino cualquier cosa que no sea numero o coma
	amount = amount.replace(',','.');
	amount = parseFloat(amount);
    return amount;
}

// Funcion para dar formato a los numeros
function number_format(amount, decimals) {

    amount += ''; // por si pasan un numero en vez de un string
    amount = parseFloat(amount.replace(/[^0-9\.-]/g, '')); // elimino cualquier cosa que no sea numero o punto

    decimals = decimals || 0; // por si la variable no fue fue pasada

    // si no es un numero o es igual a cero retorno el mismo cero
    if (isNaN(amount) || amount === 0) 
        return parseFloat(0).toFixed(decimals);

    // si es mayor o menor que cero retorno el valor formateado como numero
    amount = '' + amount.toFixed(decimals);

    var amount_parts = amount.split('.'),
        regexp = /(\d+)(\d{3})/;

    while (regexp.test(amount_parts[0]))
        amount_parts[0] = amount_parts[0].replace(regexp, '$1' + '.' + '$2');

    return amount_parts.join(',');


}

function entero(value) {
    return value
    .replace(/\D/g, "")
    .replace(/\B(?=(\d{3})+(?!\d)\.?)/g, ".");
}

function decimal(value) {
    return value
    .replace(/\D/g, "")
    .replace(/([0-9])([0-9]{2})$/, '$1,$2')
    .replace(/\B(?=(\d{3})+(?!\d)\.?)/g, ".");
    
}

function decimald(value) {
    return value
    .replace(/\D/g, "")
    .replace(/([0-9])([0-9]{1})$/, '$1,$2')
    .replace(/\B(?=(\d{3})+(?!\d)\.?)/g, ".");
    
}

function decimald3(value) {
    return value
    .replace(/\D/g, "")
    .replace(/([0-9])([0-9]{3})$/, '$1,$2')
    .replace(/\B(?=(\d{3})+(?!\d)\.?)/g, ".");
    
}

function round(num, decimales = 2) {
    var signo = (num >= 0 ? 1 : -1);
    num = num * signo;
    if (decimales === 0) //con 0 decimales
        return signo * Math.round(num);
    // round(x * 10 ^ decimales)
    num = num.toString().split('e');
    num = Math.round(+(num[0] + 'e' + (num[1] ? (+num[1] + decimales) : decimales)));
    // x * 10 ^ (-decimales)
    num = num.toString().split('e');
    return signo * (num[0] + 'e' + (num[1] ? (+num[1] - decimales) : -decimales));
}

//fecha del dia
function FechaHoy() {
    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;
	return today;
}



//Convertir la fecha
function convertDateFormat(texto) {
    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	=	dd+'-'+mm+'-'+yyyy;
	return today;
    //return texto.replace(/^(\d{4})-(\d{2})-(\d{2})$/g,'$3/$2/$1');
}

//Convertir la fecha
function convertDateLote(texto) {
    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	=	dd+mm+yyyy;
	return today;
    //return texto.replace(/^(\d{4})-(\d{2})-(\d{2})$/g,'$3/$2/$1');
}

/**
 * Funcion para verificar si cambia de estado una fila de tabla detalle
 * 
 */

//De detectamos cuando cambia un valor en la tabla donde se registran los productos
// Campos que vamos a formatear
// cantidad,precio_compra,precio_venta 

 var typingTimer;                //timer identifier
 var doneTypingInterval = 10000;  //time in ms, 1 second for example
 //var doneTypingInterval = 1500;  //time in ms, 1 second for example
 //detalles
 $('#detalles').on('keyup paste', ':input', function() { 
     var value  = $(this).val(); //obtiene el valor actual del input.
     var name   = $(this).prop('name');
     
     if (name=='cantidad[]'){
        $(this).val(decimal(value));
        //evaluar(value);
     }
     //precio_compra
     if (name=='precio_compra[]'){
       $(this).val(decimal(value));
     }
     if (name=='precio_comprad[]'){
        $(this).val(decimal(value));
    }
     if (name=='precio_venta[]'){
       $(this).val(decimal(value));
     }
     if (name=='precio_ventad[]'){
        $(this).val(decimal(value));
        
     } 
     if (name=='precio_compraa[]'){
        $(this).val(decimal(value));
    }
    if (name=='precio_compraad[]'){
        $(this).val(decimal(value));
    }

    if (name=='preciod[]'){
        $(this).val(decimal(value));
    }
     
     if (name=='porcentaje[]'){
        $(this).val(decimal(value));
     }
     if (name=='descuento[]'){
        $(this).val(decimal(value));
     }
     if (name=='descuentod[]'){
        $(this).val(decimal(value));
     }
     if (name=='selectb[]'){
        console.log('nombre: '+name);
        //$(this).val(decimal(value));
     }
     
               
     clearTimeout(typingTimer);
     typingTimer = setTimeout(doneTyping, doneTypingInterval);
 });

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

 //calculamos los totales
function doneTyping () {
    if( typeof modificarSubtotales !== 'undefined' && jQuery.isFunction(modificarSubtotales) ) {
        //Es seguro ejectura la función
        modificarSubtotales();
    }
    //modificarSubtotales();
}

//Para pedido de la fuerza de venta

//De detectamos cuando cambia un valor en la tabla donde se registran los productos
// Campos que vamos a formatear
// cantidad,precio_compra,precio_venta 

var typingTimer1;                //timer identifier
var doneTypingInterval1 = 10000;  //time in ms, 1 second for example
//detalles
$('#detallesp').on('keyup paste', ':input', function() { 
    var value  = $(this).val(); //obtiene el valor actual del input.
    var name   = $(this).prop('name');
    
    if (name=='cantidad[]'){
       $(this).val(decimal(value));
    }
    //precio_compra
    if (name=='precio_compra[]'){
      $(this).val(decimal(value));
    }
    if (name=='precio_compraa[]'){
        $(this).val(decimal(value));
    }
    if (name=='precio_compraad[]'){
        $(this).val(decimal(value));
    }
    if (name=='precio_comprad[]'){
       $(this).val(decimal(value));
   }
    if (name=='precio_venta[]'){
      $(this).val(decimal(value));
    }
    if (name=='precio_ventad[]'){
       $(this).val(decimal(value));
       
    }  
    if (name=='porcentaje[]'){
       $(this).val(decimal(value));
    }
    if (name=='descuento[]'){
       $(this).val(decimal(value));
    }
    if (name=='descuentod[]'){
       $(this).val(decimal(value));
    }
    if (name=='selectb[]'){
       console.log('nombre: '+name);
       //$(this).val(decimal(value));
    }
    
              
    clearTimeout(typingTimer1);
    typingTimer1 = setTimeout(doneTyping1, doneTypingInterval1);
});

 //Se limpia el contador cuando deja de escribir
$('#detalles1').on('keydown', function () {
     clearTimeout(typingTimer1);
});

//calculamos los totales
function doneTyping1 () {
   if( typeof modificarSubtotales !== 'undefined' && jQuery.isFunction(modificarSubtotales) ) {
       //Es seguro ejectura la función
       modificarSubtotales();
   }
   //modificarSubtotales();
}

//fin

  function ivapercibido(precio) {
    var impuestoiva     = $("#impuestoiva").val()/100;
    var porcentaje20    = ($("#porcentajeprecio").val()/100);    
    var precio20        = (precio*porcentaje20)*impuestoiva;
    return precio20;
  }

  /* function ivapercibidopvp(preciopvp) {
    var impuestoiva     = $("#impuestoiva").val()/100;
    var porcentaje20    = ($("#porcentajeprecio").val()/100);    
    var precio20        = ((preciopvp*porcentaje20)/(1+porcentaje20))*impuestoiva;
    return precio20;
  } */

  function ivap(precio) {
    var impuestoiva     = $("#impuestoiva").val()/100;
    var ivapr           = precio*impuestoiva;
    return ivapr;
  }
/* 
  function ivappvp(preciopvp) {
    var impuestoiva     = $("#impuestoiva").val()/100;
    var porcentaje20    = ($("#porcentajeprecio").val()/100);
    var ivapr           = (preciopvp*(1+porcentaje20))*impuestoiva;
    return ivapr;
  } */

  function precioporcentaje(precio) {
    var porcentaje          = 1+($("#porcentajeprecio").val()/100);    
    var precioporcentaje    = precio*porcentaje;
    return precioporcentaje;
  }

  /* function precioporcentajepvp(preciopvp) {
    var porcentaje          = 1+($("#porcentajeprecio").val()/100);    
    var precioporcentaje    = preciopvp/porcentaje;
    return precioporcentaje;
  }
 */
  function pvpp1(precio) {
    console.log('pvpp1 precio: '+precio);
    var art18   = numero($("#impuestoart18d").val());
    console.log('art18 : '+art18);
    var pvp1    = ivapercibido(precio)+ivap(precio)+precio+art18; 
    console.log('pvpp1 : '+pvp1);
    //var pvp         = iva+ivaper+precio;
     return pvp1;
  }

  function precioc(preciopvp) {
    //console.log('pvpp1 precio: '+precio);
    var art18           = numero($("#impuestoart18d").val());
    var porcentaje      = ($("#porcentajeprecio").val()/100);
    console.log('art18c : '+art18);
    console.log('porcentajec : '+porcentaje);
    var precio  = (preciopvp/(1+0.16+(porcentaje*.16)))-art18;
    console.log('precioc : '+precio);
    //var pvp         = iva+ivaper+precio;
     return precio;
  }


  //Articulo
  $("#preciod").keyup(function(event) {
    
    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value       = $(this).val();
    $(this).val(decimald3(value));
    
    var valued      = numero($(this).val())*numero($("#tasacambio").val());
    var precio      = numero($(this).val());
    var ivaper      = ivapercibido(precio); 
    var precio20    = precioporcentaje(precio);
    var iva         = ivap(precio);
    var pvp         = pvpp1(precio);
    console.log('precio :'+precio);
    //console.log('precio20 :'+precio20);
    //console.log('ivaper :'+ivaper);
    console.log('iva :'+iva);
    console.log('pvp :'+pvp);
    $("#porcentajeprecio1").val(number_format(precio20,2));
    $("#ivapercibido").val(number_format(ivaper,2));
    $("#ivaprecio").val(number_format(ivap(precio),2));
    $("#preciopvp").val(number_format(pvp*numero($("#tasacambio").val()),2));

    $("#preciopvpd").val(number_format(pvp,3));
    $("#precio").val(number_format(valued,2));
    //Precio A
    $("#preciodbs").val(number_format(valued,2));
    $("#precioddollar").val($("#preciod").val());
    $("#porcentajeprecioddollar").val(number_format(precio20,2));
    $("#ivapercibidoddollar").val(number_format(ivaper,2));
    $("#ivaddollar").val(number_format(ivap(precio),2));
    $("#pvpddollar").val(number_format(pvp,3));
    $("#pvpdbs").val(number_format(pvp*numero($("#tasacambio").val()),2));


    //Precio A1, B1, C1
    $("#preciolbs1").val(number_format(valued,2));
    $("#precioldollar1").val($("#preciod").val());
    $("#preciorbs1").val(number_format(valued,2));
    $("#preciordollar1").val($("#preciod").val());
    $("#preciodbs1").val(number_format(valued,2));
    $("#precioddollar1").val($("#preciod").val());
  });

  // Precio B bs
  $("#preciolbs").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())/numero($("#tasacambio").val());
    
    
    $("#precioldollar").val(number_format(valued,3));
  });

  // Precio B bs
  $("#precioldollar").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimald3(value));
    var valued  = numero($(this).val())*numero($("#tasacambio").val());
    //pvp
    var precio      = numero($(this).val());
    var precio20    = precioporcentaje(precio);
    var ivaper      = ivapercibido(precio); 
    var iva         = ivap(precio);
    //var pvp         = iva+ivaper+precio;
    var pvp         = pvpp1(precio);
    
    $("#porcentajeprecioldollar").val(number_format(precio20,2));
    $("#ivapercibidoldollar").val(number_format(ivaper,2));
    $("#ivaldollar").val(number_format(iva,2));
    $("#pvpldollar").val(number_format(pvp,3));
    $("#pvplbs").val(number_format(pvp*numero($("#tasacambio").val()),2));

    $("#preciolbs").val(number_format(valued,2));
  });

  // Precio C bs
  $("#preciorbs").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())/numero($("#tasacambio").val());
    $("#preciordollar").val(number_format(valued,3));
  });

 // Precio C bs 
  $("#preciordollar").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimald3(value));
    var valued  = numero($(this).val())*numero($("#tasacambio").val());
    //pvp
    var precio      = numero($(this).val());
    var precio20    = precioporcentaje(precio);
    var ivaper      = ivapercibido(precio); 
    var iva         = ivap(precio);
    //var pvp         = iva+ivaper+precio;
    var pvp         = pvpp1(precio);
    
    $("#porcentajepreciordollar").val(number_format(precio20,2));
    $("#ivapercibidordollar").val(number_format(ivaper,2));
    $("#ivardollar").val(number_format(iva,2));
    $("#pvprdollar").val(number_format(pvp,3));
    $("#pvprbs").val(number_format(pvp*numero($("#tasacambio").val()),2));

    $("#preciorbs").val(number_format(valued,2));
  });

 // Precio DD bs
   $("#precioddbs").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())/numero($("#tasacambio").val());
    $("#preciodddollar").val(number_format(valued,3));
  });

 // Precio DD bs 
  $("#preciodddollar").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimald3(value));
    var valued  = numero($(this).val())*numero($("#tasacambio").val());
    //pvp
    var precio      = numero($(this).val());
    var precio20    = precioporcentaje(precio);
    var ivaper      = ivapercibido(precio); 
    var iva         = ivap(precio);
    //var pvp         = iva+ivaper+precio;
    var pvp         = pvpp1(precio);
    
    $("#porcentajepreciodddollar").val(number_format(precio20,2));
    $("#ivapercibidodddollar").val(number_format(ivaper,2));
    $("#ivadddollar").val(number_format(iva,2));
    $("#pvpdddollar").val(number_format(pvp,3));
    $("#pvpddbs").val(number_format(pvp*numero($("#tasacambio").val()),2));

    $("#precioddbs").val(number_format(valued,2));
  });

  // Precio E bs
  $("#precioebs").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())/numero($("#tasacambio").val());
    $("#precioedollar").val(number_format(valued,3));
  });

 // Precio E bs 
  $("#precioedollar").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimald3(value));
    var valued  = numero($(this).val())*numero($("#tasacambio").val());
    //pvp
    var precio      = numero($(this).val());
    var precio20    = precioporcentaje(precio);
    var ivaper      = ivapercibido(precio); 
    var iva         = ivap(precio);
    //var pvp         = iva+ivaper+precio;
    var pvp         = pvpp1(precio);
    
    $("#porcentajeprecioedollar").val(number_format(precio20,2));
    $("#ivapercibidoedollar").val(number_format(ivaper,2));
    $("#ivaedollar").val(number_format(iva,2));
    $("#pvpedollar").val(number_format(pvp,3));
    $("#pvpebs").val(number_format(pvp*numero($("#tasacambio").val()),2));

    $("#precioebs").val(number_format(valued,2));
  });

  // Precio A bs
  $("#preciodbs").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())/numero($("#tasacambio").val());
    $("#precioddollar").val(number_format(valued,3));
  });

  // precio A $
  $("#precioddollar").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimald3(value));
    var valued  = numero($(this).val())*numero($("#tasacambio").val());
     //pvp
    var precio      = numero($(this).val());
    var precio20    = precioporcentaje(precio);
    var ivaper      = ivapercibido(precio); 
    var iva         = ivap(precio);
     //var pvp         = iva+ivaper+precio;
    var pvp         = pvpp1(precio);
    

    $("#porcentajeprecioddollar").val(number_format(precio20,2));
    $("#ivapercibidoddollar").val(number_format(ivaper,2));
    $("#ivaddollar").val(number_format(iva,2));
    $("#pvpddollar").val(number_format(pvp,3));
    //precio principal
    $("#porcentajeprecio1").val(number_format(precio20,2));
    $("#ivapercibido").val(number_format(ivaper,2));
    $("#ivaprecio").val(number_format(iva,2));
    $("#preciopvpd").val(number_format(pvp,2));
    $("#pvpdbs").val(number_format(pvp*numero($("#tasacambio").val()),2));
    $("#precio").val(number_format(valued,2));
    $("#preciod").val(number_format(value,3));
    
    $("#preciopvp").val(number_format(pvp*numero($("#tasacambio").val()),2));    
    $("#preciodbs").val(number_format(valued,2));
  });
 
  $("#costo").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())/numero($("#tasacambio").val());
    $("#costod").val(number_format(valued,2));
  });

  $("#costod").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())*numero($("#tasacambio").val());
    $("#costo").val(number_format(valued,2));
  });

  $("#costoa").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())/numero($("#tasacambio").val());
    $("#costoad").val(number_format(valued,2));
  });

  $("#costoad").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())*numero($("#tasacambio").val());
    $("#costoa").val(number_format(valued,2));
  });

  $("#peso").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
   
  });

  $("#largo").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
   
  });

  $("#ancho").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
   
  });

  $("#alto").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
   
  });

  $("#cantidadmayor").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
   
  });

  $("#gradoalcohol").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
   
  });


  $("#porcentaje").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
  });
  
  $("#unidademedidad").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
  });

  $("#factorconversion").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
  });

  $("#preciopvp").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())/numero($("#tasacambio").val());
    $("#preciopvpd").val(number_format(valued,3));

    
    //$("#precio").val(number_format(valued,2));
  });

  $("#preciopvpd").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimald3(value));
    var valued  = numero($(this).val())*numero($("#tasacambio").val());
    $("#preciopvp").val(number_format(valued,2));
   
    var valued      = numero($(this).val())*numero($("#tasacambio").val());
    var precio      = precioc(numero($(this).val()));
    var ivaper      = ivapercibido(precio); 
    var precio20    = precioporcentaje(precio);
    var iva         = ivap(precio);
    //var pvp         = pvpp1(precio);
    console.log('precio :'+precio);
    //console.log('precio20 :'+precio20);
    //console.log('ivaper :'+ivaper);
    console.log('iva :'+iva);
    //console.log('pvp :'+pvp);
    $("#porcentajeprecio1").val(number_format(precio20,2));
    $("#ivapercibido").val(number_format(ivaper,2));
    $("#ivaprecio").val(number_format(ivap(precio),2));
    $("#precio").val(number_format(precio*numero($("#tasacambio").val()),2));

    $("#preciod").val(number_format(precio,3));
    //$("#precio").val(number_format(valued,2));

  });

  $("#impuestoart18").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())/numero($("#tasacambio").val());
    $("#impuestoart18d").val(number_format(valued,3));
  });

  $("#impuestoart18d").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())*numero($("#tasacambio").val());
    $("#impuestoart18").val(number_format(valued,3));
  });

  $("#porcentajeprecio").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
   
  });
//venta
$("#montoigtf").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    calcularigtf($(this).val());
  });

// Servicio
$("#preciosd").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())*$("#tasa_dollar").val();
    $("#precios").val(number_format(valued,2));
});  

$("#precios").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valueb  = numero($(this).val())/$("#tasa_dollar").val();
    $("#preciosd").val(number_format(valueb,2));
}); 

//Caja chica
$("#montod").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
        event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valued  = numero($(this).val())*numero($("#tasa_dollar").val());
    $("#monto").val(number_format(valued,2));
});  

$("#monto").keyup(function(event) {
    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
        event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
    var valueb  = numero($(this).val())/numero($("#tasa_dollar").val());
    $("#montod").val(number_format(valueb,2));
}); 

//Vendedores Comisiones
$("#comisionventa1").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
   
});

$("#comisioncobranza1").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
   
});

$("#comisioncobranza2").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
   
});

$("#comisioncobranza").keyup(function(event) {

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
    }
    var value  = $(this).val();
    $(this).val(decimal(value));
   
});


function validar() {
  // var formulario  = $("#formulario"); 
  /* $.validator.setDefaults({
    errorClass: 'help-block',
    highlight: function(element) {
      $(element)
        .closest('.form-group')
        .addClass('is-valid');
    },
    unhighlight: function(element) {
      $(element)
        .closest('.form-group')
        .removeClass('is-valid');
    },
    errorPlacement: function (error, element) {
      if (element.prop('type') === 'checkbox') {
        error.insertAfter(element.parent());
      } else {
        error.insertAfter(element);
      }
    }
  });tipoproducto */
  
  $("#formulario").validate({
    ignore: ".select2-input, .select2-focusser",
    rules: {
      nombre: {
        required: true,
        minlength: 2,
        formAlphanumeric: true,
        },
      nombred: {
        required: true,
        minlength: 2,
        formAlphanumeric: true,
      },
      descripcion: {
        minlength: 3,
        formAlphanumeric: true,
      },
      porcentajealicuota: {
        formNumeric: true,
      },
      /* idmarca:{
        required: true, 
         valueNotEquals: "Seleccione una Clasificación",
      }, */
      stock:{
        formNumeric: true,
      },
      unidademedidad:{
        required: true,
        formNumeric: true,
      },
      precio: {
        formNumeric: true,
      },
      preciopvp: {
        formNumeric: true,
      },
      impuestoart18: {
        formNumeric: true,
      },
      impuestoart18d: {
        formNumeric: true,
      },
      costo: {
        formNumeric: true,
      },
      codigo: {
        formAlphanumeric: true,
      },
      tipoproducto: {
        required: true,
      },
      
      
      //Para Proveedores y Cliente
      tipo_documento: {
        required: true,
        combo: true,
      },
      tipo_documentod: {
        required: true,
      },
      num_documento: {
        formNumeric: true,
        required: true,
      },
      num_documentod: {
        formNumeric: true,
        required: true,
       
      },
      direccion: {
        formAlphanumeric: true,
        minlength: 3,
      },
      direcciond: {
        formAlphanumeric: true,
        minlength: 3,
      },
      email: {
        formEmail : true,
      },
      emaild: {
        formEmail : true,
      },
      telefono: {
        formNumeric: true,
        
      },
      telefonod: {
        formNumeric: true,
      },
      licencia_licor: {
        formAlphanumeric: true,
        minlength: 3,
      },
      licencia_licord: {
        formAlphanumeric: true,
        minlength: 3,
      },
      // Campos de ingreso
      idproveedor: {
        required: true,
      },
      fecha_hora: {
        formAlphanumeric: true,
      },
      serie_comprobante: {
        formAlphanumeric: true,
      },
      serie_comprobante: {
        formAlphanumeric: true,
      },
      tipo_comprobante: {
        formAlphanumeric: true,
      },
      num_suministro1: {
        formAlphanumeric: true,
      },
      impuesto: {
        formNumeric: true,
      },
      iddiacredito: {
        required: true,
      },
      num_ordencompraingreso: {
        formAlphanumeric: true,
      },
      
      // Para la Tarjeta
      num_tarjeta: {
        formAlphanumeric: true,
      },
      codigoBarraTarjeta: {
        formAlphanumeric: true,
      },
      // Para Pago de cliente
      idformapago: {
        required: true,
      },
      idtipopagos: {
        required: true,
      },   
      idbancocuenta: {
        required: true,
      },
      idreferencia: {
        formAlphanumeric: true,
      },
      montopago: {
        formNumeric: true,
        required: true,
           
        }
    },
    //messages: { idmarca: { required: "Campo requerido" }, },
    messages: { tipoproducto: { required: "Seleccione una opcion" }, },
    errorElement: "span",
    //errorPlacement: function (error, element) { error.addClass("invalid-feedback"); element.closest(".form-group").append(error); },
    errorPlacement: function (error, element) { error.addClass("invalid-feedback"); element.closest(".form-group").append(error); $(element).next().append(error);},
    highlight: function (element, errorClass, validClass,input) { $(element).addClass("is-invalid").removeClass("is-valid");$(input).parents('.form-group').addClass('has-danger'); },
    unhighlight: function (element, errorClass, validClass,input) { $(element).removeClass("is-invalid").addClass("is-valid"); $(input).parents('.form-group').removeClass('has-danger');},

    
    
  });
  var validator = $("#formulario").validate();
  validator.form();
  //alert( "Valid: " + validator.valid() );
  return validator.valid();
}
