// {} Librerías e importaciones

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

// {}
(async () => {

	// !
  let
    peticion = {
      actual: null
    },
		campo = {
			id_registro: null
		},
		tabla = {
			solicitudes: {
				elemento: $(tabla_solicitudes),
				clase: new Tabla({
					tabla: tabla_solicitudes,
					columna: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								programa: 'procesos.consultasolicitudesprestamos',
								procedimiento: 'p_traer_encabezado_procesos',

							}
						}
					},
					datos: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								procedimiento: 'p_traer_solicitudes_prestamos_consulta',
								desde_fecha: () => desde_fecha.value,
								hasta_fecha: () => desde_fecha.value,
								id_oficial: () => id_oficial.value,
								id_renglon: () => id_renglon.value,
								id_solicitud: () => id_solicitud.value,
								id_sucursal: () => id_sucursal.value,
								id_usuario_registro: () => id_usuario_registro.value,
								id_estado: () => id_estado.value,
								medio_pago: () => medio_pago.value,
								nombre: () => nombre.value
							}
						}
					},
					configuracion: { dom: `ftB`, pageLength: -1, scoller: true }
				})
			},
			informacion: {
				elemento: $(tabla_informacion),
				clase: new Tabla({
					tabla: tabla_informacion,
					columna: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								programa: 'procesos.consultasolicitudesprestamos',
								procedimiento: 'p_traer_encabezado_adicional'
							}
						}
					},
					datos: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								programa: 'procesos.consultasolicitudesprestamos',
								procedimiento: 'p_traer_informacion_adicional',
								renglon: 'SOLICITUD',
								id_documento: () => !id_solicitud.value ? -1 : id_solicitud.value
							}
						}
					},
					configuracion: {
						dom: `t`,
						pageLength: -1,
						autoWidth: false
					}
				}),
			},
		},
		botones = {
			elemento: document.querySelectorAll('button:disabled')
		},
		marco = {
			autorizaciones: {
				elemento: marcoAutorizaciones,
				documento: marcoAutorizaciones.contentDocument,
				ventana: marcoAutorizaciones.contentWindow,
				formulario: marcoAutorizaciones.contentDocument?.querySelector('#formularioAutorizaciones')
			}
		}
	;

	// !
	$(marco.autorizaciones.elemento).on('load', function (evento) {

		// !
		campo.id_registro = marco.autorizaciones.ventana.aplicacion.campo.mascara.id_registro;

	});

	// !
	$('table').on('draw.dt', function(evento) {

		evento.id = evento.tabla.id.replace('tabla_', '');

		if (!tabla[evento.id])
			return
		;

		evento.tabla.clase  = tabla[evento.id].clase;
		tabla[evento.id] = evento.tabla

	});

	// !
	await tabla.informacion.clase.inicializar();

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

			respuesta = respuesta[0];

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

			desde_fecha.value = respuesta.desde_fecha;

			hasta_fecha.value = respuesta.hasta_fecha;

		}

	});

	// !
	$(tabla.solicitudes.elemento).find('tbody').on('click','tr', function (evento) {

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

		// +
		id_estado_consulta.value = $(this).find('td:last-child').prev().text()

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

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

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

	});

	// !
	$(botonBuscar).on('click', async function () {

		// +
		botones.elemento.forEach((boton) => {
			boton.disabled = false
		})

		// +
		await tabla.solicitudes.clase.inicializar();

	});

	// !
	$(ventana_autorizaciones).on('show.bs.modal', function (evento) {

		let formulario = {
			elemento: document.querySelector('#marcoAutorizaciones').contentDocument.querySelector('#formularioAutorizaciones')
		}

		if(formulario.elemento)
		{
			// +
			formulario.elemento.renglon_registro_autorizar.value = 'SOLICITUD';

			// +
			formulario.elemento.renglon_registro_autorizar.disabled = true;

			// +
			formulario.elemento.id_registro.disabled = true;

			// +
			formulario.elemento.renglon_registro_autorizar.dispatchEvent(new Event('change'));

			// +
			campo.id_registro.value = id_solicitud.value;

			// +
			marco.autorizaciones.ventana.postMessage('focusout')
		}

	});

	// !
	$(formularioConsultaSolicitudesPrestamos).on('reset', function(evento) {

		// +
		botones.elemento.forEach((boton) => {
			boton.disabled = true
		})

	});

	// !
	$(botonConvertir).on('click', function () {

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

		// !
		formulario.peticion.parametro.set(
			'id_estado',
			id_estado_consulta.value
		);

	});

})()
