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 DELDEB 15 // righe tabulato deleghe ditte a debito
#define DELCRED 16 // header tabulato deleghe ditte a credito #define DELCRED 16 // header tabulato deleghe ditte a credito
#define DELEGA 17 // descrizione versamenti #define DELEGA 17 // descrizione versamenti
#define PIM_HEAD 18 // bytes sprecati per far vedere l'intestazione pim
// ............................................................... // ...............................................................
// support structs // support structs
@ -429,6 +430,7 @@ public:
void set_plm(_DescrItem& d); void set_plm(_DescrItem& d);
bool set_annual(_DescrItem& d); bool set_annual(_DescrItem& d);
void set_grand(_DescrItem& d); void set_grand(_DescrItem& d);
void set_pim_head();
// cercapalle in tabelle con opzione di creazione se serve // cercapalle in tabelle con opzione di creazione se serve
bool look_pim(int m, const char* a, const char* r, const char* cr, 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_b2 = 0.0;
real esenti_b3 = 0.0; real esenti_b3 = 0.0;
real esenti_b14 = 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_CEE = 0.0;
real corr_noCEE = 0.0; real corr_noCEE = 0.0;
real acq_CEE = 0.0; real acq_CEE = 0.0;
@ -558,7 +558,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// autofatture art. 17 per non residenti, con trattamento // autofatture art. 17 per non residenti, con trattamento
// speciale in liquidazione annuale // speciale in liquidazione annuale
bool autodafe = (tipodoc == "AF" && tipocr == 4); 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 * puo' capitare per motivi brutalmente prassici
* SENSU Sergio 1995, Guido * SENSU Sergio 1995, Guido
@ -631,14 +634,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// Altre cose di cui tener conto // Altre cose di cui tener conto
if (tipomov == acquisto && (tipocr == 1 || tipocr == 5)) if (tipomov == acquisto && (tipocr == 1 || tipocr == 5))
/* /*
* Acquisto beni per rivendita: sono comunque sommati, ma * Acquisto beni per rivendita
* vengono considerati in ventilazione solo se l'apposito
* parametro ditta e' settato, piu' altre condizioni (vedi
* recalc_ventilation() for spulcing)
*/ */
{ {
acq_riv += imponibile; acq_riv += imponibile;
acq_riv_iva += imposta; acq_riv_iva += imposta;
was_riv = TRUE;
} }
else if (tipomov == acquisto && tipocr == 2 && tipodet == 0) 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 // operazioni per calcolo rimborso infracazzuale
// Scudler 1995 // 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) if (ivarimb)
{ {
bool ok = _isagricolo ? tipoagr == 2 : FALSE; 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 // se e' il caso sommare esenti per rimborso
if (isrimbinfr) if (isrimbinfr)
nonimp += imponibile; esni_rimb += imponibile;
} }
else if (tipoes_a == 14) else if (tipoes_a == 14)
esenti_b14 += imponibile; esenti_b14 += imponibile;
@ -738,7 +743,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// non imponibili per rimborso // non imponibili per rimborso
if (tipoiva == "NI" && tipomov == vendita && isrimbinfr) if (tipoiva == "NI" && tipomov == vendita && isrimbinfr)
nonimp += imponibile; esni_rimb += imponibile;
// bolle doganali // bolle doganali
if (tipodoc == "BD") 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 imp = _pim->get_real("R0"); // imponibile
real ivp = _pim->get_real("R1"); // IVA su imp. real ivp = _pim->get_real("R1"); // IVA su imp.
real lor = _pim->get_real("R2"); // lordo real lor = _pim->get_real("R2"); // lordo
/* /*
* le maledette fatture con scontrino sono sul registro dei * le maledette fatture con scontrino sono sul registro dei
* corrispettivi, ma vanno riportate nelle vendite in stampa; * 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 ifs = _pim->get_real("R5"); // imponibile fatture con scontrino
real vfs = _pim->get_real("R6"); // IVA fatt. con scontrino real vfs = _pim->get_real("R6"); // IVA fatt. con scontrino
/* /*
* le maledette autofatture non residenti art. 17 * le maledette autofatture non residenti art. 17
* vedi al calcolo if (autodafe) si tengono da parte * 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 bdi = _pim->get_real("R9");
real bdv = _pim->get_real("R10"); real bdv = _pim->get_real("R10");
/* i falsi corrispettivi */ /* i luridi falsi corrispettivi */
real fci = _pim->get_real("R13"); real fci = _pim->get_real("R13");
real fcv = _pim->get_real("R14"); 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 rti(fr.get(0));
real rtv(fr.get(1)); real rtv(fr.get(1));
/* le stramadonne delle cazzate di corrispettivi gia' scorporati /* la stramadonna dei corrispettivi gia' scorporati */
che servono all'Enrica e non a me */
TToken_string cs(_pim->get("S2")); TToken_string cs(_pim->get("S2"));
real csi(cs.get(0)); real csi(cs.get(0));
real csv(cs.get(1)); 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 * non sono corrispettivi. Ci si potrebbe domandare
* se gli altri corrispettivi sono corrispettivi o * se gli altri corrispettivi sono corrispettivi o
* no; ebbene, gli altri corrispettivi risultano * no; ebbene, gli altri corrispettivi risultano
* fortunatamente essere corrispettivi. * fortunatamente essere corrispettivi, a meno di
* indicazioni contrarie.
*/ */
if (tipodoc == "CR" || tipodoc == "RF" || tipodoc == "SC") if (tipodoc == "CR" || tipodoc == "RF" || tipodoc == "SC")
{ {
@ -980,11 +987,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
vendite += rr; vendite += rr;
add_vendite(month, reg, tipodet, rr); add_vendite(month, reg, tipodet, rr);
} }
if (liq)
{
// vendite -= imponibile;
// vendite_iva -= imposta;
}
imp -= imponibile; imp -= imponibile;
ivp -= imposta; ivp -= imposta;
lor -= imponibile + imposta; lor -= imponibile + imposta;
@ -1052,12 +1054,13 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
_pim->put("R14",fcv); _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("R11",fsi);
_pim->put("R12",fsv); _pim->put("R12",fsv);
_pim->put("I1", (long)tipomov); _pim->put("I1", (long)tipomov);
_pim->put("B3", ivarimb ? "X" : ""); _pim->put("B3", ivarimb ? "X" : "");
_pim->put("B4", _isricacq ? "X" : ""); _pim->put("B4", _isricacq && was_riv? "X" : "");
_pim->put("S5", tipoiva); _pim->put("S5", tipoiva);
// fatture in ritardo // fatture in ritardo
@ -1065,16 +1068,52 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
fr.add(rtv.string(), 1); fr.add(rtv.string(), 1);
_pim->put("S1",fr); _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(csi.string(), 0);
cs.add(csv.string(), 0); cs.add(csv.string(), 1);
_pim->put("S2",cs); _pim->put("S2",cs);
_pim->rewrite(); _pim->rewrite();
} }
while (_cur->next_match(LF_RMOVIVA)); while (_cur->next_match(LF_RMOVIVA));
} } // fine calcolo progressivi IVA
// calcolati tutti i movimenti e aggiornati i pim /*
* 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 * 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("R5", esenti_b2);
_pum->put("R6", esenti_b3); _pum->put("R6", esenti_b3);
_pum->put("R7", esenti_b14); _pum->put("R7", esenti_b14);
_pum->put("R12", nonimp); _pum->put("R12", esni_rimb);
_pam->put("R0", acquisti); _pam->put("R0", acquisti);
_pam->put("R1", vendite); _pam->put("R1", vendite);
_pam->put("R6", assp_imp); _pam->put("R6", assp_imp);

View File

@ -11,6 +11,7 @@
// flags per annuale // flags per annuale
#define IS_PRORATA 0x0001 #define IS_PRORATA 0x0001
// minchietta per prospetto ventilazione // minchietta per prospetto ventilazione
class _vDesc : public TObject class _vDesc : public TObject
{ {
@ -45,6 +46,9 @@ void TLiquidazione_app::set_page(int file, int cnt)
case PIM_ROW: case PIM_ROW:
set_pim(d); set_pim(d);
break; break;
case PIM_HEAD:
set_pim_head();
break;
case MISC_LIQ: case MISC_LIQ:
set_pumpam(d); set_pumpam(d);
break; break;
@ -362,10 +366,17 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
// descrittore riga autodafe' // descrittore riga autodafe'
_DescrItem* ads = NULL; _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) while ((tmpatt = atts.get()) != NULL)
{ {
TString att(tmpatt); TString att(tmpatt);
for (_pim->first(); !_pim->eof(); _pim->next()) for (_pim->first(); !_pim->eof(); _pim->next())
{ {
_DescrItem* d = NULL; _DescrItem* d = NULL;
@ -981,6 +992,15 @@ void TLiquidazione_app::set_plafond(_DescrItem& d)
set_auto_ff(); 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) void TLiquidazione_app::set_pim(_DescrItem& d)
{ {
int rw = 1; int rw = 1;
@ -994,16 +1014,10 @@ void TLiquidazione_app::set_pim(_DescrItem& d)
d._s2 = _iva->get("S0"); d._s2 = _iva->get("S0");
} }
if (d._f0) // e' il primo if (d._f0) // e' il primo: non fa piu' nulla perche' l'intestazione
{ // viene fatta comunque da set_pim_head
// 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++,"");
}
set_row(rw++,"%4s %-20s@25g%r@41g%r@58g%r@74g%r@91g%r@107g%r", set_row(rw++,"%4s %-20s@25g%r@41g%r@58g%r@74g%r@91g%r@107g%r",
(const char*)d._s1, (const char*)d._s1,
(const char*)d._s2, (const char*)d._s2,
@ -1061,13 +1075,6 @@ void TLiquidazione_app::set_plm(_DescrItem& d)
&acq_pint_iva); &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 tot1 = d._r7 + d._r4 + d._r9 + acq_pint;
real tot2 = d._r8 + d._r5 + d._r10 + acq_pint_iva; real tot2 = d._r8 + d._r5 + d._r10 + acq_pint_iva;
@ -1202,11 +1209,11 @@ void TLiquidazione_app::set_pumpam(_DescrItem& d)
"@77gimposta@91gdetrazione"); "@77gimposta@91gdetrazione");
set_row(4,""); set_row(4,"");
} }
else if (!d._f1) else /* if (!d._f1) */
set_row(1,""); set_row(1,"");
// form feed // 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) void TLiquidazione_app::set_grand(_DescrItem& d)
@ -1344,11 +1351,12 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
if (di._flags == RIMBORSO) if (di._flags == RIMBORSO)
{ {
set_bookmark("Prospetto di rimborso", _firm_bookmark);
set_print_zero(TRUE); set_print_zero(TRUE);
set_row(rw++,""); set_row(rw++,"");
set_row(rw++,""); set_row(rw++,"");
set_bookmark("Prospetto di rimborso", _firm_bookmark);
set_row(rw++, " PROSPETTO DI RIMBORSO"); set_row(rw++, " PROSPETTO DI RIMBORSO");
set_row(rw++,""); set_row(rw++,"");