//@ sourceURL=iprem.js
jQuery(function($){
	initRupI18nPromise.then(function() {
		prepareData();	
		initDialog();
	});
	
	function prepareData(){
		

		
		
	
		
		
		
		let tableColModels = [	
				{ 	name: "idIprem79",
					index: "idIprem79",
					editable: true, 
					hidden: true,
					width:"40"
				},	
				{ 	name: "anio79",
					index: "anio79",
					editable: true, 
					hidden: false
					
				},
				{ 	name: "iprem79Str",
					index: "iprem79Str",
					editable: true, 
					hidden: false
				},			
				{ 	name: "fecAlta79",
					index: "fecAlta79",
					editable: true, 
					hidden: true
				},
				{ 	name: 'usuAlta79',
					index: 'usuAlta79',
					editable: true, 
					hidden: true
				},
				{ 	name: "fecModif79",
					index: "fecModif79",
					editable: true, 
					hidden: true
				},
				{ 	name: "usuModif79",
					index: "usuModif79",
					editable: true, 
					hidden: true
				}
				];
		let columnDefs = [ 

		];
		const misbotones = [
			]
		
		
		const btnCrearIPREM ={
				text: function () {
					return $.rup.i18n.app.iprem.btnAniadir;
				},
				id: 'btnCrearIPREM', // Campo obligatorio si se
											// quiere usar desde el
											// contextMenu
				className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
				icon: "mdi mdi-plus",
				displayRegex: /^\d+$/, // Se muestra siempre
												// que sea un numero
												// mayor a 0
				insideContextMenu: true, // Independientemente de
											// este valor, sera 'false'
											// si no tiene un id
											// definido
				type: 'view',
				action : function(e, dt, node, config) {
					$('#iprem_dialog_form').rup_form("clearForm");
					abrirDialogo("add");
								
				}
			};
		const btnEditarIPREM ={
				text: function () {
					return $.rup.i18n.app.iprem.btnEditar;
				},
				id: 'btnEditarIPREM', // Campo obligatorio si se
											// quiere usar desde el
											// contextMenu
				displayRegex: /^[1-9][0-9]*$/,
				className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
				icon: "mdi mdi-playlist-edit",
				type: 'view',
				action : function(e, dt, node, config) {
					$('#iprem_dialog_form').rup_form("clearForm");
					abrirDialogo("edit");				
				}
			};
		const btnEliminarIPREM ={
				text: function () {
					return $.rup.i18n.app.iprem.btnEliminar;
				},
				id: 'btnEliminarIPREM', // Campo obligatorio si se
											// quiere usar desde el
											// contextMenu
				className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
				icon: "mdi mdi-trash-can-outline",
				displayRegex: /^[1-9][0-9]*$/,
												// que sea un numero
												// mayor a 0
				insideContextMenu: true, // Independientemente de
											// este valor, sera 'false'
											// si no tiene un id
											// definido
				type: 'view',
				action : function(e, dt, node, config) {
					try {
						$("#iprem_dialog_feedback").rup_feedback("destroy");
					} catch (error) {}

					$("#iprem_dialog_feedback").rup_feedback(
						{
							type: "ok",
							block: false,
							delay: 600,
							fadeSpeed: 300,
						}
					);
					var id=($('#iprem').rup_table('getSelectedRows')['idIprem79']);
					const ajaxData = {
							'url': $.rup.CTX_PATH +"iprem/"+id,
							'type': 'DELETE',
							'contentType': 'application/json',
							'dataType': 'json',
				            beforeSend: function() {
								Ad74aUtils.bloquearInterfaz();
			                },
			                complete: function() {
			                	Ad74aUtils.desBloquearInterfaz();
			                },
							success: function (data) {
								$('#dialogIprem').rup_dialog('close');
				            	$('#rup_feedback_iprem').rup_feedback("set", $.rup.i18n.app.iprem.deleteExitosa, "ok");
				            	$('#iprem').rup_table("reload");

							},
							error: function (error) {
								console.log(error.responseJSON)
							}
					}
					$.rup_ajax(ajaxData);				
				}
			};
		misbotones.push(btnCrearIPREM);
		misbotones.push(btnEditarIPREM);
		misbotones.push(btnEliminarIPREM);
	
		$("#iprem").rup_table({
			colReorder: {
			 fixedColumnsLeft: 1
			}
			,colModel: tableColModels
			,columnDefs : columnDefs
			,primaryKey: "idIprem79"
			,filter:{
	  	  		id:"#iprem_filter_form",
	  	  		filterToolbar:"iprem_filter_toolbar",
	  	  		collapsableLayerId:"iprem_filter_fieldset",
	  	  		showHidden: true,
	  	  		
	     	}
			,noEdit : true
	   		,select: {
	       		activate: true
	   		}
			,seeker: {
				activate: true
			}
			,buttons: {
				activate: true,
				contextMenu: false,
				blackListButtons: ['addButton', 'editButton', 'cloneButton', 'copyButton','deleteButton','pdfButton', 'odsButton', 'csvButton'],
				myButtons:misbotones
			}
			,order: [[1, "asc"]]
		});
		
		
	
		const abrirDialogo = (oper) =>{
			const divTitleDialog = $("div[aria-describedby='dialogIprem'] .ui-dialog-title");
			if(oper=="add"){
				$('#btnGuardarIPREM').hide();
				$('#btnInsertIPREM').show();
				divTitleDialog.html('<i>'+$.rup.i18n.app.iprem.tituloDialogoAniadirIPREM+'</i>');
				$('#dialogIprem').rup_dialog('open');	
				$('#anio79_dialog_table').prop("disabled",false);
			}
			if(oper=="edit"){
				$('#btnGuardarIPREM').show();
				$('#btnInsertIPREM').hide();
				divTitleDialog.html('<i>'+$.rup.i18n.app.iprem.tituloDialogoEditarIPREM+'</i>');
				$('#dialogIprem').rup_dialog('open');	
				$('#anio79_dialog_table').prop("disabled",true);
				recogerDatos();
			}
			
		}
		
		
		Ad74aUtils.soloNumericos();
		Ad74aUtils.formatoMoneda();

		
		
//		$('#anio79_filter_table').on("change",function(){
//			if($('#anio79_filter_table').val()!='' && $('#anio79_filter_table').val()<1900){
//				$('#anio79_filter_table').val(1900);
//			}
//			if($('#anio79_filter_table').val()!='' && $('#anio79_filter_table').val()>new Date().getFullYear()){
//				$('#anio79_filter_table').val(new Date().getFullYear());
//			}
//		});
		

		
		$('#iprem79minimo_filter_table').val('');
		$('#iprem79maximo_filter_table').val('');
		if($('#iprem79minimo_filter_table').val()=='0,00 €'){
			$('#iprem79minimo_filter_table').val('');
		}
		if($('#iprem79maximo_filter_table').val()=='0,00 €'){
			$('#iprem79maximo_filter_table').val('');
		}
	}
	
	const initDialog = () => {
		$('#dialogIprem').rup_dialog({
	        type: $.rup.dialog.DIV,
	        autoOpen: false,
	        modal: true,
	        resizable: false,
	        dialogClass: 'custom_small_dialog',
	        title: '<i>'+$.rup.i18n.app.iprem.tituloDialogoAniadirIPREM+'</i>',
	        
	        buttons: [
	        	 {
		                text: $.rup.i18n.app.botonera.cancelar,
		                id: "rup_dialogCancelar",
		                click: function () { 
		                	$('#iprem_dialog_form').rup_form("clearForm");
		                	$('#idIprem79_dialog_table').val('');
		                    $('#dialogIprem').rup_dialog('close'); 
		                },
		                btnType: $.rup.dialog.LINK
		                
		            },
		        {
		            text: $.rup.i18n.app.botonera.guardar,
		            id: "btnGuardarIPREM",
		            click: function () { 
		            	actualizarIPREM();
		            },
		            class: 'btn-material btn-material-primary-high-emphasis'
		            
		        },
		        {
		            text: $.rup.i18n.app.iprem.btnAniadir,
		            id: "btnInsertIPREM",
		            click: function () { 
		            	insertIPREM();
		            },
		            class: 'btn-material btn-material-primary-high-emphasis'
		            
		        }
		       

	        ],
			open: () => {
				try {
					$("#iprem_dialog_feedback").rup_feedback("destroy");
				} catch (error) {}

				$("#iprem_dialog_feedback").rup_feedback(
					{
						type: "ok",
						block: false,
						delay: 3000,
						fadeSpeed: 600,
					}
				);
				// Añadir iconos a los botones del popup
				$("#btnGuardarIPREM").html(`<i class="mdi mdi-content-save"></i> ${$.rup.i18n.app.botonera.guardar}`);
				$("#btnInsertIPREM").html(`<i class="mdi mdi-file-plus"></i> ${$.rup.i18n.app.iprem.btnAniadir}`);
				Ad74aUtils.formatoMoneda();

			},
			close: function(event, ui) {
				$('#iprem_dialog_form').rup_form("clearForm");
				$('#idIprem79_dialog_table').val('');
			}
	    });
		
		$('#iprem_dialog_form').rup_validate({
			 feedback:$("#iprem_dialog_feedback"),
				liveCheckingErrors: false,
				showFieldErrorAsDefault: true,
				showErrorsInFeedback: true,
				showFieldErrorsInFeedback: true,
				rules:{
					"anio79":{required:true},
					"iprem79":{required:true}
					}
		 });
		const limpiarIprem79 = (iprem79Str) => {
		    return iprem79Str.replace(/\./g, '').replace(',', '.').replace(/[^\d.-]/g, '');
		};
		 const validarIprem79 = () => {
		        const rawValue = $("#iprem79_dialog_table").val();
		        const formattedValue = limpiarIprem79(rawValue);
		        const regex = /^-?\d{1,4}(\.\d{1,2})?$/;

		        if (regex.test(formattedValue)) {
		            // El valor es válido
		            console.log("El valor es válido:", formattedValue);
		        } else {
		            // El valor es inválido, muestra un mensaje y limpia el campo
		            alert("El valor debe tener como máximo 4 dígitos enteros y 2 decimales (ej. 9999.99).");
		            $("#iprem79_dialog_table").val('0,00');
		        }
		    };
		    $("#iprem79_dialog_table").on('blur', validarIprem79);
		const insertIPREM = () =>{
			try {
				$("#iprem_dialog_feedback").rup_feedback("destroy");
			} catch (error) {}

			$("#iprem_dialog_feedback").rup_feedback(
				{
					type: "ok",
					block: false,
					delay: 3000,
					fadeSpeed: 600,
				}
			);
			if($('#iprem_dialog_form').valid()){
				
				let datos = {};
				datos = window.form2object($('#iprem_dialog_form')[0]);
				datos.iprem79Str=limpiarIprem79(datos.iprem79Str);
				datos = JSON.stringify(datos);
				
				
				const ajaxData = {
						'url': $.rup.CTX_PATH +"iprem/add",
						'type': 'post',
						'contentType': 'application/json',
						'dataType': 'json',
			            data: datos,
			            beforeSend: function() {
							Ad74aUtils.bloquearInterfaz();
		                },
		                complete: function() {
		                	Ad74aUtils.desBloquearInterfaz();
		                },
						success: function (data) {
							$('#dialogIprem').rup_dialog('close');
			            	$('#rup_feedback_iprem').rup_feedback("set", $.rup.i18n.app.iprem.insertExitosa, "ok");
			            	$('#iprem').rup_table("reload");
			            	$('#iprem_dialog_form').rup_form("clearForm");

						},
						error: function (error) {
							$('#iprem_dialog_feedback').rup_feedback("option", "delay", null);
			            	$('#iprem_dialog_feedback').rup_feedback("set", error.responseText, "error");
						}
				}
				$.rup_ajax(ajaxData);
			}
		};
		 const compruevaValorZero = () => {
			 if($('#iprem79minimo_filter_table').val()=='0,00 €'){
					$('#iprem79minimo_filter_table').val('');
				}
				if($('#iprem79maximo_filter_table').val()=='0,00 €'){
					$('#iprem79maximo_filter_table').val('');
				}
		 }
		
		
		 const validarRango = () => {
				
		        const min = parseFloat($("#iprem79minimo_filter_table").val());
		        const max = parseFloat($("#iprem79maximo_filter_table").val());

		        // Verifica que ambos campos tengan un valor numérico
		        if (!isNaN(min) && !isNaN(max)) {
		            if (max < min) {
		                // Mostrar un mensaje de error (puedes usar un feedback personalizado si lo prefieres)
		                alert("El importe máximo no puede ser menor que el importe mínimo.");

		                // Restablecer el valor del campo máximo para que coincida con el mínimo
		                $("#iprem79maximo_filter_table").val(min);
		            }
		        }
		    };
		    $("#iprem79minimo_filter_table, #iprem79maximo_filter_table").on('input', compruevaValorZero);
		    $("#iprem79minimo_filter_table, #iprem79maximo_filter_table").on('focusout', validarRango);
		    
		const actualizarIPREM = () =>{
			try {
				$("#iprem_dialog_feedback").rup_feedback("destroy");
			} catch (error) {}

			$("#iprem_dialog_feedback").rup_feedback(
				{
					type: "ok",
					block: false,
					delay: 3000,
					fadeSpeed: 600,
				}
			);
			if($('#iprem_dialog_form').valid()){
				let datos = {};
				datos = window.form2object($('#iprem_dialog_form')[0]);
				datos = JSON.stringify(datos);
				
				const ajaxData = {
						'url': $.rup.CTX_PATH +"iprem/edit",
						'type': 'put',
						'contentType': 'application/json',
						'dataType': 'json',
			            data: datos,
			            beforeSend: function() {
							Ad74aUtils.bloquearInterfaz();
		                },
		                complete: function() {
		                	Ad74aUtils.desBloquearInterfaz();
		                },
						success: function (data) {
							$('#dialogIprem').rup_dialog('close');
			            	$('#rup_feedback_iprem').rup_feedback("set", $.rup.i18n.app.iprem.updateExitosa, "ok");
			            	$('#iprem').rup_table("reload");
			            	$('#iprem_dialog_form').rup_form("clearForm");

						},
						error: function (error) {
							$('#iprem_dialog_feedback').rup_feedback("option", "delay", null);
			            	$('#iprem_dialog_feedback').rup_feedback("set", error.responseText, "error");
						}
				}
				$.rup_ajax(ajaxData);
				
			}
		}
		
	
}
	
	const recogerDatos =()=>{
		//llamada ajax
		var id=($('#iprem').rup_table('getSelectedRows')['idIprem79']);
		const url = $.rup.CTX_PATH +'iprem/'+id;
		const ajaxData = {
				'url': url,
				'type': 'GET',
				'contentType': 'application/json',
				'dataType': 'json',
				beforeSend: function() {
					Ad74aUtils.bloquearInterfaz();
                },
                complete: function() {
                	Ad74aUtils.desBloquearInterfaz();
                	
                },
				success: function (data) {
					if (data != undefined) {
						$('#anio79_dialog_table').val(data.anio79);
						$('#iprem79_dialog_table').val(data.iprem79);
						$('#idIprem79_dialog_table').val(data.idIprem79);
						Ad74aUtils.formatoMoneda();
					}
					

				},
				error: function (error) {
					alert(error.responseJSON)
				}
		}
		$.rup_ajax(ajaxData);
	}
});