From 581fbefbc0d6c5ed2d141ee3d792e862903fb5f5 Mon Sep 17 00:00:00 2001 From: nik Date: Tue, 20 Feb 1996 09:25:35 +0000 Subject: [PATCH] Corretto errore riepilogativo per non movimentati git-svn-id: svn://10.65.10.50/trunk@2615 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg4400.cpp | 401 +++++++++++++++++++++++++++----------------------- 1 file changed, 214 insertions(+), 187 deletions(-) diff --git a/cg/cg4400.cpp b/cg/cg4400.cpp index 75a24194e..77ff1c969 100755 --- a/cg/cg4400.cpp +++ b/cg/cg4400.cpp @@ -1375,7 +1375,7 @@ messaggio CG4400_application::controlla_b0() } return B0_settato; } -***/ +****/ messaggio CG4400_application::controlla_liquidazione() { @@ -1394,7 +1394,7 @@ messaggio CG4400_application::controlla_liquidazione() if (_tipo_riepilogativo == ' ' || _tipo_riepilogativo == 'P') { - if (_frequiva == 'T') //nella tabella LIM ho solo i mesi 3, 6, 9, 12 + if (_frequiva == 'T') //la LIM esiste solo per i mesi 3, 6, 9, 12 { for (i=3; i<=mese; i+=3) { @@ -1402,12 +1402,8 @@ messaggio CG4400_application::controlla_liquidazione() TString16 m (format("%02d", i)); chiave << _annoes << m; lim.put("CODTAB", chiave); - if (lim.read() == NOERR) - { - if (! lim.get_bool("B0")) - mesi_cal << itom(i) << "\n"; - } - else mesi_cal << itom(i) << "\n"; + if (lim.read() != NOERR || !lim.get_bool("B0")) + mesi_cal << itom(i) << "\n"; } } if (_frequiva == 'M') @@ -1418,12 +1414,8 @@ messaggio CG4400_application::controlla_liquidazione() TString16 m (format("%02d", i)); chiave << _annoes << m; lim.put("CODTAB", chiave); - if (lim.read() == NOERR) - { - if (! lim.get_bool("B0")) - mesi_cal << itom(i) << "\n"; - } - else mesi_cal << itom(i) << "\n"; + if (lim.read() != NOERR || !lim.get_bool("B0")) + mesi_cal << itom(i) << "\n"; } } if (mesi_cal.not_empty()) @@ -1431,37 +1423,53 @@ messaggio CG4400_application::controlla_liquidazione() warning_box ("Ditta %s: la liquidazione da stampare sul registro %s relativa ai mesi di \n %s non e' stata ancora calcolata", (const char*)ditta, (const char*) _codreg, (const char *)mesi_cal); continua = yesno_box("Si desidera ugualmente proseguire?"); if (!continua) return non_proseguire; - continua = yesno_box("Si desidera proseguire con il calcolo e la stampa di liquidazione? \n (altrimenti si prosegue con la sola stampa di liquidazione)"); + continua = yesno_box("Si desidera proseguire con il calcolo e la stampa di liquidazione? \n (altrimenti si prosegue con la sola stampa liquidazione)"); if (!continua) return prosegui_stampa; return prosegui_cal_stampa; } } else if (_tipo_riepilogativo == 'A') - //if (_riep_liq) + { + chiave = ""; + chiave << _annoes << 13; + lim.put("CODTAB", chiave); + if (lim.read() != NOERR || !lim.get_bool("B0")) { - chiave = ""; - chiave << _annoes << 13; - lim.put("CODTAB", chiave); - if (lim.read() == NOERR) + continua = yesno_box("Ditta %s: non eseguito calcolo liquidazione annuale da stampare sul registro %s. Si desidera ugualmente proseguire?", (const char*)ditta, (const char*) _codreg); + if (!continua) return non_proseguire; + continua = yesno_box("Si desidera proseguire con il calcolo e la stampa di liquidazione? \n (altrimenti si prosegue con la sola stampa liquidazione)"); + if (!continua) return prosegui_stampa; + return prosegui_cal_stampa; + } + else + { + bool need_refresh = FALSE; + for (int m=1; m<13; m++) + if (_frequiva == 'M' || + (m==3 || m==6 || m==9 || m==12)) + { + chiave = ""; + TString16 m (format("%02d", m)); + chiave << _annoes << m; + lim.put("CODTAB", chiave); + if (lim.read() != NOERR || !lim.get_bool("B0")) + { + need_refresh = TRUE; + break; + } + } + if (need_refresh) { - if (! lim.get_bool("B0")) - { - continua = yesno_box("Ditta %s: non eseguito calcolo liquidazione annuale da stampare sul registro %s. Si desidera ugualmente proseguire?", (const char*)ditta, (const char*) _codreg); - if (!continua) return non_proseguire; - continua = yesno_box("Si desidera proseguire con il calcolo e la stampa di liquidazione? \n (altrimenti si prosegue con la sola stampa di liquidazione)"); - if (!continua) return prosegui_stampa; - return prosegui_cal_stampa; - } - } - else - { - continua = yesno_box("Ditta %s: non eseguito calcolo liquidazione annuale da stampare sul registro %s. Si desidera ugualmente proseguire?", (const char*)ditta, (const char*) _codreg); + continua = yesno_box("Ditta %s: la liquidazione di alcuni mesi precedenti deve " + "essere ricalcolata.\n" + "Si desidera ugualmente proseguire?",(const char*)ditta); if (!continua) return non_proseguire; - continua = yesno_box("Si desidera proseguire con il calcolo e la stampa di liquidazione? \n (altrimenti si prosegue con la sola stampa di liquidazione)"); + continua = yesno_box("Si desidera proseguire con il calcolo e la stampa di liquidazione? \n (altrimenti si prosegue con la sola stampa liquidazione)"); if (!continua) return prosegui_stampa; return prosegui_cal_stampa; - } - } + } + } + } return B0_settato; } @@ -3095,8 +3103,8 @@ void CG4400_application::no_movimenti() (m == 3 || m == 6 || m == 9 || m == 12)) { _datareg = TDate(1, m, _annoes); - stampa_riepilogo(m); - printer().formfeed(); + if (stampa_riepilogo(m)) + printer().formfeed(); } } //fine @@ -3225,7 +3233,7 @@ void CG4400_application::send_message(char tipo, const TFilename& nome, int mese if (_riep_liq) ss.add('X'); else ss.add(' '); - ss.add(_size_header); + ss.add(_size_header); TMessage liq (app, "RCL", ss); liq.send(); @@ -3386,10 +3394,19 @@ bool CG4400_application::stampa_registri_IVA(const TMask& m) if (!ok) continue; if (_liquidazione) { + //13/02/1996 + /*** if (_tipo_stampa == 2 || _tipo_stampa == 4) _size_header = _stampa_ind_ditta ? 3 : 2; else _size_header = 3; - clear_stliq(); + ***/ + _size_header = 3; + //fine + clear_stliq(); + //l'inizializzazione di _scelta vale per tutti + //i mesi da stampare di un certo registro (su + //cui c'e' la X di stampa liquidazione). Cio' + //e' molto importante (per capire vedi appunti) _scelta = controlla_liquidazione(); if (_scelta == non_proseguire) return FALSE; @@ -3511,9 +3528,14 @@ bool CG4400_application::stampa_registri_IVA(const TMask& m) if (_liquidazione) { + //13/02/1996 + /*** if (_tipo_stampa == 2 || _tipo_stampa == 4) _size_header = _stampa_ind_ditta ? 3 : 2; else _size_header = 3; + ***/ + _size_header = 3; + //fine clear_stliq(); //N.B. E' fondamentale che _scelta venga ri-inizializzata ad ogni //registro(cioe' dopo la stampa di ciascuno). Infatti il B0 di un @@ -3582,7 +3604,9 @@ bool CG4400_application::stampa_riepilogo(int m) { int a, tipo; TString16 codtab, codreg, codatt; - TPrintrow row; + TPrintrow row; + TRiga_array vect; + bool stampato = FALSE; if (!printer().isopen()) printer().open(); for (_tabreg->first(); !_tabreg->eof(); _tabreg->next()) { @@ -3595,169 +3619,172 @@ bool CG4400_application::stampa_riepilogo(int m) { codreg = codtab.mid(4,3); codatt = _tabreg->get("S8"); - row.reset(); - printer().print(row); - row.put("Registro iva:", 0); - row.put(codreg, 14); - row.put(format("%-.40s",(const char*)_tabreg->get("S0")), 18); - row.put("Attivita\'", 60); - row.put(codatt, 70); - TString80 desc = desc_attivita(codatt); - row.put(desc, 76); - printer().print(row); - row.reset(); - printer().print(row); - if (tipo == 1 && _tabreg->get_bool("B0")) - row.put("------------------ P E R I O D O -------------------", 30); - else - row.put("---------- P E R I O D O -----------", 30); - if (_tipo_stampa != 1) + //devo stampare sul riepilogativo + //solo i registri movimentati!!! + TTable pim("PIM"); + TString80 chiave,ctab; + TString16 creg,codiva; + vect.destroy(); + //Riepilogo del periodo + chiave << _annoes << _tabreg->get("S8"); + pim.zero(); + pim.put("CODTAB", chiave); + TRectype r (pim.curr()); + pim.read(_isgteq); + for (; !pim.eof(); pim.next()) { - if (tipo == 1 && _tabreg->get_bool("B0")) - row.put("----------- P R O G R E S S I V I --------------", 84); - else - row.put("------ P R O G R E S S I V I ------", 84); - } - printer().print(row); - row.reset(); - row.put("Cod.", 0); - if (tipo == 2) + if (pim.curr() != r) break; + ctab = pim.get("CODTAB"); + creg = ctab.mid(10,3); + int mese = atoi(ctab.mid(13,2)); + if (codreg == creg.trim() && is_mese_ok(mese,m)) + { + codiva = ctab.mid(16,4); + real impon = pim.get_real("R0"); + real impos = pim.get_real("R1"); + real impol = pim.get_real("R2"); + if (_tabreg->get_bool("B0")) + { + TToken_string cs(pim.get("S2")); + impon = cs.get(0); + impos = cs.get(1); + } + if (_tabreg->get_bool("B1")) + { + impon = pim.get_real("R11"); + impos = pim.get_real("R12"); + } + TToken_string fatt_rit(pim.get("S1")); + impon += fatt_rit.get(0); + impos += fatt_rit.get(1); + if (impon != ZERO || impos != ZERO || impol != ZERO) + vect.add_riga(impon,impos,impol,ZERO,ZERO,ZERO,codiva); + } + } + //Riepilogo progressivi (solo se stampa di bollato) + //cioe' dall'inizio dell'anno + if (_tipo_stampa != 1) + for (int i=1; i<=m; i++) { - row.put("A C Q U I S T I", 40); - if (_tipo_stampa != 1) - row.put("A C Q U I S T I", 94); + chiave = ""; + chiave << _annoes << _tabreg->get("S8"); + pim.zero(); + pim.put("CODTAB", chiave); + TRectype r (pim.curr()); + pim.read(_isgteq); + for (; !pim.eof(); pim.next()) + { + if (pim.curr() != r) break; + ctab = pim.get("CODTAB"); + creg = ctab.mid(10,3); + int mese = atoi(ctab.mid(13,2)); + if (codreg == creg.trim() && mese == i) + { + codiva = ctab.mid(16,4); + real impon = pim.get_real("R0"); + real impos = pim.get_real("R1"); + real impol = pim.get_real("R2"); + if (_tabreg->get_bool("B0")) + { + TToken_string cs(pim.get("S2")); + impon = cs.get(0); + impos = cs.get(1); + } + if (_tabreg->get_bool("B1")) + { + impon = pim.get_real("R11"); + impos = pim.get_real("R12"); + } + TToken_string fatt_rit(pim.get("S1")); + impon += fatt_rit.get(0); + impos += fatt_rit.get(1); + if (impon != ZERO || impos != ZERO || impol != ZERO) + vect.add_riga(ZERO,ZERO,ZERO,impon,impos,impol,codiva); + } + } } - if (tipo == 1) + + if (vect.items() > 0) { - row.put("V E N D I T E", 41); - if (_tabreg->get_bool("B0")) - row.put("CORRISPETTIVI", 67); + stampato = TRUE; + row.reset(); + printer().print(row); + row.put("Registro iva:", 0); + row.put(codreg, 14); + row.put(format("%-.40s",(const char*)_tabreg->get("S0")), 18); + row.put("Attivita\'", 60); + row.put(codatt, 70); + TString80 desc = desc_attivita(codatt); + row.put(desc, 76); + printer().print(row); + row.reset(); + printer().print(row); + if (tipo == 1 && _tabreg->get_bool("B0")) + row.put("------------------ P E R I O D O -------------------", 30); + else + row.put("---------- P E R I O D O -----------", 30); if (_tipo_stampa != 1) - { - if (_tabreg->get_bool("B0")) - { + { + if (tipo == 1 && _tabreg->get_bool("B0")) + row.put("----------- P R O G R E S S I V I --------------", 84); + else + row.put("------ P R O G R E S S I V I ------", 84); + } + printer().print(row); + row.reset(); + row.put("Cod.", 0); + if (tipo == 2) + { + row.put("A C Q U I S T I", 40); + if (_tipo_stampa != 1) + row.put("A C Q U I S T I", 94); + } + if (tipo == 1) + { + row.put("V E N D I T E", 41); + if (_tabreg->get_bool("B0")) + row.put("CORRISPETTIVI", 67); + if (_tipo_stampa != 1) + { + if (_tabreg->get_bool("B0")) + { row.put("V E N D I T E", 94); row.put("CORRISPETTIVI", 118); - } - else row.put("V E N D I T E", 95); - } - } - printer().print(row); - row.reset(); - row.put("iva Descrizione", 0); - row.put("Imponibile", 34); - row.put("Imposta", 53); - if (tipo == 1 && _tabreg->get_bool("B0")) - row.put("Importi lordi", 67); - if (_tipo_stampa != 1) - { - row.put("Imponibile", 87); - row.put("Imposta", 107); + } + else row.put("V E N D I T E", 95); + } + } + printer().print(row); + row.reset(); + row.put("iva Descrizione", 0); + row.put("Imponibile", 34); + row.put("Imposta", 53); if (tipo == 1 && _tabreg->get_bool("B0")) - row.put("Importi lordi", 118); - } - printer().print(row); - row.reset(); - printer().print(row); + row.put("Importi lordi", 67); + if (_tipo_stampa != 1) + { + row.put("Imponibile", 87); + row.put("Imposta", 107); + if (tipo == 1 && _tabreg->get_bool("B0")) + row.put("Importi lordi", 118); + } + printer().print(row); + row.reset(); + printer().print(row); - stampa_pims(row, codreg, tipo, m); + stampa_pims(row, vect, tipo); + } } } - return TRUE; + return stampato; } -//fine -void CG4400_application::stampa_pims(TPrintrow& riga, const TString& creg, - int t, int m) +void CG4400_application::stampa_pims(TPrintrow& riga, TRiga_array& vect, + int t) { - TTable pim("PIM"); - TString80 chiave, codtab; - TString16 codreg, codiva; - TRiga_array vect; - vect.destroy(); - riga.reset(); - //Riepilogo del periodo - chiave << _annoes << _tabreg->get("S8"); - pim.zero(); - pim.put("CODTAB", chiave); - TRectype r (pim.curr()); - pim.read(_isgteq); - for (; !pim.eof(); pim.next()) - { - if (pim.curr() != r) break; - - codtab = pim.get("CODTAB"); - codreg = codtab.mid(10,3); - int mese = atoi(codtab.mid(13,2)); - if (creg == codreg.trim() && is_mese_ok(mese,m)) - { - codiva = codtab.mid(16,4); - real impon = pim.get_real("R0"); - real impos = pim.get_real("R1"); - real impol = pim.get_real("R2"); - if (_tabreg->get_bool("B0")) - { - TToken_string cs(pim.get("S2")); - impon = cs.get(0); - impos = cs.get(1); - } - if (_tabreg->get_bool("B1")) - { - impon = pim.get_real("R11"); - impos = pim.get_real("R12"); - } - TToken_string fatt_rit(pim.get("S1")); - impon += fatt_rit.get(0); - impos += fatt_rit.get(1); - if (impon != ZERO || impos != ZERO || impol != ZERO) - vect.add_riga(impon,impos,impol,ZERO,ZERO,ZERO,codiva); - } - } - //Riepilogo progressivi (solo se stampa di bollato) - //cioe' dall'inizio dell'anno - if (_tipo_stampa != 1) - for (int i=1; i<=m; i++) - { - chiave = ""; - chiave << _annoes << _tabreg->get("S8"); - pim.zero(); - pim.put("CODTAB", chiave); - TRectype r (pim.curr()); - pim.read(_isgteq); - for (; !pim.eof(); pim.next()) - { - if (pim.curr() != r) break; - codtab = pim.get("CODTAB"); - codreg = codtab.mid(10,3); - int mese = atoi(codtab.mid(13,2)); - if (creg == codreg.trim() && mese == i) - { - codiva = codtab.mid(16,4); - real impon = pim.get_real("R0"); - real impos = pim.get_real("R1"); - real impol = pim.get_real("R2"); - if (_tabreg->get_bool("B0")) - { - TToken_string cs(pim.get("S2")); - impon = cs.get(0); - impos = cs.get(1); - } - if (_tabreg->get_bool("B1")) - { - impon = pim.get_real("R11"); - impos = pim.get_real("R12"); - } - TToken_string fatt_rit(pim.get("S1")); - impon += fatt_rit.get(0); - impos += fatt_rit.get(1); - if (impon != ZERO || impos != ZERO || impol != ZERO) - vect.add_riga(ZERO,ZERO,ZERO,impon,impos,impol,codiva); - } - } - } - real t_impon, t_impos, t_impol, t_imponp, t_imposp, t_impolp; t_impon = t_impos = t_impol = t_imponp = t_imposp = t_impolp = ZERO; + riga.reset(); //ordinamento per codice iva vect.sort(compare_rows); for (int k=0; k