// {} Librerías e importaciones

// ! Tabla
import Tabla from "../../elementos/tabla.js";

// {}
(() => {

  // ! Declaración de variables
  let
		peticion = { actual: null },
		tabla = {
			instancia: new Tabla({
				columna: {
					peticion: {
						ruta: `${window.aplicacion.enlace}/ejecutar`,
						parametro: {
							procedimiento: 'p_traer_encabezado_reportes',
							renglon: 'ACTIVOS',
							tipo_reporte:() => tipo_reporte.value
						}
					}
				},
				datos: {
					peticion: {
						ruta: '../ejecutar?procedimiento=p_traer_activos',
						parametro: () => { return Object.fromEntries(parametros(formularioReporteActivos)) }
					}
				}
			})
		},
		ventana = {
			emergente: { inicializador: $(id_beneficiario).parent().find('[data-bs-target]')[0] }
		}
	;

	// !
	$.ajax({
		url: `${window.aplicacion.enlace}/ejecutar`,
		data: {
			procedimiento: 'p_traer_fechas'
		},
		success: function (respuesta) {

			respuesta = respuesta[0];

			$.each(respuesta, (indice, valor) => respuesta[indice] = respuesta[indice].split(' ')[0]);

			desde_fecha.value = respuesta.desde_fecha;
			desde_fecha.min = respuesta.desde_fecha_minima;
			desde_fecha.max = respuesta.desde_fecha_maxima;

			hasta_fecha.value = respuesta.hasta_fecha;
			hasta_fecha.min = respuesta.hasta_fecha_minima;
			hasta_fecha.max = respuesta.hasta_fecha_maxima

		}
	});

	// !
	$(destino).change(function (evento) {

		// +
		if (this.value === 'NORMAL') {

			// ?
			id_beneficiario.name = 'id_cliente';
			beneficiario.name = 'cliente';

			// ?
			ventana.emergente.inicializador.dataset.peticionTabla = 'clientes';
			ventana.emergente.inicializador.dataset.peticionCampo = 'cliente';
			ventana.emergente.inicializador.dataset.ventanaEmergenteTitulo = 'Clientes';

		} else {

			// ?
			id_beneficiario.name = 'id_suplidor';
			beneficiario.name = 'suplidor';

			// ?
			ventana.emergente.inicializador.dataset.peticionTabla = 'suplidores';
			ventana.emergente.inicializador.dataset.peticionCampo = 'suplidor';
			ventana.emergente.inicializador.dataset.ventanaEmergenteTitulo = 'Suplidores';

		}

	});

	// !
	$(id_beneficiario).focusout(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`,
			data: {
				procedimiento: 'p_traer_unico_registro',
				renglon: ventana.emergente.inicializador.dataset.peticionCampo,
				id_renglon: this.value
			},
			beforeSend: (peticion, configuracion) => { },
			success: function (respuesta, estado, peticion) { },
			error: function (peticion, estado) { },
			complete: (peticion, estado) => destino.value === 'SUPLIDOR' && tabla.facturas.instancia.ajax.reload(),
			campo: { elemento: this },
			formulario: { elemento: formularioReporteSolicitudesPagos }
		});

	});

	// !
	$(formularioReporteSolicitudesPagos).on('submit reset', async function(evento) {

		// +
		if (evento.type === 'reset')
			return tabla.instancia.destruir()
		;

		// +
		if (
			(!document.activeElement.type && !['BODY', 'DIV'].includes(document.activeElement.tagName)) ||
			(document.activeElement.type && document.activeElement.type !== 'submit')
		)
			return
		;

		// +
		await tabla.instancia.inicializar()

	})


})()
