Saludos, os comparto el código y os comento dentro del código (ver los comentarios dentro del javascript)
Código Javascript
:
Ver originalvar FinalDocument = function () {
'use strict';
var OrderID = '';
var hasInvoice = false;
var initReportFinal = function() {
OrderID = $('#master-order').val();
var url = '/orders/has-invoice/' + OrderID;
var url2 = '/documents/final-document/' + OrderID;
var url3 = '/documents/preview/' + OrderID;
$('body').on('click', '.subgroups.viewFR', function (event) {
// Aquí me está devolviendo "undefined"
hasInvoice = checkIfInvoiceExist(url);
if(hasInvoice) {
$.ajax({
url: url2,
beforeSend: function () {
$('.ring-label').text('Generating');
$('.bottom-ring-label').css('display', 'block');
},
complete: function () {
$('.bottom-ring-label').css('display', 'none');
},
success: function(data) {
window.open(url3, '_blank');
}
});
} else
swal("There's no any invoice generated, so you cannot generate the final document.", "Lien Application", "warning");
});
function checkIfInvoiceExist(url) {
$.ajax({
url: url,
beforeSend: function () {
$('.ring-label').text('Processing');
$('.bottom-ring-label').css('display', 'block');
},
complete: function () {
$('.bottom-ring-label').css('display', 'none');
},
success: function (data) {
// Hasta aquí se recibe el resultado de la consulta "true o false"
console.info('HasInvoice? ' + data.success);
return data.success;
}
});
}
}
return {
init: function () {
initChecklistBTN();
initInvoicePreview();
initReportFinal();
}
};
}();
He tratado también aunque sea absurdo, sacar fuera del la clase la función checkIfInvoiceExist() pero nada, como era de esperar, el resultado sigue siendo igual.
Me estoy viendo obligado a seguir ejecutando el código dentro de la misma función pero no me interesa pues hay otras funciones que hace uso de la función checkIfInvoiceExist() y dependiendo del resultado hace otras cosas.
Algúna explicación / solución a porqué no me está devolviendo el resultado a la variable cuando sí debería de hacerlo.