Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/03/2017, 10:26
Triby2
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 10 años, 4 meses
Puntos: 30
Respuesta: función retorna undefined

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 original
  1. var FinalDocument = function () {
  2.     'use strict';
  3.  
  4.     var OrderID = '';
  5.  
  6.     var initReportFinal = function() {
  7.         OrderID = $('#master-order').val();
  8.         var url = '/orders/has-invoice/' + OrderID;
  9.  
  10.         $('body').on('click', '.subgroups.viewFR', function () {
  11.             checkIfInvoiceExist(url, getGenerateInvoice);
  12.         });
  13.  
  14.         function getGenerateInvoice(value) {
  15.             if(value) {
  16.                 $.ajax({
  17.                     url: '/documents/final-document/' + OrderID,
  18.                     beforeSend: function () {
  19.                         $('.ring-label').text('Generating');
  20.                         $('.bottom-ring-label').css('display', 'block');
  21.                     },
  22.                     complete: function () {
  23.                         $('.bottom-ring-label').css('display', 'none');
  24.                     },
  25.                     success: function(data) {
  26.                         window.open('/documents/preview/' + data, '_blank');
  27.                     }
  28.                 });
  29.             } else
  30.                 swal("There's no any invoice generated, so you cannot generate the final document.", "Lien Application", "warning");
  31.         }
  32.     }
  33.  
  34.     return {
  35.         init: function () {
  36.             initReportFinal();
  37.         }
  38.     };
  39. }();
  40.  
  41. function checkIfInvoiceExist(url, callback) {
  42.     $.ajax({
  43.         url: url,
  44.         beforeSend: function () {
  45.             $('.ring-label').text('Processing');
  46.             $('.bottom-ring-label').css('display', 'block');
  47.         },
  48.         complete: function () {
  49.             $('.bottom-ring-label').css('display', 'none');
  50.         },
  51.         success: function (data) {
  52.             callback(data.success);
  53.         }
  54.     });
  55. }