// {} Librerías e importaciones

// ! Utilidades
import { parametros } from "../../../utilidades.js";

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

// {}
(async () => {

  // ! Declaración de variables
  let
		peticion = {
			actual: null
		},
		campo = { id_cliente: window.aplicacion.campo.mascara.id_cliente },
		tabla = {
			instancia: new Tabla({
				columna: {
					peticion: {
						ruta: `${window.aplicacion.enlace}/ejecutar`,
						parametro: {
							procedimiento: 'p_traer_encabezado_reportes',
							tipo_reporte:() => tipo_reporte.value
						}
					}
				},
				datos: {
					peticion: {
						ruta: `${window.aplicacion.enlace}/ejecutar?procedimiento=p_traer_documentos_bancos`,
						parametro: () => Object.fromEntries(parametros(formularioReporteDocumentosBancarios))
					}
				}
			}),
			informacion: {
				elemento: $(tablaRegistrosInformacion),
				clase: new Tabla({
					tabla: tablaRegistrosInformacion,
					columna: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								procedimiento: 'p_traer_encabezado_adicional'
							}
						}
					},
					datos: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								procedimiento: 'p_traer_informacion_adicional',
								renglon: 'DOCUMENTO_BANCOS',
								id_documento: () => !id_documento.value ? -1 : id_documento.value
							}
						}
					},
					configuracion: {
						dom: `t`,
						pageLength: -1,
						autoWidth: false
					}
				})
			}
		}

	// !
	await tabla.informacion.clase.inicializar();
	tabla.informacion.instancia = tabla.informacion.elemento.DataTable();

	$.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

		}
	});

	// // !
	// $(id_cliente).focusout(function(evento) {

	// 	// +
  //   if (!this.value)
	// 		return cliente.value = null
	// 	;

  //   // + 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: 'CLIENTE',
  //       id_renglon: this.value
  //     },
  //     beforeSend: function(peticion, configuracion) {

	// 			// ?
	// 			campo.id_cliente.value = '';
	// 			cliente.value = null

	// 		},
  //     success: function(respuesta, estado, peticion) {},
  //     error: function(peticion, estado) {},
  //     complete: function(peticion, estado) {},
  //     campo: { elemento: this },
  //     formulario: { elemento: formularioReporteDocumentosCxC }
  //   })

  // });


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

		// +
		id_documento.value = $(this).find('.id').text();

		// +
		if (!$(evento.target).closest('.visualizar').length)
			return
		;

		// +
		tabla.informacion.instancia.ajax.reload();

		// +
		$(ventana_informacion).modal('show')

	});

	// !
	$(formularioReporteDocumentosBancarios).on('submit reset', 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
		;

		// +
		tabla.instancia.inicializar()

	})

})()
