Gracias tocayo y dardosmania, entre los dos me aclarasteis el tema.
La verdad que cuando estoy con javascript me acuerdo muy poco de la asincronía, me acuerdo de ello cuando he de poner algo en orden pero en este caso ni pensé en ello por el tema de ir pasando valores entre funciones.
Comparto el código de como me quedó después de modificarlo:
Código Javascript
:
Ver originalvar FinalDocument = function () {
'use strict';
var OrderID = '';
var initReportFinal = function() {
OrderID = $('#master-order').val();
var url = '/orders/has-invoice/' + OrderID;
$('body').on('click', '.subgroups.viewFR', function () {
checkIfInvoiceExist(url, getGenerateInvoice);
});
function getGenerateInvoice(value) {
if(value) {
$.ajax({
url: '/documents/final-document/' + OrderID,
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('/documents/preview/' + data, '_blank');
}
});
} else
swal("There's no any invoice generated, so you cannot generate the final document.", "Lien Application", "warning");
}
}
return {
init: function () {
initReportFinal();
}
};
}();
function checkIfInvoiceExist(url, callback) {
$.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) {
callback(data.success);
}
});
}