Corretto errore riepilogativo per non movimentati

git-svn-id: svn://10.65.10.50/trunk@2615 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1996-02-20 09:25:35 +00:00
parent 6c159db49c
commit 581fbefbc0

View File

@ -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<vect.items(); k++)