Piu' Riba a fronte di una sola riga di fattura

Ciao Anna,

mi rivolgo a te direttamente perchè faccio riferimento a un tuo post: http://dynamicsuser.net/forums/p/17998/83201.aspx#83201

Abbiamo fatto le modifiche che tu hai indicato e arriviamo al punto di splittare la riga della fattura nella distinta in più righe. A questo punto provo a registrare la distinta ma ottengo il seguente messaggio di errore: Mentre Importo Residuo è stato modificato per Nr Documento 8/0999 Occorrenza Documento 1. Il nuovo importo è 120.000. Non riesco a capire dove sbaglio. Sicuramente mi sto perdendo in un bicchiere d’acqua ma non riesco a venirne a capo.

C’è un punto in cui abbiamo avuto dei dubbi:

Nel DataItem “Customer Bill Line”, OnAfterGetRecord:

FOR Int := 1 TO (InQuante - 1) DO
BEGIN
RcRigaEffetto.TRANSFERFIELDS(RigaDaSuddividere);
RigaDaSuddividere ci restituisce errore e quindi noi ci abbiamo messo Customer Bill Line. E’ forse qui il problema?

Ti ringrazio.

Ho riscontrato un altra anomalia nel codice:

Nel DataItem “Customer Bill Line”, OnAfterGetRecord:
FOR Int := 1 TO (InQuante - 1) DO
BEGIN
RcRigaEffetto.TRANSFERFIELDS(RigaDaSuddividere);
RcRigaEffetto.“Line No.” := 0;
Quest’ultima riga di codice dovrebbe sevire ad assegnare il numero i numeri di riga… Ora se suddivido la riga della distinta in 2 tutto ok. Ma se suddivido per un numero superiore a 2 Nav va in errore perchè cerca di assegnare anche alle altre righe il nr 0. Per risolvere il problema abbiamo corretto il codice in: RcRigaEffetto.“Line No.” := Int*10;

Mi restano in sospeso alcuni problemi. Arrivo al punto di suddividere una riga nella distinta cliente in più righe. Poniamo ad esempio che ho una fattura di 120.000: a fronte di questa fattura il mio cliente vorrebbe mandare 40.000 su una banca, 40.000 su un’altra e 40.000 su un’altra ancora. Quindi io dovrei splittare 120.000 nella distinta in 3 ma come faccio poi a registrare i 3 importi su 3 distinte (e quindi banche) diverse?

Grazie

Uuuuuh!!! Mamma mia, sono passati secoli da quando ho fatto quella cosa! [:)]

Per il messaggio di errore non so - hai individuato il punto in cui viene emesso? C’è da dire che io ho realizzato questa personalizzazione su undatabase 3.70b, non è escluso che nelle versioni successive abbiano messo qualche altro controllo, che bisogna aggirare…

Guarda in che punto viene lanciato il messaggio con il debug, poi vediamo.

Per la variabile RigaDaSuddividere hai ragione, mi sono dimenticata di specificare che nel mio report il dataitem “Customer Bill Line” si chiama così. [:$]

Grazie della risposta, sei gentile come sempre [{]

Come dicevo arrivo a splittare una riga di una fattura nella distinta in più righe… poniamo in 3 righe da 40.000. Ne cancello 2 e provo a registrare la ditinta con una sola riga e mi genera l’errore “Mentre Importo Residuo è stato modificato per Nr Documento 8/0999 Occorrenza Documento 1.Il nuovo importo è 120.000”. In pratica il codice si ferma:

Codeunit 12172 “Customer Bill - Post + Print”:
Funzione CODE:
CustLedgEntry.GET(CustomerBillLine.“Customer Entry No.”);
CustLedgEntry.CALCFIELDS(“Remaining Amount”);

//> SV3-00 - Effetti con “Allow Issue”=No, Importo può essere < Residuo
{
IF CustLedgEntry.“Remaining Amount” <> CustomerBillLine.Amount THEN
}
IF ((CustLedgEntry.“Remaining Amount” <> CustomerBillLine.Amount) AND
(CustLedgEntry.“Allow Issue”)) THEN
//< SV3-00
ERROR(Text1130007,
CustLedgEntry.FIELDCAPTION(“Remaining Amount”),
CustLedgEntry.FIELDCAPTION(“Document No.”),
CustLedgEntry.“Document No.”,
CustLedgEntry.FIELDCAPTION(“Document Occurence”),
CustLedgEntry.“Document Occurence”,----------------------------------------------si ferma qui
CustLedgEntry.“Remaining Amount”);

Per registrare la distinta devo togliere le spunte Ricevuta bancaria emessa e Permetti estrazione dalla Customer Ledger entry.A questo punto ho la necessità di farmi suggerire le altre due righe in una nuova distinta.
Creo la nuova distinta, faccio suggerisci Ricevute bancarie ma non mi restituisce nulla. Probabilmente sono io che mi perdo qualche passaggio ma non riesco a venirne a capo.
Grazie ancora

Pensando e ripensando al problema della suddivisione di riba su più distinte alla fine sono pervenuto ad una soluzione! Il cliente quando registra una fattura di vendita non sa a priori quante distinte dovrà emettere e per quali importi. Quindi io gli faccio registrare la fattura con metodo di pagamento RIBA e cond. quella che vuole (ad es. 120 giorni). Quando deve invece procedere alla estrazione delle riba sa quante distinte deve emettere e sa anche gli importi e le banche su cui emetterle. A uesto punto faccio annullare la fattura registrata (noi disponiamo di un tool di annullamento delle fatture che le riporta in provvisorio e quindi modificabili) e faccio agire sulle cond. di pagamento. Mi spiego: poniamo che si vogliano emettere 3 distinte su 3 banche differenti per 40.000 ciuascuna. Mi basta creare una nuova condizione di pagamento con 3 rate da 33,33333% ciascuna tutte a 120G e applicare questa nuova condizione alla fattura. Registro la fattura e dopo aver estratto le riba mi faccio suggerire in distinta le ricevute bancarie. Avrò dunque 3 riba da 40.000 che posso gestire come voglio. Magari ne cancello due dalla distinta e la registro. poi creo una nuova distinta e mi faccio suggerire le restanti due e così via.

A me è parsa la soluzione migliore (per fortuna lo è anche per il cliente) senza intaccare il codice di navision. Ovviamente questo sistema presuppone la presenza di un tool di annullamento delle fatture.

[H][H][H][H] Figo no?

Sì, questo è un prerequisito. Infatti fra le modifiche da fare avevo segnalato la possibilità di modificare il flag “Permetti estrazione” dal form “Movimenti contabili clienti” (ovviamente da fare prima di estrarre le ricevute).

Una volta che le ricevute sono estratte e registrate non si può fare più niente. Comunque vedo che hai trovato un’altra soluzione. Se va bene al cliente, tanto meglio così.