Reso il calcolo ventilazione uguale al sistema (xyk censored)
git-svn-id: svn://10.65.10.50/trunk@5642 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
bff6efa085
commit
6cd542869f
@ -189,12 +189,57 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
||||
totven += vi->_totale;
|
||||
}
|
||||
|
||||
/*
|
||||
* Udite! Udite! Per editto di sua maesta' la ventilazione
|
||||
* va calcolata in modo uguale al frigorifero (cioe' sbagliato)
|
||||
* I migliori auguri per una pronta guarigione dallo stato di
|
||||
* infermita' mentale che vi affligge tutti.
|
||||
* Bando ai convenevoli e passiamo alla spiegazione (se siete
|
||||
* rigorosamente razionali fermatevi qui e non andate oltre):
|
||||
* la ventilazione, in breve, consiste in questo:
|
||||
* si totalizzano gli acquisti beni per rivendita da inizio anno
|
||||
* e le vendite (solo del periodo) da scorporare (corrispettivi).
|
||||
* A questo punto si dovranno "scaglionare" le vendite in
|
||||
* proporzione agli acquisti dello stesso codice IVA. Avremo quindi N
|
||||
* importi vendite lordi, la cui somma dovra' sempre dare il totale vendite
|
||||
* calcolato inizialmente. Per ogni scaglione ottenuto si procedera' poi
|
||||
* allo scorporo dell'iva, in modo che il tutto risulti coerente.
|
||||
*
|
||||
* La nostra implementazione:
|
||||
* si calcolino il totale acquisti beni per rivendita da inizio anno e
|
||||
* le vendite da ventilare nel periodo.
|
||||
* Si istanzia un TDistrib (vedi la classe) sul totale delle vendite da ripartire,
|
||||
* quindi per ogni aliquota acquisti presente si aggiunge una percentuale di ripartizione
|
||||
* (acquisti/totale acquisti) al suddetto oggetto.
|
||||
* In tal modo avremo che il totale delle vendite sara' sempre
|
||||
* uguale all'originale senza perdite 0 aggiunte di insignificanti lirette.
|
||||
* come ultima cosa si estraggono le varie suddivisioni ottenute a da li si procede
|
||||
* allo scorporo dell'iva.
|
||||
*
|
||||
* La loro implementazione:
|
||||
* come nel nostro caso si effettua la totalizzazione degli acquisti e delle vendite
|
||||
* a questo punto pero' si introduce il leggendario moltiplicatore, che serve, se non
|
||||
* altro a far sbagliare i conti sugli arrotondamenti e sui totali. Tale moltiplicatore
|
||||
* e' dato dal rapporto tra totale acquisti e totale vendite. Per ogni aliquota iva
|
||||
* acquisti si effettua percio' la seguente operazione per ottenere il relativo
|
||||
* importo vendite:
|
||||
* ROUND(acquisti * moltiplicatore)
|
||||
* come si puo' notare, gia' qui si introduce un errore, perche' non e' affatto detto
|
||||
* che la somma di tutti gli importi vendite ottenuti dia ancora l'importo complessivo originale.
|
||||
* Infine si scorpora l'iva come nel nostro caso.
|
||||
*
|
||||
* Ebbene si': il nostro metodo (corretto) e' stato bandito e sostituito con quello
|
||||
* super-mega-maxi-iper-errato del sistema. Si lascia commentato per memoria futura
|
||||
* l'implementazione corretta, anche perche' forse in futuro (possibilita' molto remota)
|
||||
* cambieranno idea.
|
||||
*
|
||||
* Sigh!
|
||||
*
|
||||
{
|
||||
_VendItem* vi = (_VendItem*)&_vend_arr[0];
|
||||
//totven += vi->_totale;
|
||||
|
||||
// 3.2) calcola percentuali di ripartizione e prepara l'affettatrice
|
||||
TDistrib dst(/*vi->_totale*/totven, ROUND_LIRA);
|
||||
TDistrib dst(totven, ROUND_LIRA);
|
||||
for (j = 0; j < vent_items; j++)
|
||||
{
|
||||
_VentItem* vv = (_VentItem*)&_vent_arr[j];
|
||||
@ -258,7 +303,53 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
||||
_pim->rewrite();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// Di seguito l'implementazione del sistema (errata come spiegato sopra).
|
||||
|
||||
const real moltiplicatore = totven / totacq;
|
||||
real imponibile, imposta;
|
||||
_VendItem* vi = (_VendItem*)&_vend_arr[0];
|
||||
|
||||
for (j = 0; j < vent_items; j++)
|
||||
{
|
||||
_VentItem* vv = (_VentItem*)&_vent_arr[j];
|
||||
imponibile = vv->_totale * moltiplicatore; // Importo lordo vendite
|
||||
imponibile.round(ROUND_LIRA);
|
||||
lordo2netto(imponibile, imposta, vv->_aliquota); // Scorpora l'iva
|
||||
// aggiusto l'IVA vendite nei plm
|
||||
look_plm(month, codatt);
|
||||
real ive = _plm->get_real("R0");
|
||||
ive += imposta;
|
||||
_plm->put("R0",ive);
|
||||
_plm->rewrite();
|
||||
// .. e il volume di affari nei pam
|
||||
real vaf = _pam->get_real("R1");
|
||||
vaf += imponibile;
|
||||
_pam->put("R1", vaf);
|
||||
_pam->rewrite();
|
||||
|
||||
// Aggiorno i luridi pim
|
||||
bool was = look_pim(month, codatt, vi->_codreg, "0", vv->_codiva, vi->_tipodet, TRUE);
|
||||
|
||||
imponibile += _pim->get_real("R0");
|
||||
imposta += _pim->get_real("R1");
|
||||
_pim->put("R0", imponibile);
|
||||
_pim->put("R1", imposta);
|
||||
_pim->put("S4", vv->_other);
|
||||
// segnale per comodita' in stampa prospetto
|
||||
_pim->put("B1","X");
|
||||
// se e' nuovo, il segnale per usare l'importo nel calcolo del rimborso
|
||||
// viene amorosamente messo a quanto il codice IVA prevede
|
||||
if (!was)
|
||||
{
|
||||
look_iva(vv->_codiva);
|
||||
_pim->put("I1", (long)vendita);
|
||||
if (!_iva->get_bool("B4")) _pim->put("B3", "X");
|
||||
}
|
||||
_pim->rewrite();
|
||||
}
|
||||
|
||||
// memorizza totali per il prospettino di m.
|
||||
look_plm(month, codatt);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user