Split righe ordine.

Salve a tutti. Ho la necessita di realizzare sugli ordini di vendita il seguente comportamento: Quando l’utente esegue l’impegno parziale della riga d’ordine, il sistema deve: 1) ridurre la quantita della riga originale 2) generare un nuova riga in stato impegnato con la quantità pari a quella che si desidera impegnare e con una variante diversa, scelta dall’utente dalle varianti dell’articolo. 3) deve essere possibile consegnare l’ordine in spedizioni sucessive. Avete qualche dritta sul modo migliore per implementare quansto comportamento. Grazie a tutti.

Quando si tratta di impegni la cosa non è affatto semplice… La copia della riga vendita è abbastanza tranquilla, basta, a patto di modificare tutte le quantità, inizializzare una nuova riga, trasferire i valori, inserire la nuova e quindi modificare la vecchia. Chiaramente stiamo parlando di una riga “vergine”, cioè non spedita o generata da giri particolari, quali acquisti etc…altrimenti devi stare attento ad altri fattori. Per gli impegni, ti consiglio di usare le funzioni native di navision e in tal caso di dare un’occhiata alle codeunit nella 3.70: 99000832, 99000831, 99000845 In particolare nella 99000831 potresti operare direttamente sulle righe impegno tramite la funzione: ModifyReservEntry(ReservEntry : Record “Reservation Entry”;NewQuantity : Decimal;NewDescription : Text[50];ModifyReserved : Boolean) oppure cambiarti via codice i riferimenti delle righe vendita… se dai un’occhiata alla struttura delle righe impegno, si capisce quali sono i valori dei campi da cambiare, in pratica a te basterebbe cambiare il numero linea. Tinei presente che in questo caso devi intervenire sulla tabella 337 e qui vengono generati per ogni impegno (“stato impegno”=impegno) 2 movimenti, uno positivo e l’altro negativo. In alternativa potresti cancellare gli impegni precedenti della vecchia riga mediante la 99000832 DeleteLine(VAR SalesLine : Record “Sales Line”) e creare gli impegni per la nuova riga vendita mediante CreateReservation(VAR SalesLine : Record “Sales Line”;Description : Text[50];ExpectedReceiptDate : Date;Quantity : Decimal;ForSerialNo Però perderesti i legami originali degli impegni. Per quanto riguarda le spedizioni successive… navision permette per sua natura di spedire le quantità volute di un ordine vendita e quindi generare più spedizioni da una stessa testata, per cui non capisco bene il problema. Se si tratta di trasferire le righe vendita in nuovi ordini, ti consiglio di guardarti TransferSaleLineToSalesLine(VAR OldSalesLine : Record “Sales Line”;VAR NewSalesLine : Record “Sales Line”;TransferQty : Decimal) nella c.u. 99000832 In bocca al lupo.