Ejemplo albarán desde código

Etiquetado: , ,

Este debate contiene 4 respuestas, tiene 3 mensajes y lo actualizó  Laura Nicolàs hace 1 año, 8 meses.

Viendo 5 publicaciones - del 1 al 5 (de un total de 5)
  • Autor
    Publicaciones
  • #3772

    pedperpat
    Participante

    Buenas tardes, tengo un pedido y lo que necesito es crear un albarán a través de él.

    Por lo que…¿El proceso de crear el albarán sería algo así?:

    // Se asume que si no hay pedido de venta, se creará uno y que si existe se modificará la cantidad a enviar de dicho pedido.
    //****************************************************************************************************************************************
    IF NOT recSalesLine.GET(recSalesLine."Document Type"::Order,pRecConfirmaciones."No. Documento", pRecConfirmaciones."No. Linea") THEN BEGIN
      recSalesHeader.INIT;
      recSalesHeader."Document Type" := recSalesHeader."Document Type"::Order;
      recSalesHeader."No." := pRecConfirmaciones."No. Documento";
      recSalesHeader."Posting Date" := pRecConfirmaciones."Fecha Documento";
      //recSalesHeader.INSERT(TRUE);
    
      recSalesHeader.RESET;
      recSalesHeader.SETRANGE("Document Type", recSalesHeader."Document Type"::Order);
      recSalesHeader.SETRANGE("No.", pRecConfirmaciones."No. Documento");
      IF recSalesHeader.FINDSET THEN
        REPEAT
          recSalesLine.INIT;
          recSalesLine."Document Type" := recSalesLine."Document Type"::Order;
          recSalesLine."Document No." := pRecConfirmaciones."No. Documento";
          recSalesLine."Line No." := pRecConfirmaciones."No. Linea";
          recSalesLine.Type := recSalesLine.Type::Item;
          recSalesLine."No." := pRecConfirmaciones.CodigoArticulo;
          recSalesLine.Quantity := pRecConfirmaciones.CantidadArticulo;
          // Orden
          //recSalesLine.INSERT(TRUE);
        UNTIL recSalesHeader.NEXT = 0;
    //****************************************************************************************************************************************
    END ELSE BEGIN
      recSalesLine.VALIDATE("Qty. to Ship", pRecConfirmaciones.CantidadArticulo);
      recSalesLine.MODIFY(TRUE);
    END;
    
    IF recSalesLine.GET(recSalesLine."Document Type"::Order,pRecConfirmaciones."No. Documento", pRecConfirmaciones."No. Linea") THEN BEGIN
      recSalesLine.VALIDATE("Qty. to Ship", pRecConfirmaciones.CantidadArticulo);
      recSalesLine.MODIFY(TRUE); 
    END;
    
    CLEAR(cuSalesPost);
      recSalesHeader.Ship := TRUE;
      recSalesHeader.Invoice := FALSE;
    
      cuSalesPost.SetPostingDate(TRUE,TRUE,WORKDATE);
      cuSalesPost.RUN(recSalesHeader);

    ¿Voy bien encaminado? ¿O el proceso es distinto a lo que llevo planteado?.

    Un saludo.

    #3776

    Cristina Nicolàs
    Jefe de claves

    Hola pedperpat,

    Si vas bien encaminado.

    Sin entrar en el detalle del código, los pasos que tienes que hacer son:
    1. Indicar la cantidad a enviar en las líneas
    2. Especificar el tipo de registro (con los campos Ship e Invoice)
    3. Llamar a la codeunit de registro

    Y estos 3 pasos veo que los estás haciendo, de modo que si, vas bien encaminado.

    Y ahora si entrando un poco en el detalle del código:
    * No entiendo porque están comentados los INSERT
    * Cuando creas las líneas si no existen, no basta con asignar los valores de los campos No. y Quantity. Tienes que hacer un VALIDATE, si no no se rellenarán todo el resto de campos que se necesitan (la descripción, los grupos contables, el precio, el IVA, la cantidad base, la cantidad a enviar, etc.)
    * Lo mismo al crear la cabecera, tendrías que hacer VALIDATE de la fecha de registro, y además te faltaría informar del cliente (que también se tendría que hacer con VALIDATE)

    Un saludo,
    Cristina Nicolàs

    ¿Quieres conocer las últimas novedades sobre Business Central? Dynamics ScaleUp 2019.

    Consulta fechas en
    DynamicsScaleUp.com

    #3777

    pedperpat
    Participante

    Los INSERT están comentados debido a que estoy en un proceso de importación de datos y creo que lo correcto es recibir los pedidos y directamente crear sus albaranes sin necesidad de guardar los pedidos.
    ¿Sería así o debería de guardarlos en NAV también?

    Gracias por avisar de los VALIDATE, son bastante importantes y muchas veces no sé cuándo toca ponerlos y me lío un poco en ello.

    #3780

    Cristina Nicolàs
    Jefe de claves

    Hola pedperpat,

    Por lo que respecta a los pedidos, aunque los recibas desde otro sistema, los tienes que crear en NAV para poder registrar y crear el albarán. De modo que tienes que hacer el INSERT.
    No puedes quedarte solo con el albarán. Más adelante se tendrá que generar la factura. Y para generar la factura tendrá que existir tanto el pedido como el albarán.

    Y por lo que respecta a los VALIDATE, como norma general, utilízalos siempre. Y no los utilices sólo como excepción, en casos concretos, y teniendo muy claro porqué no lo utilizas.

    Un saludo,
    Cristina Nicolàs

    ¿Quieres conocer las últimas novedades sobre Business Central? Dynamics ScaleUp 2019.

    Consulta fechas en
    DynamicsScaleUp.com

    #3785

    Laura Nicolàs
    Jefe de claves

    En Navision, una vez el pedido está completamente enviado y completamente facturado, se puede eliminar. No lo tienes que guardar si no quieres.

    Pero mientras no esté la factura… si… lo necesitas.

    Ojo! Otra cosa es que en lugar de crear el pedido, crees la factura directamente. Al registrarla se crea tanto el albarán como la factura, y se elimina al pasar al histórico.

    Salut!
    Laura Nicolàs

    ¿Quieres conocer las últimas novedades sobre Business Central? Dynamics ScaleUp 2019.

    Consulta fechas en
    DynamicsScaleUp.com

Viendo 5 publicaciones - del 1 al 5 (de un total de 5)

Debes estar registrado para responder a este debate.

Members Currently Active: 1
asm.formacion
Keymaster | Moderator | Participant | Spectator | Blocked
Additional Forum Statistics
Threads: 879, Posts: 2.831, Members: 898
Welcome to our newest member, Rousenino
Most users ever online was 15 on 5 April, 2019 9:31 am