• Este debate tiene 5 respuestas, 3 mensajes y ha sido actualizado por última vez el hace 5 años, 4 meses por Rosa Martin.
Viendo 6 entradas - de la 1 a la 6 (de un total de 6)

Clave duplicada, el nº movimiento ya existe.



  • pedperpat
    Participante
    pedperpat

    Buenas tardes,

     

    Necesito sacar el nº de lote del producto X que tengo especificado en la línea de venta del pedido(pedido sin registrar).

    Y me he fijado en la acción “Lins. Seguim. Producto” que me abre una nueva ventana con el nº de lote asignado a la línea y además las cantidades.

    Necesito obtener ese nº de lote lo que pasa es que el proceso estándar por cada lote que quiero ver lo que hace es siempre NºMov = 1. Esa es la única clave primaria de la tabla, por lo que en pedidos de más de 1 línea me dice que ya existe el registro.

     

    Lo que estoy intentando hacer es:

    Sales Line – OnAfterGetRecord()

    SalesReserve.InitTrackingSpecification(“Sales Line”,TrackingSpecification);
    ItemTrackingLines.SetSource(TrackingSpecification,”Sales Line”.”Shipment Date”);
    ItemTrackingLines.SetInbound(“Sales Line”.IsInbound);
    ItemTrackingLines.GETRECORD(TrackingSpecification);
    MESSAGE(‘Nº movimiento: ‘ + FORMAT(TrackingSpecification.”Entry No.”) + ‘ Nº Lote:’ + TrackingSpecification.”Lot No.”);

    A la siguiente pasada, la de la línea 2 me da el error de que ya existe un registro con el Nº mov. = 1, ¿alguna idea o workaround por el que conseguir el Nº de lote de todas las líneas?

     

    Muchas gracias y un saludo.

    #6860

    Cristina Nicolàs
    Superadministrador
    Cristina Nicolàs

    Hola pedperpat,

    No lo he ido a mirar, pero creo que esa variable TrackingSpecification es una variable temporal que el sistema te rellena con el seguimiento de una línea en concreto.
    Para cada línea tendrías que hacer primero un DELETEALL para tener TrackingSpecification vacía y que te la vuelva a rellenar.

    Ojo, antes de poner un DELETEALL comprueba efectivamente que sea una variable temporal, que yo no lo he comprobado.

    Un saludo,
    Cristina Nicolàs

    #6864

    Cristina Nicolàs
    Superadministrador
    Cristina Nicolàs

    O otra cosa que podrías hacer es, en lugar de utilizar esta función InitTrackingSpecification, podrías poner los filtros adecuados sobre la tabla ReservationEntry y leer directamente sobre esa tabla.
    Diria que esa codeunit SalesReserve también tiene funciones que te ponen los filtros necesarios sobre ReservationEntry para obtener solo los regisros de una línea en concreto.

    Un saludo,
    Cristina Nicolàs

    #6865

    pedperpat
    Participante
    pedperpat

    Buenos días,

     

    Al final lo solucioné trayéndome todas las funciones del estándar y adaptándolo a la necesidad que tenía. Lo del DELETEALL fui cuidadoso con ello y el rec estaba marcado como temporal ya que si no como tú bien has comentado sería catastrófico.

    El código vi que en reservation entry aplicaba unos específicos filtros para poder luego en la page de “Item tracking lines” mostrar el lote asignado del producto con su información relacionada de cantidad.

     

    #6897

    Cristina Nicolàs
    Superadministrador
    Cristina Nicolàs

    HOla,

    Gracias por la actualización. Me alegro que consiguieras encontrar una solución.

    Un saludo,
    Cristina Nicolàs

    #6900

    Rosa Martin
    Superadministrador
    Rosa Martin

    Gracias. Me ha sido de mucha ayuda.

    #6992
Viendo 6 entradas - de la 1 a la 6 (de un total de 6)

Debe iniciar sesión para responder a este tema.