// {} Librerías e importaciones

// ! Tabla
import { parametros } from '../../../utilidades.js';
import Tabla from '../../elementos/tabla.js';

// {}
(() => {

  // ! Declaración de variables
  let peticion = {
    actual: null
  },
	campo = {
		cantidad: window.aplicacion.campo.mascara.cantidad
	}

  new Tabla({
		columna: {
      peticion: {
        ruta: `${window.aplicacion.enlace}/ejecutar`,
        parametro: { procedimiento: 'p_traer_encabezado_registros'}
      }
    },
    datos: {
      peticion: {
        ruta: `${window.aplicacion.enlace}/ejecutar`,
        parametro: {
          procedimiento: 'p_traer_registros_combinados',
          renglon: 'COMPROBANTES'
        }
      }
    },
    configuracion: {
      dom: `ftp`
    }
  }).inicializar();

	// !
	$(id_tipo_comprobante).on('select2:select', function () {

		// + Condición para verificar si la
		// + petición existe y cancelarla
		peticion.actual &&
		peticion.actual.abort();

		// + Petición hacía el
		// + controlador 'traerRegistros'
		peticion.actual = $.ajax({
			url: `${window.aplicacion.enlace}/ejecutar`,
			data: {
				procedimiento: 'p_traer_secuencia_comprobantes',
				id_comprobante: this.value
			},
			beforeSend: function(peticion, configuracion) {},
			success: function(respuesta, estado, peticion) {},
			error: function(peticion, estado) {},
			complete: function(peticion, estado) {},
			formulario: { elemento: formularioComprobantes }
		});

	});

	// !
	$(cantidad).on('focusout', function (evento) {

		if(numero_inicial.value.length > 0)
			return $(numero_inicial).trigger('focusout');

	});

	// !
	$(numero_inicial).on('focusout', function (evento) {

		numero_final.value = (Number(numero_inicial.value) + Number(cantidad.value) - 1).toString().padStart(9, '0');

	});

	// !
	$(numero_inicial).on('input', function () { this.value = this.value.replace(/[^0-9]/g, '') });

	// // !
	// $(botonGuardar).click(function (evento) {

	// 	let formulario = {
	// 		peticion: {
	// 			parametro: parametros(formularioComprobantes)
	// 		}
	// 	}

	// 	const vencimiento = formulario.peticion.parametro.get('vencimiento').replaceAll('-','')

	// 	const numero_inicial = formulario.peticion.parametro.get('numero_inicial').toString();

	// 	formulario.peticion.parametro.set('vencimiento', vencimiento);

	// 	formulario.peticion.parametro.set('numero_inicial', numero_inicial);

	// 	// +
	// 	window.aplicacion.peticion.formulario.parametro = formulario.peticion.parametro

	// });

	// !
  $('#tablaRegistros tbody').on('dblclick','tr', function (evento) {

		// + Condición para verificar si la
    // + petición existe y cancelarla
    peticion.actual &&
    peticion.actual.abort();

    // + Petición hacía el
    // + controlador 'traerRegistros'
    peticion.actual = $.ajax({
      url: `${window.aplicacion.enlace}/ejecutar`,
      type: 'GET',
      data: {
        procedimiento: 'p_traer_unico_registro',
        renglon: 'COMPROBANTE',
				id_renglon: $(evento.currentTarget).find('.id').text()
      },
      beforeSend: function(peticion, configuracion) {},
      success: function(respuesta, estado, peticion) {},
      error: function(peticion, estado) {},
      complete: function(peticion, estado) {

				$(numero_inicial).trigger('focusout');
			},
      formulario: { elemento: formularioComprobantes }
    });

  });

	// !
  $(document).on('ajaxSuccess', (evento, configuracion) => {

    if (
      window.aplicacion.peticion.formulario.elemento === formularioComprobantes &&
      window.aplicacion.peticion.formulario.exitosa.propiedades === window.aplicacion.peticion.exitosa.propiedades
    )
      $("#tablaRegistros").DataTable().ajax.reload();

  });

})();
