Closed studioReggio closed 9 years ago
Ho riscontrato due problemi:
Comovcon
non tiene assolutamente conto degli sconti documento, semplicemente ricava gli importi di contabilità dal corpo del documento dove gli sconti non sono ancora stati calcolati, quindi la parte "avere" dell'articolo P.D. risulta maggiore.Ho messo un TODO(nino)
in 'DocumentiMagazzino.ComovCon.pc` dove secondo me andrebbero scorporati gli sconti, ma ne dobbiamo discutere perchè non sono sircuro.
0,01
.No! Il comovcon va bene. Il problema non sta in DocumentiMagazzino.Comovcon.pc bensì in DocumentiMagazzino.Pc esattamente nelle sub AggiornaImportoRigo e CompletaCastelletto. AggionaImportoRigo alla 5026 correttamente toglie l'IVA se è stato previsto lo scorporo. CompletaCastelletto alla 5683 dovrebbe ripetere la stessa cosa l'errore consiste proprio perché CompletaCastelletto non si pone il problema scorporo si scorporo no. Quindi l'errore che notate in stage nella fattura 1 è esattamente l'IVA sullo sconto nel caso di scorporo. In caso di IVA aggiunta funziona perfettamente. Provate Infatti a fare la stessa fattura però con prezzo IVA esclusa e vedrete che in comovcon viene sviluppato l'articolo complesso in modo impeccabile.
"L'altro problema di squadramento riguarda l'IVA, se il documento è "iva compresa" allora nello scorporare l'iva certe volte genera uno squadro di 0,01". Questo è un problema della notte dei tempi me lo ricordo con Coppola in Sovel. Sta nel fatto che con "iva compresa" deve scorporare, come visto sopra, rigo per rigo quindi è facile che capiti uno 0,0... di differenza rispetto ai totali riportati sul piede. L'accorgimento è nel piede. In caso di scorporo, prima di scrivere in Comoviva e Comovcon, oltre che calcolare correttamente gli eventuali importi sconto dei quali ho detto sopra, anche che non ci sia squadratura dell'Iva.
Visto che a DocumentiMagazzino si stanno apportando modifiche pesanti, suggerisco, prima di procedere con i test, di risolvere tutti i TODO che prevedono altri miglioramenti. Giusto perchè a questo punto i test dovranno essere abbastanza approfonditi e richiederanno tempo.
@mariocarmelo:
AggionaImportoRigo alla 5026 correttamente toglie l'IVA se è stato previsto lo scorporo.
se guardi bene non è così, il calcolo dell'IVA c'è ma non viene aggiornato su ImportoRigo
, serve solo ai fini delle provvigioni.
Comunque dobbiamo vedere insieme questo errore, perchè a me sembra invece che sia il comovcon a sbagliare.
Secondo la mia analisi, il comovcon usa Mov_Mag.ImportoRigo
per scrivere sul giornale, ma ImportoRigo
è al lordo degli sconti, per cui la parte avere dell'articolo risulta sbilanciata.
Quel che tu sostieni è che uno sconto inserito sul piede della fattura sbilancia comunque un articolo di P.D. perchè "ImportoRigo è al lordo di quello sconto". ImpirtoRigo "deve" essere al lordo dello sconto perchè in dare deve imputare "Sconti su vendite". Basta una fattura con sconto sul piede ma con IVA esclusa per vedere che funziona esattamente. Guarda la 5 di stage dove la registrazione in P.D. è perfetta. Nella 1 lo sbilancio di € 1,39 è esattamente l'Iva degli sconti: 0,07 (10% su 0,72) + 1,32 (22% su 7,32).
Funzionasse perfettamente come per la 5 nella 1 la P.D. dovrebbe riportare in avere: Vendita Merce € 9,57 e Vendita Prodotti € 13,32 che più € 3,18 dell'Iva C/Vendite fanno totale avere € 26,07. Come puoi notare "Merci Varie" che non ha sconto al piede ma anch'essa soggetta allo scorporo è stata imputata correttamente.
Ho sistemato il problema (che era appunto nel comovcon
come dicevo io).
Riporto il commento che ho lasciato in DocumentiMagazzino.ComovCon.pc
:
// TODO(nino) 01/05/2015: se ci sono sconti documento, l'importo merce deve restare al LORDO degli sconti
// ma al netto dell'IVA, tenendo conto che l'IVA va calcolata sull'imponibile al NETTO degli stessi sconti.
// Poichè lo sconto è sul piede del documento, va ripartito proporzionalmente su ogni conto merce
if(DocMag.IvaCompresa)
{
var iva, importo_scontato;
if(totsconti>0) importo_scontato = importo - (totsconti * importo / totmerce); // ripartisce
else importo_scontato = importo;
Calcola_Iva(importo_scontato,decimal(Tab.Aliquotalfa),iva); // calcola iva e scarta importo_scontato
// se iva compresa, toglie IVA dall'importo lordo
if(DocMag.IvaCompresa) importo = importo - iva;
}
Dobbiamo discutere se va bene, perché nel caso andrebbe esteso anche agli altri casi oltre FatturaVendita()
.
Resta ancora irrisolto:
0.01
e generasse un ARROTONDAMENTI passivi o attiviAggiornamento del 2/5/2015, ho risolto anche il caso delle spese, adesso ci sono due cicli diversi per "merci" (TipoArticolo
1,4) e "spese" (TipoArticolo
2,3,5)
Caro Nino tu guardavi a Sud e vedevi un panorama. Io guardavo a Nord e vedevo un panorama simile e pensavo fosse lo stesso. Considera che una terza persona con lo sguardo ad Est o Ovest avrebbe visto un panorama e ritenuto essere lo stesso visto da noi. In effetti sarebbe il terzo o il quarto simile. Ahimè è la punta di un iceberg. Tu guardavi comovcon e ti rendevi conto dell'incongruenza io guardavo DocumentiMagazzino e trovavo "la stessa" incongruenza. La terza persona guardando "margini" avrebbe trovato la stessa cosa e forse più pesante. Voglio dire che deve essere DocumentiMagazzino che determina "una sola volta" correttamente i valori da utilizzare per quindi metterli a disposizione dei vari moduli esterni: al "tuo" comovcon (sia fatture che per le note credito in entrata ed in uscita come per scontrini o R.F. e quant'altro), al modulo di calcolo delle provvigioni (analizzato da me e difatti non funziona) al terzo per "margini" che è ancora peggio, è così via secondo bisogni. Ora è il giusto momento per questa modifica grazie alle nuove strutture del linguaggio. Se non si fa questa pulizia allora la modifica che hai fatto la devi ripetere 5/6 volte per Comovcon e quindi per provvigioni e margini e poi resterá a tutti il dubbio della completezza e l'onore pesante di tutti i test.
Per quanto riguarda questo specifico sbilancio è stato sistemato e funziona correttamente.
Inserendo una fattura in documenti di magazzino come da esempio in Stage (ft.N.1 del 29.04.2015 ) dà sbilancio in partita doppia.