// {} Librerías e importaciones

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


// {}
(async () => {

	// ! Declaración de variables
	let
		peticion = { actual: null },
		campo = {
			id_cliente: window.aplicacion.campo.mascara.id_cliente,
			medio_pago: window.aplicacion.campo.selector.medio_pago
		},
		tabla = {
			pagoInteres: {
				elemento: $(tablaRegistros),
				clase: new Tabla({
					columna: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: { procedimiento: 'p_traer_encabezado_procesos' }
						}
					},
					datos: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								procedimiento: 'p_traer_cuentas_para_pagos_interes',
								fecha: () => fecha.value,
								id_sucursal: () => id_sucursal.value,
								id_cliente: () => id_cliente.value ? id_cliente.value : -1,
								medio_pago: () => medio_pago.value,
								id_cuenta_banco: () => id_cuenta_banco.value
							}
						}
					},
					configuracion: { dom: `ft`, pageLength: -1 }
				})
			}
		}
	;

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

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

		// +
		if (!this.value)
			return $(this).trigger('reset')
		;

		// + 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: (peticion, configuracion) => $(this).trigger('reset'),
			success: function(respuesta, estado, peticion) {

				if (!respuesta.length)
					return
				;

				respuesta = respuesta[0];

				campo.id_cliente.value = respuesta?.id_cliente;
				cliente.value = respuesta?.cliente;

			},
			error: function(peticion, estado) {},
			complete: (peticion, estado) => {}
		})

	});

	// !
	$(medio_pago).on('change', function (evento) {

		this.value !== 'TRANSFERENCIA' || 'BANCOS' ? $(id_cuenta_banco).val('').change() : '';

	});

	$(id_tipo_cuenta).on('change', function (evento) {

		campo.medio_pago.parametros();
		campo.medio_pago.peticion('opciones');

	});

	// !
	$(botonBuscar).on('click', function () { $(tablaRegistros).DataTable().ajax.reload() });

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

		if (
			window.aplicacion.peticion.formulario.elemento === formularioPagoInteres &&
			window.aplicacion.peticion.formulario.exitosa.propiedades === window.aplicacion.peticion.exitosa.propiedades &&
			new URLSearchParams(window.aplicacion.peticion.exitosa.configuracion.url).get('renglon') === 'guardar'
		)
			{

				$(tablaRegistros).DataTable().ajax.reload();

				imprimir(window.aplicacion.peticion.formulario.exitosa.propiedades.responseJSON[0].id_registro)

			}

	});

	// function imprimir(id) {

	// 	const impresion = {
	// 		programa: 'procesos.avances',
	// 		renglon: 'AVANCE',
	// 		id: Number(id)
	// 	}

	// 	$.ajax({
	// 		type: 'get',
	// 		url: '../impresion',
	// 		data: impresion,
	// 		dataType: 'JSON',
	// 		success: async function (response) {

	// 			const nuevaVentana = window.open(''
	// 			,'_blank',
	// 			`width = 992, height = 600, left = ${(window.screen.width - 992) / 2}, top = ${(window.screen.height - 600) / 2}`,
	// 			);
	// 			nuevaVentana.document.write(response);
	// 			nuevaVentana.document.close();

	// 		}
	// 	});

	// }

})()
