A proposito delle differenze tra 3.60 e 3.70 Da quello che ho capito della teoria del LIFO, gli scaglioni LIFO modificano le fasce storiche esistenti solo per le quantita residue,assorbite. In Navision questo avviene validando il campo AbsorbedQuantity Osservando questa validate in 3.60 … 3.60 AbsorbedQuantity::OnValidate “Residual Quantity” := “Increment Quantity” - “Absorbed Quantity”; “Increment Value” := “Increment Quantity” * CMP; e in 3.70… 3.70 AbsorbedQuantity::OnValidate “Residual Quantity” := “Increment Quantity” - “Absorbed Quantity”; “Increment Value” := “Residual Quantity” * CMP; …si nota che qualcosa cambia… in peggio ! In altri termini mi scrive nel campo Increment Value non il valore dello scaglioni storico, ma il valore della quantita residua, che potrebbe essere semplicemente salvato in un altro campo o calcolato al momento della stampa> pazzesco!!.
Chiedo scusa per il tono ‘polemico’ ! e per l’aggettivo ‘pazzesco’ che è un po’ fuori luogo, soprattutto nei confronti di chi ha scritto il codice e fatto l’analisi. Infatti se si confrontano i due report di stampa ( apparentemente identici ) si comprende che la stessa tabella va ‘interpretata’ in due maniere differenti tra le due versioni. Però chi ha personalizzato la stampa … Ciò premesso, sottopongo a chi legge un altro quesito: Vedo che nell’OnPreReport manca una validate: LIFOBand.RESET; LIFOBand.SETRANGE(LIFOBand.Definitive, FALSE); IF LIFOBand.FIND(’-’) THEN REPEAT IF NOT LIFOBand.Positive THEN BEGIN IF LIFOBand2.GET(LIFOBand.“Closed by Entry No.”) THEN BEGIN LIFOBand2.“Absorbed Quantity” := LIFOBand2.“Absorbed Quantity” + LIFOBand.“Increment Quantity”; LIFOBand2.“Residual Quantity” := LIFOBand2.“Increment Quantity” - LIFOBand2.“Absorbed Quantity”; LIFOBand2.MODIFY; END; END; UNTIL LIFOBand.NEXT = 0; Absorbed Quantity non viene mai validato nel resto del report. Questo è dannoso. Esempio dei seguenti movimenti: Con Articolo 1000 Costo Unitario Eur 100 01/01/2003 Acquisto pz 1000 01/06/2004 Vendo pz 200 Faccio il calcolo definitivo a fine anno 31/12/2003 Scaglione LIFO al 31/12/2003 Definitivo=>Valore Incremento 100.000 Poi faccio un provvisorio al 30/06/2004 e Ottengo correttamente: Scaglione LIFO al 31/12/2003 Definitivo=>Valore Incremento 80.000 Scaglione LIFO al 30/06/2004 Provvisorio ( Negativo ) Poi mi va di fare un provvisorio al 31/05/2004 A questo punto mi cancella quello del 30/06/2004 e non mi rivalida più quello al 31/12/2003: Scaglione LIFO al 31/12/2003 Definitivo=>Valore Incremento 80.000 Questa ‘magagna’ si verifica però solo con 3.70. Su 3.60 non era indispensabile rivalidare i 2 campi per il fatto che Increment Value rimane fermo nel tempo.