jQuery(function($) { 
	const tableSelector='#notifpostales';
	initRupI18nPromise.then(function () {
		initFilter();
		initTable();
		initDialogs();
		
			$("#notifpostales_filter_form").rup_validate({
		    liveCheckingErrors: false,
		    showFieldErrorAsDefault: true,
		    showErrorsInFeedback: true,
		    showFieldErrorsInFeedback: true,
		    rules:{
		    	"fechaRegistroInicio":{date:true},
		    	"fechaRegistroFin":{date:true},
		    	"fechaSituacionInicio":{date:true},
		    	"fechaSituacionFin":{date:true},
		    }
		});
		
		$("#notifpostales_filter_form [ruptype='date']").blur(function(elem) { 

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

		})
	});

	const initFilter = () => {
		
		//Campos de filtrado
		$("#idTramite37_filter_table").rup_combo({
	    	rowStriping: true,
			blank: '',
			width: 'auto',
			customClasses: ['select-material'],
			source: $.rup.CTX_PATH + 'combo/tramites?descEu37=jakinarazpena',//Filtrar solo tramites de "Notificación..."
			sourceParam: {value: "idTramite37", label:"desc"},
			loadFromSelect:false,
			
		});

		//Cuando se elija comunicaciones o notificaciones, adaptar los campos de filtro
		$("#tipoNot88_notificacion_filter_table,#tipoNot88_comunicacion_filter_table").on('change',function(){
			const value = $(this).val();
			if(value==TIPO_NOTIFICACION){
				$("#fechaSituacionInicio_filter_table").prop('disabled',false).rup_date('enable');
				$("#fechaSituacionFin_filter_table").prop('disabled',false).rup_date('enable');
				$("#finalizada88_filter_table").prop('disabled',false);
			}else{
				$("#fechaSituacionInicio_filter_table").prop('disabled',true).rup_date('disable');
				$("#fechaSituacionFin_filter_table").prop('disabled',true).rup_date('disable');
				$("#finalizada88_filter_table").prop('disabled',true);
				$("#fechaSituacionInicio_filter_table").val(null);
				$("#fechaSituacionFin_filter_table").val(null);
				$("#finalizada88_filter_table").prop('checked',false);
				
			}
		});
		
		//Intervalo de fecha de registro de la notificacion
		$.rup_date({
	        from: "fechaRegistroInicio_filter_table",
	        to: "fechaRegistroFin_filter_table",
	        mask: 'dd/mm/yyyy',
			showOtherMonths : true
	    });
		//Intervalo de fecha de situacion en correos
		$.rup_date({
			from: "fechaSituacionInicio_filter_table",
			to: "fechaSituacionFin_filter_table",
			mask: 'dd/mm/yyyy',
			showOtherMonths : true
		});
	}
	

	const initTable = () => {
		let tableColModels = [
			{
				name: "idNotifPostal88",
				index: "idNotifPostal88",
				editable: false,
				hidden: true
			},
			{
				name: "tareasTramite.idTareaTram11",
				index: "idTareaTram88",
				editable: false,
				hidden: true
			},
			{
				name: "tipoNot88",
				index: "tipoNot88",
				editable: false,
				hidden: false
			},
			{
				name: "tareasTramite.tramitesExpediente.expediente.numExpediente00",
				index: "numExpediente00",
				editable: false,
				hidden: false
			},
			{
				name: "tareasTramite.tramitesExpediente.expediente.solicitantes.idSolicitante01",
				index: "nombre01, apellido101, apellido201, identificador01",
				editable: false,
				hidden: false
			},
			{
				name: "tareasTramite.tramitesExpediente.maestroTramites.descEs37",
				index: "DESCES37",
				editable: false,
				hidden : ($.rup.lang == 'eu')
			},
			{
				name: "tareasTramite.tramitesExpediente.maestroTramites.descEu37",
				index: "DESCEU37",
				editable: false,
				hidden : ($.rup.lang != 'eu')
			},
			{
				name: "tareasTramite.fRegistro11",
				index: "FREGISTRO11",
				editable: false,
				hidden: false
			},
			{
				name: "idEnvioPostal88",
				index: "idEnvioPostal88",
				editable: false,
				hidden: true
			},
			{
				name: "idColeccionPostal88",
				index: "idColeccionPostal88",
				editable: false,
				hidden: true
			},
			{
				name: "postalInboxId88",
				index: "postalInboxId88",
				editable: false,
				hidden: true
			},
			{
				name: "codSituacionPostal88",
				index: "codSituacionPostal88",
				editable: false,
				hidden: true
			},
			{
				name: "situacionPostalEs88",
				index: "situacionPostalEs88",
				editable: false,
				hidden : ($.rup.lang == 'eu')
			},
			{
				name: "situacionPostalEu88",
				index: "situacionPostalEu88",
				editable: false,
				hidden : ($.rup.lang != 'eu')
			},
			{
				name: "fechaSituacion88",
				index: "fechaSituacion88",
				editable: false,
				hidden: false
			},
			{
				name: "finalizada88",
				editable: false,
				hidden: false
			}
		];
		

		//Definicion de botones propios
		const getCustomButtons = function () {
			let customButons = [];
			// Recupera las filas de una tabla en un formato estable (ya sea multiseleccion o seleccion unica)
			const getSelectedRows = ($table) => {
				const rowsObject = $($table).rup_table("getSelectedRows");
				if(typeof rowsObject === 'undefined'){
					return [];
				}
				return Array.isArray(rowsObject) ? rowsObject : [ rowsObject ];
			};
			
			const descargarDocumentoButton = {
				text: function () {
					return $.rup.i18n.app.botonera.descargarDocumento;
				},
				id: 'descargarDocumento', // Campo obligatorio si se quiere usar desde el contextMenu
				className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
				icon: "mdi-file-download-outline",
				displayRegex: {
					test : function(){
						const selectedRows = getSelectedRows(tableSelector);
						//Solo se cumple si se elige uno o más registros
						return selectedRows.length > 0;
					}
				},
				insideContextMenu: true,
				action: function (e, dt) {
					sendTableFilterForFileDownload($.rup.CTX_PATH + "notifpostales/descargardocumentos");
				}
			};
			
			const descargarAdjuntoRemitoButton = {
				text: function () {
					return $.rup.i18n.app.botonera.descargarAdjuntoRemito;
				},
				id: 'descargarAdjuntoRemito', // Campo obligatorio si se quiere usar desde el contextMenu
				className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
				icon: "mdi-file-pdf-outline",
				displayRegex: {
					test : function(){
						const selectedRows = getSelectedRows(tableSelector);
						//Solo se cumple si se elige uno o más registros
						return selectedRows.length > 0 && selectedRows.every(e => e.tipoNot88==TIPO_NOTIFICACION);
					}
				},
				insideContextMenu: true,
				action: function (e, dt) {
					sendTableFilterForFileDownload($.rup.CTX_PATH + "notifpostales/descargaradjuntoremito");
				}
			};

			const descargarSobreButton = {
				extend: 'collection',
				text: function () {
					return $.rup.i18n.app.botonera.descargarSobre;
				},
				id: 'descargarSobre', // Campo obligatorio si se quiere usar desde el contextMenu
				className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
				icon: "mdi-email-outline",
	            autoClose: true,
				displayRegex: {
					test : function(){
						const selectedRows = getSelectedRows(tableSelector);
						//Solo se cumple si se elige uno o más registros de notificación
						return selectedRows.length > 0 && selectedRows.every(e => e.tipoNot88==TIPO_NOTIFICACION) ;
					}
				},
				insideContextMenu: true,
				action: function(e, dt){
					$('#descargaSobres-dialog').rup_dialog('open');
				}
			};
			const descargarPruebaEntregaButton = {
					text: function () {
						return $.rup.i18n.app.botonera.descargarPruebaEntrega;
					},
					id: 'descargarPruebaEntrega', // Campo obligatorio si se quiere usar desde el contextMenu
					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
					icon: "mdi-bookmark-check",
					displayRegex: {
						test : function(){
							const selectedRows = getSelectedRows(tableSelector);
							//Solo se cumple si se elige un unico registro de notificación
							return selectedRows.length == 1 && selectedRows.every(e => e.tipoNot88==TIPO_NOTIFICACION && e.finalizada88==NOTIFICACION_FINALIZADA_SI) ;
						}
					},
					insideContextMenu: true,
					action: function (e, dt) {
						const selectedRows  = $(tableSelector).rup_table("getSelectedRows");
						sendTableFilterForFileDownload($.rup.CTX_PATH + "notifpostales/descargarpee");
					}
			};
			const retramitarNotificacionButton = {
					text: function () {
						return $.rup.i18n.app.botonera.retramitarNotificacion;
					},
					id: 'retramitarNotificacion', // Campo obligatorio si se quiere usar desde el contextMenu
					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
					icon: "mdi-email-sync",
					displayRegex: {
						test : function(){
							const selectedRows = getSelectedRows(tableSelector);
							//Solo se cumple si se elige un unico registro de notificación
							return selectedRows.length == 1 && selectedRows.every(e => e.tipoNot88==TIPO_NOTIFICACION && e.finalizada88==NOTIFICACION_FINALIZADA_SI) ;
						}
					},
					insideContextMenu: true,
					action: function (e, dt) {
						Ad74aUtils.bloquearInterfaz();
						// Preparar parametros de la peticion (ultima busqueda realizara del rup_table) 
						let requestDto = getMultiselectionFilterObject();
						// refrescar situacion postal
						$.rup_ajax({
				    		type:  "POST",
				   	        url: $.rup.CTX_PATH + "notifpostales/retramitarnotificacion",
				   	        data: JSON.stringify(requestDto),
				            contentType: 'application/json',
				            complete: function(){
	            				Ad74aUtils.desBloquearInterfaz();
				            },
		             		success: function(res){
								// Recargar la tabla
		             			$(tableSelector).rup_table("reload");
							},
							error: function(){
	            				$.rup_messages("msgError", {
	            					title:$.rup.i18n.base.rup_message.tituloError,
	            					message:$.rup.i18n.base.rup_table.errors.errorOnGet
	            				});
	            			}
						});
					}
			};
			const refrescarSituacionButton = {
					text: function () {
						return $.rup.i18n.app.botonera.refrescarSituacion;
					},
					id: 'refrescarSituacion', // Campo obligatorio si se quiere usar desde el contextMenu
					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
					icon: "mdi-refresh",
					displayRegex: {
						test : function(){
							const selectedRows = getSelectedRows(tableSelector);
							//Solo se cumple si se elige uno o más registros de notificación
							return selectedRows.length > 0 && selectedRows.every(e => e.tipoNot88==TIPO_NOTIFICACION && e.finalizada88!=NOTIFICACION_FINALIZADA_SI) ;
						}
					},
					insideContextMenu: true,
					action: function (e, dt) {
						Ad74aUtils.bloquearInterfaz();
						// Preparar parametros de la peticion (ultima busqueda realizara del rup_table) 
						let requestDto = getMultiselectionFilterObject();
						// refrescar situacion postal
						$.rup_ajax({
				    		type:  "POST",
				   	        url: $.rup.CTX_PATH + "notifpostales/refrescarsituacion",
				   	        data: JSON.stringify(requestDto),
				            contentType: 'application/json',
				            complete: function(){
	            				Ad74aUtils.desBloquearInterfaz();
				            },
		             		success: function(res){
								// Recargar la tabla
		             			$(tableSelector).rup_table("reload");
							},
							error: function(){
	            				$.rup_messages("msgError", {
	            					title:$.rup.i18n.base.rup_message.tituloError,
	            					message:$.rup.i18n.base.rup_table.errors.errorOnGet
	            				});
	            			}
						});
					}
			};
			
			const listadoCorrespondenciaButton = {
					text: function () {
						return $.rup.i18n.app.botonera.listadoCorrespondencia;
					},
					id: 'listadoCorrespondencia', // Campo obligatorio si se quiere usar desde el contextMenu
					className: 'btn-material-primary-high-emphasis table_toolbar_btnView',
					icon: "mdi-file-document",
					displayRegex: {
						test : function(){
							const ultimosCriteriosFiltrado = $(tableSelector).data('settingsnotifpostales').filter.oldCriteria;
							//Solo se cumple si se ha filtrado por notificaciones,
							return ultimosCriteriosFiltrado.some(e=>e.name=='tipoNot88' && e.value==TIPO_NOTIFICACION);
						}
					},
					insideContextMenu: false,
					action: function (e, dt) {
						$('#listadoCorrespondencia-dialog').rup_dialog('open');
					}
			};
			customButons.push(descargarDocumentoButton);
			customButons.push(descargarAdjuntoRemitoButton);
			
			customButons.push(descargarSobreButton);
			customButons.push(listadoCorrespondenciaButton);
			customButons.push(descargarPruebaEntregaButton);
			customButons.push(retramitarNotificacionButton);
			customButons.push(refrescarSituacionButton);
			
			return customButons;
		};
	
		$(tableSelector).rup_table({
			colReorder: {
				fixedColumnsLeft: 2
			},
			colModel: tableColModels,
			primaryKey: "idNotifPostal88",
			filter: {
	  	  		id: "notifpostales_filter_form",
	  	  		filterToolbar: "notifpostales_filter_toolbar",
	  	  		collapsableLayerId: "notifpostales_filter_fieldset"
	     	},
	   		select: {
	       		activate: true,
	       		multiSelect: true,
				deleteDoubleClick:true
	   		},
       		multiSelect: {style: 'multi'},
			buttons: {
				activate: true,
				blackListButtons: ['reportsButton', 'addButton', 'editButton', 'cloneButton', 'deleteButton'],
				myButtons: getCustomButtons()
			},
			columnDefs : [{
				"targets": 3,
				"orderable": false,
				"render": function ( data, type, row, meta ) {
					let texto = "<span class='text-nowrap'>";
					if(row.tipoNot88==TIPO_NOTIFICACION){
						texto += "<i class='mdi mdi-alpha-n-box'></i> <span class='d-none'>"+$.rup.i18n.app.notifPostales.tipo.notificacion+"</span>";
					}else if(row.tipoNot88==TIPO_COMUNICACION){
						texto += "<i class='mdi mdi-alpha-c-circle'></i> <span class='d-none'>"+$.rup.i18n.app.notifPostales.tipo.comunicacion+"</span>";
					}else{
						texto += "<i class='mdi mdi-alert-rhombus-outline'></i> <span class='d-none'>"+$.rup.i18n.app.notifPostales.tipo.noidentificado+"</span>";
					}
					texto += "</span>";
					return texto;
				}
			},{
				"targets": 5,
			    "render": function ( data, type, row, meta ) {
			    	const sol = row.tareasTramite.tramitesExpediente.expediente.solicitantes;
			    	let texto = "<span class='text-nowrap'>";
			    	texto += "("+sol.identificador01+") " + sol.nombre01 +" "+sol.apellido101; 
			    	if(sol.apellido201 && sol.apellido201.length>0){
			    		texto+=" "+sol.apellido201;
			    	}
			    	texto += "</span>";
			    	return texto;
				}
			},{
				"targets": 13,
				"orderable": false,
			    "className": "text-center",
				"visible": ($.rup.lang == 'es'),
				"render": function ( data, type, row, meta ) {
					return data? "<span class='text-truncate d-block' style='max-width:180px'>"+data+"</span>":"";  
				}
			},{
				"targets": 14,
				"orderable": false,
			    "className": "text-center",
				"visible": ($.rup.lang != 'es'),
				"render": function ( data, type, row, meta ) {
					return data? "<span class='text-truncate d-block' style='max-width:180px'>"+data+"</span>":"";  
				}
			},{
				"targets": 16,
				"orderable": false,
			    "className": "text-center",
				"render": function ( data, type, row, meta ) {
					if(row.tipoNot88==TIPO_NOTIFICACION){//SOLO SE MUESTRA PARA NOTIFICACIONES
						return data==NOTIFICACION_FINALIZADA_SI? $.rup.i18n.app.comun.si:$.rup.i18n.app.comun.no;
					}else{
						return "";
					}
				}
			},{
				"targets": 17,
				"orderable": false,
				"className": "text-center",
				"render": function ( data, type, row, meta ) {
					let result="";
					if(row.tipoNot88==TIPO_NOTIFICACION){//SOLO SE MUESTRA PARA NOTIFICACIONES
						result = `
							<div id='impresion-layer' class='text-nowrap'>
								<a id='sobre_s-link'	href='${url_aa66_sobres.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'S'][arguments[1]];})}' 	target='_blank' title='${$.rup.i18n.app.notifPostales.tooltip.sobrePequeno}'><i class="ui-iconSobreTablaS"></i></a>
								<a id='sobre_l-link'	href='${url_aa66_sobres.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'L'][arguments[1]];})}' 	target='_blank' title='${$.rup.i18n.app.notifPostales.tooltip.sobreMediano}'><i class="ui-iconSobreTablaL"></i></a>
								<a id='sobre_xl-link'	href='${url_aa66_sobres.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'XL'][arguments[1]];})}' 	target='_blank' title='${$.rup.i18n.app.notifPostales.tooltip.sobreGrande}'><i class="ui-iconSobreTablaXL"></i></a>
								<a id='sobre_e-link'	href='${url_aa66_sobres.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'E'][arguments[1]];})}' 	target='_blank' title='${$.rup.i18n.app.notifPostales.tooltip.etiqueta}'><i class="ui-iconEtiquetaTabla ml-2"></i></a>
								<div class='etiquetaposicion-tooltip' style='display:none'>
									<table class='border-0'>
										<tr>
											<td><a class='etiquetaposicion-link' href='${url_aa66_etiquetas.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'1','1'][arguments[1]];})}' target='_blank'><img src='${$.rup.APP_STATICS}/images/etiqueta.png' /></a></td>
											<td><a class='etiquetaposicion-link' href='${url_aa66_etiquetas.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'1','2'][arguments[1]];})}' target='_blank'><img src='${$.rup.APP_STATICS}/images/etiqueta.png' /></a></td>
										</tr>
										<tr>
											<td><a class='etiquetaposicion-link' href='${url_aa66_etiquetas.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'2','1'][arguments[1]];})}' target='_blank'><img src='${$.rup.APP_STATICS}/images/etiqueta.png' /></a></td>
											<td><a class='etiquetaposicion-link' href='${url_aa66_etiquetas.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'2','2'][arguments[1]];})}' target='_blank'><img src='${$.rup.APP_STATICS}/images/etiqueta.png' /></a></td>
										</tr>
										<tr>
											<td><a class='etiquetaposicion-link' href='${url_aa66_etiquetas.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'3','1'][arguments[1]];})}' target='_blank'><img src='${$.rup.APP_STATICS}/images/etiqueta.png' /></a></td>
											<td><a class='etiquetaposicion-link' href='${url_aa66_etiquetas.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'3','2'][arguments[1]];})}' target='_blank'><img src='${$.rup.APP_STATICS}/images/etiqueta.png' /></a></td>
										</tr>
										<tr>
											<td><a class='etiquetaposicion-link' href='${url_aa66_etiquetas.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'4','1'][arguments[1]];})}' target='_blank'><img src='${$.rup.APP_STATICS}/images/etiqueta.png' /></a></td>
											<td><a class='etiquetaposicion-link' href='${url_aa66_etiquetas.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'4','2'][arguments[1]];})}' target='_blank'><img src='${$.rup.APP_STATICS}/images/etiqueta.png' /></a></td>
										</tr>
										<tr>
											<td><a class='etiquetaposicion-link' href='${url_aa66_etiquetas.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'5','1'][arguments[1]];})}' target='_blank'><img src='${$.rup.APP_STATICS}/images/etiqueta.png' /></a></td>
											<td><a class='etiquetaposicion-link' href='${url_aa66_etiquetas.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'5','2'][arguments[1]];})}' target='_blank'><img src='${$.rup.APP_STATICS}/images/etiqueta.png' /></a></td>
										</tr>
										<tr>
											<td><a class='etiquetaposicion-link' href='${url_aa66_etiquetas.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'6','1'][arguments[1]];})}' target='_blank'><img src='${$.rup.APP_STATICS}/images/etiqueta.png' /></a></td>
											<td><a class='etiquetaposicion-link' href='${url_aa66_etiquetas.replace(/\{(\d+)\}/g, function() {return [row.idEnvioPostal88,'6','2'][arguments[1]];})}' target='_blank'><img src='${$.rup.APP_STATICS}/images/etiqueta.png' /></a></td>
										</tr>
									</table>
								</div>
							</div>
						`;
					}
					return result;
				}
			}],
			rowCallback:function(trElement, rowData){
				setTimeout(function(){
					let $impresionLayer = $(trElement).find('#impresion-layer');
					$impresionLayer.closest('td').rup_tooltip("destroy");
					$impresionLayer.find('a[id!=sobre_e-link]').each(function(i,o){
						$(o).rup_tooltip({position:{my:'top right', at:'bottom center'}});
						$(o).on('click',function(e){
							e.stopPropagation();
							window.open($(this).prop('href'),"_blank");
							return false;
						});
					});
					$impresionLayer.find('a[id=sobre_e-link]').each(function(i,o){
						$(o).rup_tooltip({position:{my:'bottom right', at:'top center'},show:{event:'hover',modal: {on: true,blur: true}}});
						$(o).rup_tooltip({
							content : {
								text : $(o).next('.etiquetaposicion-tooltip')
							},
							position:{my:'bottom right', at:'top center'},
							show : 'click',
							hide : 'unfocus'
						});
						
						$(o).on('click',function(e){
							e.stopPropagation();
							return false;
						});
					});
				},1);
			},
			order: [[14, "desc"]]
		});
	}
	
	const initDialogs = () => {
		//Dialogo de descarga de sobres
		$('#descargaSobres-dialog').rup_dialog({
	        type: $.rup.dialog.DIV,
	        autoOpen: false,
	        modal: true,
	        resizable: false,
	        title: '<i>'+$.rup.i18n.app.dialog.title.descargaSobresEtiquetas+'</i>',
	        buttons: [{
	                text: $.rup.i18n.app.botonera.cerrar,
	                id: "descargaSobres-dialog-cerrar",
	                click: function () {
	                    $('#descargaSobres-dialog').rup_dialog('close');
	                },
	                btnType: $.rup.dialog.LINK
	        }],
			open: () => {
				//[jbhg] fix, ajustar la anchura del dialogo al contenido:
				$('#descargaSobres-dialog').closest('.ui-dialog').css('width','auto');
			},
			close: function(event, ui) {
			}
	    });	
		//Botones de descarga de sobres
		$("#descargarSobreS-button").on('click',function(){
			obtenerSobresEnvios('S');
		}).prop('disabled',true);
		$("#descargarSobreL-button").on('click',function(){
			obtenerSobresEnvios('L');
		}).prop('disabled',true);
		$("#descargarSobreXL-button").on('click',function(){
			obtenerSobresEnvios('XL');
		}).prop('disabled',true);
		$("#descargarEtiqueta-button").on('click',function(){
			obtenerSobresEnvios('E');
		}).prop('disabled',true);
		$("[id='pnpLink-button']").on('click',function(){
			window.open(url_aa66_envios,'aa66tab').focus();
		});
		//Dialogo de descarga de listado a correspondencia
		$('#listadoCorrespondencia-dialog').rup_dialog({
	        type: $.rup.dialog.DIV,
	        autoOpen: false,
	        modal: true,
	        width: 500,
	        resizable: false,
	        title: '<i>'+$.rup.i18n.app.dialog.title.descargaListadoCorrespondencia+'</i>',
	        buttons: [{
	            text: $.rup.i18n.app.botonera.cerrar,
	            id: "listadoCorrespondencia-dialog-cerrar",
	            click: function () {
	                $('#listadoCorrespondencia-dialog').rup_dialog('close');
	            },
	            btnType: $.rup.dialog.LINK
	        },{
                text: $.rup.i18n.app.botonera.descargar,
                id: "listadoCorrespondencia-dialog-cerrar",
                click: function () {
                	if($("#form-listadoCorrespondencia-dialog").valid()){
	            		Ad74aUtils.bloquearInterfaz();
	            		const json_data = $("#form-listadoCorrespondencia-dialog").rup_form("formToJson");
	            		/*
	            		 * Los pdf de listados a correspondencia solo pueden ser descargados por el usuario. No se puede automatizar.
	            		 * Lo que se hace aquí es abrirle una pestaña por cada listado de cada usuario que haya creado una notificación en esas fechas. 
	            		 */
						$.rup_ajax({
				    		type:  "POST",
				   	        url: $.rup.CTX_PATH + "notifpostales/listadocorrespondenciaParams",
	            			data : JSON.stringify(json_data),
				            contentType: 'application/json',
				            complete: function(){
	            				Ad74aUtils.desBloquearInterfaz();
				            },
		             		success: function(res){
		             			res = (res && res.length>0)? JSON.parse(res):res;
		             			if(res && res.URL_LIST && res.URL_LIST.length > 0){
		             				res.URL_LIST.forEach(function(itemURL){
		             					//XXX Una pestaña nueva por cada usuario diferente que haya creado notificaciones en ese intervalo de fechas
		             					window.open(itemURL);
		             				});
		             			}else{
		            				$.rup_messages("msgAlert", {
		            					//title:"",
		            					message:$.rup.i18n.app.notifPostales.msg.sinListadosCorrespondencia
		            				});
		             			}
							},
							error: function(){
	            				$.rup_messages("msgError", {
	            					title:$.rup.i18n.base.rup_message.tituloError,
	            					message:$.rup.i18n.base.rup_table.errors.errorOnGet
	            				});
	            			}
						});
                	}
                }
	        }],
			open: () => {
				$("#fechaRegistroInicio-listadoCorrespondencia-dialog").rup_date('hide');
			},
			close: function(event, ui) {
			}
	    });	
		//Fechas del listado a correspondencia
		$.rup_date({
	        from: "fechaRegistroInicio-listadoCorrespondencia-dialog",
	        to: "fechaRegistroFin-listadoCorrespondencia-dialog",
	        mask: 'dd/mm/yyyy',
			showOtherMonths : true
	    });
		//Validaciones de formulario
		$("#form-listadoCorrespondencia-dialog").rup_validate({
		    liveCheckingErrors: false,
		    showFieldErrorAsDefault: true,
		    showErrorsInFeedback: false,
		    showFieldErrorsInFeedback: true,
		    rules:{
		    	"fechaRegistroInicio":{required:true, date:true},
		    	"fechaRegistroFin":{required:true, date:true}
		    }
		});
	}
	
	function obtenerSobresEnvios(size){
		//ajax obtenerNotificacionesParaSobres para obtener ids
		let requestDto = getMultiselectionFilterObject();
		$.rup_ajax({
    		type:  "POST",
   	        url: $.rup.CTX_PATH + "notifpostales/obtenerNotificacionesParaSobres",
			data : JSON.stringify(requestDto),
            contentType: 'application/json',
            complete: function(){
				Ad74aUtils.desBloquearInterfaz();
            },
			success: function(response){
				const notifList = JSON.parse(response);
				const envioIdsStr= notifList.reduce((acum, curr) => [...acum, curr.idEnvioPostal88], []).join(",");
				let formulario = $("#sobresPost-form");
				formulario.find("input[name='ids]").val(envioIdsStr);
				formulario.find("input[name='size]").val(size);
				formulario[0].submit();
			},
			error: function(){
				$.rup_messages("msgError", {
					title:$.rup.i18n.base.rup_message.tituloError,
					message:$.rup.i18n.base.rup_table.errors.errorOnGet
				});
			}
		});
	}

	//Prueba para realizar la llamada de sobresPost desde servidor
	$("#prueba-sobresPost").on('click', function(){
		sendTableFilterForFileDownload($.rup.CTX_PATH + "notifpostales/descargarsobres/S").done(function(){
			$('#descargaSobres-dialog').rup_dialog('close');
		});
	});
	
	//Envioa el filtro de la tabla para obtener una descarga de un fichero
	function sendTableFilterForFileDownload(url, method){
		const selectedRows  = $(tableSelector).rup_table("getSelectedRows");
		// Preparar parametros de la peticion (ultima busqueda realizara del rup_table) 
		let requestDto = getMultiselectionFilterObject();
		// Descargar documento de la notificacion
		Ad74aUtils.bloquearInterfaz();
		return Ad74aUtils.fileDownload({
			url: url,
			method: (method||'POST'),
			data : JSON.stringify(requestDto),
			contentType : "application/json",
			complete: function(){
				Ad74aUtils.desBloquearInterfaz();
			},
			error: function(){
				$.rup_messages("msgError", {
					title:$.rup.i18n.base.rup_message.tituloError,
					message:$.rup.i18n.base.rup_table.errors.errorOnGet
				});
			}
		});
	}
	//Obtiene el objeto multiselection para las operaciones de los botones que pueden aplicar a varias filas a la vez
	function getMultiselectionFilterObject (){
		let ctx = $(tableSelector).DataTable().settings()[0];	
		let multiselection = {};
		multiselection.selectedAll = ctx.multiselection.selectedAll;
		if (multiselection.selectedAll){
			multiselection.selectedIds = ctx.multiselection.deselectedIds;
		} else {
			multiselection.selectedIds = ctx.multiselection.selectedIds;
		}
		let filter = window.form2object(ctx.oInit.filter.$filterContainer[0]);
		let core = {
			'pkToken': ctx.oInit.multiplePkToken,
			'pkNames': ctx.oInit.primaryKey
		};
		return {'multiselection':multiselection,'filter':filter, 'core':core};
	}
});
