Gestione flag studio per ricalcolare imposte acquisti beni per rivendita

Stampa intestazione colonne progressivi anche senza progressivi


git-svn-id: svn://10.65.10.50/trunk@1530 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-06-29 12:14:29 +00:00
parent 24e754e785
commit 14f60c894d
3 changed files with 106 additions and 57 deletions

View File

@ -87,6 +87,7 @@ enum tbc { precedente = 1, incorso = 2};
#define DELDEB 15 // righe tabulato deleghe ditte a debito
#define DELCRED 16 // header tabulato deleghe ditte a credito
#define DELEGA 17 // descrizione versamenti
#define PIM_HEAD 18 // bytes sprecati per far vedere l'intestazione pim
// ...............................................................
// support structs
@ -429,6 +430,7 @@ public:
void set_plm(_DescrItem& d);
bool set_annual(_DescrItem& d);
void set_grand(_DescrItem& d);
void set_pim_head();
// cercapalle in tabelle con opzione di creazione se serve
bool look_pim(int m, const char* a, const char* r, const char* cr,

View File

@ -450,7 +450,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
real esenti_b2 = 0.0;
real esenti_b3 = 0.0;
real esenti_b14 = 0.0;
real nonimp = 0.0; // ci sommo tutti esenti e ni validi per rimborso
real esni_rimb = 0.0; // ci sommo tutti esenti e ni validi per rimborso
real corr_CEE = 0.0;
real corr_noCEE = 0.0;
real acq_CEE = 0.0;
@ -496,10 +496,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
/*
* check register present, rmoviva present and date OK
*/
const bool dok = !is_date_ok(date, month);
const bool sreg = !isreg;
const bool rs8 = _reg->get("S8") != trueatt;
const bool cmt = !_cur->is_first_match(LF_RMOVIVA);
const bool dok = !is_date_ok(date, month);
const bool sreg = !isreg;
const bool rs8 = _reg->get("S8") != trueatt;
const bool cmt = !_cur->is_first_match(LF_RMOVIVA);
const bool sosp_imp = _reg->get_bool("B1");
const TRectype& rcs = _cur->curr(LF_CAUSALI);
const bool fattrit = rcs.get_bool("RITFATT");
@ -558,7 +558,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// autofatture art. 17 per non residenti, con trattamento
// speciale in liquidazione annuale
bool autodafe = (tipodoc == "AF" && tipocr == 4);
// indica acquisti per rivendita; viene messo in B4 di PIM per
// indicare che e' soggetto al ricalcolo IVA (se voluto) in modo
// da evitare di dover controllare mese e anno sul PIM
bool was_riv = FALSE;
/*
* puo' capitare per motivi brutalmente prassici
* SENSU Sergio 1995, Guido
@ -631,14 +634,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// Altre cose di cui tener conto
if (tipomov == acquisto && (tipocr == 1 || tipocr == 5))
/*
* Acquisto beni per rivendita: sono comunque sommati, ma
* vengono considerati in ventilazione solo se l'apposito
* parametro ditta e' settato, piu' altre condizioni (vedi
* recalc_ventilation() for spulcing)
* Acquisto beni per rivendita
*/
{
acq_riv += imponibile;
acq_riv_iva += imposta;
was_riv = TRUE;
}
else if (tipomov == acquisto && tipocr == 2 && tipodet == 0)
@ -685,6 +686,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// operazioni per calcolo rimborso infracazzuale
// Scudler 1995
// La breve estate vissuta dal metodo del 51% renderebbe
// ora superflua la tabella rimborsi, ma, come diceva
// Garcia Lorca, me ne sbatto il culo e se non ti piace
// vatti a far chiavare da un coyote
if (ivarimb)
{
bool ok = _isagricolo ? tipoagr == 2 : FALSE;
@ -730,7 +735,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
}
// se e' il caso sommare esenti per rimborso
if (isrimbinfr)
nonimp += imponibile;
esni_rimb += imponibile;
}
else if (tipoes_a == 14)
esenti_b14 += imponibile;
@ -738,7 +743,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// non imponibili per rimborso
if (tipoiva == "NI" && tipomov == vendita && isrimbinfr)
nonimp += imponibile;
esni_rimb += imponibile;
// bolle doganali
if (tipodoc == "BD")
@ -865,6 +870,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
real imp = _pim->get_real("R0"); // imponibile
real ivp = _pim->get_real("R1"); // IVA su imp.
real lor = _pim->get_real("R2"); // lordo
/*
* le maledette fatture con scontrino sono sul registro dei
* corrispettivi, ma vanno riportate nelle vendite in stampa;
@ -874,6 +880,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
*/
real ifs = _pim->get_real("R5"); // imponibile fatture con scontrino
real vfs = _pim->get_real("R6"); // IVA fatt. con scontrino
/*
* le maledette autofatture non residenti art. 17
* vedi al calcolo if (autodafe) si tengono da parte
@ -891,7 +898,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
real bdi = _pim->get_real("R9");
real bdv = _pim->get_real("R10");
/* i falsi corrispettivi */
/* i luridi falsi corrispettivi */
real fci = _pim->get_real("R13");
real fcv = _pim->get_real("R14");
@ -900,8 +907,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
real rti(fr.get(0));
real rtv(fr.get(1));
/* le stramadonne delle cazzate di corrispettivi gia' scorporati
che servono all'Enrica e non a me */
/* la stramadonna dei corrispettivi gia' scorporati */
TToken_string cs(_pim->get("S2"));
real csi(cs.get(0));
real csv(cs.get(1));
@ -946,7 +952,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
* non sono corrispettivi. Ci si potrebbe domandare
* se gli altri corrispettivi sono corrispettivi o
* no; ebbene, gli altri corrispettivi risultano
* fortunatamente essere corrispettivi.
* fortunatamente essere corrispettivi, a meno di
* indicazioni contrarie.
*/
if (tipodoc == "CR" || tipodoc == "RF" || tipodoc == "SC")
{
@ -980,11 +987,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
vendite += rr;
add_vendite(month, reg, tipodet, rr);
}
if (liq)
{
// vendite -= imponibile;
// vendite_iva -= imposta;
}
imp -= imponibile;
ivp -= imposta;
lor -= imponibile + imposta;
@ -1000,12 +1002,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
vendite += imponibile;
vendite_iva += imposta;
}
imp += imponibile;
ivp += imposta;
fci += imponibile;
fcv += imposta;
csi += imponibile;
csv += imposta;
imp += imponibile;
ivp += imposta;
fci += imponibile;
fcv += imposta;
csi += imponibile;
csv += imposta;
_pim->put("I0",NETTO);
}
} // if corrisp
@ -1052,12 +1054,13 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
_pim->put("R14",fcv);
}
// questi servono per i ricalcoli altrui (classify_pim)
// questi servono per i ricalcoli altrui (classify_pim) o
// per trucchetti di ricalcolo successivi
_pim->put("R11",fsi);
_pim->put("R12",fsv);
_pim->put("I1", (long)tipomov);
_pim->put("B3", ivarimb ? "X" : "");
_pim->put("B4", _isricacq ? "X" : "");
_pim->put("B4", _isricacq && was_riv? "X" : "");
_pim->put("S5", tipoiva);
// fatture in ritardo
@ -1065,16 +1068,52 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
fr.add(rtv.string(), 1);
_pim->put("S1",fr);
// corrispettivi gia' scorporati
// corrispettivi gia' scorporati; anche questi servono per
// non cannare la stampa dei registri
cs.add(csi.string(), 0);
cs.add(csv.string(), 0);
cs.add(csv.string(), 1);
_pim->put("S2",cs);
_pim->rewrite();
}
while (_cur->next_match(LF_RMOVIVA));
}
// calcolati tutti i movimenti e aggiornati i pim
} // fine calcolo progressivi IVA
/*
* calcolati tutti i movimenti e aggiornati i pim
* se necessario risistema le imposte acquisti beni
* per rivendita
*/
if (_isricacq) // flag settato parametri studio
{
for (_pim->first(); !_pim->eof(); _pim->next())
{
// this is much furber than doing all of the checks
if (_pim->get_bool("B4"))
{
// ricalcola l'imposta a partire dal codice IVA
look_iva(*_pim_codiva);
real old_iva = _pim->get_real("R1");
real perc = _iva->get_real("R0");
real new_iva = (_pim->get_real("R0") * perc)/CENTO;
new_iva.round(ROUND_LIRA);
if (new_iva != old_iva)
{
// ricalcola: acquisti_iva, acq_riv_iva
acquisti_iva -= old_iva;
acquisti_iva += new_iva;
acq_riv_iva -= old_iva;
acq_riv_iva += new_iva;
_pim->put("R1", new_iva);
// resetta in modo da non vederlo il mese dopo
_pim->put("B4", "");
_pim->rewrite();
}
}
}
}
/*
* calcola il lercio prorata
@ -1174,7 +1213,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
_pum->put("R5", esenti_b2);
_pum->put("R6", esenti_b3);
_pum->put("R7", esenti_b14);
_pum->put("R12", nonimp);
_pum->put("R12", esni_rimb);
_pam->put("R0", acquisti);
_pam->put("R1", vendite);
_pam->put("R6", assp_imp);

View File

@ -11,6 +11,7 @@
// flags per annuale
#define IS_PRORATA 0x0001
// minchietta per prospetto ventilazione
class _vDesc : public TObject
{
@ -45,6 +46,9 @@ void TLiquidazione_app::set_page(int file, int cnt)
case PIM_ROW:
set_pim(d);
break;
case PIM_HEAD:
set_pim_head();
break;
case MISC_LIQ:
set_pumpam(d);
break;
@ -362,10 +366,17 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
// descrittore riga autodafe'
_DescrItem* ads = NULL;
// questa cazzata serve per far apparire l'intestazione delle colonne
// anche se le colonne non ci sono; in tal modo si ottiene una peggior
// chiarezza, una peggiore efficienza, una gran rottura di coglioni,
// ma risulta identico al dio Sistema.
_DescrItem* hea = new _DescrItem(PIM_HEAD);
_descr_arr.add(hea);
while ((tmpatt = atts.get()) != NULL)
{
TString att(tmpatt);
TString att(tmpatt);
for (_pim->first(); !_pim->eof(); _pim->next())
{
_DescrItem* d = NULL;
@ -981,6 +992,15 @@ void TLiquidazione_app::set_plafond(_DescrItem& d)
set_auto_ff();
}
void TLiquidazione_app::set_pim_head()
{
set_bookmark("Riepilogo progressivi", _att_bookmark);
set_row(1," Cod.@41gVENDITE@71gCORRISPETTIVI@106gACQUISTI");
set_row(2," IVA Descrizione@30gImponibile@49gImposta@63gImponibile"
"@82gImposta@96gImponibile@115gImposta");
set_row(3,"");
}
void TLiquidazione_app::set_pim(_DescrItem& d)
{
int rw = 1;
@ -994,16 +1014,10 @@ void TLiquidazione_app::set_pim(_DescrItem& d)
d._s2 = _iva->get("S0");
}
if (d._f0) // e' il primo
{
// intestazioncina
set_bookmark("Riepilogo progressivi", _att_bookmark);
set_row(rw++," Cod.@41gVENDITE@71gCORRISPETTIVI@106gACQUISTI");
set_row(rw++," IVA Descrizione@30gImponibile@49gImposta@63gImponibile"
"@82gImposta@96gImponibile@115gImposta");
set_row(rw++,"");
}
if (d._f0) // e' il primo: non fa piu' nulla perche' l'intestazione
// viene fatta comunque da set_pim_head
{}
set_row(rw++,"%4s %-20s@25g%r@41g%r@58g%r@74g%r@91g%r@107g%r",
(const char*)d._s1,
(const char*)d._s2,
@ -1061,13 +1075,6 @@ void TLiquidazione_app::set_plm(_DescrItem& d)
&acq_pint_iva);
}
// real iva74ter(d._s2);
// if (!iva74ter.is_zero())
// {
// set_row(rw++, "Iva dovuta - 74ter@41g%r", &iva74ter);
// d._r1 += iva74ter;
// }
real tot1 = d._r7 + d._r4 + d._r9 + acq_pint;
real tot2 = d._r8 + d._r5 + d._r10 + acq_pint_iva;
@ -1202,11 +1209,11 @@ void TLiquidazione_app::set_pumpam(_DescrItem& d)
"@77gimposta@91gdetrazione");
set_row(4,"");
}
else if (!d._f1)
else /* if (!d._f1) */
set_row(1,"");
// form feed
if (printed || !d._f1) set_auto_ff(TRUE);
/* if (printed || !d._f1) */ set_auto_ff(TRUE);
}
void TLiquidazione_app::set_grand(_DescrItem& d)
@ -1344,11 +1351,12 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
if (di._flags == RIMBORSO)
{
set_bookmark("Prospetto di rimborso", _firm_bookmark);
set_print_zero(TRUE);
set_row(rw++,"");
set_row(rw++,"");
set_bookmark("Prospetto di rimborso", _firm_bookmark);
set_row(rw++, " PROSPETTO DI RIMBORSO");
set_row(rw++,"");