Corretti errori MI717-718-719

git-svn-id: svn://10.65.10.50/trunk@1322 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1995-05-03 08:26:55 +00:00
parent 46bb7f8543
commit d80f57214d

View File

@ -119,9 +119,9 @@ class CG0400_application : public TPrintapp
TDate _data; TDate _data;
int _sospmsk, _tipoprog, _livelloprog, _tipo_aliq, _tipo_attiv, _annoiva, _i; int _sospmsk, _tipoprog, _livelloprog, _tipo_aliq, _tipo_attiv, _annoiva, _i;
int _mese, _anno; int _mese, _anno;
bool _st_inizio_anno; bool _st_inizio_anno, _prima_pagina;
TIva_array _iva_array; TIva_array _iva_array,_iva1_array;
TGen_array _gen_array; TGen_array _gen_array,_gen1_array;
TString _cap,_cofi,_paiva,_ragsoc,_comunefis,_provfis,_viafis,_codivamsk,_codattmsk; TString _cap,_cofi,_paiva,_ragsoc,_comunefis,_provfis,_viafis,_codivamsk,_codattmsk;
TString _datast; TString _datast;
Importi _mesi[13]; Importi _mesi[13];
@ -132,6 +132,7 @@ public:
virtual bool user_create(); virtual bool user_create();
virtual bool user_destroy(); virtual bool user_destroy();
virtual bool set_print(int); virtual bool set_print(int);
virtual void preprocess_header();
virtual bool preprocess_page(int,int); virtual bool preprocess_page(int,int);
virtual print_action postprocess_page(int,int); virtual print_action postprocess_page(int,int);
@ -140,13 +141,13 @@ public:
void get_dati_ditta(); void get_dati_ditta();
void setta_intestazione(); void setta_intestazione();
void calcola_totali(real&,real&); void calcola_totali(real&,real&);
void cerca_tipo(tiporec, real&, real&, real&); void cerca_tipo(TIva_array&, tiporec, real&, real&, real&);
void prospetto_pagina(TGen_array&, TIva_array&);
int stampa_intestazione_ditta(); int stampa_intestazione_ditta();
const char* desc_attivita(const char*); const char* desc_attivita(const char*);
const char* desc_iva(const char*); const char* desc_iva(const char*);
char look_lia(long ditta = 0l); char look_lia(long ditta = 0l);
void look_pim(); void look_pim();
void intestazione();
CG0400_application(){}; CG0400_application(){};
}; };
@ -205,7 +206,6 @@ bool CG0400_application::user_create()
{ {
_tabpim = new TTable(TAB_PIM); _tabpim = new TTable(TAB_PIM);
_tabreg = new TTable(TAB_REG); _tabreg = new TTable(TAB_REG);
_tabais = new TTable("%AIS"); _tabais = new TTable("%AIS");
_tablia = new TTable("%LIA"); _tablia = new TTable("%LIA");
_anag = new TLocalisamfile(LF_ANAG); _anag = new TLocalisamfile(LF_ANAG);
@ -266,26 +266,37 @@ void CG0400_application::look_pim()
{ {
case acq_norm: case acq_norm:
_gen_array.add_riga(codiva,ZERO,ZERO,imponibile,imposta,ZERO,ZERO); _gen_array.add_riga(codiva,ZERO,ZERO,imponibile,imposta,ZERO,ZERO);
if (_st_inizio_anno && mese == _mese) //lo metto in un array a parte
_gen1_array.add_riga(codiva,ZERO,ZERO,imponibile,imposta,ZERO,ZERO);
break; break;
case vend_norm: case vend_norm:
_gen_array.add_riga(codiva,imponibile,imposta,ZERO,ZERO,ZERO,ZERO); _gen_array.add_riga(codiva,imponibile,imposta,ZERO,ZERO,ZERO,ZERO);
if (_st_inizio_anno && mese == _mese) //lo metto in un array a parte
_gen1_array.add_riga(codiva,imponibile,imposta,ZERO,ZERO,ZERO,ZERO);
break; break;
case bolle_doganali: case bolle_doganali:
_gen_array.add_riga(codiva,ZERO,ZERO,ZERO,ZERO,imponibile,imposta); _gen_array.add_riga(codiva,ZERO,ZERO,ZERO,ZERO,imponibile,imposta);
if (_st_inizio_anno && mese == _mese)
_gen1_array.add_riga(codiva,ZERO,ZERO,ZERO,ZERO,imponibile,imposta);
break; break;
case acq_amm_ultdetr: case acq_amm_ultdetr:
{ {
real detr = imponibile * real(0.06); real detr = imponibile * real(0.06);
_iva_array.add_riga(tipo,imponibile,imposta,detr); _iva_array.add_riga(tipo,imponibile,imposta,detr);
if (_st_inizio_anno && mese == _mese)
_iva1_array.add_riga(tipo,imponibile,imposta,detr);
} }
break; break;
default: default:
_iva_array.add_riga(tipo,imponibile,imposta,ZERO); _iva_array.add_riga(tipo,imponibile,imposta,ZERO);
if (_st_inizio_anno && mese == _mese)
_iva1_array.add_riga(tipo,imponibile,imposta,ZERO);
break; break;
} }
} }
} }
_gen_array.sort(compare_rows); // ordinamento per codice iva _gen_array.sort(compare_rows); // ordinamento per codice iva
_gen1_array.sort(compare_rows); // ordinamento per codice iva
} }
void CG0400_application::cerca_i_pim() void CG0400_application::cerca_i_pim()
@ -468,7 +479,8 @@ bool CG0400_application::set_print(int m)
break; break;
default: default:
break; break;
} }
TMask msk(masc); TMask msk(masc);
if (msk.run() != K_ENTER) return FALSE; if (msk.run() != K_ENTER) return FALSE;
@ -502,10 +514,12 @@ bool CG0400_application::set_print(int m)
_mese = msk.get_int(F_MESE); _mese = msk.get_int(F_MESE);
_st_inizio_anno = msk.get_bool(F_STAMPA); _st_inizio_anno = msk.get_bool(F_STAMPA);
intestazione(); _prima_pagina = TRUE;
_iva_array.destroy(); _iva_array.destroy();
_gen_array.destroy(); _iva1_array.destroy();
_gen_array.destroy();
_gen1_array.destroy();
look_pim(); look_pim();
} }
@ -530,21 +544,22 @@ void CG0400_application::calcola_totali(real& imp, real& imps)
} }
} }
void CG0400_application::cerca_tipo(tiporec t, real& imp, real& imps, real& det) void CG0400_application::cerca_tipo(TIva_array& iva_array,tiporec t,
real& imp, real& imps, real& det)
{ {
int k = 0; int k = 0;
bool trovato = FALSE; bool trovato = FALSE;
imp = imps = det = ZERO; imp = imps = det = ZERO;
while ( k < _iva_array.items() && !trovato) while ( k < iva_array.items() && !trovato)
{ {
TRiga_iva& riga = (TRiga_iva&)_iva_array[k]; TRiga_iva& riga = (TRiga_iva&)iva_array[k];
if (t == riga._tipo) if (t == riga._tipo)
trovato = TRUE; trovato = TRUE;
else k++; else k++;
} }
if (trovato) if (trovato)
{ {
TRiga_iva& riga = (TRiga_iva&)_iva_array[k]; TRiga_iva& riga = (TRiga_iva&)iva_array[k];
imp = riga._imponibile; imp = riga._imponibile;
imps = riga._imposta; imps = riga._imposta;
det = riga._detrazione; det = riga._detrazione;
@ -559,84 +574,20 @@ bool CG0400_application::preprocess_page(int file, int counter)
{ {
case stampa: case stampa:
{ {
real t_impov,t_imposv,t_impoa,t_imposa,t_impobd,t_imposbd; if (!_st_inizio_anno)
t_impov = t_imposv = t_impoa = t_imposa = t_impobd = t_imposbd = ZERO; prospetto_pagina(_gen_array,_iva_array);
int r = 1; else
set_row(++r, "Cod.@40gVENDITE@77gACQUISTI@113gIMPORTAZIONI"); {
set_row(++r, "IVA Descrizione@29gImponibile@48gImposta@67gImponibile@86gImposta@105gImponibile@124gImposta"); if (_prima_pagina)
r+=2; prospetto_pagina(_gen1_array,_iva1_array);
for (int k = 0; k < _gen_array.items(); k++, r++) else
{ {
TRiga_gen& riga = (TRiga_gen&)_gen_array[k]; printer().formfeed();
set_row(r, "%-4s", (const char*)riga._codiva); prospetto_pagina(_gen_array,_iva_array);
TString80 descr = desc_iva(riga._codiva); }
set_row(r, "@5g%-.18s",(const char*)descr); }
if (riga._impoven != ZERO)
set_row(r, "@24g%r", &riga._impoven);
if (riga._imposven != ZERO)
set_row(r, "@40g%r", &riga._imposven);
if (riga._impoacq != ZERO)
set_row(r, "@62g%r", &riga._impoacq);
if (riga._imposacq != ZERO)
set_row(r, "@78g%r", &riga._imposacq);
if (riga._impobd != ZERO)
set_row(r, "@100g%r", &riga._impobd);
if (riga._imposbd != ZERO)
set_row(r, "@116g%r", &riga._imposbd);
t_impov += riga._impoven;
t_imposv += riga._imposven;
t_impoa += riga._impoacq;
t_imposa += riga._imposacq;
t_impobd += riga._impobd;
t_imposbd += riga._imposbd;
}
_gen_array.destroy();
r+=2;
set_row(r++, "Totale@24g%r@40g%r@62g%r@78g%r@100g%r@116g%r",
&t_impov,&t_imposv,&t_impoa,&t_imposa,&t_impobd,&t_imposbd);
r++;
real im, is, d; //inizializzati in cerca_tipo()
cerca_tipo(acq_ind_op_es,im,is,d);
t_impoa += im;
t_imposa += is;
set_row(r++, "Totali acquisti indeducibili su ricavi esenti@62g%r@78g%r", &im, &is);
cerca_tipo(acq_ind_art_19,im,is,d);
t_impoa += im;
t_imposa += is;
set_row(r++, "Totali acquisti indeducibili per ART.19@62g%r@78g%r", &im, &is);
cerca_tipo(acq_ind_pass_int,im,is,d);
t_impoa += im;
t_imposa += is;
set_row(r++, "Totali acquisti indeducibili per passaggi interni@62g%r@78g%r", &im, &is);
r+=2;
set_row(r++, "Totale generale IVA@24g%r@40g%r@62g%r@78g%r@100g%r@116g%r",
&t_impov,&t_imposv,&t_impoa,&t_imposa,&t_impobd,&t_imposbd);
r+=3;
set_row(r++, "ALTRI DATI RELATIVI ALLA DICHIARAZIONE@54gImponibile@74gImposta@91gDetrazione");
r++;
cerca_tipo(acq_simp,im,is,d);
set_row(r++, "Acquisti in sospensione d'imposta@49g%r@66g%r", &im, &is);
cerca_tipo(vend_simp,im,is,d);
set_row(r++, "Vendite in sospensione d'imposta@49g%r@66g%r", &im, &is);
cerca_tipo(cess_amm,im,is,d);
set_row(r++, "Cessione beni ammortizzabili@49g%r@66g%r", &im, &is);
cerca_tipo(acq_beni_riv,im,is,d);
set_row(r++, "Acquisto beni destinati alla rivendita@49g%r@66g%r", &im, &is);
cerca_tipo(acq_beni_ammort,im,is,d);
set_row(r++, "Acquisto beni ammortizzabili iva detraibile@49g%r@66g%r", &im, &is);
cerca_tipo(acq_beni_ammort_nd,im,is,d);
set_row(r++, "Acquisto beni ammortizzabili iva non detraibile@49g%r@66g%r", &im, &is);
cerca_tipo(acq_beni_leasing,im,is,d);
set_row(r++, "Altri beni strumentali acquisiti in leasing@49g%r@66g%r", &im, &is);
cerca_tipo(acq_amm_ultdetr,im,is,d);
set_row(r++, "Acquisto beni soggetti a detrazione (6%%)@49g%r@66g%r@86g%r", &im, &is, &d);
_iva_array.destroy();
} }
break; break;
case visualizza: case visualizza:
{ {
if (counter) if (counter)
@ -661,14 +612,154 @@ bool CG0400_application::preprocess_page(int file, int counter)
} }
} }
break; break;
default: default:
break; break;
} }
return TRUE; return TRUE;
} }
TRectype& look_com (const char * cod, TLocalisamfile *comuni) void CG0400_application::prospetto_pagina(TGen_array& gen, TIva_array& iva)
{
real t_impov,t_imposv,t_impoa,t_imposa,t_impobd,t_imposbd;
t_impov = t_imposv = t_impoa = t_imposa = t_impobd = t_imposbd = ZERO;
int r = 1;
set_row(++r, "Cod.@40gVENDITE@77gACQUISTI@113gIMPORTAZIONI");
set_row(++r, "IVA Descrizione@29gImponibile@48gImposta@67gImponibile@86gImposta@105gImponibile@124gImposta");
r+=2;
for (int k = 0; k < gen.items(); k++)
{
TRiga_gen& riga = (TRiga_gen&)gen[k];
TString80 descr = desc_iva(riga._codiva);
if (riga._impoven != ZERO)
set_row(r, "@24g%r", &riga._impoven);
if (riga._imposven != ZERO)
set_row(r, "@40g%r", &riga._imposven);
if (riga._impoacq != ZERO)
set_row(r, "@62g%r", &riga._impoacq);
if (riga._imposacq != ZERO)
set_row(r, "@78g%r", &riga._imposacq);
if (riga._impobd != ZERO)
set_row(r, "@100g%r", &riga._impobd);
if (riga._imposbd != ZERO)
set_row(r, "@116g%r", &riga._imposbd);
if (riga._impoven != ZERO || riga._imposven != ZERO || riga._impoacq != ZERO
|| riga._imposacq != ZERO || riga._impobd != ZERO || riga._imposbd != ZERO)
{
set_row(r, "@0g%-4s", (const char*)riga._codiva);
set_row(r, "@5g%-.18s", (const char*)descr);
r++;
}
t_impov += riga._impoven;
t_imposv += riga._imposven;
t_impoa += riga._impoacq;
t_imposa += riga._imposacq;
t_impobd += riga._impobd;
t_imposbd += riga._imposbd;
}
gen.destroy();
r+=2;
set_row(r++, "Totale@24g%r@40g%r@62g%r@78g%r@100g%r@116g%r",
&t_impov,&t_imposv,&t_impoa,&t_imposa,&t_impobd,&t_imposbd);
r++;
real im, is, d; //inizializzati in cerca_tipo()
cerca_tipo(iva,acq_ind_op_es,im,is,d);
t_impoa += im;
t_imposa += is;
bool st_riga = FALSE;
if (im != ZERO || is != ZERO)
{
set_row(r++, "Totali acquisti indeducibili su ricavi esenti@62g%r@78g%r", &im, &is);
st_riga = TRUE;
}
cerca_tipo(iva,acq_ind_art_19,im,is,d);
t_impoa += im;
t_imposa += is;
if (im != ZERO || is != ZERO)
{
set_row(r++, "Totali acquisti indeducibili per ART.19@62g%r@78g%r", &im, &is);
st_riga = TRUE;
}
cerca_tipo(iva,acq_ind_pass_int,im,is,d);
t_impoa += im;
t_imposa += is;
if (im != ZERO || is != ZERO)
{
set_row(r++, "Totali acquisti indeducibili per passaggi interni@62g%r@78g%r", &im, &is);
st_riga = TRUE;
}
r+=2;
if (st_riga)
set_row(r++, "Totale generale IVA@24g%r@40g%r@62g%r@78g%r@100g%r@116g%r",
&t_impov,&t_imposv,&t_impoa,&t_imposa,&t_impobd,&t_imposbd);
r+=3;
int kk = r;
/*
set_row(r++, "ALTRI DATI RELATIVI ALLA DICHIARAZIONE@54gImponibile@74gImposta@91gDetrazione");
r++;
*/
r+=2;
st_riga = FALSE;
cerca_tipo(iva,acq_simp,im,is,d);
if (im != ZERO || is != ZERO)
{
set_row(r++, "Acquisti in sospensione d'imposta@49g%r@66g%r", &im, &is);
st_riga = TRUE;
}
cerca_tipo(iva,vend_simp,im,is,d);
if (im != ZERO || is != ZERO)
{
set_row(r++, "Vendite in sospensione d'imposta@49g%r@66g%r", &im, &is);
st_riga = TRUE;
}
cerca_tipo(iva,cess_amm,im,is,d);
if (im != ZERO || is != ZERO)
{
set_row(r++, "Cessione beni ammortizzabili@49g%r@66g%r", &im, &is);
st_riga = TRUE;
}
cerca_tipo(iva,acq_beni_riv,im,is,d);
if (im != ZERO || is != ZERO)
{
set_row(r++, "Acquisto beni destinati alla rivendita@49g%r@66g%r", &im, &is);
st_riga = TRUE;
}
cerca_tipo(iva,acq_beni_ammort,im,is,d);
if (im != ZERO || is != ZERO)
{
set_row(r++, "Acquisto beni ammortizzabili iva detraibile@49g%r@66g%r", &im, &is);
st_riga = TRUE;
}
cerca_tipo(iva,acq_beni_ammort_nd,im,is,d);
if (im != ZERO || is != ZERO)
{
set_row(r++, "Acquisto beni ammortizzabili iva non detraibile@49g%r@66g%r", &im, &is);
st_riga = TRUE;
}
cerca_tipo(iva,acq_beni_leasing,im,is,d);
if (im != ZERO || is != ZERO)
{
set_row(r++, "Altri beni strumentali acquisiti in leasing@49g%r@66g%r", &im, &is);
st_riga = TRUE;
}
cerca_tipo(iva,acq_amm_ultdetr,im,is,d);
if (im != ZERO || is != ZERO)
{
set_row(r++, "Acquisto beni soggetti a detrazione (6%%)@49g%r@66g%r@86g%r", &im, &is, &d);
st_riga = TRUE;
}
if (st_riga)
set_row(kk, "ALTRI DATI RELATIVI ALLA DICHIARAZIONE@54gImponibile@74gImposta@91gDetrazione");
iva.destroy();
}
TRectype& look_com (const char* cod, TLocalisamfile *comuni)
{ {
comuni->zero(); comuni->zero();
comuni->put(COM_COM, cod); comuni->put(COM_COM, cod);
@ -833,71 +924,95 @@ void CG0400_application::setta_intestazione()
set_header(++r, "@29gImponibile@60gImposta"); set_header(++r, "@29gImponibile@60gImposta");
} }
void CG0400_application::intestazione() void CG0400_application::preprocess_header()
{ {
int soh = 1; if (_tipo_lista == stampa)
TString sep(132); {
TString ragsoc(50); int soh = 1;
TString attprev(5); TString sep(132);
TString16 descf; TString ragsoc(50);
TString attprev(5);
TLocalisamfile nditte(LF_NDITTE); TString16 descf;
nditte.zero();
nditte.put(NDT_CODDITTA, get_firm()); TLocalisamfile nditte(LF_NDITTE);
if (nditte.read() == NOERR) nditte.zero();
{ nditte.put(NDT_CODDITTA, get_firm());
ragsoc = nditte.get(NDT_RAGSOC); if (nditte.read() == NOERR)
attprev = nditte.get(NDT_CODATTPREV); {
} ragsoc = nditte.get(NDT_RAGSOC);
attprev = nditte.get(NDT_CODATTPREV);
TString80 descr = desc_attivita(attprev); }
reset_header(); TString80 descr = desc_attivita(attprev);
char f = look_lia(); reset_header();
if (f == 'T')
descf = " TRIMESTRALE"; char f = look_lia();
else if (f == 'M') if (f == 'T')
descf = " MENSILE"; descf = " TRIMESTRALE";
else descf = ""; else if (f == 'M')
descf = " MENSILE";
sep << "Ditta " << get_firm(); else descf = "";
sep << " " << ragsoc;
sep << " " << descf; sep << "Ditta " << get_firm();
sep << " " << ragsoc;
sep << " " << descf;
sep.left_just(132); sep.left_just(132);
set_header (soh++, (const char*) sep); set_header (soh++, (const char*) sep);
sep = ""; sep = "";
sep << "Data " << _datast; sep << "Data " << _datast;
sep << " Pag. @#"; sep << " Pag. @#";
sep.right_just(127); sep.right_just(127);
sep.overwrite ("RIEPILOGO PROGRESSIVI"); sep.overwrite ("RIEPILOGO PROGRESSIVI");
set_header (soh++, (const char*)sep); set_header (soh++, (const char*)sep);
sep.fill('-'); sep.fill('-');
set_header (soh++, (const char *) sep); set_header (soh++, (const char *) sep);
set_header (soh++, "Riepilogo progressivi IVA del periodo %s %d Cod. Att. %s %s", itom(_mese), _anno, (const char*) attprev, (const char*) descr); /*
set_header (soh++, (const char *) sep); set_header (soh++, "Riepilogo progressivi IVA del periodo %s %d Cod. Att. %s %s", itom(_mese), _anno, (const char*) attprev, (const char*) descr);
set_header (soh++, (const char *) sep);
*/
if (_st_inizio_anno)
{
if (_prima_pagina)
set_header(soh++, "Riepilogo progressivi IVA del periodo %s %d Cod. Att. %s %s", itom(_mese), _anno, (const char*) attprev, (const char*) descr);
else set_header(soh++, "Riepilogo progressivi IVA al Mese di: %s %d Cod. Att. %s %s", itom(_mese), _anno, (const char*) attprev, (const char*) descr);
}
else set_header (soh++, "Riepilogo progressivi IVA del periodo %s %d Cod. Att. %s %s", itom(_mese), _anno, (const char*) attprev, (const char*) descr);
set_header (soh, (const char *) sep);
}
} }
print_action CG0400_application::postprocess_page(int file, int counter) print_action CG0400_application::postprocess_page(int file, int counter)
{ {
switch (_tipo_lista) switch (_tipo_lista)
{ {
case visualizza: case stampa:
{ {
if (_i < 12) return REPEAT_PAGE; if (_st_inizio_anno)
else return NEXT_PAGE; if (_prima_pagina)
{
_prima_pagina = FALSE;
return REPEAT_PAGE;
}
else return NEXT_PAGE;
} }
break; break;
case visualizza:
default: {
break; if (_i < 12) return REPEAT_PAGE;
else return NEXT_PAGE;
} }
return NEXT_PAGE; break;
default:
break;
}
return NEXT_PAGE;
} }
int cg0400(int argc,char* argv[]) int cg0400(int argc,char* argv[])