From d80f57214d3d045bbf9545ffd2d74ee83ee6791c Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 3 May 1995 08:26:55 +0000 Subject: [PATCH] Corretti errori MI717-718-719 git-svn-id: svn://10.65.10.50/trunk@1322 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg0400.cpp | 409 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 262 insertions(+), 147 deletions(-) diff --git a/cg/cg0400.cpp b/cg/cg0400.cpp index f025f0900..86f7c4e61 100755 --- a/cg/cg0400.cpp +++ b/cg/cg0400.cpp @@ -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[])