Nuove cazzopzioni per ricalcolo da stampa registri, perche' sia proprio

uguale identico preciso al frigorifero di merda anche negli errori


git-svn-id: svn://10.65.10.50/trunk@1043 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-02-28 10:16:56 +00:00
parent 0e94893908
commit c0c5742d3a
2 changed files with 62 additions and 22 deletions

View File

@ -48,6 +48,7 @@ bool TLiquidazione_app::user_create()
TDate printdate;
TString filename;
long ditta;
bool nocalc = FALSE;
_prind = NULL;
@ -83,14 +84,20 @@ bool TLiquidazione_app::user_create()
char rcl = *(subj.get(3));
_recalc_only = rcl == 'C';
_is_visliq = rcl == 'V';
_isregis = (rcl == 'l' || rcl == 'L'); // stampa per registri
// TBI usare S s per stampa senza ricalcolo
_isfinal = rcl == 'l'; // se l minuscolo, definitivo
// S/s = stampa senza ricalcolo (minuscolo = definitivo)
// L/l = stampa con ricalcolo se necessario (minuscolo = definitivo)
// C = solo ricalcolo
// V = stampa ed ev. ricalcolo per visualizzazione
// s o l minuscoli = registro bollato (setta B1)
_isregis = (rcl == 'l' || rcl == 'L' ||
rcl == 'S' || rcl == 's'); // stampa per registri
_isfinal = rcl == 'l' || rcl == 's'; // se l minuscolo, definitivo
nocalc = rcl == 'S' || rcl == 's';
printdate = subj.get(4);
filename = subj.get(5);
is_header = subj.items() == 6;
}
if(pnd) pnd->addstatus(1);
_rel = new TRelation(LF_MOV);
@ -208,10 +215,11 @@ bool TLiquidazione_app::user_create()
// calcola liquidazione
printer().setdate(printdate);
_recalc = needed;
_recalc = nocalc ? never : needed;
TApplication::set_firm(ditta);
if (!look_lia()) { end_wait(); return FALSE; }
if (!look_lia())
{ end_wait(); return FALSE; }
_nditte->zero();
_nditte_r->put("CODDITTA", ditta);
@ -663,7 +671,20 @@ bool TLiquidazione_app::set_liquidazione()
int cg4300(int argc, char* argv[])
{
TLiquidazione_app main_app;
main_app.run(argc, argv, "Liquidazione IVA");
TApplication::check_parameters(argc, argv);
const char* title = "Liquidazione IVA";
if (argc > 2)
{
if (strcmp(argv[2], "-S") == 0)
title = "Stampa liquidazione";
else if (strcmp(argv[2], "-C") == 0)
title = "Ricalcolo corrispettivi";
}
main_app.run(argc, argv, title);
return TRUE;
}

View File

@ -423,6 +423,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
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");
if (dok || sreg || rs8 || cmt) continue;
@ -434,13 +435,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
tipodoc == "IN" || tipodoc == "PG")
continue;
/*
* Fatture in ritardo vengono considerate solo in dichiarazione
* annuale
*/
if (_month != 13 && rcs.get_bool("RITFATT"))
continue;
/*
* check date: se si calcola l'acconto, solo da 1/12 a 20/12
*/
@ -461,6 +455,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
real asimp_iva = 0.0; // imposta acquisti sosp. imposta
real vsimp_imp = 0.0; // imponibile vendite sosp. imposta
real vsimp_iva = 0.0; // imposta vendite sosp. imposta
real rit_imp = 0.0; // imponibile fatture in ritardo
real rit_iva = 0.0; // IVA fatture in ritardo
TString codiva = _iva->get("CODTAB");
TString tipoiva = _iva->get("S1");
@ -507,7 +503,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
* In liq. annuale si totalizzano
* solo le stranezze che seguono
*/
if (month == 13)
if (_month == 13)
{
// si contano soltanto le vendite.
bool okc = tipomov == vendita;
@ -516,7 +512,11 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// oppure ...
bool cond2 = (rcs.get_bool("AUTOFATT") && tipoiva == "NS" && tipodoc != "AF" &&
rcs.get_bool("INTRACOM") && rcs.get_bool("VALINTRA"));
if (!(okc && (cond1 || cond2)))
/*
* Fatture in ritardo vengono considerate solo in dichiarazione
* annuale, ma vanno comunque sommate per i porci registri
*/
if (!(okc && (cond1 || cond2)) && !fattrit)
continue;
}
@ -525,14 +525,19 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
{
if (tipomov == vendita)
{
vsimp_imp = imponibile;
vsimp_iva = imposta;
vsimp_imp = imponibile;
vsimp_iva = imposta;
}
else
{
asimp_imp = imponibile;
asimp_iva = imposta;
asimp_imp = imponibile;
asimp_iva = imposta;
}
}
else if (fattrit && _month != 13)
{
rit_imp = imponibile;
rit_iva = imposta;
}
else // normale
{
@ -776,7 +781,15 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
/* i falsi corrispettivi */
real fci = _pim_r->get_real("R13");
real fcv = _pim_r->get_real("R14");
real fcv = _pim_r->get_real("R14");
/* le porche fatture in ritardo */
TToken_string fr(_pim_r->get("S1"));
real rti(fr.get(0));
real rtv(fr.get(1));
rti += rit_imp;
rtv += rit_iva;
if (tipomov == vendita)
{
@ -927,7 +940,13 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
_pim_r->put("I1", (long)tipomov);
_pim_r->put("B3", ivarimb ? "X" : "");
_pim_r->put("B4", _isricacq ? "X" : "");
_pim_r->put("S5", tipoiva);
_pim_r->put("S5", tipoiva);
// fatture in ritardo
fr.add(rti.string(), 0);
fr.add(rtv.string(), 1);
_pim_r->put("S1",fr);
_pim->rewrite();
}
while (_cur->next_match(LF_RMOVIVA));