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; TDate printdate;
TString filename; TString filename;
long ditta; long ditta;
bool nocalc = FALSE;
_prind = NULL; _prind = NULL;
@ -83,9 +84,15 @@ bool TLiquidazione_app::user_create()
char rcl = *(subj.get(3)); char rcl = *(subj.get(3));
_recalc_only = rcl == 'C'; _recalc_only = rcl == 'C';
_is_visliq = rcl == 'V'; _is_visliq = rcl == 'V';
_isregis = (rcl == 'l' || rcl == 'L'); // stampa per registri // S/s = stampa senza ricalcolo (minuscolo = definitivo)
// TBI usare S s per stampa senza ricalcolo // L/l = stampa con ricalcolo se necessario (minuscolo = definitivo)
_isfinal = rcl == 'l'; // se l 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); printdate = subj.get(4);
filename = subj.get(5); filename = subj.get(5);
is_header = subj.items() == 6; is_header = subj.items() == 6;
@ -208,10 +215,11 @@ bool TLiquidazione_app::user_create()
// calcola liquidazione // calcola liquidazione
printer().setdate(printdate); printer().setdate(printdate);
_recalc = needed; _recalc = nocalc ? never : needed;
TApplication::set_firm(ditta); TApplication::set_firm(ditta);
if (!look_lia()) { end_wait(); return FALSE; } if (!look_lia())
{ end_wait(); return FALSE; }
_nditte->zero(); _nditte->zero();
_nditte_r->put("CODDITTA", ditta); _nditte_r->put("CODDITTA", ditta);
@ -663,7 +671,20 @@ bool TLiquidazione_app::set_liquidazione()
int cg4300(int argc, char* argv[]) int cg4300(int argc, char* argv[])
{ {
TLiquidazione_app main_app; 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; 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 cmt = !_cur->is_first_match(LF_RMOVIVA);
const bool sosp_imp = _reg->get_bool("B1"); const bool sosp_imp = _reg->get_bool("B1");
const TRectype& rcs = _cur->curr(LF_CAUSALI); const TRectype& rcs = _cur->curr(LF_CAUSALI);
const bool fattrit = rcs.get_bool("RITFATT");
if (dok || sreg || rs8 || cmt) continue; if (dok || sreg || rs8 || cmt) continue;
@ -434,13 +435,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
tipodoc == "IN" || tipodoc == "PG") tipodoc == "IN" || tipodoc == "PG")
continue; 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 * 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 asimp_iva = 0.0; // imposta acquisti sosp. imposta
real vsimp_imp = 0.0; // imponibile vendite sosp. imposta real vsimp_imp = 0.0; // imponibile vendite sosp. imposta
real vsimp_iva = 0.0; // imposta 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 codiva = _iva->get("CODTAB");
TString tipoiva = _iva->get("S1"); TString tipoiva = _iva->get("S1");
@ -507,7 +503,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
* In liq. annuale si totalizzano * In liq. annuale si totalizzano
* solo le stranezze che seguono * solo le stranezze che seguono
*/ */
if (month == 13) if (_month == 13)
{ {
// si contano soltanto le vendite. // si contano soltanto le vendite.
bool okc = tipomov == vendita; bool okc = tipomov == vendita;
@ -516,7 +512,11 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// oppure ... // oppure ...
bool cond2 = (rcs.get_bool("AUTOFATT") && tipoiva == "NS" && tipodoc != "AF" && bool cond2 = (rcs.get_bool("AUTOFATT") && tipoiva == "NS" && tipodoc != "AF" &&
rcs.get_bool("INTRACOM") && rcs.get_bool("VALINTRA")); 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; continue;
} }
@ -525,15 +525,20 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
{ {
if (tipomov == vendita) if (tipomov == vendita)
{ {
vsimp_imp = imponibile; vsimp_imp = imponibile;
vsimp_iva = imposta; vsimp_iva = imposta;
} }
else else
{ {
asimp_imp = imponibile; asimp_imp = imponibile;
asimp_iva = imposta; asimp_iva = imposta;
} }
} }
else if (fattrit && _month != 13)
{
rit_imp = imponibile;
rit_iva = imposta;
}
else // normale else // normale
{ {
@ -778,6 +783,14 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
real fci = _pim_r->get_real("R13"); 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) if (tipomov == vendita)
{ {
fsi += vsimp_imp; fsi += vsimp_imp;
@ -928,6 +941,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
_pim_r->put("B3", ivarimb ? "X" : ""); _pim_r->put("B3", ivarimb ? "X" : "");
_pim_r->put("B4", _isricacq ? "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(); _pim->rewrite();
} }
while (_cur->next_match(LF_RMOVIVA)); while (_cur->next_match(LF_RMOVIVA));