/**
* 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 () {
let pickupDone = false;
// Buscador de Oficina - CityPaq //
if (typeof google !== 'undefined') {
/* MAPAS OFICINA Y CITYPAQ */
var mapOfficeObj = new google.maps.Map(document.getElementById('mapOffice'), {
center: { lat: 40.234013044698884, lng: -3.768710630003362 },
zoom: 13,
});
var mapCityPaqObj = new google.maps.Map(document.getElementById('mapCityPaq'), {
center: { lat: 40.234013044698884, lng: -3.768710630003362 },
zoom: 13,
});
}
/* FUNCIONALIDAD OFICINA */
jQuery('#changeOffice').on('click', function (e) {
jQuery('.change-container-office').toggle();
jQuery('#mapOffice').hide();
});
jQuery('#searchOfficeButton').on('click', function (event) {
jQuery('#office-list').find('option').remove();
let postcode = jQuery('#input_cp_office').val();
jQuery.ajax({
type: 'POST',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialCheckoutModuleFrontController',
action: 'SearchOfficeByPostalCode',
token: static_token,
postcode: postcode,
},
},
cache: false,
processData: true,
success: function (data) {
parsed_data = JSON.parse(data);
offices = parsed_data.json_retorno.soapenvBody.localizadorRespuesta.arrayOficina.item;
let dir_office, loc_office, cp_office, cod_office;
if (offices != undefined) {
if (offices.length > 1) {
offices.forEach(function (valor, indice, array) {
if (indice == 0) {
dir_office = offices[0].direccion;
loc_office = offices[0].descLocalidad;
cp_office = offices[0].cp;
cod_office = offices[0].unidad;
document.getElementById('dir-office').innerHTML = dir_office;
document.getElementById('loc-office').innerHTML = loc_office;
document.getElementById('cp-office').innerHTML = cp_office;
document.getElementById('cod_office').value = cod_office;
document.getElementById('office_address').value = dir_office;
document.getElementById('office_city').value = loc_office;
document.getElementById('office_cp').value = cp_office;
const myLatLng = {
lat: parseFloat(offices[0].latitudETRS89),
lng: parseFloat(offices[0].longitudETRS89),
};
if (typeof google !== 'undefined') {
let marker = new google.maps.Marker({
position: myLatLng,
title: offices[0].nombre,
//icon: image
});
marker.setMap(mapOfficeObj);
mapOfficeObj.setCenter(myLatLng);
mapOfficeObj.setZoom(14);
}
}
jQuery('#inputSelectOffices').append('');
});
jQuery('#inputSelectOffices').on('change', function (e) {
dir_office = offices[jQuery(this).val()].direccion;
loc_office = offices[jQuery(this).val()].descLocalidad;
cp_office = offices[jQuery(this).val()].cp;
cod_office = offices[jQuery(this).val()].unidad;
document.getElementById('dir-office').innerHTML = dir_office;
document.getElementById('loc-office').innerHTML = loc_office;
document.getElementById('cp-office').innerHTML = cp_office;
document.getElementById('cod_office').value = cod_office;
const myLatLng = {
lat: parseFloat(offices[jQuery(this).val()].latitudETRS89),
lng: parseFloat(offices[jQuery(this).val()].longitudETRS89),
};
if (typeof google !== 'undefined') {
let marker = new google.maps.Marker({
position: myLatLng,
title: offices[jQuery(this).val()].nombre,
//icon: image
});
marker.setMap(mapOfficeObj);
mapOfficeObj.setCenter(myLatLng);
mapOfficeObj.setZoom(14);
}
});
jQuery('#inputSelectOffices').show();
jQuery('#office-list').show();
jQuery('#no_offices_zip_message').addClass('hidden-block');
} else {
dir_office = offices.direccion;
loc_office = offices.descLocalidad;
cp_office = offices.cp;
cod_office = offices.unidad;
document.getElementById('dir-office').innerHTML = dir_office;
document.getElementById('loc-office').innerHTML = loc_office;
document.getElementById('cp-office').innerHTML = cp_office;
document.getElementById('cod_office').value = cod_office;
document.getElementById('office_address').value = dir_office;
document.getElementById('office_city').value = loc_office;
document.getElementById('office_cp').value = cp_office;
jQuery('#inputSelectOffices').append('');
const myLatLng = {
lat: parseFloat(offices.latitudETRS89),
lng: parseFloat(offices.longitudETRS89),
};
if (typeof google !== 'undefined') {
let marker = new google.maps.Marker({
position: myLatLng,
title: offices.nombre,
//icon: image
});
marker.setMap(mapOfficeObj);
mapOfficeObj.setCenter(myLatLng);
mapOfficeObj.setZoom(14);
}
jQuery('#inputSelectOffices').show();
jQuery('#office-list').show();
}
jQuery('.map-info-office').show();
jQuery('#mapOffice').show();
jQuery('#no_offices_zip_message').addClass('hidden-block');
jQuery('#selectOfficeButton').on('click', function (e) {
jQuery('.change-container-office').hide();
document.getElementById('office_address').value = dir_office;
document.getElementById('office_city').value = loc_office;
document.getElementById('office_cp').value = cp_office;
document.getElementById('cod_office').value = cod_office;
});
} else {
jQuery('.map-info-office').hide();
jQuery('#mapOffice').hide();
jQuery('#inputSelectOffices').hide();
jQuery('#office-list').hide();
document.getElementById('office_address').value = '';
document.getElementById('office_city').value = '';
document.getElementById('office_cp').value = '';
document.getElementById('cod_office').value = '';
jQuery('#no_offices_zip_message').removeClass('hidden-block');
}
},
});
event.preventDefault();
});
/* FUNCIONALIDAD CITYPAQ */
jQuery('#changeCityPaq').on('click', function (e) {
jQuery('.change-container-citypaq').toggle();
jQuery('#mapCityPaq').hide();
});
jQuery('#searchCityPaqButton').on('click', function (event) {
jQuery('#citypaq-list').find('option').remove();
let postcode = jQuery('#input_cp_citypaq').val();
jQuery.ajax({
type: 'POST',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialCheckoutModuleFrontController',
action: 'SearchCityPaqByPostalCode',
token: static_token,
postcode: postcode,
},
},
cache: false,
processData: true,
success: function (data) {
parsed_data = JSON.parse(data);
citypaqs = parsed_data.json_retorno.soapenvBody.homePaqRespuesta1.listaHomePaq.homePaq;
let dir_citypaq, loc_citypaq, cp_citypaq, cod_homepaq;
if (citypaqs != undefined) {
if (citypaqs.length > 1) {
citypaqs.forEach(function (valor, indice, array) {
jQuery('#inputSelectCityPaqs').append('');
if (indice == 0) {
dir_citypaq = citypaqs[0].des_via + ' ' + citypaqs[0].direccion + ' ' + citypaqs[0].numero;
loc_citypaq = citypaqs[0].desc_localidad;
cp_citypaq = citypaqs[0].cod_postal;
cod_homepaq = citypaqs[0].cod_homepaq;
document.getElementById('dir-citypaq').innerHTML = dir_citypaq;
document.getElementById('loc-citypaq').innerHTML = loc_citypaq;
document.getElementById('cp-citypaq').innerHTML = cp_citypaq;
document.getElementById('cod_homepaq').value = cod_homepaq;
document.getElementById('citypaq_address').value = dir_citypaq;
document.getElementById('citypaq_city').value = loc_citypaq;
document.getElementById('citypaq_cp').value = cp_citypaq;
document.getElementById('cod_homepaq').value = cod_homepaq;
const myLatLng = {
lat: parseFloat(citypaqs[0].latitudETRS89),
lng: parseFloat(citypaqs[0].longitudETRS89),
};
if (typeof google !== 'undefined') {
var marker = new google.maps.Marker({
position: myLatLng,
title: citypaqs[0].alias,
//icon: image
});
marker.setMap(mapCityPaqObj);
mapCityPaqObj.setCenter(myLatLng);
mapCityPaqObj.setZoom(14);
}
}
});
jQuery('#inputSelectCityPaqs').on('change', function (e) {
dir_citypaq = citypaqs[jQuery(this).val()].des_via + ' ' + citypaqs[jQuery(this).val()].direccion + ' ' + citypaqs[jQuery(this).val()].numero;
loc_citypaq = citypaqs[jQuery(this).val()].desc_localidad;
cp_citypaq = citypaqs[jQuery(this).val()].cod_postal;
cod_homepaq = citypaqs[jQuery(this).val()].cod_homepaq;
document.getElementById('dir-citypaq').innerHTML = dir_citypaq;
document.getElementById('loc-citypaq').innerHTML = loc_citypaq;
document.getElementById('cp-citypaq').innerHTML = cp_citypaq;
document.getElementById('cod_homepaq').value = cod_homepaq;
const myLatLng = {
lat: parseFloat(citypaqs[jQuery(this).val()].latitudETRS89),
lng: parseFloat(citypaqs[jQuery(this).val()].longitudETRS89),
};
if (typeof google !== 'undefined') {
var marker = new google.maps.Marker({
position: myLatLng,
title: citypaqs[jQuery(this).val()].alias,
//icon: image
});
marker.setMap(mapCityPaqObj);
mapCityPaqObj.setCenter(myLatLng);
mapCityPaqObj.setZoom(14);
}
});
jQuery('#inputSelectCityPaqs').show();
jQuery('#citypaq-list').show();
jQuery('#no_citypaqs_zip_message').addClass('hidden-block');
} else {
dir_citypaq = citypaqs.des_via + ' ' + citypaqs.direccion + ' ' + citypaqs.numero;
loc_citypaq = citypaqs.desc_localidad;
cp_citypaq = citypaqs.cod_postal;
cod_homepaq = citypaqs.cod_homepaq;
document.getElementById('dir-citypaq').innerHTML = dir_citypaq;
document.getElementById('loc-citypaq').innerHTML = loc_citypaq;
document.getElementById('cp-citypaq').innerHTML = cp_citypaq;
document.getElementById('cod_homepaq').value = cod_homepaq;
document.getElementById('citypaq_address').value = dir_citypaq;
document.getElementById('citypaq_city').value = loc_citypaq;
document.getElementById('citypaq_cp').value = cp_citypaq;
jQuery('#inputSelectCityPaqs').append('');
const myLatLng = {
lat: parseFloat(citypaqs.latitudETRS89),
lng: parseFloat(citypaqs.longitudETRS89),
};
if (typeof google !== 'undefined') {
let marker = new google.maps.Marker({
position: myLatLng,
title: citypaqs.alias,
//icon: image
});
marker.setMap(mapCityPaqObj);
mapCityPaqObj.setCenter(myLatLng);
mapCityPaqObj.setZoom(14);
}
jQuery('#inputSelectCityPaqs').show();
jQuery('#citypaq-list').show();
jQuery('#no_citypaqs_zip_message').addClass('hidden-block');
}
jQuery('.map-info-citypaq').show();
jQuery('#mapCityPaq').show();
jQuery('#no_citypaqs_zip_message').addClass('hidden-block');
jQuery('#selectCityPaqButton').on('click', function (e) {
jQuery('.change-container-citypaq').hide();
document.getElementById('citypaq_address').value = dir_citypaq;
document.getElementById('citypaq_city').value = loc_citypaq;
document.getElementById('citypaq_cp').value = cp_citypaq;
document.getElementById('cod_homepaq').value = cod_homepaq;
});
} else {
jQuery('.map-info-citypaq').hide();
jQuery('#mapCityPaq').hide();
jQuery('#inputSelectCityPaqs').hide();
jQuery('#citypaq-list').hide();
document.getElementById('citypaq_address').value = '';
document.getElementById('citypaq_city').value = '';
document.getElementById('citypaq_cp').value = '';
document.getElementById('cod_homepaq').value = '';
jQuery('#no_citypaqs_zip_message').removeClass('hidden-block');
}
event.preventDefault();
},
});
});
//--------------------------------------------------------------------------------------//
// //
// PREREGISTRO DE ENVÍO EN PEDIDOS //
// //
//--------------------------------------------------------------------------------------//
/* Añadimos una nueva regla que compruebe que las dimensiones son 10x15x1 como mínimo,
es decir, que sean mayores que 0, uno mayor que 10 y otro mayor de 15 */
jQuery.validator.addMethod("dimensionesValidadas", function(value, element) {
// comprobamos que el carrier seleccionado se paq ligera o city paq, si no no validamos estos campos
var carriers_default_dimensions = ['S0179', 'S0176', 'S0178'];
if (!carriers_default_dimensions.includes(jQuery('#input_select_carrier').find('option:selected').val())) {
return true;
}
var container = element.closest('.container-bulto').id
var values = jQuery("#"+container).find('.validate-dimensions').map(function(){
return parseInt(jQuery(this).val());
}).get()
var mayorQue0 = values.every(num => num > 0);
var mayorQue10 = false;
var mayorQue15 = false;
for (var i = values.length - 1; i > -1; i--) {
if (values[i] >= 15 && mayorQue15 === false) {
mayorQue15 = true;
values.splice(i, 1);
}
if (values[i] >= 10 && mayorQue10 === false) {
mayorQue10 = true;
values.splice(i, 1);
}
}
return mayorQue0 && mayorQue10 && mayorQue15
}, jQuery.validator.format(valuesDimensionDefault))
// Para añdir la regla de validación dinámicamente hacemos uso de esta class "validate-dimensions"
jQuery.validator.addClassRules("validate-dimensions", { dimensionesValidadas: true});
// Preregistro de envío
jQuery('#order_form').validate({
onkeyup: function (element) {
jQuery(element).valid();
},
rules: {
// DESTINATARIO
customer_firstname: {
required: function (element) {
return jQuery('#customer_company').val() == '';
},
maxlength: 40,
},
customer_lastname: {
required: false,
maxlength: 40,
},
customer_company: {
required: function (element) {
return !(jQuery('#customer_firstname').val() != '');
},
maxlength: 40,
},
customer_contact: {
required: false,
maxlength: 40,
},
customer_address: {
required: true,
maxlength: 300,
},
customer_city: {
required: true,
maxlength: 40,
},
customer_cp: {
required: false,
maxlength: 8,
},
customer_phone: {
required: false,
number: true,
},
customer_email: {
required: false,
email: true,
maxlength: 50,
},
customer_dni: {
required: false,
maxlength: 15,
validate_nif_cif_nie: false,
},
order_reference: {
required: false,
maxlength: 20,
},
desc_reference_1: {
required: false,
maxlength: 100,
},
desc_reference_2: {
required: false,
maxlength: 100,
},
code_at: {
required: false,
maxlength: 30,
},
// VALORES AÑADIDOS
cash_on_delivery_value: {
required: false,
number: true,
maxlength: 6,
},
insurance_value: {
required: false,
number: true,
maxlength: 100,
},
bank_acc_number: {
required: false,
maxlength: 34,
validate_acc_iban: false,
},
packageWeight_1: {
required: true,
number: true,
},
packageWeight_2: {
required: true,
number: true,
},
packageWeight_3: {
required: true,
number: true,
},
packageWeight_4: {
required: true,
number: true,
},
packageWeight_5: {
required: true,
number: true,
},
packageWeight_6: {
required: true,
number: true,
},
packageWeight_7: {
required: true,
number: true,
},
packageWeight_8: {
required: true,
number: true,
},
packageWeight_9: {
required: true,
number: true,
},
packageWeight_10: {
required: true,
number: true,
},
PickupDateRegister: {
required: function (element) {
const checkDateRegister = jQuery('#inputCheckSavePickup');
return (checkDateRegister.checked);
},
date: true,
}
},
messages: {
// DESTINATARIO
customer_firstname: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 40 ' + characters,
},
customer_lastname: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 40 ' + characters,
},
customer_company: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 40 ' + characters,
},
customer_contact: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 40 ' + characters,
},
customer_address: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 300 ' + characters,
},
customer_city: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 40 ' + characters,
},
customer_cp: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 8 ' + characters,
},
customer_phone: {
required: requiredCustomMessage,
number: invalidNumber,
maxlength: maxLengthMessage + ' 9 ' + characters,
},
customer_email: {
required: requiredCustomMessage,
email: invalidEmail,
maxlength: maxLengthMessage + ' 50 ' + characters,
},
customer_dni: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 15 ' + characters,
validate_nif_cif_nie: wrongDniCif,
},
order_reference: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 20 ' + characters,
},
desc_reference_1: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 100 ' + characters,
},
desc_reference_2: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 100 ' + characters,
},
code_at: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 30 ' + characters,
},
// VALORES AÑADIDOS
cash_on_delivery_value: {
required: requiredCustomMessage,
number: invalidNumber,
maxlength: maxLengthMessage + ' 6 ' + characters,
},
insurance_value: {
required: requiredCustomMessage,
number: invalidNumber,
maxlength: maxLengthMessage + ' 100 ' + characters,
},
bank_acc_number: {
required: requiredCustomMessage,
maxlength: maxLengthMessage + ' 34 ' + characters,
validate_acc_iban: wrongACCAndIBAN,
},
packageWeight_1: {
required: requiredCustomMessage,
number: invalidNumber,
},
packageWeight_2: {
required: requiredCustomMessage,
number: invalidNumber,
},
packageWeight_3: {
required: requiredCustomMessage,
number: invalidNumber,
},
packageWeight_4: {
required: requiredCustomMessage,
number: invalidNumber,
},
packageWeight_5: {
required: requiredCustomMessage,
number: invalidNumber,
},
packageWeight_6: {
required: requiredCustomMessage,
number: invalidNumber,
},
packageWeight_7: {
required: requiredCustomMessage,
number: invalidNumber,
},
packageWeight_8: {
required: requiredCustomMessage,
number: invalidNumber,
},
packageWeight_9: {
required: requiredCustomMessage,
number: invalidNumber,
},
packageWeight_10: {
required: requiredCustomMessage,
number: invalidNumber,
},
},
// Añadimos los grupos para que solo aparezca un mensaje por bloque de inputs
groups: {
valuesDimensionDefault1: "packageLarge_1 packageWidth_1 packageHeight_1",
valuesDimensionDefault2: "packageLarge_2 packageWidth_2 packageHeight_2",
valuesDimensionDefault3: "packageLarge_3 packageWidth_3 packageHeight_3",
valuesDimensionDefault4: "packageLarge_4 packageWidth_4 packageHeight_4",
valuesDimensionDefault5: "packageLarge_5 packageWidth_5 packageHeight_5",
valuesDimensionDefault6: "packageLarge_6 packageWidth_6 packageHeight_6",
valuesDimensionDefault7: "packageLarge_7 packageWidth_7 packageHeight_7",
valuesDimensionDefault8: "packageLarge_8 packageWidth_8 packageHeight_8",
valuesDimensionDefault9: "packageLarge_9 packageWidth_9 packageHeight_9",
valuesDimensionDefault10: "packageLarge_10 packageWidth_10 packageHeight_10",
},
submitHandler: function () {
jQuery('#processingOrderButtonMsg').removeClass('hidden-block');
jQuery('#processingOrderButtonMsg').show();
jQuery('#generateOrderButtonMsg').addClass('hidden-block');
let order_id = jQuery('#id_order_hidden').val();
let order_form = getFormData('order_form');
let selected_carrier = jQuery('#input_select_carrier').find('option:selected');
let company = selected_carrier.data('company');
let delivery_mode = selected_carrier.data('carrier_type');
let id_carrier = selected_carrier.data('id_carrier');
let id_product = selected_carrier.data('id_product');
let max_packages = selected_carrier.data('max_packages');
let packages = jQuery('#correos-num-parcels').val();
let id_sender = jQuery('#senderSelect').val();
let added_values_cash_on_delivery = jQuery('#contrareembolsoCheckbox').is(':checked');
let added_values_insurance = jQuery('#seguroCheckbox').is(':checked');
let added_values_partial_delivery = jQuery('#partial_delivery').is(':checked');
let added_values_delivery_saturday = jQuery('#delivery_saturday').is(':checked');
let added_values_cash_on_delivery_iban = jQuery('#bank_acc_number').val();
let added_values_cash_on_delivery_value = jQuery('#cash_on_delivery_value').val();
let added_values_insurance_value = jQuery('#insurance_value').val();
/* Recogemos los datos de todos los bultos */
var info_bultos = {};
jQuery('.container-bulto-info').each(function() {
var reference = jQuery(this).find('input[name^="packageRef"').val();
var weight = jQuery(this).find('input[name^="packageWeight"').val();
var large = jQuery(this).find('input[name^="packageLarge"').val();
var width = jQuery(this).find('input[name^="packageWidth"').val();
var height = jQuery(this).find('input[name^="packageHeight"').val();
var observations = jQuery(this).find('textarea[name^="deliveryRemarks"').val();
info_bultos[jQuery(this).attr('id').split('_')[1]] = {reference: reference, weight: weight, large:large, width:width, height:height, observations, observations};
})
info_bultos = JSON.stringify(info_bultos);
let pickupCheck = jQuery('#inputCheckSavePickup');
let printLablPickupCheck = jQuery('#inputCheckPrintLabel');
let needPickup = 'N';
let PickupDateRegister = '';
let PickupFromRegister = '';
let PickupToRegister = '';
let needPrintLablPickup = 'N';
let select_input_tamanio_paquete = '';
if (jQuery(pickupCheck).is(':checked')) {
needPickup = 'S';
PickupDateRegister = jQuery('#PickupDateRegister').val();
PickupFromRegister = jQuery('#PickupFromRegister').val();
PickupToRegister = jQuery('#PickupToRegister').val();
select_input_tamanio_paquete = jQuery('#input_tamanio_paquete').val();
if (company == 'Correos' && select_input_tamanio_paquete == 0) {
jQuery('#error_register strong').html('Error: Debe seleccionar el tamaño del paquete');
jQuery('#error_register').removeClass('hidden-block');
jQuery('#processingOrderButtonMsg').addClass('hidden-block');
jQuery('#generateOrderButtonMsg').removeClass('hidden-block');
return;
}
let pickupDateComplete = new Date(PickupDateRegister);
pickupDateComplete.setHours(23);
pickupDateComplete.setMinutes(59);
pickupDateComplete.setSeconds(59);
if (pickupDateComplete < new Date() || (PickupFromRegister == '00:00:00' && PickupToRegister == '00:00:00')) {
jQuery('#error_register strong').html('Error: Debe seleccionar fecha y rango de horas válidos en la recogida');
jQuery('#error_register').removeClass('hidden-block');
jQuery('#processingOrderButtonMsg').addClass('hidden-block');
jQuery('#generateOrderButtonMsg').removeClass('hidden-block');
return;
}
}
if (jQuery(printLablPickupCheck).is(':checked')) {
needPrintLablPickup = 'S';
}
if (packages <= max_packages) {
let modifiedOrderForm = {};
for (const key in order_form) {
if (order_form.hasOwnProperty(key)) {
const value = order_form[key];
let matches = RegExp(/^customs_desc\[(\d+)\]\[(\d+)\]$/).exec(key);
if (matches) {
let descNumber1 = matches[1];
let descNumber2 = matches[2];
if (!modifiedOrderForm.customs_desc) {
modifiedOrderForm.customs_desc = {};
}
if (!modifiedOrderForm.customs_desc[descNumber1]) {
modifiedOrderForm.customs_desc[descNumber1] = {};
}
modifiedOrderForm.customs_desc[descNumber1][descNumber2] = value;
} else {
modifiedOrderForm[key] = value;
}
}
}
if (modifiedOrderForm.customs_desc) {
modifiedOrderForm = {
...modifiedOrderForm,
...modifiedOrderForm.customs_desc,
};
delete modifiedOrderForm.customs_desc;
}
order_form = modifiedOrderForm;
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialAdminOrderModuleFrontController',
action: 'generateOrder',
order_id: order_id,
id_carrier: id_carrier,
id_product: id_product,
id_sender: id_sender,
company: company,
delivery_mode: delivery_mode,
order_form: order_form,
needPickup: needPickup,
pickupDateRegister: PickupDateRegister,
pickupFromRegister: PickupFromRegister,
pickupToRegister: PickupToRegister,
needPrintLablPickup: needPrintLablPickup,
packetSize: select_input_tamanio_paquete,
added_values_cash_on_delivery: added_values_cash_on_delivery,
added_values_insurance: added_values_insurance,
added_values_partial_delivery: added_values_partial_delivery,
added_values_delivery_saturday: added_values_delivery_saturday,
added_values_cash_on_delivery_iban: added_values_cash_on_delivery_iban,
added_values_cash_on_delivery_value: added_values_cash_on_delivery_value,
added_values_insurance_value: added_values_insurance_value,
info_bultos: info_bultos,
},
},
cache: false,
processData: true,
success: function (data) {
if (isValidJson(data)) {
let parsed_data = JSON.parse(data);
let bultos = parsed_data.num_bultos_reg;
let pickupStatus = false;
loadOpacity();
if (parsed_data.codigoRetorno == '0') {
disableForm('#container_sender');
disableForm('#container_customer');
disableForm('#container_shipping');
disableForm('#added_values');
jQuery('#order_exp_number_hidden').val(parsed_data.exp_number);
// Verificar si la variable company
if(company === 'Correos') {
jQuery("#correos_provider").val("Correos");
}
else if (company === 'CEX') {
jQuery("#correos_provider").val("CEX");
}
/* Se informa el nº de seguimiento en el metabox */
tracking_shipping_number=parsed_data.bultos_reg[0].shipping_number;
jQuery('#correos_tracking_number').val(tracking_shipping_number);
/* Informamos link de seguimiento */
let co_tracking_link = 'https://www.correos.es/es/es/herramientas/localizador/envios/detalle?tracking-number='+tracking_shipping_number
jQuery('#correos_tracking_link').val(co_tracking_link);
// Fecha de seguimiento
jQuery('#correos_tracking_date').val(coGetToday());
let ship_codes = '';
parsed_data.bultos_reg.forEach(function (item) {
ship_codes = ship_codes + '' + 'Bulto ' + item.package_number + ': ' + item.shipping_number + '
';
// Actualizar tracking_number al preregistrar en Prestashop
showTrackingNumberInfo(item);
});
jQuery('.shipping-numbers-container').html(ship_codes);
jQuery('#order-done-info').removeClass('hidden-block');
jQuery('.cancel-container').removeClass('hidden-block');
jQuery('.send-container').addClass('hidden-block');
if (company == 'Correos') {
jQuery('#correos-options-pickup-container').removeClass('hidden-block');
jQuery('#general-pickup-container').removeClass('hidden-block');
} else {
jQuery('#correos-options-pickup-container').addClass('hidden-block');
jQuery('#input_grabar_recogida_container').closest('.card-body').addClass('d-none');
}
jQuery('#pickupBlock').addClass('d-none');
jQuery('#error_register').addClass('hidden-block');
jQuery('#success_register').addClass('hidden-block');
managePrintLabel(bultos);
setDatatableHistory();
jQuery('#general-pickup-container').removeClass('hidden-block');
pickupStatus = true;
} else {
jQuery('#success_register').addClass('hidden-block');
jQuery('#error_register strong').html(parsed_data.mensajeRetorno);
jQuery('#error_register').removeClass('hidden-block');
jQuery('#processingOrderButtonMsg').addClass('hidden-block');
jQuery('#generateOrderButtonMsg').removeClass('hidden-block');
}
if (needPickup == 'S' && parsed_data.codigoRetorno == '0' && pickupStatus) {
pickupDone = true;
};
if (!pickupDone) {
jQuery('#processingOrderButtonMsg').hide();
jQuery('#data-pickup-container').hide();
jQuery('#input_grabar_recogida_container').hide();
jQuery('#generateOrderButtonMsg').show();
jQuery('#save-pickup-container').show();
} else {
jQuery('#data-pickup-container').show();
jQuery('#generateOrderButtonMsg').hide();
location.reload();
}
changeOrderStatusFromSelector(parsed_data.changeStatus);
if (needPickup == 'S' && parsed_data.codigoRetorno == 1111) {
setTimeout(function () {
location.reload();
}, 5000);
}
} else {
console.error("[DEBUG MODE ON] Received data is not valid JSON:", data);
jQuery('#success_register').addClass('hidden-block');
jQuery('#error_register strong').html('[DEBUG MODE ON] Received data is not valid JSON');
jQuery('#error_register').removeClass('hidden-block');
jQuery('#processingOrderButtonMsg').addClass('hidden-block');
jQuery('#generateOrderButtonMsg').removeClass('hidden-block');
}
},
});
} else if (id_carrier == 0) {
jQuery('#error_register strong').html('Error: Seleccione transportista antes de generar el envío');
jQuery('#error_register').removeClass('hidden-block');
jQuery('#processingOrderButtonMsg').addClass('hidden-block');
jQuery('#generateOrderButtonMsg').removeClass('hidden-block');
jQuery('#input_select_carrier').addClass('error');
} else {
jQuery('#success_register').hide();
jQuery('#error_register strong').html('Error bultos: El transportista seleccionado no permite envíos de varios bultos');
jQuery('#error_register').removeClass('hidden-block');
jQuery('#processingOrderButtonMsg').addClass('hidden-block');
jQuery('#generateOrderButtonMsg').removeClass('hidden-block');
}
},
});
function changeOrderStatusFromSelector(status) {
if(status) {
let selector = jQuery('#order_status');
let valueToSelect = status;
let selectionElement = selector.siblings('.select2-container').find('.select2-selection__rendered');
selector.find('option').removeAttr('selected');
selector.val(valueToSelect);
selectionElement.text(selector.find('option:selected').text());
}
}
//--------------------------------------------------------------------------------------//
// //
// CANCELACION DE PREREGISTRO DE ENVIO //
// //
//--------------------------------------------------------------------------------------//
jQuery('#cancelOrderButton').on('click', function (event) {
jQuery('#processingCancelOrderButtonMsg').removeClass('hidden-block');
jQuery('#cancelOrderButtonMsg').addClass('hidden-block');
// Eliminar tracking_number al cancelar un envío en Prestashop
removeTrackingNumberInfo();
let pickup_number = jQuery('#pickup_code_hidden').val();
const cancelCompany = jQuery('#cancelOrderButton').attr('data-company');
if (cancelCompany !== 'Correos' || (pickup_number == '' || !pickup_number)) {
let order_id = jQuery('#id_order_hidden').val();
let lang = jQuery('#customer_country').val();
let expedition_number = jQuery('#order_exp_number_hidden').val();
let selected_carrier = jQuery('#input_select_carrier').find('option:selected');
let id_carrier = selected_carrier.data('id_carrier');
let company = selected_carrier.data('company');
var id_sender = jQuery('#senderSelect').val();
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialAdminOrderModuleFrontController',
action: 'cancelOrder',
order_id: order_id,
id_carrier: id_carrier,
company: company,
lang: lang,
expedition_number: expedition_number,
id_sender: id_sender
},
},
cache: false,
processData: true,
success: function (data) {
let parsed_data = JSON.parse(data);
loadOpacity();
if (parsed_data.codigoRetorno == '0') {
enableForm('#container_customer');
enableForm('#container_shipping');
enableForm('#added_values');
jQuery('#senderSelect').attr('disabled', false);
jQuery('#client_code').attr('disabled', true);
jQuery('#order-done-info').addClass('hidden-block');
jQuery('.cancel-container').addClass('hidden-block');
jQuery('.send-container').removeClass('hidden-block');
jQuery('#save-pickup-container').addClass('hidden-block');
jQuery('#data-pickup-container').hide();
jQuery('#success_register strong').html(parsed_data.mensajeRetorno);
jQuery('#success_register').removeClass('hidden-block');
jQuery('#error_register').addClass('hidden-block');
jQuery('#pickupBlock').removeClass('d-none');
jQuery('#input_grabar_recogida_container').closest('.card-body').removeClass('d-none');
/* Limpieza de metabox: proveedor, tracking_number, tracking_link, tracking_date */
jQuery('#correos_tracking_number').val('');
jQuery('#correos_tracking_link').val('');
jQuery('#correos_tracking_date').val('');
jQuery("#correos_provider").val('');
cleanStatusDatatable();
changeOrderStatusFromSelector(parsed_data.changeStatus);
} else {
jQuery('#success_register').addClass('hidden-block');
jQuery('#error_register strong').html(parsed_data.mensajeRetorno[0]);
jQuery('#error_register').removeClass('hidden-block');
}
jQuery('#processingOrderButtonMsg').addClass('hidden-block');
jQuery('#generateOrderButtonMsg').removeClass('hidden-block');
jQuery('#processingCancelOrderButtonMsg').addClass('hidden-block');
jQuery('#cancelOrderButtonMsg').removeClass('hidden-block');
},
});
} else {
jQuery('#success_register').addClass('hidden-block');
jQuery('#error_register strong').html('El envío tiene una recogida grabada. Para cancelar el envío, es necesario cancelar la recogida');
jQuery('#error_register').removeClass('hidden-block');
jQuery('#processingCancelOrderButtonMsg').addClass('hidden-block');
jQuery('#cancelOrderButtonMsg').removeClass('hidden-block');
}
event.preventDefault();
});
//--------------------------------------------------------------------------------------//
// //
// GENERAR RECOGIDA //
// //
//--------------------------------------------------------------------------------------//
jQuery('#generate_pickup').on('click', function (event) {
jQuery('#processingPickupButtonMsg').removeClass('hidden-block');
jQuery('#pickupButtonMsg').addClass('hidden-block');
jQuery('#generate_pickup').attr('disabled', true);
let selected_carrier = jQuery('#input_select_carrier').find('option:selected');
let company = selected_carrier.data('company');
let id_carrier = selected_carrier.data('id_carrier');
let print_label = 0;
if (!jQuery('#package_type').val() && company == 'Correos') {
jQuery('#package_type').addClass('error');
return;
}
if (jQuery('#print_label').is(':checked')) {
print_label = 1;
}
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialAdminOrderModuleFrontController',
action: 'generatePickup',
mode_pickup: 'pickup',
order_id: jQuery('#id_order_hidden').val(),
bultos: jQuery('#correos-num-parcels').val(),
expedition_number: jQuery('#order_exp_number_hidden').val(),
order_reference: jQuery('#order_reference').val(),
pickup_date: jQuery('#pickup_date').val(),
sender_from_time: jQuery('#sender_from_time').val(),
sender_to_time: jQuery('#sender_to_time').val(),
sender_address: jQuery('#sender_address').val(),
sender_city: jQuery('#sender_city').val(),
sender_cp: jQuery('#sender_cp').val(),
sender_name: jQuery('#sender_name').val(),
sender_contact: jQuery('#sender_contact').val(),
sender_phone: jQuery('#sender_phone').val(),
sender_email: jQuery('#sender_email').val(),
sender_nif_cif: jQuery('#sender_nif_cif').val(),
sender_country: jQuery('#sender_country').val(),
producto: selected_carrier.val(),
package_type: jQuery('#package_type').val(),
print_label: print_label,
company: company,
id_carrier: id_carrier,
id_sender: jQuery('#senderSelect').val(),
},
},
success: function (data) {
let parsed_data = JSON.parse(data);
loadOpacity();
if (parsed_data.codigoRetorno == '0') {
jQuery('#pickup_code_hidden').val(parsed_data.codSolicitud);
location.reload();
return;
} else {
jQuery('#error_register strong').html(parsed_data.mensajeRetorno);
jQuery('#error_register').removeClass('hidden-block');
jQuery('#success_register').addClass('hidden-block');
}
jQuery('#processingPickupButtonMsg').addClass('hidden-block');
jQuery('#pickupButtonMsg').removeClass('hidden-block');
jQuery('#generate_pickup').attr('disabled', false);
},
});
event.preventDefault();
});
//--------------------------------------------------------------------------------------//
// //
// CANCELAR RECOGIDA //
// //
//--------------------------------------------------------------------------------------//
jQuery('#cancel_pickup').on('click', function (event) {
jQuery('#processingCancelPickupButtonMsg').removeClass('hidden-block');
jQuery('#pickupCancelButtonMsg').addClass('hidden-block');
let selected_carrier = jQuery('#input_select_carrier').find('option:selected');
let company = selected_carrier.data('company');
let id_carrier = selected_carrier.data('id_carrier');
let id_sender = jQuery('#senderSelect').val();
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialAdminOrderModuleFrontController',
action: 'cancelPickup',
mode_pickup: 'pickup',
order_id: jQuery('#id_order_hidden').val(),
codSolicitud: jQuery('#pickup_code_hidden').val(),
company: company,
id_carrier: id_carrier,
id_sender: id_sender
},
},
cache: false,
processData: true,
success: function (data) {
parsed_data = JSON.parse(data);
loadOpacity();
if (parsed_data.codigoRetorno == '0') {
jQuery('#success_register strong').html(parsed_data.mensajeRetorno);
jQuery('#success_register').removeClass('hidden-block');
jQuery('#error_register').addClass('hidden-block');
jQuery('#pickup_code_hidden').val('');
jQuery('#save-pickup-container').removeClass('hidden-block');
jQuery('#data-pickup-container').hide();
} else {
jQuery('#error_register strong').html(parsed_data.mensajeRetorno);
jQuery('#error_register').removeClass('hidden-block');
jQuery('#success_register').addClass('hidden-block');
}
jQuery('#processingCancelPickupButtonMsg').addClass('hidden-block');
jQuery('#pickupCancelButtonMsg').removeClass('hidden-block');
},
});
event.preventDefault();
});
//--------------------------------------------------------------------------------------//
// //
// IMPRIMIR ETIQUETA DE ENVÍO PREREGISTRADO //
// //
//--------------------------------------------------------------------------------------//
jQuery('#ReimprimirEtiquetasButton').on('click', function (event) {
let exp_number = jQuery('#order_exp_number_hidden').val();
let id_order = jQuery('#id_order_hidden').val();
let selected_carrier = jQuery('#input_select_carrier').find('option:selected');
let company = selected_carrier.data('company');
let selectedTipoEtiquetaReimpresion = jQuery('#input_tipo_etiqueta_reimpresion').val();
let selectedFormatEtiquetaReimpresion = jQuery('#input_format_etiqueta_reimpresion').val();
let selectedPosicionEtiquetaReimpresion = jQuery('#input_pos_etiqueta_reimpresion').val();
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialAdminOrderModuleFrontController',
action: 'printLabel',
exp_number: exp_number,
selectedTipoEtiquetaReimpresion: selectedTipoEtiquetaReimpresion,
selectedFormatEtiquetaReimpresion: selectedFormatEtiquetaReimpresion,
selectedPosicionEtiquetaReimpresion: selectedPosicionEtiquetaReimpresion,
id_order: id_order,
company: company
},
},
cache: false,
processData: true,
success: function (data) {
printGeneratedLabels(data, varsAjax.path_to_module);
},
});
event.preventDefault();
});
//--------------------------------------------------------------------------------------//
// //
// IMPRIMIR DOCS ADUANA PREREGISTRO //
// //
//--------------------------------------------------------------------------------------//
// Documentación aduanera
jQuery('.PrintGestionAduaneraLabels').on('click', function (event) {
let exp_number = jQuery('#order_exp_number_hidden').val();
let customer_country = jQuery('#customer_country').val();
let customer_name = jQuery('#customer_firstname').val();
let customer_lastname = jQuery('#customer_lastname').val();
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialAdminOrderModuleFrontController',
action: 'getCustomsDoc',
type: 'order',
exp_number: exp_number,
customer_country: customer_country,
customer_name: customer_name,
customer_lastname: customer_lastname,
optionButton: event.target.id,
token: static_token,
},
},
cache: false,
processData: true,
success: function (data) {
parsed_data = JSON.parse(data);
loadOpacity();
let files = parsed_data['files'];
let errors = parsed_data['errors'];
files.forEach((f) => {
printGeneratedLabels(f, co_path_to_module);
});
if (errors.length > 0) {
let error_msg = '';
errors.forEach(function (item) {
error_msg = error_msg + item.error_msg + '
';
});
jQuery('#success_register').hide();
jQuery('#error_register strong').html(error_msg);
jQuery('#error_register').removeClass('hidden-block');
}
},
});
event.preventDefault();
});
//--------------------------------------------------------------------------------------//
// //
// DEVOLUCION DE ENVIO //
// //
//--------------------------------------------------------------------------------------//
jQuery('#generateReturnButton').on('click', function (event) {
let selected_carrier = jQuery('#input_select_carrier_return').find('option:selected');
let company = selected_carrier.data('company');
if (company == 'Correos') {
if (jQuery('#packageWeightReturn_1').val() == '' || jQuery('#packageAmountReturn_1').val() == '') {
jQuery('#packageWeightReturn_1').addClass('error');
jQuery('#packageAmountReturn_1').addClass('error');
} else {
generateReturn();
jQuery('#ImprimirCN23Button2').removeClass('hidden-block');
}
} else {
if (!jQuery('#packageWeightReturn_1').val()) {
jQuery('#packageWeightReturn_1').addClass('error');
jQuery('#packageAmountReturn_1').addClass('error');
} else {
generateReturn();
jQuery('#ImprimirCN23Button2').addClass('hidden-block');
}
}
});
function generateReturn(event) {
jQuery('#processingReturnButtonMsg').removeClass('hidden-block');
jQuery('#generateReturnButtonMsg').addClass('hidden-block');
let order_id = jQuery('#id_order_hidden').val();
let order_form = getFormData('order_form');
let selected_carrier = jQuery('#input_select_carrier_return').find('option:selected');
let company = selected_carrier.data('company');
let expedition_number = '';
let parsed_data = '';
let id_sender = jQuery('#senderSelect').val();
let needPickup = (company == 'CEX') ? 'S' : 'N';
let modifiedOrderForm = {};
for (const key in order_form) {
if (order_form.hasOwnProperty(key)) {
const value = order_form[key];
let matches = RegExp(/^customs_desc\[(\d+)\]\[(\d+)\]$/).exec(key);
if (matches) {
let descNumber1 = matches[1];
let descNumber2 = matches[2];
if (!modifiedOrderForm.customs_desc) {
modifiedOrderForm.customs_desc = {};
}
if (!modifiedOrderForm.customs_desc[descNumber1]) {
modifiedOrderForm.customs_desc[descNumber1] = {};
}
modifiedOrderForm.customs_desc[descNumber1][descNumber2] = value;
} else {
modifiedOrderForm[key] = value;
}
}
}
if (modifiedOrderForm.customs_desc) {
modifiedOrderForm = {
...modifiedOrderForm,
...modifiedOrderForm.customs_desc,
};
delete modifiedOrderForm.customs_desc;
}
order_form = modifiedOrderForm;
order_form['needPickup'] = needPickup;
order_form['pickup_date'] = jQuery('#return_pickup_date').val();
order_form['sender_from_time'] = jQuery('#return_sender_from_time').val();
order_form['sender_to_time'] = jQuery('#return_sender_to_time').val();
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialAdminOrderModuleFrontController',
action: 'generateReturn',
order_id: order_id,
company: company,
order_form: order_form,
id_sender: id_sender
},
},
cache: false,
processData: true,
success: function (data) {
parsed_data = JSON.parse(data);
loadOpacity();
let mensajeRetorno = '';
if (parsed_data['errores'].length != 0) {
mensajeRetorno = '';
parsed_data['errores'].forEach(function (item) {
if (item.codigoRetorno == null) {
mensajeRetorno = 'ERROR 18002: ' + item.mensajeRetorno + '
';
} else {
mensajeRetorno = mensajeRetorno + 'Bulto ' + item.num_bulto + ': ' + item.mensajeRetorno + '
';
}
});
jQuery('#error_register_return strong').html(mensajeRetorno);
jQuery('#error_register_return').removeClass('hidden-block');
} else {
jQuery('#error_register_return').addClass('hidden-block');
jQuery('#generate-return-container').addClass('hidden-block');
jQuery('#general-return-pickup-container').removeClass('hidden-block');
jQuery('#cancel-return-container').removeClass('hidden-block');
jQuery('.container-bultos-return').addClass('hidden-block');
jQuery('#return-status').text('Prerregistrado');
jQuery('#generateReturnButton').addClass('hidden-block');
jQuery('#cancelReturnButton').removeClass('hidden-block');
jQuery('#save-return-pickup-container').removeClass('hidden-block');
changeOrderStatusFromSelector(parsed_data['aciertos'][0].changeStatus);
}
if (parsed_data['aciertos'].length != 0) {
let return_codes = '';
parsed_data['aciertos'].forEach(function (item) {
return_codes = return_codes + '' + 'Bulto ' + item.num_bulto + ': ' + item.shipping_number + '
';
expedition_number = item.exp_number;
});
jQuery('.shipping-numbers-container-return').html(return_codes);
jQuery('#return-done-info').removeClass('hidden-block');
jQuery('#success_register_return').addClass('hidden-block');
jQuery('#return_exp_number_hidden').val(expedition_number);
jQuery('#pickup_return_code_hidden').val(parsed_data.codSolicitud);
if(company == 'CEX') {
location.reload();
}
} else {
jQuery('#success_register_return').addClass('hidden-block');
jQuery('#generate-return-container').removeClass('hidden-block');
jQuery('#cancel-return-container').addClass('hidden-block');
jQuery('.container-bultos-return').removeClass('hidden-block');
jQuery('#error_register_return').removeClass('hidden-block');
jQuery('#cancelReturnButton').addClass('hidden-block');
jQuery('#error_register_return strong').html(parsed_data.mensajeRetorno);
}
jQuery('#processingReturnButtonMsg').addClass('hidden-block');
jQuery('#generateReturnButtonMsg').removeClass('hidden-block');
},
error: function (e) {
parsed_data = JSON.parse(data);
jQuery('#error_register_return strong').html(parsed_data.mensajeRetorno);
},
});
}
//--------------------------------------------------------------------------------------//
// //
// IMPRIMIR ETIQUETAS // DEVOLUCIONES //
// //
//--------------------------------------------------------------------------------------//
jQuery('#ReimprimirEtiquetasDevolucionButton').on('click', function (event) {
let order_id = jQuery('#id_order_hidden').val();
let selected_carrier = jQuery('#input_select_carrier_return').find('option:selected');
let company = selected_carrier.data('company');
let selectedTipoEtiquetaReimpresionReturn = jQuery('#input_tipo_etiqueta_reimpresion_return').val();
let selectedPosicionEtiquetaReimpresionReturn = jQuery('#input_pos_etiqueta_reimpresion_return').val();
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialAdminOrderModuleFrontController',
action: 'printLabelReturn',
order_id: order_id,
selectedTipoEtiquetaReimpresionReturn: selectedTipoEtiquetaReimpresionReturn,
selectedPosicionEtiquetaReimpresionReturn: selectedPosicionEtiquetaReimpresionReturn,
company: company
},
},
cache: false,
processData: true,
success: function (data) {
printGeneratedLabels(data, varsAjax.path_to_modules);
},
});
event.preventDefault();
});
//--------------------------------------------------------------------------------------//
// //
// GENERAR DOC ADUANERA DEVOLUCIONES //
// //
//--------------------------------------------------------------------------------------//
// Documentación aduanera devoluciones
jQuery('.PrintGestionAduaneraLabels2').on('click', function (event) {
let exp_number = jQuery('#id_order_hidden').val();
let sender_name = jQuery('#sender_name').val();
let sender_country = jQuery('#sender_country').val();
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialAdminOrderModuleFrontController',
action: 'getCustomsDoc',
type: 'return',
exp_number: exp_number,
sender_name: sender_name,
sender_country: sender_country,
optionButton: event.target.id,
token: static_token,
},
},
cache: false,
processData: true,
success: function (data) {
parsed_data = JSON.parse(data);
parsed_data = JSON.parse(data);
loadOpacity();
let files = parsed_data['files'];
let errors = parsed_data['errors'];
files.forEach((f) => {
printGeneratedLabels(f, co_path_to_module);
});
if (errors.length > 0) {
let error_msg = '';
errors.forEach(function (item) {
error_msg = error_msg + item.error_msg + '
';
});
jQuery('#success_register_return').hide();
jQuery('#error_register_return strong').html(error_msg);
jQuery('#error_register_return').removeClass('hidden-block');
}
},
});
event.preventDefault();
});
//--------------------------------------------------------------------------------------//
// //
// ENVIAR DOCUMENTACION POR CORREO // DEVOLUCIONES //
// //
//--------------------------------------------------------------------------------------//
jQuery('#SendDocumentationByEmail').on('click', function (event) {
let selected_carrier = jQuery('#input_select_carrier_return').find('option:selected');
let company = selected_carrier.data('company');
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialAdminOrderModuleFrontController',
action: 'sendEmail',
order_id: jQuery('#id_order_hidden').val(),
pickup_date: jQuery('#pickup_date').val(),
sender_from_time: jQuery('#sender_from_time').val(),
sender_address: jQuery('#sender_address').val(),
sender_city: jQuery('#sender_city').val(),
company: company,
customer_email: jQuery('#customer_email').val(),
default_sender_email: jQuery('#sender_email').val(),
customer_cp: jQuery('#customer_cp').val(),
customer_country: jQuery('#customer_country').val(),
sender_cp: jQuery('#sender_cp').val(),
sender_country: jQuery('#sender_country').val(),
return_code_1: jQuery('#hidden_return_code_1').val(),
return_code_2: jQuery('#hidden_return_code_2').val(),
return_code_3: jQuery('#hidden_return_code_3').val(),
return_code_4: jQuery('#hidden_return_code_4').val(),
return_code_5: jQuery('#hidden_return_code_5').val(),
return_code_6: jQuery('#hidden_return_code_6').val(),
return_code_7: jQuery('#hidden_return_code_7').val(),
return_code_8: jQuery('#hidden_return_code_8').val(),
return_code_9: jQuery('#hidden_return_code_9').val(),
return_code_10: jQuery('#hidden_return_code_10').val(),
},
},
cache: false,
processData: true,
success: function (data) {
parsed_data = JSON.parse(data);
loadOpacity();
if (parsed_data.codigoRetorno == '0') {
jQuery('#success_register_return_email strong').html(parsed_data.mensajeRetorno);
jQuery('#success_register_return_email').removeClass('hidden-block');
jQuery('#error_register_return_email').addClass('hidden-block');
return data;
} else {
jQuery('#error_register_return_email strong').html('Error 22020: ' + parsed_data.mensajeRetorno);
jQuery('#success_register_return_email').addClass('hidden-block');
jQuery('#error_register_return_email').removeClass('hidden-block');
}
},
error: function (e) {
parsed_data = JSON.parse(data);
jQuery('#error_register_return strong').html(parsed_data.mensajeRetorno);
},
});
});
//--------------------------------------------------------------------------------------//
// //
// CANCELAR RECOGIDA // DEVOLUCIONES //
// //
//--------------------------------------------------------------------------------------//
jQuery('#cancelReturnButton').on('click', function (event) {
jQuery('#processingCancelReturnButtonMsg').removeClass('hidden-block');
jQuery('#cancelReturnButtonMsg').addClass('hidden-block');
let pickup_number_return = jQuery('#pickup_return_code_hidden').val();
if (pickup_number_return == '' || !pickup_number_return) {
let order_id = jQuery('#id_order_hidden').val();
let lang = jQuery('#customer_country').val();
let selected_carrier = jQuery('#input_select_carrier_return').find('option:selected');
let company = selected_carrier.data('company');
let require_customs_doc = jQuery('#require_customs_doc').val();
var id_sender = jQuery('#senderSelect').val();
if (company == 'Correos' && require_customs_doc == 1) {
jQuery('.customs-correos-container-return').removeClass('hidden-block');
} else {
jQuery('.customs-correos-container-return').addClass('hidden-block');
}
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialAdminOrderModuleFrontController',
action: 'cancelReturn',
order_id: order_id,
company: company,
lang: lang,
expedition_number: '',
id_sender: id_sender
},
},
cache: false,
processData: true,
success: function (data) {
parsed_data = JSON.parse(data);
loadOpacity();
if (parsed_data.codigoRetorno == '0') {
jQuery('#success_register_return strong').html(parsed_data.mensajeRetorno);
jQuery('#success_register_return').removeClass('hidden-block');
jQuery('#error_register_return').addClass('hidden-block');
jQuery('#generate-return-container').removeClass('hidden-block');
jQuery('#cancel-return-container').addClass('hidden-block');
jQuery('.container-bultos-return').removeClass('hidden-block');
jQuery('#return-done-info').addClass('hidden-block');
jQuery('#save-return-pickup-container').addClass('hidden-block');
} else {
jQuery('#success_register_return').addClass('hidden-block');
jQuery('#error_register_return strong').html(parsed_data.mensajeRetorno[0]);
jQuery('#error_register_return').removeClass('hidden-block');
}
jQuery('#processingCancelReturnButtonMsg').addClass('hidden-block');
jQuery('#cancelReturnButtonMsg').removeClass('hidden-block');
jQuery('#generateReturnButton').removeClass('hidden-block');
jQuery('#cancelReturnButton').addClass('hidden-block');
},
});
} else {
jQuery('#success_register_return').addClass('hidden-block');
jQuery('#error_register_return strong').html('La devolución tiene una recogida grabada. Para cancelar la devolución, es necesario cancelar la recogida');
jQuery('#error_register_return').removeClass('hidden-block');
jQuery('#processingCancelReturnButtonMsg').addClass('hidden-block');
jQuery('#cancelReturnButtonMsg').removeClass('hidden-block');
}
event.preventDefault();
});
jQuery('#cancel_return_pickup').on('click', function (event) {
jQuery('#processingCancelReturnPickupButtonMsg').removeClass('hidden-block');
jQuery('#returnPickupCancelButtonMsg').addClass('hidden-block');
let selected_carrier_return = jQuery('#input_select_carrier_return').find('option:selected');
let company = selected_carrier_return.data('company');
let id_carrier = 0;
let id_sender = jQuery('#senderSelect').val();
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'CorreosOficialAdminOrderModuleFrontController',
action: 'cancelPickup',
mode_pickup: 'return',
order_id: jQuery('#id_order_hidden').val(),
codSolicitud: jQuery('#pickup_return_code_hidden').val(),
company: company,
id_carrier: id_carrier,
id_sender: id_sender
},
},
cache: false,
processData: true,
success: function (data) {
parsed_data = JSON.parse(data);
loadOpacity();
if (parsed_data.codigoRetorno == '0') {
jQuery('#success_register_return strong').html(parsed_data.mensajeRetorno);
jQuery('#success_register_return').removeClass('hidden-block');
jQuery('#error_register_return').addClass('hidden-block');
jQuery('#pickup_return_code_hidden').val('');
jQuery('#save-return-pickup-container').removeClass('hidden-block');
jQuery('#data-return-pickup-container').addClass('hidden-block');
} else {
jQuery('#error_register_return strong').html(parsed_data.mensajeRetorno);
jQuery('#error_register_return').removeClass('hidden-block');
jQuery('#success_register_return').addClass('hidden-block');
}
jQuery('#processingCancelReturnPickupButtonMsg').addClass('hidden-block');
jQuery('#returnPickupCancelButtonMsg').removeClass('hidden-block');
},
});
event.preventDefault();
});
//--------------------------------------------------------------------------------------//
// //
// AUXILIARES //
// //
//--------------------------------------------------------------------------------------//
/**
* function para imprimir etiquetas
* @param {string} data nombre del archivo PDF
* @param {string} co_path_to_module ruta http del archivo PDF
*/
function printGeneratedLabels(data, co_path_to_module) {
/**
* @TODO Instanciar ruta local ya que la de woocommerce no la esta detectando.
*/
let alternativeRoute = woocommerceVars.pluginsUrl + '/correosoficial';
if (isHttps()) {
alternativeRoute = alternativeRoute.replace('http://', 'https://');
}
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl, // Ruta al archivo PHP
'Content-Type': 'application/pdf',
'Content-Disposition': 'attachment; filename="label.pdf"',
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'AdminCorreosOficialDownloadLabelsController',
filename: data + '&path=pdftmp',
},
},
success: function (filename) {
let fileHref = alternativeRoute + '/pdftmp/' + filename;
let anchor = document.createElement('a');
anchor.setAttribute('download', filename);
anchor.setAttribute('href', fileHref);
anchor.click();
setTimeout(function () {
jQuery.ajax({
type: 'post',
url: varsAjax.ajaxUrl,
data: {
action: 'correosOficialDispacher',
_nonce: varsAjax.nonce,
dispatcher: {
controller: 'AdminCorreosOficialUtilitiesProcess',
action: 'deleteFiles',
},
},
});
}, 6500);
},
error: function (xhr, textStatus, errorThrown) {
console.error('Error al iniciar la descarga: ', textStatus, errorThrown);
},
});
}
function isHttps(){
return (document.location.protocol == 'https:');
}
/**
* Muestra el numero de tracking del envío en Prestashop
* @param {*} item por cada bulto del envío
*/
function showTrackingNumberInfo(item) {
let orderShippingTabContent = jQuery('#orderShippingTabContents .table td:last');
if (platform == 'ps') {
if (company == 'Correos') {
jQuery('#orderShippingTabContent .table td:last')
.prev()
.html("" + item.shipping_number + '');
} else if (company == 'CEX') {
jQuery('#orderShippingTabContent .table td:last')
.prev()
.html("" + item.shipping_number + '');
}
}
}
/**
* Ajusta la opacidad de los elementos 'error_register' y 'success_register'
* a 1 para mantener su visibilidad, ignorando estilos externos.
*/
function loadOpacity() {
jQuery('#error_register').css('opacity', '1');
jQuery('#success_register').css('opacity', '1');
}
/**
* Detecta que el dato que le pasamos sea un Json válido
*/
function isValidJson(data) {
try {
JSON.parse(data);
return true;
} catch (e) {
return false;
}
}
});