$(document).ready(function() {
  autocompleteFx($(".input-proveedor"), proveedores);

  //al presionar el check se guardará en database y pintará la compra verde
  $(document).on('change', '.check-revisado', function() {
    var check = $(this);
    var id = check.data('id');
    var revisado = false;
    var compra = $(this).closest('.compra');
    if (check.is(':checked')) {
      compra.addClass('compra-revisada');
      revisado = true;
    }
    else {
      compra.removeClass('compra-revisada');
    }

    var parametros = {
      id: id,
      revisado: revisado
    };

    $.ajax({
      data:  parametros,
      url:   '/compras/revisar',
      type:  'post',
      beforeSend: function () {
      
      },
      success:  function (response) {
        console.response;
        //$('#compra' + id).remove();
        //$('#modalCompra').modal('hide');
      }
    });
  });

  //funciones para editar
  $('#modalCompra').on('show.bs.modal', function (event) {
    $('.modal-wait').hide();
    var button = $(event.relatedTarget)
    var modal = $(this);
    modal.find('.lista-productos').html('<h4>Productos</h4>');
    modal.find('.input-id').val('0');
    modal.find('.input-id-proveedor').val('');
    modal.find('.input-proveedor').val('');
    modal.find('.input-folio').val('');
    modal.find('.input-fecha').val('');
    modal.find('.input-fecha-recepcion').val('');
    modal.find('.check-descuenta-iva').prop('checked', true);
    modal.find('.check-contable').prop('checked', true);
    modal.find('.input-descuento').val('');
    modal.find('.input-total-neto').val('');
    modal.find('.input-iva').val('');
    modal.find('.input-total').val('');
    modal.find('.text-observaciones').val('');
    modal.find('.btn-eliminar').show();
    modal.find('.btn-editar').show().removeAttr('disabled').html('Editar');
	modal.find('.select-tipo-compra').val(1);
	modal.find('.select-id-almacen').val(1);
	modal.find('.select-id-categoria-compra').val(0);
    
    if (button.data('id') == 0){
      $('#eliminar').hide();
      modal.find('#editar').html('Crear');
      $('.modal-wait').show();
    }
    else {
      var parametros = {
        id : button.data('id')
      };

      $.ajax({
        data:  parametros,
        url:   '/compras/get',
        type:  'post',
        beforeSend: function () {
        },
        success:  function (response) {

          compra = JSON.parse(response);
          modal.find('.input-id').val(compra.id);
          modal.find('.input-id-proveedor').val(compra.id_proveedor);
          modal.find('.input-proveedor').val(compra.proveedor);
          modal.find('.input-folio').val(compra.folio);
          modal.find('.input-fecha').val(compra.fecha);
          modal.find('.input-fecha-recepcion').val(compra.fecha_recepcion);
          modal.find('.input-descuento').val(compra.descuento);
          modal.find('.input-total-neto').val(compra.total_neto);
          modal.find('.input-iva').val(compra.iva);
          modal.find('.input-exento').val(compra.exento);
          modal.find('.input-total').val(compra.total);
          modal.find('.text-observaciones').val(compra.observaciones);
          if (compra.descuenta_iva == 1) {
            modal.find('.check-descuenta-iva').prop('checked', true);
          }
          else {
            modal.find('.check-descuenta-iva').prop('checked', false);
          }

          if (compra.contable == 1) {
            modal.find('.check-contable').prop('checked', true);
          }
          else {
            modal.find('.check-contable').prop('checked', false);
          }

          if(compra.id_tipo_compra > 0) {
            modal.find('.select-tipo-compra').val(compra.id_tipo_compra);
          }

		  if(compra.id_categoria > 0) {
            modal.find('.select-id-categoria-compra').val(compra.id_categoria);
          }

		  if(compra.id_almacen > 0) {
            modal.find('.select-id-almacen').val(compra.id_almacen);
          }
          
          if(compra.revisado == 1) {
            modal.find('.btn-eliminar').hide();
            modal.find('.btn-editar').hide();
          }

          if (typeof compra.compras_productos != "undefined") {
            for (let producto of compra.compras_productos) {
              var html = $($.parseHTML($('.copy').html()));

              html.find('.input-cantidad').val(producto.cantidad);
              html.find('.input-id-producto').val(producto.id_producto);
              html.find('.input-producto').val(producto.nombre);
              html.find('.input-costo-neto').val(producto.costo_neto);
              html.find('.input-costo-total').val(producto.costo_total);


			  let imagen = html.find('.imagen-producto');
			  imagen.attr('src', 'https://dementegames.cl/'+producto.id_image+'-medium_default/img.jpg');
			  imagen.attr('title', '<img src=\'https://dementegames.cl/'+producto.id_image+'-medium_default/img.jpg\'>')
			  imagen.tooltip({
				  animated: 'fade',
				  placement: 'right',
				  html: true
			  });
			  imagen.addClass('has-tooltip');

              modal.find('.lista-productos').append(html);
            }
			$('.lista-productos').find('.input-producto.new').each(function() {
				autocompleteProducto($(this));
				$(this).removeClass('new');
			});
          }
          $('.modal-wait').show();
        }
      });
    }
  });

  $(".input-proveedor" ).change(function() {
    var nombreProveedor = $(this).val();
    if (idsProveedores[nombreProveedor] == undefined) {
      $('.input-id-proveedor').val('');
      $(this).css("border-color", "#FF6666");
    }
    else {
      $('.input-id-proveedor').val(idsProveedores[nombreProveedor]);
      $(this).css("border-color", "");
    }
  });

  $(document).on('change', '.input-producto', function() {
	// REVISAR
    let articulo = $(this).closest('.articulo-compra');

    if (articulo.find('.input-cantidad').val() == 0) {
      articulo.find('.input-cantidad').val(1);
    }
	// Espera a que termine la carga antes de calcular el total
	cargaDatosProducto(articulo).done(function() {
		totalProducto(articulo);
	});
  });

  $(document).on('change', '.input-costo-total', function() {
    var form = $(this).closest('.form-compra');
    calcularCompra(form);
  });

  $(document).on('change', '.check-descuenta-iva', function() {
    var form = $(this).closest('.form-compra');
    calcularCompra(form);
  });

  $(document).on('change', '.input-total-neto', function() {
    var form = $(this).closest('.form-compra');
    totalCompra(form);
  });
  $(document).on('change', '.input-iva', function() {
    var form = $(this).closest('.form-compra');
    totalCompra(form);
  });

  $(document).on('change', '.input-exento', function() {
    var form = $(this).closest('.form-compra');
    totalCompra(form);
  });

	// Agrega un producto en blanco a la lista
	$(".add-product").click(function() { 
		agregaProducto();
	});

  $(document).on('change', '.input-cantidad', function() {
    if ($(this).val() == 0) {
      $(this).val('1');
    }
    else {
      var articulo = $(this).closest('.articulo-compra');
      totalProducto(articulo);
    }
  });

  $(document).on('change', '.input-costo-neto', function() {
    var articulo = $(this).closest('.articulo-compra');
    totalProducto(articulo);
  });

  $(document).on('click', '.btn-delete', function() {
    var articulo = $(this).closest('.articulo-compra');
    articulo.remove();
    var form = $(this).closest('.form-compra');
    calcularCompra(form);
  });

  $(document).on('change', '.input-descuento', function() {
    var form = $(this).closest('.form-compra');
    calcularCompra(form);
  });

  $("#formCompra").submit(function( event ) {
    event.preventDefault();
  });

  $("#editar" ).click(function() {
	let button = $(this);
	$('.alert-compra').html('').hide();
	button.attr('disabled', 'disabled');
	button.html('Enviando');
	var id = $('#idCompra').val();

    var parametros = $('#formCompra').serialize();
   $.ajax({
      data:  parametros,
      url:   '/compras/save',
      type:  'post',
      beforeSend: function () {
      },
      success:  function (response) {
        //var idCliente = JSON.parse(response);

        if (id == 0) {
          location.reload();
        }
        else {
          var compra = $('#compra' + id);

          var nombreProveedor = 'Sin Proveedor Asociado';
          if ($('#formCompra .input-proveedor').val() != '') {
            nombreProveedor = $('#formCompra .input-proveedor').val();
          }

          compra.find('.proveedor').html(nombreProveedor);
          compra.find('.date').html($('#fecha').val());
          compra.find('.regular-price').html($('#total').val());
          compra.find('.texto-observaciones strong').html($('#observaciones').val());
          $('#modalCompra').modal('hide');
        }
      },
	  error: function() {
		$('.alert-compra').html('Error de servidor').show();
		button.removeAttr('disabled');
		button.html('Editar');
		if (id == 0) {
			button.html('Crear');
		}
	}
    });
  });

  $( "#eliminar" ).click(function() {
    if (confirm('Eliminar')) {
      var id = $('#formCompra #idCompra').val();
      var parametros = {
        id : id
      };
      $.ajax({
        data:  parametros,
        url:   '/compras/delete',
        type:  'post',
        beforeSend: function () {
        
        },
        success:  function (response) {
          $('#compra' + id).remove();
          $('#modalCompra').modal('hide');
        }
      });
    }
  });
});

function totalProducto(articulo) {
  var cantidad = articulo.find('.input-cantidad').val();
  var costoNeto = articulo.find('.input-costo-neto').val();
  var total = cantidad * costoNeto;
  articulo.find('.input-costo-total').val(total);
  var form = articulo.closest('.form-compra');
  calcularCompra(form);
}

function calcularCompra(form) {
  var totalNeto = 0;
  form.find(".input-costo-total").each(function() {
    totalNeto += Number($(this).val());
  });
  var descuento = Number(form.find('.input-descuento').val());
  var exento = Number(form.find('.input-exento').val());
  totalNeto = totalNeto - descuento;
  form.find('.input-total-neto').val(totalNeto);
  if (form.find('.check-descuenta-iva').is(':checked')) {
    var iva = Math.round(totalNeto * 0.19);
    form.find('.input-iva').val(iva);
  }
  else {
    form.find('.input-iva').val(0);
  }
  totalCompra(form);
}


function totalCompra(form) {
  var totalNeto = Number(form.find('.input-total-neto').val());
  var iva = Number(form.find('.input-iva').val());
  var exento = Number(form.find('.input-exento').val());

  form.find('.input-total').val(totalNeto + iva + exento);
}

function validar(form) {
  //validar el formulario actual
}

function agregaProducto(){
	let html = $(".copy").html();
	$(".form-compra").find('.lista-productos').append(html);
	$('.lista-productos').find('.input-producto.new').each(function() {
		autocompleteProducto($(this));
		$(this).removeClass('new');
		$(this).focus();
	});
}

function cargaDatosProducto(articulo){
	let id = articulo.find('.input-id-producto').val();
	let parametros = {
		id : id
	};
	return $.ajax({
		data:  parametros,
		url:   '/productos/datos_para_compra',
		type:  'post',
		beforeSend: function () {
		},
		success:  function (response) {
			let res = JSON.parse(response);

			// Setea imagen
			let imagen = articulo.find('.imagen-producto');
			imagen.attr('src', 'https://dementegames.cl/'+res.id_image+'-medium_default/img.jpg');
			imagen.attr('title', '<img src=\'https://dementegames.cl/'+res.id_image+'-medium_default/img.jpg\'>')
			if (!imagen.hasClass('has-tooltip')) {
				imagen.tooltip({
					animated: 'fade',
					placement: 'right',
					html: true
				});
			}
			else{
				imagen.attr('data-original-title', '<img src=\'https://dementegames.cl/'+res.id_image+'-medium_default/img.jpg\'>')
			}
			imagen.addClass('has-tooltip');

			// Setea costo neto
			articulo.find('.input-costo-neto').val(res.costo_neto);
		}
	});
}