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;
|
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];
|
_VendItem* vi = (_VendItem*)&_vend_arr[0];
|
||||||
//totven += vi->_totale;
|
|
||||||
|
|
||||||
// 3.2) calcola percentuali di ripartizione e prepara l'affettatrice
|
// 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++)
|
for (j = 0; j < vent_items; j++)
|
||||||
{
|
{
|
||||||
_VentItem* vv = (_VentItem*)&_vent_arr[j];
|
_VentItem* vv = (_VentItem*)&_vent_arr[j];
|
||||||
@ -258,7 +303,53 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
|||||||
_pim->rewrite();
|
_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.
|
// memorizza totali per il prospettino di m.
|
||||||
look_plm(month, codatt);
|
look_plm(month, codatt);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user