/**
* This program is free software: you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software Foundation,
* either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program.
* If not, see https://www.gnu.org/licenses/.
*/
jQuery(document).ready(function () {
// Seteamos co_fecha actual y min y max para todos los buscadores
jQuery('.search-utilities-input').val(co_ano + '-' + co_mes + '-' + co_dia);
jQuery('.search-utilities-input').val(co_ano + '-' + co_mes + '-' + co_dia);
jQuery('.search-utilities-input').attr('max', co_ano + '-' + co_mes + '-' + co_dia);
jQuery('.search-utilities-input').attr('max', co_ano + '-' + co_mes + '-' + co_dia);
jQuery.extend(true, jQuery.fn.dataTable.defaults, {
language: {
decimal: ',',
thousands: '.',
info: 'Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros',
infoEmpty: 'Mostrando registros del 0 al 0 de un total de 0 registros',
infoPostFix: '',
infoFiltered: '(filtrado de un total de _MAX_ registros)',
loadingRecords: 'Cargando...',
lengthMenu: 'Mostrar _MENU_ registros',
paginate: {
first: 'Primero',
last: 'Último',
next: 'Siguiente',
previous: 'Anterior',
},
processing: 'Procesando...',
search: 'Buscar:',
searchPlaceholder: 'Término de búsqueda',
zeroRecords: 'No se encontraron resultados',
emptyTable: 'Ningún dato disponible en esta tabla',
aria: {
sortAscending: ': Activar para ordenar la columna de manera ascendente',
sortDescending: ': Activar para ordenar la columna de manera descendente',
},
//only works for built-in buttons, not for custom buttons
buttons: {
create: 'Nuevo',
edit: 'Cambiar',
remove: 'Borrar',
copy: 'Copiar',
csv: 'CSV',
excel: 'Excel',
pdf: 'PDF',
print: 'Imprimir',
colvis: 'Visibilidad columnas',
collection: 'Colección',
upload: 'Seleccione fichero....',
},
select: {
rows: {
_: '%d filas seleccionadas',
0: 'Haga click en una fila para seleccionar',
1: 'una fila seleccionada',
},
},
},
});
/////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// GESTIÓN MASIVA DE ENVÍOS /////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
// Seteamos co_fecha min y máxima para la recogida
document.getElementById('PickupDateRegister').value = co_ano + '-' + co_mes + '-' + co_dia;
jQuery('#PickupDateRegister').attr('min', co_ano + '-' + co_mes + '-' + co_dia);
// Ocultamos contenedor de recogidas
jQuery('#masive_pickup_container').hide();
// Ocultamos impresión de etiquetas
jQuery('#print_label_reg_container').hide();
jQuery('#input_tipo_etiqueta_container_gestion').hide();
jQuery('#input_pos_etiqueta_container_gestion').hide();
// Ocultamos errores
jQuery('#reg_orders_errors_container').hide();
// Comprobamos el tipo etiqueta seleccionada
labelsSelectActions(jQuery('#input_tipo_etiqueta_gestion').val(), 'gestion');
// Escuchamos cambios de tipo
jQuery('#input_tipo_etiqueta_gestion').on('change', function () {
labelsSelectActions(this.value, 'gestion');
});
// switch (jQuery('#input_tipo_etiqueta_gestion').val()) {
// case '0':
// jQuery('#input_pos_etiqueta_gestion').empty();
// jQuery('#input_pos_etiqueta_gestion').append('');
// jQuery('#input_pos_etiqueta_gestion').append('');
// jQuery('#input_pos_etiqueta_gestion').append('');
// jQuery('#input_pos_etiqueta_gestion').append('');
// jQuery('#input_pos_etiqueta_container_gestion').show();
// break;
// case '1':
// jQuery('#input_pos_etiqueta_gestion').empty();
// jQuery('#input_pos_etiqueta_gestion').append('');
// jQuery('#input_pos_etiqueta_gestion').append('');
// jQuery('#input_pos_etiqueta_container_gestion').show();
// break;
// case '2':
// jQuery('#input_pos_etiqueta_container_gestion').hide();
// break;
// }
// jQuery('#input_tipo_etiqueta_gestion').on('change', function () {
// switch (this.value) {
// case '0':
// jQuery('#input_pos_etiqueta_gestion').empty();
// jQuery('#input_pos_etiqueta_gestion').append('');
// jQuery('#input_pos_etiqueta_gestion').append('');
// jQuery('#input_pos_etiqueta_gestion').append('');
// jQuery('#input_pos_etiqueta_gestion').append('');
// jQuery('#input_pos_etiqueta_container_gestion').show();
// break;
// case '1':
// jQuery('#input_pos_etiqueta_gestion').empty();
// jQuery('#input_pos_etiqueta_gestion').append('');
// jQuery('#input_pos_etiqueta_gestion').append('');
// jQuery('#input_pos_etiqueta_container_gestion').show();
// break;
// case '2':
// jQuery('#input_pos_etiqueta_container_gestion').hide();
// break;
// default:
// break;
// }
// });
jQuery('#inputCheckSavePickup').on('click', function () {
if (jQuery(this).is(':checked')) {
jQuery('#masive_pickup_container').show();
jQuery('#inputCheckPrintLabel').prop('checked', false);
} else {
jQuery('#masive_pickup_container').hide();
jQuery('#inputCheckPrintLabel').prop('checked', false);
}
});
// Selecciona todas las filas
jQuery('#table-select-all').on('click', function () {
var rows = tableRegOrders.rows({ search: 'applied' }).nodes();
jQuery('input[type="checkbox"]', rows).prop('checked', this.checked);
if (jQuery(this).is(':checked')) {
rows.rows('.selectable').select();
} else {
rows.rows().deselect();
}
});
//Desmarca checkbox select all cuando eliminas la selección de algún select
jQuery('#GestionDataTable tbody').on('change', 'input[type="checkbox"]', function () {
if (!this.checked) {
var el = jQuery('#table-select-all').get(0);
if (el && el.checked && 'indeterminate' in el) {
el.indeterminate = true;
}
}
});
//Oculta campos
jQuery('a.toggle-vis').on('click', function (e) {
e.preventDefault();
jQuery(this).toggleClass('option-selected');
var column = tableRegOrders.column(jQuery(this).attr('data-column'));
column.visible(!column.visible());
});
jQuery('a.show-cols').on('click', function (e) {
jQuery(this).toggleClass('option-selected');
jQuery('.showButtonsContainer').toggleClass('hidden-block');
});
// OPCION PICKUP CHECKEADO SEGUN SI ES CORREOS/CEX
let allcheckbox = false;
jQuery('#table-select-all').on('change', function () {
if (jQuery(this).is(':checked')) {
allcheckbox = true;
manageCheckbox(allcheckbox);
} else {
allcheckbox = false;
hidePickup();
}
});
jQuery('#GestionDataTable tbody').on('change', 'input[type="checkbox"]', function () {
manageCheckbox(allcheckbox);
});
function showPickUp() {
jQuery('#inputCheckSavePickup').prop('checked', true);
jQuery('#masive_pickup_container').css('display', '');
}
function hidePickup() {
jQuery('#inputCheckSavePickup').prop('checked', false);
jQuery('#masive_pickup_container').css('display', 'none');
}
function manageCheckbox(allcheckbox) {
let companyIndex = 5; // Índice fijo para la columna "Transportista"
let pickupFrom = jQuery('#PickupFromRegister').val();
let pickupTo = jQuery('#PickupToRegister').val();
let isValidTimeRange = pickupFrom > '00:00:00' && pickupTo > '00:00:00';
let cexSelected = false;
let correosSelected = false;
jQuery('#GestionDataTable tbody input[type="checkbox"]').each(function () {
let company = jQuery(this).closest('tr').find('td').eq(companyIndex).text().trim();
if (jQuery(this).is(':checked') && company === 'CEX') {
cexSelected = true;
} else if (jQuery(this).is(':checked') && company === 'Correos') {
correosSelected = true;
}
});
if (!allcheckbox && cexSelected && !correosSelected) {
jQuery('#select_package').hide();
jQuery('#print_label_on_pickup').hide();
} else {
jQuery('#select_package').show();
jQuery('#print_label_on_pickup').show();
}
if (cexSelected && isValidTimeRange) {
showPickUp();
} else {
hidePickup();
}
}
/////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// GESTIÓN DE ETIQUETAS /////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
// Comprobamos el tipo seleccionado
labelsSelectActions(jQuery('#input_tipo_etiqueta_reimpresion').val(), 'reimpresion');
// Escuchamos cambios de tipo
jQuery('#input_tipo_etiqueta_reimpresion').on('change', function () {
labelsSelectActions(this.value, 'reimpresion');
});
// Selecciona todas las filas
jQuery('#table-select-all-etiquetas').on('click', function () {
var rows = tableEtiquetas.rows({ search: 'applied' }).nodes();
jQuery('input[type="checkbox"]', rows).prop('checked', this.checked);
if (jQuery(this).is(':checked')) {
rows.rows().select();
} else {
rows.rows().deselect();
}
});
//Desmarca checkbox select all cuando eliminas la selección de algún select
jQuery('#EtiquetasDataTable tbody').on('change', 'input[type="checkbox"]', function () {
if (!this.checked) {
var el = jQuery('#table-select-all-etiquetas').get(0);
if (el && el.checked && 'indeterminate' in el) {
el.indeterminate = true;
}
}
});
//Oculta campos
jQuery('a.toggle-vis2').on('click', function (e) {
e.preventDefault();
jQuery(this).toggleClass('option-selected');
var column = tableEtiquetas.column(jQuery(this).attr('data-column'));
column.visible(!column.visible());
});
jQuery('a.show-cols2').on('click', function (e) {
jQuery(this).toggleClass('option-selected');
jQuery('.showButtonsContainer2').toggleClass('hidden-block');
});
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// GENERACIÓN RESUMEN PEDIDOS //////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
var button_print = new jQuery.fn.dataTable.Buttons(tableResumen, {
buttons: ['print'],
})
.container()
.appendTo(jQuery('#button_print'));
// Selecciona todas las filas
jQuery('#table-select-all-resumen').on('click', function () {
var rows = tableResumen.rows({ search: 'applied' }).nodes();
jQuery('input[type="checkbox"]', rows).prop('checked', this.checked);
if (jQuery(this).is(':checked')) {
rows.rows().select();
} else {
rows.rows().deselect();
}
});
//Oculta campos
jQuery('a.toggle-vis3').on('click', function (e) {
e.preventDefault();
jQuery(this).toggleClass('option-selected');
var column = tableResumen.column(jQuery(this).attr('data-column'));
column.visible(!column.visible());
});
jQuery('a.show-cols3').on('click', function (e) {
jQuery(this).toggleClass('option-selected');
jQuery('.showButtonsContainer3').toggleClass('hidden-block');
});
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// RECOGIDAS ///////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
// Selecciona todas las filas
jQuery('#table-select-all-pickups').on('click', function () {
var rows = tablePickups.rows({ search: 'applied' }).nodes();
jQuery('input[type="checkbox"]', rows).prop('checked', this.checked);
if (jQuery(this).is(':checked')) {
rows.rows('.selectable').select();
} else {
rows.rows().deselect();
}
});
//Desmarca checkbox select all cuando eliminas la selección de algún select
jQuery('#PickupDataTable tbody').on('change', 'input[type="checkbox"]', function () {
if (!this.checked) {
var el = jQuery('#table-select-all-pickups').get(0);
if (el && el.checked && 'indeterminate' in el) {
el.indeterminate = true;
}
}
});
//Oculta campos
jQuery('a.toggle-vis4').on('click', function (e) {
e.preventDefault();
jQuery(this).toggleClass('option-selected');
var column = tablePickups.column(jQuery(this).attr('data-column'));
column.visible(!column.visible());
});
jQuery('a.show-cols4').on('click', function (e) {
jQuery(this).toggleClass('option-selected');
jQuery('.showButtonsContainer4').toggleClass('hidden-block');
});
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// GENERACIÓN DOCUMENTACIÓN ADUANERA ///////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
// Selecciona todas las filas
jQuery('#table-select-all-doc-aduanera').on('click', function () {
var rows = tableDocAduanera.rows({ search: 'applied' }).nodes();
jQuery('input[type="checkbox"]', rows).prop('checked', this.checked);
if (jQuery(this).is(':checked')) {
rows.rows().select();
} else {
rows.rows().deselect();
}
});
//Desmarca checkbox select all cuando eliminas la selección de algún select
jQuery('#DocAduaneraDataTable tbody').on('change', 'input[type="checkbox"]', function () {
if (!this.checked) {
var el = jQuery('#table-select-all-doc-aduanera').get(0);
if (el && el.checked && 'indeterminate' in el) {
el.indeterminate = true;
}
}
});
//Oculta campos
jQuery('a.toggle-vis5').on('click', function (e) {
e.preventDefault();
jQuery(this).toggleClass('option-selected');
var column = tableDocAduanera.column(jQuery(this).attr('data-column'));
column.visible(!column.visible());
});
jQuery('a.show-cols5').on('click', function (e) {
jQuery(this).toggleClass('option-selected');
jQuery('.showButtonsContainer5').toggleClass('hidden-block');
});
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// FUNCIONES ///////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
function labelsSelectActions(label_type, utility_name) {
var label_pos_container = jQuery('#input_pos_etiqueta_container_' + utility_name);
var label_format_container = jQuery('#input_format_etiqueta_container_' + utility_name);
var label_pos_input = jQuery('#input_pos_etiqueta_' + utility_name);
var label_format_input = jQuery('#input_format_etiqueta_' + utility_name);
switch (label_type) {
case '0': // Adhesiva
label_pos_container.show();
label_format_container.show();
switch (label_format_input.val()) {
case '1': // 3/A4
loadLabelSelectPositions(label_pos_input, 3);
break;
default: // Estandar y 4/A4
loadLabelSelectPositions(label_pos_input, 4);
break;
}
label_format_input.on('change', function () {
switch (this.value) {
case '1': // 3/A4
loadLabelSelectPositions(label_pos_input, 3);
break;
default: // Estandar y 4/A4
loadLabelSelectPositions(label_pos_input, 4);
break;
}
});
break;
case '1': // Medio Folio
loadLabelSelectPositions(label_pos_input, 2);
label_pos_container.show();
break;
case '2': // Térmica
label_pos_container.hide();
// Reset input formarto
label_format_input.val(0);
label_format_container.hide();
break;
default:
break;
}
}
// Funcion que nos permite rellenar dinámicamente el select de posiciones de etiquetas
function loadLabelSelectPositions(element, positions) {
let select_input = jQuery(element);
select_input.empty();
for (let i = 1; i <= positions; i++) {
select_input.append('');
}
}
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// COMUN ///////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
var tab = 'gestion-tab';
jQuery('#GestionMasivaPedidosSearchButton').click();
jQuery('#GestionMasivaPedidosSearchButton').on('click', function () {
jQuery('#GestionDataTable tfoot input').val('');
// Limpiar el filtro y redibujar la tabla
jQuery('#GestionDataTable').DataTable().search('').columns().search('').draw();
});
jQuery('#gestion-tab').on('click', function () {
jQuery('#GestionMasivaPedidosSearchButton').click();
tab = 'gestion-tab';
});
jQuery('#reimpresion-tab').on('click', function () {
jQuery('#EtiquetasSearchButton').click();
tab = 'reimpresion-tab';
});
jQuery('#generacion-tab').on('click', function () {
jQuery('#SummarySearchButton').click();
tab = 'generacion-tab';
});
jQuery('#pickups-tab').on('click', function () {
jQuery('#PickupsSearchButton').click();
tab = 'pickups-tab';
});
jQuery('#documentacion-tab').on('click', function () {
jQuery('#DocAduaneraSearchButton').click();
tab = 'documentacion-tab';
});
function setTomorrowsDate(inputField) {
const today = new Date();
const tomorrow = new Date(today);
tomorrow.setDate(tomorrow.getDate() + 1);
var month = tomorrow.getMonth() + 1;
var day = tomorrow.getDate();
var year = tomorrow.getFullYear();
if (day < 10) day = '0' + day;
if (month < 10) month = '0' + month;
var calendar_day = year + '-' + month + '-' + day;
document.getElementById(inputField).setAttribute('min', calendar_day);
document.getElementById(inputField).value = year + '-' + month + '-' + day;
}
function setTodayDate(inputField) {
const today = new Date();
var month = today.getMonth() + 1;
var day = today.getDate();
var year = today.getFullYear();
if (day < 10) day = '0' + day;
if (month < 10) month = '0' + month;
var calendar_day = year + '-' + month + '-' + day;
document.getElementById(inputField).setAttribute('min', calendar_day);
document.getElementById(inputField).value = year + '-' + month + '-' + day;
}
function set30DaysAfterDate(inputField) {
const today = new Date();
const dayAfter30 = new Date(today);
dayAfter30.setDate(dayAfter30.getDate() + 30);
var month = dayAfter30.getMonth() + 1;
var day = dayAfter30.getDate();
var year = dayAfter30.getFullYear();
if (day < 10) day = '0' + day;
if (month < 10) month = '0' + month;
var calendar_day = year + '-' + month + '-' + day;
document.getElementById(inputField).setAttribute('max', calendar_day);
}
});
//--------------------------------------------------------------------------------------//
// //
// AMBITO GLOBAL //
// //
//--------------------------------------------------------------------------------------//
//--------------------------------------------------------------------------------------//
// //
// GESTIÓN MASIVA DE PEDIDOS //
// //
//--------------------------------------------------------------------------------------//
// ---- DATATABLE RESUMEN PEDIDOS --------------------------------------------------------
let tableResumen = jQuery('#ResumenDataTable').DataTable({
processing: true,
serverSide: true,
ajax: {
url: dataTableVars.dataTableurl,
type: 'POST',
data: function (d) {
d.FromDateOrdersReg = jQuery('#inputFromDateSummary').val();
d.ToDateOrdersReg = jQuery('#inputToDateSummary').val();
d.action = 'dataTableAjax';
d.nonce = dataTableVars.dataTableNonce;
d.tab = 'EtiquetasDataTable';
},
},
language: {
url: co_path_to_module + '/views/js/datatables/Spanish.json',
},
dom: '<"row"<"col-sm-6"B><"col-sm-6"f>>rt<"row"<"col-sm-2"l><"col-sm-6"i><"col-sm-4"p>>',
buttons: [
{
extend: 'csv',
title: 'Correos eCommerce - Resumen/Manifiesto ' + co_fecha.toLocaleString(),
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7],
},
},
{
extend: 'excel',
title: 'Correos eCommerce - Resumen/Manifiesto ' + co_fecha.toLocaleString(),
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7],
},
},
{
extend: 'pdf',
title: 'Correos eCommerce - Resumen/Manifiesto ' + co_fecha.toLocaleString(),
orientation: 'landscape',
pageSize: 'A4',
footer: true,
messageBottom: function () {
let selectedData = tableResumen.rows({ selected: true }).data().toArray();
if (selectedData.length == 0) {
selectedData = tableResumen.rows().data().toArray();
}
let total_bultos = 0;
selectedData.forEach(function (data) {
total_bultos = total_bultos + parseInt(data['bultos']);
});
return 'Total Envíos: ' + selectedData.length + ' Total Bultos: ' + total_bultos;
},
customize: function (doc) {
doc.styles.tableHeader = {
fillColor: '#002E6D',
color: '#FFF',
fontSize: '11',
alignment: 'center',
bold: true,
};
doc.styles.tableFooter = {
fillColor: '#002E6D',
};
doc['footer'] = function (page, pages) {
return {
columns: [
{
alignment: 'center',
text: [
{
text: page.toString(),
italics: true,
},
' de ',
{
text: pages.toString(),
italics: true,
},
],
},
],
margin: [10, 0],
};
};
doc.defaultStyle.fontSize = 8;
doc.content[1].margin = [0, 10, 40, 20];
doc.pageMargins = [100, 30, 0, 60];
},
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7],
},
},
],
columnDefs: [
{
orderable: false,
searchable: false,
targets: 0,
defaultContent: '',
render: function (data, type, full, meta) {
return '';
},
},
],
select: {
style: 'multi',
selector: '.mycheckbox',
},
order: [[1, 'desc']],
columns: [{ data: null }, { data: 'id_order' }, { data: 'reference' }, { data: 'first_shipping_number' }, { data: 'company' }, { data: 'customer_name' }, { data: 'customer_address' }, { data: 'date_add' }],
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100],
],
initComplete: function () {
this.api()
.columns()
.every(function () {
var column = this;
var debounceTimeout;
jQuery('input', this.footer()).on('keyup', function () {
clearTimeout(debounceTimeout); // Limpiar el temporizador anterior
debounceTimeout = setTimeout(function () {
column.search(jQuery('input', column.footer()).val()).draw();
}, 300); // Espera 300 ms después de que el usuario deje de escribir
});
/*let column = this;
let delayTimer;
jQuery('input', this.footer()).on('keyup change', function () {
// Almacenar la referencia a 'this' fuera de la función de temporización
let inputElement = this;
// Limpiar el temporizador existente si existe
clearTimeout(delayTimer);
// Establecer un nuevo temporizador
delayTimer = setTimeout(function () {
let numericValue = /^\d+$/.test(inputElement.value);
// Verificar si la longitud del valor del input es al menos 3 caracteres
if (inputElement.value.length >= 3 || numericValue) {
// Lógica de validación o acción
column.search(inputElement.value).draw();
} else if (inputElement.value.length == 0) {
// Limpiar el filtro y redibujar la tabla
jQuery('#ResumenDataTable').DataTable().search('').columns().search('').draw();
}
}, 1000);
});*/
});
jQuery.fn.dataTable.ext.classes.sLengthSelect = 'custom-select';
},
});
let inputs_tableRegOrders = {
exportOptions: {
format: {
body: function (data, row, column, node) {
let htmlObject = jQuery(data);
if (column == 9) {
return htmlObject.val();
} else if (column == 1) {
return htmlObject.data('value');
} else {
return data;
}
},
},
},
};
// ---- DATATABLE ERRORES GESTIÓN DE ENVÍOS ----------------------------------------------
let table_errors_reg_orders = jQuery('#datatableErrorsRegOrders').DataTable({
paging: false,
info: false,
searching: false,
orderable: true,
dom: '<"row"<"col-sm-6"B><"col-sm-6"f>>rt<"row"<"col-sm-2"l><"col-sm-4"i><"col-sm-6"p>>',
buttons: ['csv', 'excel', 'pdf'],
columns: [{ data: 'id_order' }, { data: 'reference' }, { data: 'error' }],
order: [[0, 'desc']],
});
/**
* Función que solo permite imprimir etiquetas 3/A4 a CEX
*/
function checkCEXLabelFormat(orders, format_selected) {
// Si queremos imprimir formato 3/A4 solo se permite para CEX
if (format_selected == '1') {
let allHaveCEX = true;
jQuery.each(orders, function (index, order) {
if (order.company !== 'CEX') {
allHaveCEX = false;
return false;
}
});
if (!allHaveCEX) {
showModalErrorWindow('El Formato seleccionado solo está permitido para CEX');
return false;
}
}
return true;
}
// ---- DATATABLE GESTIÓN DE ENVÍOS ------------------------------------------------------
let tableRegOrders = jQuery('#GestionDataTable').DataTable({
processing: true,
serverSide: true,
colReorder: true,
ajax: {
url: dataTableVars.dataTableurl,
type: 'POST',
data: function (d) {
d.FromDateOrdersReg = jQuery('#inputFromDateOrdersReg').val();
d.ToDateOrdersReg = jQuery('#inputToDateOrdersReg').val();
d.action = 'dataTableAjax';
d.nonce = dataTableVars.dataTableNonce;
d.tab = 'GestionDataTable';
},
},
language: {
url: co_path_to_module + '/views/js/datatables/Spanish.json',
},
dom: '<"row"<"col-sm-6"B><"col-sm-6"f>>rt<"row"<"col-sm-2"l><"col-sm-6"i><"col-sm-4"p>>',
buttons: [
jQuery.extend(true, {}, inputs_tableRegOrders, {
extend: 'csv',
title: 'Correos eCommerce - Envíos ' + co_fecha.toLocaleString(),
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13],
format: {
body: function(data, row, column, node) {
if (column === 1) {
// Referencia
return jQuery(node).find('a').text() || data;
} else if (column === 2) {
// Productos
return data.replace(/,/g, ',').replace(/\.\.\./g, '...');
} else if (column === 9) {
// Remitente
return jQuery(node).find('select').children('option:selected').text() || data;
} else if (column === 10) {
// Bultos
return jQuery(node).find('input').val() || data;
}
// Por defecto, devolver el dato original
return data;
}
}
},
}),
jQuery.extend(true, {}, inputs_tableRegOrders, {
extend: 'excel',
title: 'Correos eCommerce - Envíos ' + co_fecha.toLocaleString(),
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13],
format: {
body: function(data, row, column, node) {
if (column === 1) {
// Referencia
return jQuery(node).find('a').text() || data;
} else if (column === 2) {
// Productos
return data.replace(/,/g, ',').replace(/\.\.\./g, '...');
} else if (column === 9) {
// Remitente
return jQuery(node).find('select').children('option:selected').text() || data;
} else if (column === 10) {
// Bultos
return jQuery(node).find('input').val() || data;
}
// Por defecto, devolver el dato original
return data;
}
}
},
}),
jQuery.extend(true, {}, inputs_tableRegOrders, {
extend: 'pdf',
title: 'Correos eCommerce - Envíos ' + co_fecha.toLocaleString(),
orientation: 'landscape',
pageSize: 'A4',
//footer: true,
customize: function (doc) {
doc.styles.tableHeader = {
fillColor: '#002E6D',
color: '#FFF',
fontSize: '11',
alignment: 'center',
bold: true,
};
doc['footer'] = function (page, pages) {
return {
columns: [
{
alignment: 'center',
text: [
{
text: page.toString(),
italics: true,
},
' de ',
{
text: pages.toString(),
italics: true,
},
],
},
],
margin: [10, 0],
};
};
doc.defaultStyle.fontSize = 8;
doc.content[1].margin = [40, 10, 40, 0];
doc.pageMargins = [0, 30, 0, 60];
},
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13],
format: {
body: function(data, row, column, node) {
if (column === 1) {
// Referencia
return jQuery(node).find('a').text() || data;
} else if (column === 2) {
// Productos
return data.replace(/,/g, ',').replace(/\.\.\./g, '...');
} else if (column === 9) {
// Remitente
return jQuery(node).find('select').children('option:selected').text() || data;
} else if (column === 10) {
// Bultos
return jQuery(node).find('input').val() || data;
}
// Por defecto, devolver el dato original
return data;
}
}
},
}),
],
columnDefs: [
{
orderable: false,
searcheable: false,
targets: 0,
defaultContent: '',
render: function (data, type, full, meta) {
// Eliminamos la comprobación de full.name != null ya que debemos permitir que todos los pedidos se puedan gestionar
// También lo hacemos en todos los let disabled = 'disabled';
if (full.shipping_number == null || full.shipping_number == '') {
if (activateDimensionsByDefault == true || (full.product_type !== 'citypaq' && full.codigoProducto !== 'S0179')) {
return '';
} else {
return '';
}
} else {
return '';
}
},
},
/* {
targets: 2,
render: function (data, type, full, meta) {
order_link = '' + data + '';
return order_link;
}
}, */
{
targets: 2,
render: function (data, type, full, meta) {
if (platform == 'wc') {
order_link = '' + data + '';
} else if (platform == 'ps') {
order_link = '' + data + '';
}
return order_link;
},
},
{
targets: 9,
render: function (data, type, full, meta) {
if (type === 'display') {
data = strtrunc(data, 35);
}
return data;
},
},
{
type: 'html-input',
targets: 12,
render: function (data, type, full, meta) {
let disabled = 'disabled';
if (full.shipping_number == null || full.shipping_number == '') {
disabled = '';
}
return '';
},
},
{
type: 'html-input',
targets: 13,
render: function (data, type, full, meta) {
let disabled = 'disabled';
if (full.shipping_number == null || full.shipping_number == '') {
disabled = '';
}
if (data != null) {
return '';
} else {
return '';
}
},
},
{
type: 'html-input',
targets: 14,
render: function (data, type, full, meta) {
let disabled = 'disabled';
if (full.name != null || full.company == 'Correos') {
if (full.shipping_number == null || full.shipping_number == '') {
disabled = '';
}
}
// Muestra N/A. El campo codigoAT se informa como campo oculto a vacío
let not_apply = 'N/A' + '';
// NO aplica a Correos ni a CEX si es Portugal-Portugal
if (full.company == 'Correos' || (full.company == 'CEX' && full.sender_iso_code == 'PT' && full.delivery_iso_code == 'PT')) {
return not_apply;
}
// Si es CEX y el codigoAT y tiene destinatario
else if (full.company == 'CEX' && full.sender_iso_code != null) {
// Si aún no tiene AT_code
if ((full.AT_code == '' || full.AT_code == null) && (full.sender_iso_code == 'PT' || full.delivery_iso_code == 'PT')) {
return 'N/A' + '';
}
// Si ya tiene AT_code se informa en el campo de texto
else if (full.sender_iso_code == 'PT' || full.delivery_iso_code == 'PT') {
return (
'N/A' +
''
);
} else {
return not_apply;
}
}
// Cualquier otro transportista que no sea Correos o CEX
else {
return not_apply;
}
},
},
{
targets: [11,12],
orderable: false
}
],
//Función para cambiar entre el string "N/A" o el input text en la columna del AT Code
rowCallback: function (row, data) {
let product = jQuery(row).find('.select_product');
let sender = jQuery(row).find('.select_sender');
// Ocultar según scope de compañía de sender seleccionado por defecto
let sender_selected = sender.find('option:selected').data('scope');
product.find('option[data-company="CEX"], option[data-company="Correos"]').prop('disabled', false);
if (sender_selected === 'Correos') {
product.find('option[data-company="CEX"]').prop('disabled', true);
} else if (sender_selected === 'CEX') {
product.find('option[data-company="Correos"]').prop('disabled', true);
}
sender.on('change', function () {
// Reseteamos el selector de productos
let htmlObject = jQuery(product);
htmlObject.empty();
htmlObject.append(select_active_products);
let selected_carrier = htmlObject.find('option:selected');
let selected_company = selected_carrier.data('company');
let selected_sender_company = jQuery(this).find('option:selected').data('scope');
let selected_sender_iso = jQuery(this).find('option:selected').data('iso');
let order_company = data.company;
let order_derivery_iso_code = data.delivery_iso_code;
let idOrder = data.id_order;
checkOrderProductsAllowed(htmlObject, order_derivery_iso_code, selected_sender_iso, data.office);
// Ocultar según scope de compañía
if (selected_sender_company === 'Correos') {
product.find('option[data-company="CEX"]').remove();
} else if (selected_sender_company === 'CEX') {
product.find('option[data-company="Correos"]').remove();
}
// Obtenemos compañia o del selector de productos si está alguno seleccionado
if(!selected_company){
selected_company = selected_sender_company;
}
//Si la compania es igual a "Correos" se deja el string en la columna de AT_code a "N/A". Lo mismo
//si la compania es igual a CEX y tanto el remitente como el destinatario son Portugal ("PT")
if (
selected_sender_iso != 'PT' ||
selected_company == 'Correos' ||
((selected_company == 'CEX' || selected_company == 'all' ) && selected_sender_iso == 'PT' && data.delivery_iso_code == 'PT')
) {
jQuery('#nApply' + idOrder).removeClass('co_hidden_atcode');
document.getElementById('AT_code' + idOrder).setAttribute('type', 'hidden');
}
//Si la compania es igual a CEX y el remitente es fierente a nulo se revisan dos casuisticas.
else if (
(selected_company == 'CEX' || selected_company == 'all' ) &&
selected_sender_iso != null
) {
//Se el AT_code es igual a vacío o a null y el remitente o el destinatario es igua a Portugal ("PT")
//se oculta el string "N/A" en la tabla AT_code y se hace visible el campo input text.
//Lo mismo si el remitente o el destinatario son Portugal ("PT").
if (
(data.AT_code == '' || data.AT_code == null) &&
(selected_sender_iso == 'PT' || data.delivery_iso_code == 'PT')
) {
jQuery('#nApply' + idOrder).addClass('co_hidden_atcode');
document.getElementById('AT_code' + idOrder).setAttribute('type', 'text');
} else if (selected_sender_iso == 'PT' || data.delivery_iso_code == 'PT') {
jQuery('#nApply' + idOrder).addClass('co_hidden_atcode');
document.getElementById('AT_code' + idOrder).setAttribute('type', 'text');
}
}
// if(company == undefined){
// company = data.company;
// }
// volvemos a seleccionar producto
//jQuery(htmlObject).val(selected_carrier.val());
// let company = selected_carrier.data('company');
// let idOrder = data.id_order;
// if(company == undefined){
// company = data.company;
// }
// product.find('option[data-company="CEX"], option[data-company="Correos"]').prop('disabled', false);
// // Ocultar según scope de compañía
// if (selected_sender_company === 'Correos') {
// product.find('option[data-company="CEX"]').remove();
// // Limpiar el valor del selector si el producto seleccionado no es de correos
// // if(selected_sender_company != company){
// // product.val(0).trigger('change');
// // }
// } else if (selected_sender_company === 'CEX') {
// product.find('option[data-company="Correos"]').remove();
// // Limpiar el valor del selector si el producto seleccionado no es de CEX
// // if(selected_sender_company != company){
// // product.val(0).trigger('change'); // Limpiar el valor del select
// // }
// }
// //Si la compania es igual a "Correos" se deja el string en la columna de AT_code a "N/A". Lo mismo
// //si la compania es igual a CEX y tanto el remitente como el destinatario son Portugal ("PT")
// if (selected_sender_iso != 'PT' || company == 'Correos' || (company == 'CEX' && selected_sender_iso == 'PT' && data.delivery_iso_code == 'PT')) {
// jQuery('#nApply' + idOrder).removeClass('co_hidden_atcode');
// document.getElementById('AT_code' + idOrder).setAttribute('type', 'hidden');
// }
// //Si la compania es igual a CEX y el remitente es fierente a nulo se revisan dos casuisticas.
// else if (company == 'CEX' && selected_sender_iso != null) {
// //Se el AT_code es igual a vacío o a null y el remitente o el destinatario es igua a Portugal ("PT")
// //se oculta el string "N/A" en la tabla AT_code y se hace visible el campo input text.
// //Lo mismo si el remitente o el destinatario son Portugal ("PT").
// if ((data.AT_code == '' || data.AT_code == null) && (selected_sender_iso == 'PT' || data.delivery_iso_code == 'PT')) {
// jQuery('#nApply' + idOrder).addClass('co_hidden_atcode');
// document.getElementById('AT_code' + idOrder).setAttribute('type', 'text');
// } else if (selected_sender_iso == 'PT' || data.delivery_iso_code == 'PT') {
// jQuery('#nApply' + idOrder).addClass('co_hidden_atcode');
// document.getElementById('AT_code' + idOrder).setAttribute('type', 'text');
// }
// }
});
product.on('change', function () {
let htmlObject = jQuery(product);
let selected_carrier = htmlObject.find('option:selected');
let company = selected_carrier.data('company');
let idOrder = data.id_order;
let htmlObjectSender = jQuery(sender);
let selected_sender = htmlObjectSender.find('option:selected');
let selected_sender_iso = selected_sender.data('iso');
let selected_sender_company = selected_sender.data('scope');
// Nos aseguramos que obtenemos el ISO preferible desde el selector de senders
if(!selected_sender_iso){
selected_sender_iso = data.sender_iso_code;
}
// Si el selector de compañía no tiene valor, se obtiene el valor de la columna de la tabla
if(company == undefined){
if(selected_sender_company != 'all'){
company = selected_sender_company;
}else{
company = data.company;
}
}
//Si la compania es igual a "Correos" se deja el string en la columna de AT_code a "N/A". Lo mismo
//si la compania es igual a CEX y tanto el remitente como el destinatario son Portugal ("PT")
if (company == 'Correos' || (company == 'CEX' && selected_sender_iso == 'PT' && data.delivery_iso_code == 'PT')) {
jQuery('#nApply' + idOrder).removeClass('co_hidden_atcode');
document.getElementById('AT_code' + idOrder).setAttribute('type', 'hidden');
}
//Si la compania es igual a CEX y el remitente es fierente a nulo se revisan dos casuisticas.
else if (company == 'CEX' && selected_sender_iso != null) {
//Se el AT_code es igual a vacío o a null y el remitente o el destinatario es igua a Portugal ("PT")
//se oculta el string "N/A" en la tabla AT_code y se hace visible el campo input text.
//Lo mismo si el remitente o el destinatario son Portugal ("PT").
if ((data.AT_code == '' || data.AT_code == null) && (selected_sender_iso == 'PT' || data.delivery_iso_code == 'PT')) {
jQuery('#nApply' + idOrder).addClass('co_hidden_atcode');
document.getElementById('AT_code' + idOrder).setAttribute('type', 'text');
} else if (selected_sender_iso == 'PT' || data.delivery_iso_code == 'PT') {
jQuery('#nApply' + idOrder).addClass('co_hidden_atcode');
document.getElementById('AT_code' + idOrder).setAttribute('type', 'text');
}
}
});
},
select: {
style: 'multi',
selector: '.mycheckbox',
},
order: [[1, 'desc']],
columns: [
{ data: null },
{ data: 'id_order' },
{ data: 'reference' },
{ data: 'products' },
{ data: 'first_shipping_number', className: 'small_text_cell' },
{ data: 'carrier_type' },
{ data: 'order_state', className: 'small_text_cell' },
{ data: 'customer_name', className: 'small_text_cell' },
{ data: 'date_add' },
{ data: 'office' },
{ data: 'name' },
{ data: 'senders' }, // Aquí vá el selector de sender
{ data: 'id_product' },
{ data: 'bultos' },
{ data: 'AT_code'}
],
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100],
],
createdRow: function (row, data, dataIndex) {
if (data['name'] != null) {
if (data['shipping_number'] === '' || data['shipping_number'] === null) {
if (activateDimensionsByDefault == true || (data['product_type'] !== 'citypaq' && data['codigoProducto'] !== 'S0179')) {
jQuery(row).addClass('selectable');
}
}
}
// Seleccionamos td > select
row_td = jQuery('td', row).eq(12)[0];
select_carriers = jQuery('select', row_td);
// Aplicamos filtro de permitidos
checkOrderProductsAllowed(select_carriers, data.delivery_iso_code, data.sender_iso_code, data.office);
// // Recorremos options para habilitar/deshabilitar según condiciones
// select_carriers = jQuery('option', select_carriers[0]);
// select_carriers.each(function () {
// // Internacional -> Ocultamos productos nacionales
// if (data.delivery_iso_code != 'ES' && data.delivery_iso_code != 'AD' && data.delivery_iso_code != 'PT') {
// if (jQuery(this).data('product-type') != 'international') {
// if (this.value != 0) {
// jQuery(this).remove();
// }
// }
// }
// // Si el destino no es Portugal -> Ocultamos Portugal Óptica CEX
// if (data.delivery_iso_code != 'PT') {
// if (jQuery(this).data('product-type') == 'portugal') {
// if (this.value != 0) {
// jQuery(this).remove();
// }
// }
// }
// // Nacional -> Ocultamos productos internacionales
// if (data.delivery_iso_code == 'ES' || data.delivery_iso_code == 'AD' || data.delivery_iso_code == 'PT') {
// if (jQuery(this).data('product-type') == 'international') {
// if (this.value != 0) {
// jQuery(this).remove();
// }
// }
// }
// // Origen Portugal y Correos
// if (data.sender_iso_code == 'PT') {
// if (jQuery(this).data('company') == 'Correos') {
// if (this.value != 0) {
// jQuery(this).remove();
// }
// }
// }
// // Origen Andorra y CEX
// if (data.sender_iso_code == 'AD') {
// if (jQuery(this).data('company') == 'CEX') {
// if (this.value != 0) {
// jQuery(this).remove();
// }
// }
// }
// // Si no es Oficina/Citypaq
// if (data.office == null) {
// if (jQuery(this).data('product-type') == 'office' || jQuery(this).data('product-type') == 'citypaq') {
// if (this.value != 0) {
// jQuery(this).remove();
// }
// }
// }
// });
},
initComplete: function () {
this.api()
.columns()
.every(function () {
var column = this;
var debounceTimeout;
jQuery('input', this.footer()).on('keyup', function () {
clearTimeout(debounceTimeout); // Limpiar el temporizador anterior
debounceTimeout = setTimeout(function () {
column.search(jQuery('input', column.footer()).val()).draw();
}, 300); // Espera 300 ms después de que el usuario deje de escribir
});
/*let column = this;
let delayTimer;
jQuery('input', this.footer()).on('keyup change', function () {
// Almacenar la referencia a 'this' fuera de la función de temporización
let inputElement = this;
// Limpiar el temporizador existente si existe
clearTimeout(delayTimer);
// Establecer un nuevo temporizador
delayTimer = setTimeout(function () {
let numericValue = /^\d+$/.test(inputElement.value);
// Verificar si la longitud del valor del input es al menos 3 caracteres
if (inputElement.value.length >= 3 || numericValue) {
// Lógica de validación o acción
column.search(inputElement.value).draw();
} else if (inputElement.value.length == 0) {
// Limpiar el filtro y redibujar la tabla
jQuery('#GestionDataTable').DataTable().search('').columns().search('').draw();
}
}, 1000);
});*/
});
},
});
// ---- BOTON BUSQUEDA DE PEDIDOS --------------------------------------------------------
let tab = 'gestion-tab';
jQuery('#GestionMasivaPedidosSearchButton').click();
jQuery('#gestion-tab').on('click', function () {
jQuery('#GestionMasivaPedidosSearchButton').click();
tab = 'gestion-tab';
});
//--------------------------------------------------------------------------------------//
// //
// GESTION DE ETIQUETAS //
// //
//--------------------------------------------------------------------------------------//
// ---- DATATABLE GESTIÓN DE ETIQUETAS ---------------------------------------------------
let tableEtiquetas = jQuery('#EtiquetasDataTable').DataTable({
processing: true,
serverSide: true,
ajax: {
url: dataTableVars.dataTableurl,
type: 'POST',
data: function (d) {
d.FromDateOrdersReg = jQuery('#inputFromDateLabels').val();
d.ToDateOrdersReg = jQuery('#inputToDateLabels').val();
d.action = 'dataTableAjax';
d.nonce = dataTableVars.dataTableNonce;
d.tab = 'EtiquetasDataTable';
d.printLabelPage = 'active';
},
},
language: {
url: co_path_to_module + '/views/js/datatables/Spanish.json',
},
dom: '<"row"<"col-sm-6"B><"col-sm-6"f>>rt<"row"<"col-sm-2"l><"col-sm-6"i><"col-sm-4"p>>',
buttons: [
{
extend: 'csv',
title: 'Correos eCommerce - Etiquetas ' + co_fecha.toLocaleString(),
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8],
},
},
{
extend: 'excel',
title: 'Correos eCommerce - Etiquetas ' + co_fecha.toLocaleString(),
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8],
},
},
{
extend: 'pdf',
title: 'Correos eCommerce - Envíos ' + co_fecha.toLocaleString(),
orientation: 'landscape',
pageSize: 'A4',
//footer: true,
customize: function (doc) {
doc.styles.tableHeader = {
fillColor: '#002E6D',
color: '#FFF',
fontSize: '11',
alignment: 'center',
bold: true,
};
doc['footer'] = function (page, pages) {
return {
columns: [
{
alignment: 'center',
text: [
{
text: page.toString(),
italics: true,
},
' de ',
{
text: pages.toString(),
italics: true,
},
],
},
],
margin: [10, 0],
};
};
doc.defaultStyle.fontSize = 8;
doc.content[1].margin = [100, 10, 40, 0];
doc.pageMargins = [0, 30, 0, 60];
},
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8],
},
},
],
columnDefs: [
{
orderable: false,
searcheable: false,
targets: 0,
defaultContent: '',
render: function (data, type, full, meta) {
return '';
},
},
],
select: {
style: 'multi',
selector: '.mycheckbox',
},
order: [[1, 'desc']],
columns: [{ data: null }, { data: 'id_order' }, { data: 'reference' }, { data: 'products' }, { data: 'first_shipping_number' }, { data: 'company' }, { data: 'customer_name' }, { data: 'customer_address' }, { data: 'date_add' }],
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100],
],
initComplete: function () {
this.api()
.columns()
.every(function () {
var column = this;
var debounceTimeout;
jQuery('input', this.footer()).on('keyup', function () {
clearTimeout(debounceTimeout); // Limpiar el temporizador anterior
debounceTimeout = setTimeout(function () {
column.search(jQuery('input', column.footer()).val()).draw();
}, 300); // Espera 300 ms después de que el usuario deje de escribir
});
/*let column = this;
let delayTimer;
jQuery('input', this.footer()).on('keyup change', function () {
// Almacenar la referencia a 'this' fuera de la función de temporización
let inputElement = this;
// Limpiar el temporizador existente si existe
clearTimeout(delayTimer);
// Establecer un nuevo temporizador
delayTimer = setTimeout(function () {
let numericValue = /^\d+$/.test(inputElement.value);
// Verificar si la longitud del valor del input es al menos 3 caracteres
if (inputElement.value.length >= 3 || numericValue) {
// Lógica de validación o acción
column.search(inputElement.value).draw();
} else if (inputElement.value.length == 0) {
// Limpiar el filtro y redibujar la tabla
jQuery('#EtiquetasDataTable').DataTable().search('').columns().search('').draw();
}
}, 1000);
});*/
});
},
});
//--------------------------------------------------------------------------------------//
// //
// RESUMEN PEDIDOS //
// //
//--------------------------------------------------------------------------------------//
// ---- Desmarca checkbox select all cuando eliminas la selección de algún select --------
jQuery('#ResumenDataTable tbody').on('change', 'input[type="checkbox"]', function () {
if (!this.checked) {
let el = jQuery('#table-select-all-resumen').get(0);
if (el && el.checked && 'indeterminate' in el) {
el.indeterminate = true;
}
}
});
// ---- ImprimirResumenButton ------------------------------------------------------------
jQuery('#ImprimirResumenButton').on('click', function () {
tableResumen.button('.buttons-print').trigger();
});
//--------------------------------------------------------------------------------------//
// //
// RECOGIDAS //
// //
//--------------------------------------------------------------------------------------//
// ---- DATATABLE ERRORES RECOGIDAS ------------------------------------------------------
var table_errors_recogidas = jQuery('#datatableResultsRecogidas').DataTable({
paging: false,
info: false,
searching: false,
orderable: true,
dom: '<"row"<"col-sm-6"B><"col-sm-6"f>>rt<"row"<"col-sm-2"l><"col-sm-6"i><"col-sm-4"p>>',
buttons: ['csv', 'excel', 'pdf'],
columns: [{ data: 'id_order' }, { data: 'reference' }, { data: 'error' }],
order: [[0, 'desc']],
});
// ---- INPUTS TABLE PICKUPS -------------------------------------------------------------
var inputs_tablePickups = {
exportOptions: {
format: {
body: function (data, row, column, node) {
if (column == 8) {
var htmlObject = jQuery(data);
switch (htmlObject.val()) {
case '10':
return 'Sobres';
case '20':
return 'Pequeño (caja zapatos)';
case '30':
return 'Mediano (caja folios)';
case '40':
return 'Grande (caja 80x80x80cm)';
case '50':
return 'Muy grande (mayor que caja 80x80x80cm)';
case '60':
return 'Palet';
}
} else if (column == 9) {
var htmlObject = jQuery(data);
if (htmlObject.val() == '0') {
return 'NO';
} else if (htmlObject.val() == '1') {
return 'SI';
}
} else if (column == 10) {
if (data == '') {
return 'NO';
} else {
return data;
}
} else {
return data;
}
},
},
},
};
// ---- DATATABLE RECOGIDAS --------------------------------------------------------------
var tablePickups = jQuery('#PickupDataTable').DataTable({
processing: true,
serverSide: true,
ajax: {
url: dataTableVars.dataTableurl,
type: 'POST',
data: function (d) {
d.FromDateOrdersReg = jQuery('#inputFromDatePickups').val();
d.ToDateOrdersReg = jQuery('#inputToDatePickups').val();
d.action = 'dataTableAjax';
d.nonce = dataTableVars.dataTableNonce;
d.tab = 'EtiquetasDataTable';
d.onlyCorreos = 'active';
},
},
language: {
url: co_path_to_module + '/views/js/datatables/Spanish.json',
},
dom: '<"row"<"col-sm-6"B><"col-sm-6"f>>rt<"row"<"col-sm-2"l><"col-sm-6"i><"col-sm-4"p>>',
buttons: [
jQuery.extend(true, {}, inputs_tablePickups, {
extend: 'csv',
title: 'Correos eCommerce - Recogidas ' + co_fecha.toLocaleString(),
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
},
}),
jQuery.extend(true, {}, inputs_tablePickups, {
extend: 'excel',
title: 'Correos eCommerce - Recogidas ' + co_fecha.toLocaleString(),
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
},
}),
jQuery.extend(true, {}, inputs_tablePickups, {
extend: 'pdf',
title: 'Correos eCommerce - Recogidas ' + co_fecha.toLocaleString(),
orientation: 'landscape',
pageSize: 'A4',
//footer: true,
customize: function (doc) {
doc.styles.tableHeader = {
fillColor: '#002E6D',
color: '#FFF',
fontSize: '11',
alignment: 'center',
bold: true,
};
doc['footer'] = function (page, pages) {
return {
columns: [
{
alignment: 'center',
text: [
{
text: page.toString(),
italics: true,
},
' de ',
{
text: pages.toString(),
italics: true,
},
],
},
],
margin: [10, 0],
};
};
doc.defaultStyle.fontSize = 8;
doc.content[1].margin = [40, 10, 40, 0];
doc.pageMargins = [0, 30, 0, 60];
},
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
},
}),
],
columnDefs: [
{
orderable: false,
searcheable: false,
targets: 0,
defaultContent: '',
render: function (data, type, full, meta) {
if (full.pickup == 1) {
return '';
} else {
return '';
}
},
},
{
type: 'html-input',
targets: 9,
render: function (data, type, full, meta) {
var selected0 = '',
selected10 = '',
selected20 = '',
selected30 = '',
selected40 = '',
selected50 = '',
selected60 = '';
var disabled = '';
if (full.package_size == null) {
selected0 = 'selected';
} else {
switch (full.package_size) {
case '10':
selected10 = 'selected';
break;
case '20':
selected20 = 'selected';
break;
case '30':
selected30 = 'selected';
break;
case '40':
selected40 = 'selected';
break;
case '50':
selected50 = 'selected';
break;
case '60':
selected60 = 'selected';
break;
}
}
if (full.company == 'CEX') {
disabled = 'disabled';
}
if (full.pickup == 1) {
disabled = 'disabled';
}
return (
''
);
},
},
{
type: 'html-input',
targets: 10,
render: function (data, type, full, meta) {
var selectedS = '',
selectedN = '';
var disabled = '';
switch (full.print_label) {
case 'S':
selectedS = 'selected';
break;
case 'N':
selectedN = 'selected';
break;
}
if (full.company == 'CEX') {
disabled = 'disabled';
}
if (full.pickup == 1) {
disabled = 'disabled';
}
return (
''
);
},
},
{
targets: 11,
render: function (data, type, full, meta) {
if (data == 0) {
return '';
} else {
return full.pickup_number;
}
},
},
{
targets: [9,10],
orderable: false
}
],
select: {
style: 'multi',
selector: '.mycheckbox',
},
order: [[1, 'desc']],
columns: [
{ data: null },
{ data: 'id_order' },
{ data: 'reference' },
{ data: 'first_shipping_number', className: 'small_text_cell' },
{ data: 'company' },
{ data: 'customer_name', className: 'small_text_cell' },
{ data: 'customer_address', className: 'small_text_cell' },
{ data: 'date_add' },
{ data: 'bultos' },
{ data: 'package_size' },
{ data: 'print_label' },
{ data: 'pickup' },
],
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100],
],
createdRow: function (row, data, dataIndex) {
if (data['pickup'] == 0) {
jQuery(row).addClass('selectable');
} else {
jQuery(row).addClass('no-selectable');
}
},
initComplete: function () {
this.api()
.columns()
.every(function (index) {
// let delayTimer;
var column = this;
var debounceTimeout;
jQuery('input', this.footer()).on('keyup', function () {
clearTimeout(debounceTimeout); // Limpiar el temporizador anterior
debounceTimeout = setTimeout(function () {
column.search(jQuery('input', column.footer()).val()).draw();
}, 300); // Espera 300 ms después de que el usuario deje de escribir
});
/*if (index === 9) {
let select = jQuery(
''
)
.appendTo(jQuery(this.footer()).empty())
.on('change', function () {
let val = jQuery(this).val();
column.search(val).draw();
});
} else {
jQuery('input', this.footer()).on('keyup change', function () {
let inputElement = this;
clearTimeout(delayTimer);
delayTimer = setTimeout(function () {
let numericValue = /^\d+$/.test(inputElement.value);
if ((index === 10 && inputElement.value.length >= 2) || (index !== 10 && inputElement.value.length >= 3) || numericValue) {
column.search(inputElement.value).draw();
} else if (inputElement.value.length === 0) {
jQuery('#PickupDataTable').DataTable().search('').columns().search('').draw();
}
}, 1000);
});
}*/
});
jQuery.fn.dataTable.ext.classes.sLengthSelect = 'custom-select';
},
});
var select_active_products = getActiveProducts();
// ---- OBTENER PRODUCTOS ACTIVOS DE DATATABLE -------------------------------------------
function getActiveProducts() {
setTimeout(function () {
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
_nonce: varsAjax.nonce,
action: 'correosOficialDispacher',
dispatcher: {
controller: 'AdminCorreosOficialUtilitiesProcess',
action: 'getActiveProducts',
},
},
success: function (data) {
select_active_products = JSON.parse(data);
},
});
}, 100);
}
//--------------------------------------------------------------------------------------//
// //
// COMUN //
// //
//--------------------------------------------------------------------------------------//
// ---- Truncate a string ----------------------------------------------------------------
function strtrunc(str, max, add) {
add = add || '...';
return typeof str === 'string' && str.length > max ? str.substring(0, max) + add : str;
}
// ---- Auto Scroll ----------------------------------------------------------------------
function autoScrollButtons(divName) {
jQuery('html, body').animate(
{
scrollTop: jQuery(divName).offset().top,
},
550
);
}
//--------------------------------------------------------------------------------------//
// //
// DOCUMENTACION ADUANERA //
// //
//--------------------------------------------------------------------------------------//
//DATATABLE DOCUMENTACIÓN ADUANERA
var tableDocAduanera = jQuery('#DocAduaneraDataTable').DataTable({
processing: true,
serverSide: true,
ajax: {
url: dataTableVars.dataTableurl,
type: 'POST',
data: function (d) {
d.FromDateOrdersReg = jQuery('#inputFromDateCustomsDoc').val();
d.ToDateOrdersReg = jQuery('#inputToDateCustomsDoc').val();
d.action = 'dataTableAjax';
d.nonce = dataTableVars.dataTableNonce;
d.tab = 'DocAduaneraDataTable';
},
},
language: {
url: co_path_to_module + '/views/js/datatables/Spanish.json',
},
dom: '<"row"<"col-sm-6"B><"col-sm-6"f>>rt<"row"<"col-sm-2"l><"col-sm-6"i><"col-sm-4"p>>',
buttons: [
{
extend: 'csv',
title: 'Correos eCommerce - Aduanas ' + co_fecha.toLocaleString(),
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8],
},
},
{
extend: 'excel',
title: 'Correos eCommerce - Aduanas ' + co_fecha.toLocaleString(),
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8],
},
},
{
extend: 'pdf',
title: 'Correos eCommerce - Aduanas ' + co_fecha.toLocaleString(),
orientation: 'landscape',
pageSize: 'A4',
//footer: true,
customize: function (doc) {
doc.styles.tableHeader = {
fillColor: '#002E6D',
color: '#FFF',
fontSize: '11',
alignment: 'center',
bold: true,
};
doc['footer'] = function (page, pages) {
return {
columns: [
{
alignment: 'center',
text: [
{
text: page.toString(),
italics: true,
},
' de ',
{
text: pages.toString(),
italics: true,
},
],
},
],
margin: [10, 0],
};
};
doc.defaultStyle.fontSize = 8;
doc.content[1].margin = [100, 10, 40, 0];
doc.pageMargins = [0, 30, 0, 60];
},
exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8],
},
},
],
columnDefs: [
{
orderable: false,
searchable: false,
targets: 0,
defaultContent: '',
render: function (data, type, full, meta) {
return '';
},
},
{
orderable: false,
searchable: true,
targets: 9,
visible: false
},
],
select: {
style: 'multi',
selector: '.mycheckbox',
},
order: [[1, 'desc']],
columns: [
{ data: null },
{ data: 'id_order' },
{ data: 'reference' },
{ data: 'first_shipping_number' },
{ data: 'company' },
{ data: 'customer_name' },
{ data: 'customer_address' },
{ data: 'customer_country' },
{ data: 'date_add' },
{ data: 'custom_doc' }
],
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100],
],
initComplete: function () {
this.api()
.columns()
.every(function (index) {
var column = this;
var debounceTimeout;
jQuery('input', this.footer()).on('keyup', function () {
clearTimeout(debounceTimeout); // Limpiar el temporizador anterior
debounceTimeout = setTimeout(function () {
column.search(jQuery('input', column.footer()).val()).draw();
}, 300); // Espera 300 ms después de que el usuario deje de escribir
});
/*if (index === 7) {
jQuery('input', this.footer()).on('keyup change', function () {
let inputElement = this;
clearTimeout(delayTimer);
delayTimer = setTimeout(function () {
let inputValue = inputElement.value.trim();
// Verificar si la longitud del valor del input es al menos 2 caracteres o está vacío
if (inputValue.length >= 2 || inputValue.length === 0) {
column.search(inputValue).draw();
}
}, 1000);
});
} else {
jQuery('input', this.footer()).on('keyup change', function () {
let inputElement = this;
clearTimeout(delayTimer);
delayTimer = setTimeout(function () {
let numericValue = /^\d+$/.test(inputElement.value);
if (inputElement.value.length >= 3 || numericValue) {
column.search(inputElement.value).draw();
} else if (inputElement.value.length === 0) {
jQuery('#DocAduaneraDataTable').DataTable().search('').columns().search('').draw();
}
}, 1000);
});
}*/
});
jQuery.fn.dataTable.ext.classes.sLengthSelect = 'custom-select';
},
});
// ---- DATATABLE ERRORES GENERACIÓN DOCUMENTACIÓN ADUANERA ------------------------------
var table_errors_aduanera = jQuery('#datatableResultsAduanera').DataTable({
paging: false,
info: false,
searching: false,
orderable: true,
dom: '<"row"<"col-sm-6"B><"col-sm-6"f>>rt<"row"<"col-sm-2"l><"col-sm-6"i><"col-sm-4"p>>',
buttons: ['csv', 'excel', 'pdf'],
columns: [{ data: 'id_order' }, { data: 'reference' }, { data: 'error' }],
order: [[0, 'desc']],
});
jQuery('#datatable_results_aduanera_container').hide();
// Función para comprobar los productos que aparecen según el remitente
function checkOrderProductsAllowed(productsSelect, delivery_iso_code, sender_iso_code, office = null){
// Recorremos options para habilitar/deshabilitar según condiciones
select_carriers = jQuery('option', productsSelect);
select_carriers.each(function() {
// Internacional -> Ocultamos productos nacionales
if (delivery_iso_code != 'ES' && delivery_iso_code != 'AD' && delivery_iso_code != 'PT'){
if (jQuery(this).data('product-type') != 'international'){
if (this.value != 0){
jQuery(this).remove();
}
}
}
// Si el destino no es Portugal -> Ocultamos Portugal Óptica CEX
if (delivery_iso_code != 'PT'){
if (jQuery(this).data('product-type') == 'portugal'){
if (this.value != 0){
jQuery(this).remove();
}
}
}
// Nacional -> Ocultamos productos internacionales
if (delivery_iso_code == 'ES' || delivery_iso_code == 'AD' || delivery_iso_code == 'PT'){
if (jQuery(this).data('product-type') == 'international'){
if (this.value != 0){
jQuery(this).remove();
}
}
}
// Origen Portugal y Correos
if (sender_iso_code == 'PT'){
if (jQuery(this).data('company') == 'Correos'){
if (this.value != 0){
jQuery(this).remove();
}
}
}
// Origen Andorra y CEX
if (sender_iso_code == 'AD'){
if (jQuery(this).data('company') == 'CEX'){
if (this.value != 0){
jQuery(this).remove();
}
}
}
// Si no es Oficina/Citypaq
if (office == null){
if (jQuery(this).data('product-type') == 'office' || jQuery(this).data('product-type') == 'citypaq'){
if (this.value != 0){
jQuery(this).remove();
}
}
}
});
}