
jQuery(function ($) {
    initRupI18nPromise.then(function () {
		initFilter();
		initTable();
		initDialog();
		
		$("#copagosgestionimpagos_filter_cleanButton").click(function(){
			$("#fBajaDesde_copagosgestionimpagos_filter_table_wrapper").hide();
			$("#fBajaHasta_copagosgestionimpagos_filter_table_wrapper").hide();
		});
		
		$("#copagosgestionimpagos_filter_form").rup_validate({
		    liveCheckingErrors: false,
		    showFieldErrorAsDefault: true,
		    showErrorsInFeedback: true,
		    showFieldErrorsInFeedback: true,
		    rules:{
		    	"fInstalacionDesde":{date:true},
		    	"fInstalacionHasta":{date:true},
		    	"fBajaDesde":{date:true},
		    	"fBajaHasta":{date:true},
		    }
		});
		
		$("#copagosgestionimpagos_filter_form [ruptype='date']").blur(function(elem) { 

			if(!$(elem.target).valid()){
	            $(elem.target).val('')
	        }

		})
		
	});

	const controlRadioActivo  = () => {
		 $("#fBajaDesde_copagosgestionimpagos_filter_table,#fBajaHasta_copagosgestionimpagos_filter_table").val('');
		if($("#D_copagosgestionimpagos_filter_table").is(":checked")){
			$("#fBajaDesde_copagosgestionimpagos_filter_table_wrapper").show();
			$("#fBajaHasta_copagosgestionimpagos_filter_table_wrapper").show();
		}else{
			$("#fBajaDesde_copagosgestionimpagos_filter_table_wrapper").hide();
			$("#fBajaHasta_copagosgestionimpagos_filter_table_wrapper").hide();
			
		}
	}
	const initFilter = () => {
		$("#idTerritorio_copagosgestionimpagos_filter_table").rup_combo({	
			source: $.rup.CTX_PATH + 'nora/provincias',
			sourceParam: {label: "descProvincia", value:"codProvincia"},
			loadFromSelect:false,
			width: 'auto',
	        ordered: true,
			blank: '',
			customClasses: ['select-material'],
			rowStriping: true
		});
		
		$.rup_date({
			//yearRange: 'c-100:c+0',
	        from: "fInstalacionDesde_copagosgestionimpagos_filter_table",
	        to: "fInstalacionHasta_copagosgestionimpagos_filter_table",
	        mask: 'dd/mm/yyyy',
			showButtonPanel : true,
			showOtherMonths : true,
			noWeekend : true
	    });
		
		$.rup_date({
			//yearRange: 'c-100:c+0',
	        from: "fBajaDesde_copagosgestionimpagos_filter_table",
	        to: "fBajaHasta_copagosgestionimpagos_filter_table",
	        mask: 'dd/mm/yyyy',
			showButtonPanel : true,
			showOtherMonths : true,
			noWeekend : true
	    });

		controlRadioActivo();
		$('[name="activo"]').change(controlRadioActivo);
	}
	
	const initTable = () => {
		
		const getColumnsModelCopago = function(){
			const getColumnModelCopago = function (name, index, editable, hidden, orderable) {
				return {
					name: name,
					index: index,
					editable: editable,
					hidden: hidden,
					orderable: orderable
				}
			};
			let columnsModelCopago = [];
			columnsModelCopago.push(getColumnModelCopago("idSolicitante", "idSolicitante", false, true, false));
			columnsModelCopago.push(getColumnModelCopago("identificador", "identificador", true, false));
			columnsModelCopago.push(getColumnModelCopago("nombreCompleto", "nombreCompleto", true, false));
			columnsModelCopago.push(getColumnModelCopago("apellido1", "apellido1", false, true, false));
			columnsModelCopago.push(getColumnModelCopago("apellido2", "apellido2", false, true, false));
			columnsModelCopago.push(getColumnModelCopago("territorioStr", "territorioStr", true, false));
			columnsModelCopago.push(getColumnModelCopago("fecAlta", "fecAlta", true, false));
			columnsModelCopago.push(getColumnModelCopago("fecBaja", "fiecBaja", true, false));
			columnsModelCopago.push(getColumnModelCopago("cantidadMensualidades", "cantidadMensualidades", false, false, false));
			columnsModelCopago.push(getColumnModelCopago("deudaStr", "deudaStr", true, false));
			return columnsModelCopago;
		};
		const getColumnsDefsCopago = function () {
			return [ 
				{
					"targets": 1,
					"render": function(data, type, row, settings){			           
	    		    	if(row != null && row.idSolicitante != null && row.identificador != null){
	    		    		const url = '../solicitantes/detail/' + row.idSolicitante;
	    		    		return `<a href='javascript:window.open("${url}", "_blank");'>${row.identificador}</a>`;						   
	   	    		 	} 
	    		    	return "";
					}
				},
				{
					"targets": 8,
					"render": function(data, type, row, settings){			           
	    		    	return `<div style="text-align:right"> ${data}</div>`;
					}
				},
				{
					"targets": 9,
					"render": function(data, type, row, settings){			           
						return `<div style="text-align:right"> ${data}</div>`;
					}
				},
//				{
//					"targets": 2,
//					"render": function ( data, type, row, meta ) {
//						if(row.nombre != undefined && row.nombre != null){
//							return row.nombreCompleto;
//						}
//						return '';
//					}
//				},
//				{
//					"targets": 5,
//					"render": function (data, type, row, meta){
//						if (row.territorio != undefined && row.territorio != null){
//							if      ( data == TERRITORIO_ARABA )   	{return TERRITORIO_ARABA_DESC;
//							}else if( data == TERRITORIO_GIPUZKOA )	{return TERRITORIO_GIPUZKOA_DESC;
//							}else if( data == TERRITORIO_BIZKAIA )	{return TERRITORIO_BIZKAIA_DESC;
//							}
//						}
//						return "";
//					}
//				},
//				{
//					"targets": 9,
//					"className":"text-right",
//					"render": function ( data, type, row, meta ) {
//						if(row.deuda != undefined && row.deuda != null){
//							return row.deudaStr;
//						}
//						return "";
//					}
//				}
			];
		};
		
		const getCustomButtonsCopago = function () {
			let customButonsCopago = [];	
			
			const FN_verDetalleCargo = {};
			FN_verDetalleCargo.test  = function(){
				let activar = true;
				const selectedRows  = $("#copagosgestionimpagos").rup_table("getSelectedRows");	
				// 1 o mas seleccionado
				if (selectedRows.length == undefined){
					if (selectedRows.idLiquidacion != null){
						activar = false;
					}
				}else if (selectedRows.length > 1){
					for(var i in selectedRows){
					    if (selectedRows[i].idLiquidacion != null){
					    	activar = false;
					    }
					}
				}else{
					activar = false;
				}
				
				return activar;
			};
			
//			const verDetalleButton = {
//					text: function () {
//						return $.rup.i18n.app.botonera.verDetallePago;
//					},
//					id: 'verDetalle', // Campo obligatorio si se quiere usar desde el contextMenu
//					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
//					icon: "mdi mdi-playlist-edit",
//					displayRegex : /^[1]*$/,			
//					insideContextMenu: true, 
//					//type: 'view',
//					action: function () {
//						$('#dialogCopagosGestionImpagos').rup_dialog("open")
//					}		
//			};
//			customButonsCopago.push(verDetalleButton);
			
			const emitirLiquidacionButton = {
					text: function () {
						return $.rup.i18n.app.botonera.emitirLiquidacion;
					},
					id: 'emitirLiquidacion', // Campo obligatorio si se quiere usar desde el contextMenu
					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
					icon: "mdi mdi-cash",
					displayRegex: FN_verDetalleCargo,			
					insideContextMenu: true, 
					//type: 'view',
					action: function () {
						let idSolicitante = $('#copagosgestionimpagos').rup_table("getSelectedRows")['idSolicitante'];
						$.rup_messages("msgConfirm", {
							title: $.rup.i18n.app.copagosGestionImpagos.tituloEmitirLiquidacion,
							message: $.rup.i18n.app.copagosGestionImpagos.mensajeEmitirLiquidacion + "</br>" + $.rup.i18n.app.copagosGestionImpagos.preguntaEmitirLiquidacion,
							OKFunction : function(){
								data = $('#copagosgestionimpagos').rup_table("getSelectedRows");
								listaSol = [];
								if(data.length!=undefined){
									for (let i = 0; i<data.length; i++){
										listaSol.push(data[i]['idSolicitante']);
									}
								}
								else{
									listaSol.push(data['idSolicitante']);
								}
								
								console.log(listaSol);
								 $.rup_ajax({
						              url: $.rup.CTX_PATH +"copagosgestionimpagos/emitirLiquidacion",
						              type: "POST",
										'contentType': 'application/json',
										'dataType': 'json',
							            data: JSON.stringify(listaSol),
										beforeSend: function() {
											Ad74aUtils.bloquearInterfaz();
						                },
						                complete: function() {
						                	Ad74aUtils.desBloquearInterfaz();
						                },
						              success: function (data){
						            	  $('#copagosgestionimpagos').rup_table("reload");
						            	  window.location.href = $.rup.CTX_PATH + 'inicioOficio/0087007?idLiquidacion='+data+'&idSolicitante='+idSolicitante;
						            	  
						              },
						              error: function(error){
										alert("error")
						              }
						        });
							},
							OKText: $.rup.i18n.app.botonera.aceptar,
							CANCELText: $.rup.i18n.app.botonera.cancelar
						});
						
						
					}		
			};
			customButonsCopago.push(emitirLiquidacionButton);
			
			const iniciarExoneracionButton = {
					text: function () {
						return $.rup.i18n.app.botonera.iniciarExoneracion;
					},
					id: 'iniciarExoneracion', // Campo obligatorio si se quiere usar desde el contextMenu
					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
					icon: "mdi mdi-cash-remove",
					displayRegex: FN_verDetalleCargo,			
					insideContextMenu: true, 
					//type: 'view',
					init: function init(dt, button, config) {
						var ctx = dt.settings()[0];
	    		        ctx.ext.buttons.editButton.eventDT = dt;
	    		      },
	    		   action: function action(e, dt, button, config) {
	    			   var ctx = dt.settings()[0];
	    			   var DataTable = $.fn.dataTable;
						// Abrimos el formulario
				        ctx.oInit.buttons.myLastAction = 'edit';

				          // Se busca el idRow con el último seleccionado. En caso de no existir, será el primero.
				          $.when(DataTable.Api().editForm.getRowSelected(dt, 'PUT')).then(function (rowInfo) {
				            if (ctx.oInit.formEdit.$navigationBar === undefined || ctx.oInit.formEdit.$navigationBar.funcionParams === undefined || ctx.oInit.formEdit.$navigationBar.funcionParams[4] === undefined || dt.page() + 1 === Number(ctx.oInit.formEdit.$navigationBar.funcionParams[4])) {
				              DataTable.Api().editForm.openSaveDialog('PUT', dt, rowInfo.line, ctx.oInit.formEdit.customTitle);
				            }
				          });
					}		
			};
			customButonsCopago.push(iniciarExoneracionButton);
						
			return customButonsCopago;
		};

		$("#copagosgestionimpagos").rup_table({
			colReorder: {
				fixedColumnsLeft: 1
			},
			colModel: getColumnsModelCopago(),
			columnDefs: getColumnsDefsCopago(),
			primaryKey: "idSolicitante",
	     	filter:{
	  	  		id:"copagosgestionimpagos_filter_form",
	  	  		filterToolbar:"copagosgestionimpagos_filter_toolbar",
	  	  		collapsableLayerId:"copagosgestionimpagos_filter_fieldset",
	  	  		showHidden: true
	     	},
	     	createTooltipBody: false,// No muestra el tooltip automático de las columnas de la tabla
	     	//noEdit: true,
	   		select: {
	       		activate: true,
	       		deleteDoubleClick:true,
	       		multiSelect: false
	   		},
	   		
			buttons: {
				activate: true,
				blackListButtons: ['addButton', 'editButton', 'cloneButton', 'deleteButton', 'copyButton', 'pdfButton', 'odsButton', 'csvButton'/*, 'reportsButton'*/],
				myButtons: getCustomButtonsCopago()
			},
			columnOrderArrows: {
			    showOnlyActive: false,
			    display: 'inline'
			},
			order: [[1, "asc"]],
			formEdit:{
				confirmDialogs: {
                    saveDialog: false,
                    cancelDialog: false
                },
	        	detailForm: "#copagosgestionimpagos_detail_div"
	        	//,fillDataMethod: "clientSide"
	         	,validate:{ 
	    			rules:{
		    				"motivoExoneracion":{
								required: true,
								maxlength:500
	    					}
						}
	    		   	}
	    		   	,customTitle: $.rup.i18n.app.botonera.iniciarExoneracion 
	    		}
		});
		
		
		
	}
	
	let initDialog = () =>{
		$('#dialogCopagosGestionImpagos').rup_dialog({
	        type: $.rup.dialog.DIV,
	        autoOpen: false,
	        modal: true,
	        resizable: false,
	        dialogClass: 'custom_mid_dialog',
	        title: '<i>'+$.rup.i18n.app.avisos.tituloDialogoEditar+'</i>',
	        buttons: [
	        	{
	                text: $.rup.i18n.app.botonera.cerrar,
	                click: function () { 
	                    $('#dialogCopagosGestionImpagos').rup_dialog('close'); 
	                },
	                btnType: $.rup.dialog.LINK
	                
	            },
		            
		        
		        
	        ],
			open: () => {
				// Añadir iconos a los botones del popup
				loadTableCobros();

			},
			close: function(event, ui) {
				
			}
	    });
		
		
		
	
	}
	
	let loadTableCobros = ()=>{
		try {
			$("#copagosImpagosCobrosSolicitante").DataTable().destroy();
		} catch (error) {}
		const getColumnsModelCobros = function(){
			const getColumnModelCobros = function (name, index, editable, hidden, orderable) {
				return {
					name: name,
					index: index,
					editable: editable,
					hidden: hidden,
					orderable: orderable
				}
			};
			let columnsModelCobros = [];
			columnsModelCobros.push(getColumnModelCobros("idLiquidacion", "idLiquidacion", false, true, false));
			columnsModelCobros.push(getColumnModelCobros("numLiquidacion", "numLiquidacion", true, false));
			columnsModelCobros.push(getColumnModelCobros("concepto", "concepto", true, false));
			columnsModelCobros.push(getColumnModelCobros("fecEmision", "fecEmision", true, false));
			columnsModelCobros.push(getColumnModelCobros("importe", "importe", true, false));
			columnsModelCobros.push(getColumnModelCobros("estado", "estado", true, false));
			columnsModelCobros.push(getColumnModelCobros("idSolicitante", "idSolicitante", false, true, false));
			columnsModelCobros.push(getColumnModelCobros("motAnulacionEs", "motAnulacionEs", true, false));
			return columnsModelCobros;
		};
		
		const getColumnsDefsCobros = function () {
			return [ 
				{
					"targets": 1,
					"render": function (data, type, row, meta){
						if (row.idLiquidacion != undefined && row.idLiquidacion != null){
							const url = URL_AE01B + '/liquidaciones/consultar/' + row.idLiquidacion;
	    		    		return `<a href='javascript:window.open("${url}", "_blank");'>${row.numLiquidacion}</a>`;	
						}
						return "";
					}
				},
				{
					"targets": 4,
					"className":"text-right",
					"render": function ( data, type, row, meta ) {
						if(row.importe != undefined && row.importe != null){
							return row.importeStr;
						}
						return "";
					}
				},
				{
					"targets": 5,
					"render": function(data, type, row, settings){	
						if      ( data == ESTADO_LIQ_PEND_COBRO )   {return ESTADO_LIQ_PEND_COBRO_DESC;
						}else if( data == ESTADO_LIQ_ANULADA )		{return ESTADO_LIQ_ANULADA_DESC;
						}else if( data == ESTADO_LIQ_COBRO_PROV )	{return ESTADO_LIQ_COBRO_PROV_DESC;
						}else if( data == ESTADO_LIQ_COBRO_DEF )	{return ESTADO_LIQ_COBRO_DEF_DESC;
						}else if( data == ESTADO_LIQ_VIA_APREMIO )	{return ESTADO_LIQ_VIA_APREMIO_DESC;
						}
						return  '';
					}
				},
				{
					"targets": 7,
					"render": function(data, type, row, settings){	
						
						return  locale='es'?row.motAnulacionEs:row.motAnulacionEu;
					}
				}
			];
		};
		
		const getCustomButtonsCobros = function () {
			let customButonsCobros = [];	
					
			return customButonsCobros;
		};
		let urlBase = $.rup.CTX_PATH +"cobros/"+ $('#copagosgestionimpagos').rup_table("getSelectedRows")['idSolicitante'];
		$("#copagosImpagosCobrosSolicitante").attr("data-url-base", urlBase);
		const tableCobrosSol = $("#copagosImpagosCobrosSolicitante").rup_table({
			colReorder: {
				fixedColumnsLeft: 1
			},
			colModel: getColumnsModelCobros(),
			columnDefs: getColumnsDefsCobros(),
			primaryKey: "idLiquidacion",
	     	filter:"noFilter",
	     	createTooltipBody: false,// No muestra el tooltip automático de las columnas de la tabla
	     	noEdit: true,
	   		select: {
	       		activate: false
	   		},
			buttons: {
				activate: false,
				blackListButtons: ['addButton', 'editButton', 'cloneButton', 'deleteButton', 'copyButton', 'pdfButton', 'odsButton', 'csvButton', 'reportsButton'],
			},
			columnOrderArrows: {
			    showOnlyActive: false,
			    display: 'inline'
			},
			order: [[1, "desc"]]
		});
	}
	
	let nombresBeneficiarios = (datos) =>{
		
		let nombreApellido="";
		if($('#copagosgestionimpagos').rup_table("getSelectedRows").length!=undefined){
		for (let i =0;i<datos.length;i++){
			nombreApellido+= "</br>" + "·"+datos[i]["identificador"] + " - " + datos[i]["nombre"] + datos[i]["apellido1"] + datos[i]["apellido2"];
		}
		
		}else{
			nombreApellido+= "</br>" + "·"+datos["identificador"] + " - " + datos["nombre"] + datos["apellido1"] + datos["apellido2"];
		}
		nombreApellido+="</br>";
		return nombreApellido;
	}

});
