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;
int _sospmsk, _tipoprog, _livelloprog, _tipo_aliq, _tipo_attiv, _annoiva, _i;
int _mese, _anno;
bool _st_inizio_anno;
TIva_array _iva_array;
TGen_array _gen_array;
bool _st_inizio_anno, _prima_pagina;
TIva_array _iva_array,_iva1_array;
TGen_array _gen_array,_gen1_array;
TString _cap,_cofi,_paiva,_ragsoc,_comunefis,_provfis,_viafis,_codivamsk,_codattmsk;
TString _datast;
Importi _mesi[13];
@ -132,6 +132,7 @@ public:
virtual bool user_create();
virtual bool user_destroy();
virtual bool set_print(int);
virtual void preprocess_header();
virtual bool preprocess_page(int,int);
virtual print_action postprocess_page(int,int);
@ -140,13 +141,13 @@ public:
void get_dati_ditta();
void setta_intestazione();
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();
const char* desc_attivita(const char*);
const char* desc_iva(const char*);
char look_lia(long ditta = 0l);
void look_pim();
void intestazione();
CG0400_application(){};
};
@ -205,7 +206,6 @@ bool CG0400_application::user_create()
{
_tabpim = new TTable(TAB_PIM);
_tabreg = new TTable(TAB_REG);
_tabais = new TTable("%AIS");
_tablia = new TTable("%LIA");
_anag = new TLocalisamfile(LF_ANAG);
@ -266,26 +266,37 @@ void CG0400_application::look_pim()
{
case acq_norm:
_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;
case vend_norm:
_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;
case bolle_doganali:
_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;
case acq_amm_ultdetr:
{
real detr = imponibile * real(0.06);
_iva_array.add_riga(tipo,imponibile,imposta,detr);
if (_st_inizio_anno && mese == _mese)
_iva1_array.add_riga(tipo,imponibile,imposta,detr);
}
break;
default:
_iva_array.add_riga(tipo,imponibile,imposta,ZERO);
default:
_iva_array.add_riga(tipo,imponibile,imposta,ZERO);
if (_st_inizio_anno && mese == _mese)
_iva1_array.add_riga(tipo,imponibile,imposta,ZERO);
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()
@ -468,7 +479,8 @@ bool CG0400_application::set_print(int m)
break;
default:
break;
}
}
TMask msk(masc);
if (msk.run() != K_ENTER) return FALSE;
@ -502,10 +514,12 @@ bool CG0400_application::set_print(int m)
_mese = msk.get_int(F_MESE);
_st_inizio_anno = msk.get_bool(F_STAMPA);
intestazione();
_prima_pagina = TRUE;
_iva_array.destroy();
_gen_array.destroy();
_iva1_array.destroy();
_gen_array.destroy();
_gen1_array.destroy();
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;
bool trovato = FALSE;
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)
trovato = TRUE;
else k++;
}
if (trovato)
{
TRiga_iva& riga = (TRiga_iva&)_iva_array[k];
TRiga_iva& riga = (TRiga_iva&)iva_array[k];
imp = riga._imponibile;
imps = riga._imposta;
det = riga._detrazione;
@ -559,84 +574,20 @@ bool CG0400_application::preprocess_page(int file, int counter)
{
case stampa:
{
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_array.items(); k++, r++)
{
TRiga_gen& riga = (TRiga_gen&)_gen_array[k];
set_row(r, "%-4s", (const char*)riga._codiva);
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();
if (!_st_inizio_anno)
prospetto_pagina(_gen_array,_iva_array);
else
{
if (_prima_pagina)
prospetto_pagina(_gen1_array,_iva1_array);
else
{
printer().formfeed();
prospetto_pagina(_gen_array,_iva_array);
}
}
}
break;
case visualizza:
{
if (counter)
@ -661,14 +612,154 @@ bool CG0400_application::preprocess_page(int file, int counter)
}
}
break;
default:
break;
}
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->put(COM_COM, cod);
@ -833,71 +924,95 @@ void CG0400_application::setta_intestazione()
set_header(++r, "@29gImponibile@60gImposta");
}
void CG0400_application::intestazione()
void CG0400_application::preprocess_header()
{
int soh = 1;
TString sep(132);
TString ragsoc(50);
TString attprev(5);
TString16 descf;
TLocalisamfile nditte(LF_NDITTE);
nditte.zero();
nditte.put(NDT_CODDITTA, get_firm());
if (nditte.read() == NOERR)
{
ragsoc = nditte.get(NDT_RAGSOC);
attprev = nditte.get(NDT_CODATTPREV);
}
TString80 descr = desc_attivita(attprev);
reset_header();
char f = look_lia();
if (f == 'T')
descf = " TRIMESTRALE";
else if (f == 'M')
descf = " MENSILE";
else descf = "";
sep << "Ditta " << get_firm();
sep << " " << ragsoc;
sep << " " << descf;
if (_tipo_lista == stampa)
{
int soh = 1;
TString sep(132);
TString ragsoc(50);
TString attprev(5);
TString16 descf;
TLocalisamfile nditte(LF_NDITTE);
nditte.zero();
nditte.put(NDT_CODDITTA, get_firm());
if (nditte.read() == NOERR)
{
ragsoc = nditte.get(NDT_RAGSOC);
attprev = nditte.get(NDT_CODATTPREV);
}
TString80 descr = desc_attivita(attprev);
reset_header();
char f = look_lia();
if (f == 'T')
descf = " TRIMESTRALE";
else if (f == 'M')
descf = " MENSILE";
else descf = "";
sep << "Ditta " << get_firm();
sep << " " << ragsoc;
sep << " " << descf;
sep.left_just(132);
set_header (soh++, (const char*) sep);
sep = "";
sep << "Data " << _datast;
sep << " Pag. @#";
sep.left_just(132);
set_header (soh++, (const char*) sep);
sep = "";
sep << "Data " << _datast;
sep << " Pag. @#";
sep.right_just(127);
sep.overwrite ("RIEPILOGO PROGRESSIVI");
set_header (soh++, (const char*)sep);
sep.fill('-');
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);
sep.right_just(127);
sep.overwrite ("RIEPILOGO PROGRESSIVI");
set_header (soh++, (const char*)sep);
sep.fill('-');
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)
{
switch (_tipo_lista)
{
case visualizza:
case stampa:
{
if (_i < 12) return REPEAT_PAGE;
else return NEXT_PAGE;
if (_st_inizio_anno)
if (_prima_pagina)
{
_prima_pagina = FALSE;
return REPEAT_PAGE;
}
else return NEXT_PAGE;
}
break;
default:
break;
case visualizza:
{
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[])