Corrrezioni ai bilanci e list movimenti

git-svn-id: svn://10.65.10.50/trunk@1216 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1995-04-06 16:10:12 +00:00
parent e3b1c1f4d3
commit 7220946cc8
5 changed files with 540 additions and 400 deletions

View File

@ -93,6 +93,7 @@ class CG1500_application : public TPrintapp
real _saldo_finale_tot, _saldo_ini_gruppo_dare, _saldo_ini_gruppo_avere; real _saldo_finale_tot, _saldo_ini_gruppo_dare, _saldo_ini_gruppo_avere;
real _gruppo_da_ordine, _gruppo_a_ordine; real _gruppo_da_ordine, _gruppo_a_ordine;
real _prg_saldoini_dare, _prg_saldoini_avere, _prg_inidare_ord, _prg_iniavere_ord; real _prg_saldoini_dare, _prg_saldoini_avere, _prg_inidare_ord, _prg_iniavere_ord;
real _nuovo_tot_saldo_d, _nuovo_tot_saldo_a;
TDate _datalim, _data, _datada, _dataa, _dataini, _ultima_data, _u_max; TDate _datalim, _data, _datada, _dataa, _dataini, _ultima_data, _u_max;
bool _cambiato_conto_1, _cambiato_conto_2, _add_file_avere; bool _cambiato_conto_1, _cambiato_conto_2, _add_file_avere;
@ -100,7 +101,7 @@ class CG1500_application : public TPrintapp
bool _add_dare, _add_avere, _controlla, _salto_pagina, _flag, _stampato; bool _add_dare, _add_avere, _controlla, _salto_pagina, _flag, _stampato;
bool _sottoc_dare, _sottoc_avere, _salto_pagina1, _livello_conto; bool _sottoc_dare, _sottoc_avere, _salto_pagina1, _livello_conto;
bool _stampa_mov_prov; bool _stampa_mov_prov;
TString _causale_ap, _causale_chi; //TString _causale_ap, _causale_chi;
TArray _clienti, _fornitori; TArray _clienti, _fornitori;
public: public:
@ -116,16 +117,15 @@ public:
virtual void preprocess_header(); 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);
//virtual print_action postprocess_print(int,int);
virtual void postclose_print(); virtual void postclose_print();
virtual void set_page(int,int); virtual void set_page(int,int);
real compensazione(bool compensa, int indbil_conto, real& saldo); real compensazione(bool compensa, int indbil_conto, real& saldo);
const char* causale_chiusura() { return _causale_chi;} //const char* causale_chiusura() { return _causale_chi;}
const char* causale_apertura() { return _causale_ap;} //const char* causale_apertura() { return _causale_ap;}
bool bil_sez_contr(); bool bil_sez_contr();
bool bil_verifica(); bool bil_verifica();
bool ricerca_sottoc_clifo(int,int,bool,int,real&); bool ricerca_sottoc_clifo(int,int,bool,int,real&);
bool ricerca_cf(int,int,char,real&,real&,real&,real&,real&,real&,real&); bool ricerca_cf(int,int,char,int,real&,real&,real&,real&,real&,real&,real&);
bool calcola(int,int,long); bool calcola(int,int,long);
void leggi_pcon(); // Inizializza i TArray C/F void leggi_pcon(); // Inizializza i TArray C/F
void crea_sort_clifo(); void crea_sort_clifo();
@ -140,7 +140,7 @@ public:
const real&, const real&); const real&, const real&);
int stampa_record_conto(int,int,const char*,const real&,const real&, int stampa_record_conto(int,int,const char*,const real&,const real&,
const real&,const real&,const real&,const char); const real&,const real&,const real&,const char);
int stampa_intestazione_ditta(); int stampa_intestazione_ditta();
int cerca_indbil(int,int); int cerca_indbil(int,int);
void scrivig_file_temp(); void scrivig_file_temp();
void scrivic_file_temp(); void scrivic_file_temp();
@ -778,7 +778,7 @@ bool CG1500_application::bil_sez_contr()
bool esiste_conto=FALSE, esiste_sc = FALSE; bool esiste_conto=FALSE, esiste_sc = FALSE;
bool movimentato = FALSE; bool movimentato = FALSE;
CHECK(_tmp_saldi_att == NULL, "La minchia che riapro cg01"); CHECK(_tmp_saldi_att == NULL, "La minchia che riapro cg01"); //Messaggio di Ferdinando, non mio!!!
_tmp_saldi_att = new TIsamtempfile(LF_SALDI, "cg01", 2); _tmp_saldi_att = new TIsamtempfile(LF_SALDI, "cg01", 2);
_prog->addstatus(1); _prog->addstatus(1);
_tmp_saldi_pass = new TIsamtempfile(LF_SALDI, "cg02", 2); _tmp_saldi_pass = new TIsamtempfile(LF_SALDI, "cg02", 2);
@ -1007,7 +1007,7 @@ bool CG1500_application::ricerca_sottoc_clifo(int g,int c, bool compensa, int in
bool esiste_sc = FALSE; bool esiste_sc = FALSE;
bool movimentato = FALSE; bool movimentato = FALSE;
if (_annoes) aep = _annoes-1; if (_annoes) aep = EsePre(_annoes);
sld.set_annoes(_annoes); sld.set_annoes(_annoes);
_listacf = new TSaldi_list(g, c, _annoes, aep); _listacf = new TSaldi_list(g, c, _annoes, aep);
@ -1121,7 +1121,7 @@ bool CG1500_application::bil_verifica()
real mov_gruppo_dare, mov_gruppo_avere, prg_gruppo_dare, prg_gruppo_avere; real mov_gruppo_dare, mov_gruppo_avere, prg_gruppo_dare, prg_gruppo_avere;
bool esiste_conto = FALSE, esiste_sc = FALSE, movimentato = FALSE; bool esiste_conto = FALSE, esiste_sc = FALSE, movimentato = FALSE;
CHECK(_tmp_saldi_att == NULL, "La minchia che riapro cg01"); CHECK(_tmp_saldi_att == NULL, "La minchia che riapro cg01"); //Messaggio di Ferdinando, non mio!!!
_tmp_saldi_att = new TIsamtempfile(LF_SALDI, "cg01", 2); _tmp_saldi_att = new TIsamtempfile(LF_SALDI, "cg01", 2);
_gp=-1; _gp=-1;
@ -1131,6 +1131,8 @@ bool CG1500_application::bil_verifica()
_saldo_ini_conto_avere = ZERO; _saldo_ini_conto_avere = ZERO;
_saldo_ini_gruppo_dare = ZERO; _saldo_ini_gruppo_dare = ZERO;
_saldo_ini_gruppo_avere = ZERO; _saldo_ini_gruppo_avere = ZERO;
_nuovo_tot_saldo_d = ZERO;
_nuovo_tot_saldo_a = ZERO;
saldo_conto = ZERO; saldo_conto = ZERO;
mov_conto_dare = ZERO; mov_conto_dare = ZERO;
mov_conto_avere = ZERO; mov_conto_avere = ZERO;
@ -1218,7 +1220,7 @@ bool CG1500_application::bil_verifica()
indbil_conto = _pcn->get_int(PCN_INDBIL); indbil_conto = _pcn->get_int(PCN_INDBIL);
if ( (tipo_conto == 'C') || (tipo_conto == 'F') ) if ( (tipo_conto == 'C') || (tipo_conto == 'F') )
{ {
esiste_sc = ricerca_cf(g,c,tipo_conto,saldo_finale,saldo_iniziale, esiste_sc = ricerca_cf(g,c,tipo_conto,indbil_conto,saldo_finale,saldo_iniziale,
mov_conto_dare,mov_conto_avere,prg_conto_dare,prg_conto_avere, mov_conto_dare,mov_conto_avere,prg_conto_dare,prg_conto_avere,
saldo_conto); saldo_conto);
if ( (_verifica == 2) && (_stampav == 2) ) if ( (_verifica == 2) && (_stampav == 2) )
@ -1271,11 +1273,21 @@ bool CG1500_application::bil_verifica()
// if (_stampav == 1) // if (_stampav == 1)
// continue; // continue;
movimentato = calcola(g,c,s); movimentato = calcola(g,c,s);
if (movimentato || _stampav != 1) if (movimentato || _stampav != 1)
{ {
saldo_iniziale = _saldo_ini_dare - _saldo_ini_avere; saldo_iniziale = _saldo_ini_dare - _saldo_ini_avere;
_nuovo_tot_saldo_d += _mov_periodo_dare;
_nuovo_tot_saldo_a += _mov_periodo_avere;
if (saldo_iniziale > ZERO)
_nuovo_tot_saldo_d += saldo_iniziale;
else
{
real app = -saldo_iniziale;
_nuovo_tot_saldo_a += app;
}
if (_datada == _dataini) if (_datada == _dataini)
saldo_finale = saldo_iniziale+_mov_periodo_dare-_mov_periodo_avere; saldo_finale = saldo_iniziale+_mov_periodo_dare-_mov_periodo_avere;
else if (_datada > _dataini) else if (_datada > _dataini)
@ -1294,10 +1306,19 @@ bool CG1500_application::bil_verifica()
// continue; // continue;
movimentato = sld.ultima_immissione_verifica(_annoes,g,c,s,indbil_conto); movimentato = sld.ultima_immissione_verifica(_annoes,g,c,s,indbil_conto);
//modifica del 31/03/95
if (!movimentato && _stampav!=1)
if (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5)
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s);
if (movimentato)
saldo_iniziale = sld.saldoini();
//fine modifica
if (movimentato || _stampav != 1) if (movimentato || _stampav != 1)
{ {
saldo_iniziale = sld.saldoini(); //saldo_iniziale = sld.saldoini();
_mov_periodo_dare = sld.prgdare(); _mov_periodo_dare = sld.prgdare();
_mov_periodo_avere = sld.prgavere(); _mov_periodo_avere = sld.prgavere();
_prg_prec_dare = ZERO; _prg_prec_dare = ZERO;
@ -1317,6 +1338,20 @@ bool CG1500_application::bil_verifica()
esiste_sc = TRUE; esiste_sc = TRUE;
esiste_conto = TRUE; esiste_conto = TRUE;
if (_tipo_stampa1 == 2)
{
_nuovo_tot_saldo_d += _mov_periodo_dare;
_nuovo_tot_saldo_a += _mov_periodo_avere;
real nuovo = sld.saldoinisusaldi();
if (nuovo > ZERO)
_nuovo_tot_saldo_d += nuovo;
else
{
nuovo = -nuovo;
_nuovo_tot_saldo_a += nuovo;
}
}
if (saldo_iniziale < ZERO) if (saldo_iniziale < ZERO)
_saldo_ini_conto_avere += saldo_iniziale; _saldo_ini_conto_avere += saldo_iniziale;
else else
@ -1356,7 +1391,6 @@ bool CG1500_application::bil_verifica()
_tmp_saldi_att->put(SLD_DATAULMOV,_u_max); _tmp_saldi_att->put(SLD_DATAULMOV,_u_max);
_tmp_saldi_att->write(); _tmp_saldi_att->write();
} }
_gp = g; _gp = g;
_cp = c; _cp = c;
} }
@ -1381,10 +1415,11 @@ bool CG1500_application::bil_verifica()
scrivi_record_gruppo(prg_gruppo_dare,prg_gruppo_avere, scrivi_record_gruppo(prg_gruppo_dare,prg_gruppo_avere,
mov_gruppo_dare,mov_gruppo_avere,saldo_gruppo); mov_gruppo_dare,mov_gruppo_avere,saldo_gruppo);
} }
if ( (_verifica == 1)||( (_verifica == 2)&& if (esiste_sc)
(!((_stampav == 2)&&(saldo_conto == 0))) ) ) if ( (_verifica == 1)||( (_verifica == 2)&&
scrivi_record_conto(prg_conto_dare,prg_conto_avere,mov_conto_dare, (!((_stampav == 2)&&(saldo_conto == 0))) ) )
mov_conto_avere,saldo_conto); scrivi_record_conto(prg_conto_dare,prg_conto_avere,mov_conto_dare,
mov_conto_avere,saldo_conto);
} }
_pcn->readat(recnum); _pcn->readat(recnum);
} }
@ -1442,11 +1477,11 @@ bool CG1500_application::calcola(int g, int c, long s)
TString codcaus(mov.get(MOV_CODCAUS)); TString codcaus(mov.get(MOV_CODCAUS));
// if (codcaus.not_empty()) // if (codcaus.not_empty())
// if (codcaus == causale_chiusura()) // if (codcaus == causale_chiusura())
// continue; // continue;
// Modifica del 03-03-95 // Modifica del 03-03-95
TCaus cau (codcaus); TCaus cau (codcaus);
@ -1459,7 +1494,7 @@ bool CG1500_application::calcola(int g, int c, long s)
sezione = rmov.get_char(RMV_SEZIONE); sezione = rmov.get_char(RMV_SEZIONE);
importo = rmov.get_real(RMV_IMPORTO); importo = rmov.get_real(RMV_IMPORTO);
if (_annoes == 0) if (_annoes == 0)
data_reg = data; data_reg = data;
else data_reg = datacomp; else data_reg = datacomp;
@ -1480,7 +1515,7 @@ bool CG1500_application::calcola(int g, int c, long s)
_u_max = fnc_max(_u_max, data); _u_max = fnc_max(_u_max, data);
} }
*/ */
// Modifica del 03-03-95 // Modifica del 03-03-95
if ( data_reg >= _datada && data_reg <= _dataa) if ( data_reg >= _datada && data_reg <= _dataa)
if ((cau.apertura() && _dataini != _datada) || if ((cau.apertura() && _dataini != _datada) ||
@ -1503,7 +1538,7 @@ bool CG1500_application::calcola(int g, int c, long s)
_saldo_ini_dare += importo; _saldo_ini_dare += importo;
else _saldo_ini_avere += importo; else _saldo_ini_avere += importo;
_u_max = fnc_max(_u_max, data); _u_max = fnc_max(_u_max, data);
conto_mov = TRUE; conto_mov = TRUE;
} }
} }
else if (_datada > _dataini) //calcolo i progressivi precedenti else if (_datada > _dataini) //calcolo i progressivi precedenti
@ -1519,7 +1554,7 @@ bool CG1500_application::calcola(int g, int c, long s)
return conto_mov; return conto_mov;
} }
bool CG1500_application::ricerca_cf(int g,int c,char tipocf,real& saldo_finale,real& saldo_iniziale, bool CG1500_application::ricerca_cf(int g,int c,char tipocf,int ib, real& saldo_finale,real& saldo_iniziale,
real& mov_conto_dare,real& mov_conto_avere,real& prg_conto_dare,real& prg_conto_avere,real& saldo_conto) real& mov_conto_dare,real& mov_conto_avere,real& prg_conto_dare,real& prg_conto_avere,real& saldo_conto)
{ {
TSaldo sld; TSaldo sld;
@ -1551,6 +1586,16 @@ bool CG1500_application::ricerca_cf(int g,int c,char tipocf,real& saldo_finale,r
saldo_iniziale = _saldo_ini_dare - _saldo_ini_avere; saldo_iniziale = _saldo_ini_dare - _saldo_ini_avere;
_nuovo_tot_saldo_d += _mov_periodo_dare;
_nuovo_tot_saldo_a += _mov_periodo_avere;
if (saldo_iniziale > ZERO)
_nuovo_tot_saldo_d += saldo_iniziale;
else
{
real app = -saldo_iniziale;
_nuovo_tot_saldo_a += app;
}
if (_datada == _dataini) if (_datada == _dataini)
saldo_finale = saldo_iniziale+_mov_periodo_dare-_mov_periodo_avere; saldo_finale = saldo_iniziale+_mov_periodo_dare-_mov_periodo_avere;
else if (_datada > _dataini) else if (_datada > _dataini)
@ -1564,12 +1609,34 @@ bool CG1500_application::ricerca_cf(int g,int c,char tipocf,real& saldo_finale,r
} }
else else
{ {
if (!sld.ultima_immissione_verifica(_annoes,g,c,s,_indbil)) //Attenzione! Nel caso di "tutti i conti" devono scendere solo i cli/for movimentati!!!
if (_stampav == 1 || _stampav == 3) //modifica del 31/03/1995
continue; bool movimentato = sld.ultima_immissione_verifica(_annoes,g,c,s,_indbil);
saldo_iniziale = sld.saldoini(); saldo_iniziale = sld.saldoini();
if (!movimentato)
{
if (_stampav == 1)
continue;
//vado sui saldi con l'anno precedente e calcolo saldo_iniziale
//se esiste tale record e almeno un valore e' significativo (indipendentemente dal valore
//del saldo iniziale calcolato, allora metto a TRUE il flag movimentato
//solo se e' un conto patrimoniale
if (ib == 1 || ib == 2 || ib == 5)
{
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s);
//movimentato = sld.esiste_saldo_ep();
movimentato = sld.significativo();
}
}
if (!movimentato)
continue;
//fine modifica 31/03/1995
//saldo_iniziale = sld.saldoini();
_mov_periodo_dare = sld.prgdare(); _mov_periodo_dare = sld.prgdare();
_mov_periodo_avere = sld.prgavere(); _mov_periodo_avere = sld.prgavere();
_prg_prec_dare = ZERO; _prg_prec_dare = ZERO;
@ -1579,7 +1646,18 @@ bool CG1500_application::ricerca_cf(int g,int c,char tipocf,real& saldo_finale,r
if (saldo_finale == ZERO) if (saldo_finale == ZERO)
if (_stampav == 2) if (_stampav == 2)
continue; continue;
_nuovo_tot_saldo_d += _mov_periodo_dare;
_nuovo_tot_saldo_a += _mov_periodo_avere;
real nuovo = sld.saldoinisusaldi();
if (nuovo > ZERO)
_nuovo_tot_saldo_d += nuovo;
else
{
nuovo = -nuovo;
_nuovo_tot_saldo_a += nuovo;
}
} }
esiste_sc = TRUE; esiste_sc = TRUE;
@ -1783,6 +1861,12 @@ void CG1500_application::crea_sort_clifo()
init_sort(); init_sort();
int anno;
if (_tipo_stampa1 == 1)
anno = _annoapp;
else anno = _annoes;
*_cur = 0l; *_cur = 0l;
for (int i = 0; i < items; i++,++(*_cur)) for (int i = 0; i < items; i++,++(*_cur))
@ -1813,13 +1897,31 @@ void CG1500_application::crea_sort_clifo()
int g = ((TToken_string&)gccf[i]).get_int(0); int g = ((TToken_string&)gccf[i]).get_int(0);
int c = ((TToken_string&)gccf[i]).get_int(1); int c = ((TToken_string&)gccf[i]).get_int(1);
int aprec = EsePre(anno);
saldi.zero(); saldi.zero();
saldi.put(SLD_ANNOES, _annoes); saldi.put(SLD_ANNOES, anno);
saldi.put(SLD_GRUPPO, g); saldi.put(SLD_GRUPPO, g);
saldi.put(SLD_CONTO, c); saldi.put(SLD_CONTO, c);
saldi.put(SLD_SOTTOCONTO, codcf); saldi.put(SLD_SOTTOCONTO, codcf);
if (saldi.read() != NOERR) continue; if (saldi.read() != NOERR)
if (_tipo_stampa1 == 1) //bilancio per data limite
continue;
else if (_stampac == 2) //se sono richiesti i conti movimentati
{ //esco, se no...
_indbil = cerca_indbil(g,c);
if (_indbil == 1 || _indbil == 2 || _indbil == 5)
{
saldi.zero();
saldi.put(SLD_ANNOES, aprec);
saldi.put(SLD_GRUPPO, g);
saldi.put(SLD_CONTO, c);
saldi.put(SLD_SOTTOCONTO, codcf);
if (saldi.read() != NOERR)
continue;
}
}
if ( (((_cp != -1) && (c != _cp)) || ((_gp != -1) && (g != _gp))) && if ( (((_cp != -1) && (c != _cp)) || ((_gp != -1) && (g != _gp))) &&
esiste_sc ) esiste_sc )
@ -1873,10 +1975,18 @@ void CG1500_application::crea_sort_clifo()
//if (!sld.ultima_immissione_bilancio(_annoes,g,c,codcf,_indbil)) //if (!sld.ultima_immissione_bilancio(_annoes,g,c,codcf,_indbil))
// if (_stampac == 1) // if (_stampac == 1)
// continue; // continue;
movimentato = sld.ultima_immissione_verifica(_annoes,g,c,codcf,_indbil); movimentato = sld.ultima_immissione_verifica(anno,g,c,codcf,_indbil);
if (!movimentato && _stampac!=1)
if (_indbil == 1 || _indbil == 2 || _indbil == 5)
saldo_iniziale = sld.saldofin_esprec(anno,g,c,codcf);
if (movimentato)
saldo_iniziale = sld.saldoini();
if (movimentato || _stampac != 1) if (movimentato || _stampac != 1)
{ {
saldo_iniziale = sld.saldoini(); //saldo_iniziale = sld.saldoini();
_mov_periodo_dare = sld.prgdare(); _mov_periodo_dare = sld.prgdare();
_mov_periodo_avere = sld.prgavere(); _mov_periodo_avere = sld.prgavere();
@ -1893,7 +2003,7 @@ void CG1500_application::crea_sort_clifo()
if (!(saldo_finale == ZERO && _stampac == 2)) if (!(saldo_finale == ZERO && _stampac == 2))
{ {
esiste_sc = TRUE; esiste_sc = TRUE;
if (saldo_iniziale < ZERO) if (saldo_iniziale < ZERO)
_saldo_ini_conto_avere += saldo_iniziale; _saldo_ini_conto_avere += saldo_iniziale;
else else
@ -2602,6 +2712,10 @@ void CG1500_application::stampa_riga_totali(int r)
_saldo_avere_tot = -r; _saldo_avere_tot = -r;
_saldo_dare_tot = ZERO; _saldo_dare_tot = ZERO;
} }
/*
if (_tipo_stampa1 == 1)
_nuovo_tot_saldo_a = -_nuovo_tot_saldo_a;
*/
} }
if (_stampa_width == 148) if (_stampa_width == 148)
{ {
@ -2626,16 +2740,25 @@ void CG1500_application::stampa_riga_totali(int r)
else else
{ {
if (_stampa_width == 132) if (_stampa_width == 132)
set_row(r,"****** ********@18gTOTALE GENERALE@49g!@50g%r@67g%r@82g!@83g%r@99g%r@114g!@115g%r %c",&_saldo_dare_tot,&_saldo_avere_tot, {
set_row(r++,"@1g****** ********@18gTOTALE GENERALE@49g!@50g%r@67g%r@82g!@83g%r@99g%r@114g!@115g%r %c",&_saldo_dare_tot,&_saldo_avere_tot,
&_mov_dare_tot,&_mov_avere_tot,&_saldo_finale_tot,app); &_mov_dare_tot,&_mov_avere_tot,&_saldo_finale_tot,app);
else if (app == 'D') if ((_tipo_stampa1 == 1 && _datada == _dataini) || _tipo_stampa1 == 2)
set_row(r,"****** ********@18gTOTALE GENERALE@49g!@50g%r@67g%r@82g!@83g%r@100g%r@115g!@116g%r@148g!",&_saldo_dare_tot, set_row(r,"@1g****** ********@18gTOTALE CON SALDI INIZIALI@49g!@82g!@83g%r@99g%r@114g!",&_nuovo_tot_saldo_d,&_nuovo_tot_saldo_a);
&_saldo_avere_tot,&_mov_dare_tot,&_mov_avere_tot, }
&_saldo_finale_tot); else
else {
set_row(r,"****** ********@18gTOTALE GENERALE@49g!@50g%r@67g%r@82g!@83g%r@100g%r@115g!@132g%r@148g!",&_saldo_dare_tot, if (app == 'D')
&_saldo_avere_tot,&_mov_dare_tot,&_mov_avere_tot, set_row(r++,"@1g****** ********@18gTOTALE GENERALE@49g!@50g%r@67g%r@82g!@83g%r@100g%r@115g!@116g%r@148g!",&_saldo_dare_tot,
&_saldo_finale_tot); &_saldo_avere_tot,&_mov_dare_tot,&_mov_avere_tot,
&_saldo_finale_tot);
else
set_row(r++,"@1g****** ********@18gTOTALE GENERALE@49g!@50g%r@67g%r@82g!@83g%r@100g%r@115g!@132g%r@148g!",&_saldo_dare_tot,
&_saldo_avere_tot,&_mov_dare_tot,&_mov_avere_tot,
&_saldo_finale_tot);
if ((_tipo_stampa1 == 1 && _datada == _dataini) || _tipo_stampa1 == 2)
set_row(r,"@1g****** ********@18gTOTALE CON SALDI INIZIALI@49g!@82g!@83g%r@100g%r@115g!@148g!",&_nuovo_tot_saldo_d,&_nuovo_tot_saldo_a);
}
} }
} }
@ -3006,96 +3129,98 @@ bool CG1500_application::set_print(int)
{ {
TMask m ("cg1500a"); TMask m ("cg1500a");
KEY tasto; KEY tasto;
{ /*
TConfig conf(CONFIG_DITTA); {
TConfig conf(CONFIG_DITTA);
_causale_ap = conf.get("CoCaAp"); _causale_ap = conf.get("CoCaAp");
_causale_chi = conf.get("CoCaCh"); _causale_chi = conf.get("CoCaCh");
} }
*/
m.set_handler (F_VERIFICA, my_handler); m.set_handler (F_VERIFICA, my_handler);
m.set_handler (F_BILANCIO, mask_bilancio); m.set_handler (F_BILANCIO, mask_bilancio);
m.set_handler (F_STAMPA1, mask_bilancio); m.set_handler (F_STAMPA1, mask_bilancio);
m.set_handler (F_STAMPA, mask_bilancio); m.set_handler (F_STAMPA, mask_bilancio);
m.set_handler (F_DATALIM, mask_datalim); m.set_handler (F_DATALIM, mask_datalim);
m.set_handler (F_DATADA, mask_date); m.set_handler (F_DATADA, mask_date);
m.set_handler (F_DATAA, mask_date); m.set_handler (F_DATAA, mask_date);
m.set_handler (F_ANNO, mask_anno); m.set_handler (F_ANNO, mask_anno);
tasto = m.run(); tasto = m.run();
if (tasto == K_ENTER) if (tasto == K_ENTER)
{
_annoes = atoi(m.get(F_ANNO));
_bilancio = atoi(m.get(F_BILANCIO));
_data = m.get(F_DATASTAMPA);
if (_bilancio == 1)
{ {
_prog = new TProgind(_pcn->items(),"Elaborazione in corso... prego attendere",FALSE); _annoes = atoi(m.get(F_ANNO));
_totali = (bool)(m.get(F_TOTALI) == "X"); _bilancio = atoi(m.get(F_BILANCIO));
_codici = (bool)(m.get(F_CODICI) == "X"); _data = m.get(F_DATASTAMPA);
_saldo = (bool)(m.get(F_SALDO) == "X"); if (_bilancio == 1)
_tipo_stampa = atoi(m.get(F_STAMPA));
if (_tipo_stampa == 1)
{ {
if (_annoes != 0)
_dataini = InizioEsercizio(_annoes);
else _dataini = _inizioEs;
_datalim = m.get(F_DATALIM);
_stampa_mov_prov = (bool)(m.get(F_STAMPAMPROV) == "X");
}
bil_sez_contr();
}
else
{
_stampa_width = atoi(m.get(F_MODULO));
if (_stampa_width == 1)
_stampa_width = 132;
else _stampa_width = 148; //perche' questo e' in realta' il margine dx (vedi es. di stampa AS/400)
_verifica = atoi(m.get(F_VERIFICA));
if ( (_verifica == 1)||(_verifica == 2) )
_prog = new TProgind(_pcn->items(),"Elaborazione in corso... prego attendere",FALSE); _prog = new TProgind(_pcn->items(),"Elaborazione in corso... prego attendere",FALSE);
_tipo_stampa1 = atoi(m.get(F_STAMPA1)); _totali = (bool)(m.get(F_TOTALI) == "X");
if (_tipo_stampa1 == 1) _codici = (bool)(m.get(F_CODICI) == "X");
{ _saldo = (bool)(m.get(F_SALDO) == "X");
if (_annoes != 0) _tipo_stampa = atoi(m.get(F_STAMPA));
_dataini = InizioEsercizio(_annoes); if (_tipo_stampa == 1)
else _dataini = _inizioEs; {
_datada = m.get(F_DATADA); if (_annoes != 0)
_dataa = m.get(F_DATAA); _dataini = InizioEsercizio(_annoes);
_stampa_mov_prov = (bool)(m.get(F_STAMPAMPROV) == "X"); else _dataini = _inizioEs;
_datalim = m.get(F_DATALIM);
_stampa_mov_prov = (bool)(m.get(F_STAMPAMPROV) == "X");
}
bil_sez_contr();
} }
if ( (_verifica == 1)||(_verifica == 2) ) else
{ {
_stampav = atoi(m.get(F_STAMPAV)); _stampa_width = atoi(m.get(F_MODULO));
bil_verifica(); if (_stampa_width == 1)
} _stampa_width = 132;
else else _stampa_width = 148; //perche' questo e' in realta' il margine dx (vedi es. di stampa AS/400)
{ _verifica = atoi(m.get(F_VERIFICA));
_situazione = m.get(F_SITUAZIONE); if ( (_verifica == 1)||(_verifica == 2) )
_stampac = atoi(m.get(F_STAMPAC)); _prog = new TProgind(_pcn->items(),"Elaborazione in corso... prego attendere",FALSE);
_ordinamento = atoi(m.get(F_ORDINAMENTO)); _tipo_stampa1 = atoi(m.get(F_STAMPA1));
if (_tipo_stampa1 == 1)
// _cur->setkey(3); {
if (_annoes != 0)
if (_situazione.not_empty()) _dataini = InizioEsercizio(_annoes);
_cur->setfilter(format("TIPOCF = \"%s\"",(const char*)_situazione)); else _dataini = _inizioEs;
else _datada = m.get(F_DATADA);
_cur->setfilter(""); _dataa = m.get(F_DATAA);
_stampa_mov_prov = (bool)(m.get(F_STAMPAMPROV) == "X");
}
if ( (_verifica == 1)||(_verifica == 2) )
{
_stampav = atoi(m.get(F_STAMPAV));
bil_verifica();
}
else
{
_situazione = m.get(F_SITUAZIONE);
_stampac = atoi(m.get(F_STAMPAC));
_ordinamento = atoi(m.get(F_ORDINAMENTO));
// _cur->setkey(3);
if (_situazione.not_empty())
_cur->setfilter(format("TIPOCF = \"%s\"",(const char*)_situazione));
else
_cur->setfilter("");
_prog = new TProgind(_cur->items(),"Elaborazione in corso... prego attendere",FALSE); _prog = new TProgind(_cur->items(),"Elaborazione in corso... prego attendere",FALSE);
_clienti.destroy(); _clienti.destroy();
_fornitori.destroy(); _fornitori.destroy();
leggi_pcon(); leggi_pcon();
crea_sort_clifo(); crea_sort_clifo();
_sort->endsort(); _sort->endsort();
delete _cf; delete _cf;
}
} }
delete _prog;
return TRUE;
} }
delete _prog; return FALSE;
return TRUE;
}
return FALSE;
} }
TRectype& look_com (const char * cod, TLocalisamfile *comuni) TRectype& look_com (const char * cod, TLocalisamfile *comuni)

View File

@ -271,7 +271,7 @@ class CG1600_application : public TPrintapp
TSaldi_list* _listasld; TSaldi_list* _listasld;
TProgind* _prog; TProgind* _prog;
TParagraph_string* _descr; TParagraph_string* _descr;
TSaldo* _sld; TSaldo* _sld;
TDate _data_fine_ese,_data_fine_ese_prec,_data_fine_raf,_data_fine_raf_prec; TDate _data_fine_ese,_data_fine_ese_prec,_data_fine_raf,_data_fine_raf_prec;
TDate _datastampa,_datalimite,_databilrafr,_datai,_datairaf; TDate _datastampa,_datalimite,_databilrafr,_datai,_datairaf;
@ -305,10 +305,11 @@ class CG1600_application : public TPrintapp
real _totale_parziale,_totale_parziale_raf; real _totale_parziale,_totale_parziale_raf;
real _tot_parz_sld,_tot_parz_sld_d,_tot_parz_sld_a,_tot_parz_prg_d; real _tot_parz_sld,_tot_parz_sld_d,_tot_parz_sld_a,_tot_parz_prg_d;
real _tot_parz_prg_a,_tot_parz_mov_d,_tot_parz_mov_a; real _tot_parz_prg_a,_tot_parz_mov_d,_tot_parz_mov_a;
real _nuovo_tot_saldo_d, _nuovo_tot_saldo_a;
int _i; int _i;
bool _reset_righe_stampa,_totale_attivita_gia_stampato,_totale_passivita_gia_stampato,_statopatr_no_stamp; bool _reset_righe_stampa,_totale_attivita_gia_stampato,_totale_passivita_gia_stampato,_statopatr_no_stamp;
bool _sbilancio_ordine; bool _sbilancio_ordine;
TString _causale_ap, _causale_chi; //TString _causale_ap, _causale_chi;
public: public:
@ -355,8 +356,8 @@ public:
bool calcola(int,int,long,const TDate&,const TDate&); bool calcola(int,int,long,const TDate&,const TDate&);
bool sottoc_clifo_scalare (int,int,int,int,real&,real&); bool sottoc_clifo_scalare (int,int,int,int,real&,real&);
void sottoc_clifo_verifica(int,int,int,char,TString&,TString&,TString&,int,int,bool); void sottoc_clifo_verifica(int,int,int,char,TString&,TString&,TString&,int,int,bool);
const char* causale_apertura() { return _causale_ap;} //const char* causale_apertura() { return _causale_ap;}
const char* causale_chiusura() { return _causale_chi;} //const char* causale_chiusura() { return _causale_chi;}
void stampa_saldo_132(const real&); void stampa_saldo_132(const real&);
void stampa_saldo_198(real&, real&); void stampa_saldo_198(real&, real&);
void set_bil_key(bil_ivd* b, char sezione, char lettera, void set_bil_key(bil_ivd* b, char sezione, char lettera,
@ -749,7 +750,7 @@ bool tipo_stampa(TMask_field& f,KEY k)
if (tipo_stampa == 2) if (tipo_stampa == 2)
if (anno == 0) if (anno == 0)
{ {
error_box("Nella stampa all' ultima immissione l' anno esercizio e' obbligatorio"); error_box("Nella stampa all' ultima immissione l' anno esercizio e' obbligatorio");
return FALSE; return FALSE;
} }
@ -765,7 +766,7 @@ bool data_inizio(TMask_field& f, KEY k)
anno = f.mask().get_int(F_ANNOESE); anno = f.mask().get_int(F_ANNOESE);
data = f.mask().get (F_DATAINI); data = f.mask().get (F_DATAINI);
a()._anno_esercizio = anno; //a()._anno_esercizio = anno;
if (k == K_ENTER) if (k == K_ENTER)
{ {
@ -777,7 +778,7 @@ bool data_inizio(TMask_field& f, KEY k)
a()._anno_esercizio = anno; a()._anno_esercizio = anno;
if (data == botime) if (data == botime)
a()._dataini = in; a()._dataini = in;
else else
if (data < in || data > fin) if (data < in || data > fin)
{ {
@ -801,12 +802,14 @@ bool data_inizio(TMask_field& f, KEY k)
if (anno == 0) if (anno == 0)
{ {
f.error_box("La data limite indicata non appartiene ad alcun esercizio attivo della ditta"); f.error_box("La data limite indicata non appartiene ad alcun esercizio attivo della ditta");
return FALSE; return FALSE;
} }
a()._anno_esercizio = anno; a()._anno_esercizio = anno;
a()._dataini = data; a()._dataini = data;
} a()._data_ini_ese = a()._inizioEs;
a()._data_fine_ese = a()._fineEs;
}
} }
TString datastr = a()._dataini.string(); TString datastr = a()._dataini.string();
TString data1 = a()._data_ini_ese.string(); TString data1 = a()._data_ini_ese.string();
@ -823,7 +826,7 @@ bool data_fine(TMask_field& f, KEY k)
annoes = f.mask().get_int(F_ANNOESE); annoes = f.mask().get_int(F_ANNOESE);
data = f.mask().get (F_DATAFINE); data = f.mask().get (F_DATAFINE);
data_ini = f.mask().get (F_DATAINI); data_ini = f.mask().get (F_DATAINI);
a()._anno_esercizio = annoes; //a()._anno_esercizio = annoes;
if (k == K_ENTER) if (k == K_ENTER)
{ {
@ -1077,7 +1080,7 @@ void CG1600_application::crea_sort_piano_conti_scalare()
//analizzato, e se questi contiene la classe IV dir. CEE, //analizzato, e se questi contiene la classe IV dir. CEE,
//allore devo controllare se va dettagliato (STSOTTBIL) //allore devo controllare se va dettagliato (STSOTTBIL)
if (sez != "0") if (sez != "0" && sez != "")
{ {
if (!stsottbil || tmcf == 'C' || tmcf == 'F') if (!stsottbil || tmcf == 'C' || tmcf == 'F')
conto_dettagliato = FALSE; conto_dettagliato = FALSE;
@ -1310,7 +1313,7 @@ void CG1600_application::crea_sort_piano_conti_scalare()
} }
} }
else else
if (sez != "0") if (sez != "0" && sez != "")
{ {
if (sez == "2") if (sez == "2")
{ {
@ -1323,7 +1326,7 @@ void CG1600_application::crea_sort_piano_conti_scalare()
} }
} }
else else
if (sez != "0") if (sez != "0" && sez != "")
{ {
if (sez == "2") if (sez == "2")
{ {
@ -1398,7 +1401,9 @@ void CG1600_application::crea_sort_piano_conti_verifica()
sld_prg_avere_conto = ZERO; sld_prg_avere_conto = ZERO;
mov_dare_conto = ZERO; mov_dare_conto = ZERO;
mov_avere_conto = ZERO; mov_avere_conto = ZERO;
_nuovo_tot_saldo_d = ZERO;
_nuovo_tot_saldo_a = ZERO;
indbil = 0; indbil = 0;
gruppo_prec = -1; gruppo_prec = -1;
conto_prec = -1; conto_prec = -1;
@ -1465,7 +1470,7 @@ void CG1600_application::crea_sort_piano_conti_verifica()
//analizzato , se contiene la classe IV dir. CEE //analizzato , se contiene la classe IV dir. CEE
//allora devo controllare se va dettagliato (STSOTTBIL) //allora devo controllare se va dettagliato (STSOTTBIL)
if (sez != "0") if (sez != "0" && sez != "")
{ {
if ((tmcf == 'C') || (tmcf == 'F')) if ((tmcf == 'C') || (tmcf == 'F'))
{ {
@ -1517,7 +1522,20 @@ void CG1600_application::crea_sort_piano_conti_verifica()
sld_prg_avere = _saldo_ini_avere; sld_prg_avere = _saldo_ini_avere;
mov_dare = _mov_periodo_dare; mov_dare = _mov_periodo_dare;
mov_avere = _mov_periodo_avere; mov_avere = _mov_periodo_avere;
saldo = sld_prg_dare-sld_prg_avere+mov_dare-mov_avere; saldo = sld_prg_dare-sld_prg_avere+mov_dare-mov_avere;
//modifica del 05/04/1995
real app = sld_prg_dare - sld_prg_avere;
_nuovo_tot_saldo_d += mov_dare;
_nuovo_tot_saldo_a += mov_avere;
if (app > ZERO)
_nuovo_tot_saldo_d += app;
else
{
app = -app;
_nuovo_tot_saldo_a += app;
}
//fine modifica
} }
else if (_dataini > _data_ini_ese) else if (_dataini > _data_ini_ese)
{ {
@ -1532,8 +1550,14 @@ void CG1600_application::crea_sort_piano_conti_verifica()
if (_tipo_stampa == 2) if (_tipo_stampa == 2)
{ {
if (!_sld->ultima_immissione_verifica(_anno_esercizio,g,c,s,indbil)) if (!_sld->ultima_immissione_verifica(_anno_esercizio,g,c,s,indbil))
continue; // continue;
app = _sld->saldoini(); //modifica del 05/04/1995
{
if (indbil == 1 || indbil == 2 || indbil == 5)
app = _sld->saldofin_esprec(_anno_esercizio,g,c,s);
}
else app = _sld->saldoini();
//fine modifica
if (app < ZERO) if (app < ZERO)
{ {
app = -app; app = -app;
@ -1547,7 +1571,23 @@ void CG1600_application::crea_sort_piano_conti_verifica()
} }
mov_dare = _sld->prgdare(); mov_dare = _sld->prgdare();
mov_avere = _sld->prgavere(); mov_avere = _sld->prgavere();
saldo = sld_prg_dare-sld_prg_avere+mov_dare-mov_avere; saldo = sld_prg_dare-sld_prg_avere+mov_dare-mov_avere;
//modifica del 05/04/1995
if (!(saldo == ZERO && _stampamov))
{
_nuovo_tot_saldo_d += mov_dare;
_nuovo_tot_saldo_a += mov_avere;
real nuovo = _sld->saldoinisusaldi();
if (nuovo > ZERO)
_nuovo_tot_saldo_d += nuovo;
else
{
nuovo = -nuovo;
_nuovo_tot_saldo_a += nuovo;
}
}
//fine modifica
} }
if (classe_conto) if (classe_conto)
@ -1563,7 +1603,7 @@ void CG1600_application::crea_sort_piano_conti_verifica()
} }
else else
{ {
if (sez != "0") if (sez != "0" && sez != "")
scrivi_record(sez,let,numerorom,numero,g,c,s,saldo,ZERO,sld_prg_dare,sld_prg_avere,mov_dare,mov_avere,tmcf); scrivi_record(sez,let,numerorom,numero,g,c,s,saldo,ZERO,sld_prg_dare,sld_prg_avere,mov_dare,mov_avere,tmcf);
} }
} }
@ -1602,7 +1642,7 @@ void CG1600_application::sottoc_clifo_verifica(int g,int c,int anno,char tipocf,
sld_prg_avere_conto = ZERO; sld_prg_avere_conto = ZERO;
mov_dare_conto = ZERO; mov_dare_conto = ZERO;
mov_avere_conto = ZERO; mov_avere_conto = ZERO;
int items = _listasld->items(); int items = _listasld->items();
sez_conto = sez; sez_conto = sez;
@ -1646,6 +1686,19 @@ void CG1600_application::sottoc_clifo_verifica(int g,int c,int anno,char tipocf,
mov_dare = _mov_periodo_dare; mov_dare = _mov_periodo_dare;
mov_avere = _mov_periodo_avere; mov_avere = _mov_periodo_avere;
saldo = sld_prg_dare-sld_prg_avere+mov_dare-mov_avere; saldo = sld_prg_dare-sld_prg_avere+mov_dare-mov_avere;
//modifica 05/04/1994
real app = sld_prg_dare - sld_prg_avere;
_nuovo_tot_saldo_d += mov_dare;
_nuovo_tot_saldo_a += mov_avere;
if (app > ZERO)
_nuovo_tot_saldo_d += app;
else
{
app = -app;
_nuovo_tot_saldo_a += app;
}
//fine modifica
} }
else if (_dataini > _data_ini_ese) else if (_dataini > _data_ini_ese)
{ {
@ -1659,9 +1712,18 @@ void CG1600_application::sottoc_clifo_verifica(int g,int c,int anno,char tipocf,
else else
if (_tipo_stampa == 2) if (_tipo_stampa == 2)
{ {
/*
if (!_sld->ultima_immissione_bilancio(_anno_esercizio,g,c,s,indbil)) if (!_sld->ultima_immissione_bilancio(_anno_esercizio,g,c,s,indbil))
continue; continue;
app = _sld->saldoini(); */
//modifica 05/04/1994
if (!_sld->ultima_immissione_verifica(_anno_esercizio,g,c,s,indbil))
{
if (indbil == 1 || indbil == 2 || indbil == 5)
app = _sld->saldofin_esprec(_anno_esercizio,g,c,s);
}
else app = _sld->saldoini();
//fine modifica
if (app < ZERO) if (app < ZERO)
{ {
app = -app; app = -app;
@ -1675,7 +1737,23 @@ void CG1600_application::sottoc_clifo_verifica(int g,int c,int anno,char tipocf,
} }
mov_dare = _sld->prgdare(); mov_dare = _sld->prgdare();
mov_avere = _sld->prgavere(); mov_avere = _sld->prgavere();
saldo = sld_prg_dare-sld_prg_avere+mov_dare-mov_avere; saldo = sld_prg_dare-sld_prg_avere+mov_dare-mov_avere;
//modifica 05/04/1994
if (!(saldo == ZERO && _stampamov))
{
_nuovo_tot_saldo_d += mov_dare;
_nuovo_tot_saldo_a += mov_avere;
real nuovo = _sld->saldoinisusaldi();
if (nuovo > ZERO)
_nuovo_tot_saldo_d += nuovo;
else
{
nuovo = -nuovo;
_nuovo_tot_saldo_a += nuovo;
}
}
//fine modifica
} }
if (stsottbil) if (stsottbil)
@ -1979,13 +2057,14 @@ bool CG1600_application::calcola(int g, int c, long s,
bool CG1600_application::set_print(int) bool CG1600_application::set_print(int)
{ {
KEY tasto; KEY tasto;
/*
{ {
TConfig conf(CONFIG_DITTA); TConfig conf(CONFIG_DITTA);
_causale_ap = conf.get("CoCaAp"); _causale_ap = conf.get("CoCaAp");
_causale_chi = conf.get("CoCaCh"); _causale_chi = conf.get("CoCaCh");
} }
*/
_msk->set_handler(F_DATALIM, data_limite); _msk->set_handler(F_DATALIM, data_limite);
_msk->set_handler(F_TIPOSTAMPA, tipo_stampa); _msk->set_handler(F_TIPOSTAMPA, tipo_stampa);
@ -3857,7 +3936,7 @@ bool CG1600_application::preprocess_stampa_verifica(int counter)
set_row (_i,"@65g%r", &_tot_gen_prg_a); set_row (_i,"@65g%r", &_tot_gen_prg_a);
set_row (_i,"@82g%r", &_tot_gen_mov_d); set_row (_i,"@82g%r", &_tot_gen_mov_d);
set_row (_i,"@98g%r", &_tot_gen_mov_a); set_row (_i,"@98g%r", &_tot_gen_mov_a);
if (!_stampa_modulo) if (!_stampa_modulo)
{ {
if (_tot_gen_saldo < ZERO) if (_tot_gen_saldo < ZERO)
@ -3872,6 +3951,11 @@ bool CG1600_application::preprocess_stampa_verifica(int counter)
else else
stampa_saldo_198(_tot_gen_saldo_d,_tot_gen_saldo_a); stampa_saldo_198(_tot_gen_saldo_d,_tot_gen_saldo_a);
//modifica 05/04/1995
if ((_tipo_stampa == 1 && _dataini == _data_ini_ese) || _tipo_stampa == 2)
set_row(_i,"@0g****** ******** TOTALE CON SALDI INIZIALI@48g!@81g!@82g%r@98g%r@114g!",&_nuovo_tot_saldo_d,&_nuovo_tot_saldo_a);
//fine modifica
_sez_da_stamp = ' '; _sez_da_stamp = ' ';
_sez_stamp = ' '; _sez_stamp = ' ';
return TRUE; return TRUE;
@ -4010,14 +4094,55 @@ bool CG1600_application::preprocess_stampa_verifica(int counter)
} }
} }
_tot_num_prg_d += _sld_prg_dare; if (_dataini == _data_ini_ese)
_tot_numr_prg_d += _sld_prg_dare; {
_tot_let_prg_d += _sld_prg_dare; real saldo_num = _sld_prg_dare - _sld_prg_avere;
_tot_gen_prg_d += _sld_prg_dare; if (saldo_num > ZERO)
_tot_num_prg_a += _sld_prg_avere; _tot_num_prg_d += saldo_num;
_tot_numr_prg_a += _sld_prg_avere; else
_tot_let_prg_a += _sld_prg_avere; {
_tot_gen_prg_a += _sld_prg_avere; saldo_num = -saldo_num;
_tot_num_prg_a += saldo_num;
}
real saldo_numr = _sld_prg_dare - _sld_prg_avere;
if (saldo_numr > ZERO)
_tot_numr_prg_d += saldo_numr;
else
{
saldo_numr = -saldo_numr;
_tot_numr_prg_a += saldo_numr;
}
real saldo_let = _sld_prg_dare - _sld_prg_avere;
if (saldo_let > ZERO)
_tot_let_prg_d += saldo_let;
else
{
saldo_let = -saldo_let;
_tot_let_prg_a += saldo_let;
}
real saldo_gen = _sld_prg_dare - _sld_prg_avere;
if (saldo_gen > ZERO)
_tot_gen_prg_d += saldo_gen;
else
{
saldo_gen = -saldo_gen;
_tot_gen_prg_a += saldo_gen;
}
}
else
{
_tot_num_prg_d += _sld_prg_dare;
_tot_numr_prg_d += _sld_prg_dare;
_tot_let_prg_d += _sld_prg_dare;
_tot_gen_prg_d += _sld_prg_dare;
_tot_num_prg_a += _sld_prg_avere;
_tot_numr_prg_a += _sld_prg_avere;
_tot_let_prg_a += _sld_prg_avere;
_tot_gen_prg_a += _sld_prg_avere;
}
_tot_num_mov_d += _mov_dare; _tot_num_mov_d += _mov_dare;
_tot_numr_mov_d += _mov_dare; _tot_numr_mov_d += _mov_dare;
_tot_let_mov_d += _mov_dare; _tot_let_mov_d += _mov_dare;
@ -4515,9 +4640,26 @@ void CG1600_application::setta_righe_verifica()
set_row (_i,"@0g%s", bil->gruppo); set_row (_i,"@0g%s", bil->gruppo);
set_row (_i,"@4g%s", bil->conto); set_row (_i,"@4g%s", bil->conto);
set_row (_i,"@8g%s", bil->sottoc); set_row (_i,"@8g%s", bil->sottoc);
set_row (_i,"@15g%s", (const char*) descr_sottoc); set_row (_i,"@15g%-.33s", (const char*) descr_sottoc);
set_row (_i,"@49g%r", &_sld_prg_dare);
set_row (_i,"@65g%r", &_sld_prg_avere); if (_dataini == _data_ini_ese)
{
real saldoini = _sld_prg_dare - _sld_prg_avere;
if (saldoini >= ZERO)
set_row(_i,"@49g%r", &saldoini);
else
{
saldoini = -saldoini;
set_row(_i,"@65g%r", &saldoini);
}
}
else
{
set_row (_i,"@49g%r", &_sld_prg_dare);
set_row (_i,"@65g%r", &_sld_prg_avere);
}
set_row (_i,"@82g%r", &_mov_dare); set_row (_i,"@82g%r", &_mov_dare);
set_row (_i,"@98g%r", &_mov_avere); set_row (_i,"@98g%r", &_mov_avere);
if (_stampa_modulo) if (_stampa_modulo)
@ -4558,8 +4700,25 @@ void CG1600_application::setta_righe_verifica()
if (descr_classe != descr_sottoc) if (descr_classe != descr_sottoc)
{ {
set_row (_i,"@2g%s", (const char*) descr_sottoc); set_row (_i,"@2g%s", (const char*) descr_sottoc);
set_row (_i,"@49g%r", &_sld_prg_dare);
set_row (_i,"@66g%r", &_sld_prg_avere); if (_dataini == _data_ini_ese)
{
real saldoini = _sld_prg_dare - _sld_prg_avere;
if (saldoini >= ZERO)
set_row(_i,"@49g%r", &saldoini);
else
{
saldoini = -saldoini;
set_row(_i,"@65g%r", &saldoini);
}
}
else
{
set_row (_i,"@49g%r", &_sld_prg_dare);
set_row (_i,"@65g%r", &_sld_prg_avere);
}
set_row (_i,"@82g%r", &_mov_dare); set_row (_i,"@82g%r", &_mov_dare);
set_row (_i,"@99g%r", &_mov_avere); set_row (_i,"@99g%r", &_mov_avere);
if (_stampa_modulo) if (_stampa_modulo)
@ -4883,7 +5042,7 @@ void CG1600_application::intesta_scalare()
{ {
set_header (3,"@115gEsercizio@125g%d", _anno_esercizio_raf); set_header (3,"@115gEsercizio@125g%d", _anno_esercizio_raf);
databilrafrstr = _databilrafr.string(); databilrafrstr = _databilrafr.string();
set_header (4,"@112galla data@122g%s", (const char*) databilrafrstr); set_header (4,"@113galla data@122g%s", (const char*) databilrafrstr);
} }
if (_tipo_stampa == 1) if (_tipo_stampa == 1)
{ {

View File

@ -119,7 +119,7 @@ BEGIN
DISPLAY "Documento" NUMDOC DISPLAY "Documento" NUMDOC
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
OUTPUT F_NUMEROINI NUMREG OUTPUT F_NUMEROINI NUMREG
CHECKTYPE NORMAL //CHECKTYPE NORMAL
FLAGS "R" FLAGS "R"
GROUP 2 GROUP 2
END END
@ -132,7 +132,7 @@ BEGIN
INPUT NUMREG F_NUMEROFIN INPUT NUMREG F_NUMEROFIN
COPY DISPLAY F_NUMEROINI COPY DISPLAY F_NUMEROINI
OUTPUT F_NUMEROFIN NUMREG OUTPUT F_NUMEROFIN NUMREG
CHECKTYPE NORMAL //CHECKTYPE NORMAL
FLAGS "R" FLAGS "R"
NUM_EXPR {(#F_NUMEROFIN==0)||(#F_NUMEROFIN>=#F_NUMEROINI)} NUM_EXPR {(#F_NUMEROFIN==0)||(#F_NUMEROFIN>=#F_NUMEROINI)}
WARNING "Limite superiore errato" WARNING "Limite superiore errato"

View File

@ -6,8 +6,8 @@
#endif #endif
#include <assoc.h> #include <assoc.h>
#include "../cg/conto.h" #include "conto.h"
#include "../cg/cg2103.h" // per TCausale #include "cg2103.h" // per TCausale
class TCaus : public TCausale class TCaus : public TCausale
@ -32,10 +32,11 @@ public:
}; };
enum tipobil { DataLimite=1, UltimaImmissione }; enum tipobil { DataLimite=1, UltimaImmissione };
const int EsePre(const int EseCorr);
class TSaldo class TSaldo
{ {
real _saldo, _saldo_iniziale; real _saldo, _saldo_iniziale, _saldoiniziale;
real _prg_dare, _prg_avere, _prg_daresca, _prg_averesca; real _prg_dare, _prg_avere, _prg_daresca, _prg_averesca;
int _indbil; int _indbil;
TRectype _saldo_ep; TRectype _saldo_ep;
@ -61,8 +62,8 @@ public:
bool movimentato() const { return _movimentato; } bool movimentato() const { return _movimentato; }
bool significativo() const { return _significativo; } bool significativo() const { return _significativo; }
bool esiste_saldo() const { return _rec_presente_ec || _rec_presente_ep;} bool esiste_saldo() const { return _rec_presente_ec || _rec_presente_ep;}
bool esiste_saldo_ep() const { return _rec_presente_ep; }
const int EsePre (const int annocorr); // Determina esercizio precedente
int annoes () const { return _annoes; } int annoes () const { return _annoes; }
void set_annoes (int anno) { _annoes = anno; } void set_annoes (int anno) { _annoes = anno; }
@ -82,6 +83,7 @@ public:
const real& saldo() const { return _saldo;} const real& saldo() const { return _saldo;}
const real& saldoini() const { return _saldo_iniziale;} const real& saldoini() const { return _saldo_iniziale;}
const real& saldoinisusaldi() const { return _saldoiniziale;}
const real& prgdare() const { return _prg_dare;} const real& prgdare() const { return _prg_dare;}
const real& prgavere() const { return _prg_avere;} const real& prgavere() const { return _prg_avere;}
bool prg_attuali(int,TConto&,int,real&,real&); bool prg_attuali(int,TConto&,int,real&,real&);

View File

@ -23,7 +23,8 @@
TCaus::TCaus(const char* cod) TCaus::TCaus(const char* cod)
: _rec(LF_CAUSALI) : _rec(LF_CAUSALI)
{ {
if (*cod) read(cod); //if (*cod) read(cod);
read(cod);
} }
@ -52,24 +53,51 @@ bool TCaus::chiusura() const
bool TCaus::apertura() const bool TCaus::apertura() const
{ return _rec.get_char("MOVAP") == 'A'; } { return _rec.get_char("MOVAP") == 'A'; }
//
// Cerca l'esercizio precedente di EseCorr
// Se EseCorr e' gia' il primo ritorna 0
// senno' ritorna, astutamente, EseCorr - 1
//
const int EsePre(const int EseCorr)
{
TTable ese("ESC");
TString first(30);
TString16 codtab;
ese.first();
first = ese.get("CODTAB");
codtab.format("%04d", EseCorr);
if (codtab == first)
return 0;
return EseCorr - 1;
}
// aep e' l'esercizio precedente // aep e' l'esercizio precedente
TSaldi_list::TSaldi_list(int gr, int co, int aec, int aep) TSaldi_list::TSaldi_list(int gr, int co, int aec, int aep_par)
{ {
TLocalisamfile cf(LF_SALDI, FALSE); TLocalisamfile cf(LF_SALDI, FALSE);
bool force; bool force;
TString16 key; TString16 key;
int aep = aep_par;
destroy(); destroy();
cf.zero(); cf.zero();
// Se non passo l'anno precedente lo devo comunque calcolare
if (aep_par == 0)
aep = EsePre(aec);
if (aep) // if (aep)
cf.setkey(2); cf.setkey(2);
else /* else
{ {
cf.setkey(1); cf.setkey(1);
cf.put(SLD_ANNOES,aec); cf.put(SLD_ANNOES,aec);
} }
*/
cf.put(SLD_GRUPPO,gr); cf.put(SLD_GRUPPO,gr);
cf.put(SLD_CONTO,co); cf.put(SLD_CONTO,co);
// TRectype rec(cf.curr()); // TRectype rec(cf.curr());
@ -84,16 +112,15 @@ TSaldi_list::TSaldi_list(int gr, int co, int aec, int aep)
if (g != gr || c != co) break; if (g != gr || c != co) break;
if (aep) // if (aep) {
{ if (ae != aec && ae != aep) continue;
if (ae != aec && ae != aep) continue; // }
}
TRectype r(cf.curr()); TRectype r(cf.curr());
key.format("%3d%3d%6ld", g, c, s); key.format("%3d%3d%6ld", g, c, s);
// Se avevo chiesto anche l'es. prec. puo' darsi che l'abbia gia' trovato // Se avevo chiesto anche l'es. prec. puo' darsi che l'abbia gia' trovato
if (aep) if (aep_par)
force = FALSE; force = FALSE;
else else
force = TRUE; force = TRUE;
@ -114,6 +141,7 @@ TRectype* TSaldi_list::saldi() const
TSaldo::TSaldo() : _saldo_ep(LF_SALDI) TSaldo::TSaldo() : _saldo_ep(LF_SALDI)
{ {
_saldo_iniziale = ZERO; _saldo_iniziale = ZERO;
_saldoiniziale = ZERO;
_prg_dare = ZERO; _prg_dare = ZERO;
_prg_avere = ZERO; _prg_avere = ZERO;
_saldo = ZERO; _saldo = ZERO;
@ -126,32 +154,15 @@ TSaldo::TSaldo() : _saldo_ep(LF_SALDI)
TSaldo::~TSaldo() TSaldo::~TSaldo()
{} {}
//
// Cerca l'esercizio precedente di EseCorr
// Se EseCorr e' gia' il primo ritorna 0
// senno' ritorna, astutamente, EseCorr - 1
//
const int TSaldo::EsePre(const int EseCorr)
{
TTable ese("ESC");
TString first(30);
TString16 codtab;
ese.first();
first = ese.get("CODTAB");
codtab.format("%04d", EseCorr);
if (codtab == first)
return 0;
return EseCorr - 1;
}
real TSaldo::saldofin_esprec(int annoes, int g, int c, long s) real TSaldo::saldofin_esprec(int annoes, int g, int c, long s)
{ {
const int annoesprec = EsePre(annoes); const int annoesprec = EsePre(annoes);
if (annoesprec == 0) return ZERO; // non ci sono esercizi prima del primo if (annoesprec == 0) // non ci sono esercizi prima del primo
{
_rec_presente_ep = FALSE;
_significativo = FALSE;
return ZERO;
}
const TRectype& app = ricerca_progr_prec(annoesprec, g, c, s); const TRectype& app = ricerca_progr_prec(annoesprec, g, c, s);
@ -161,11 +172,16 @@ real TSaldo::saldofin_esprec(int annoes, int g, int c, long s)
const real pavere = app.get_real(SLD_PAVERE); const real pavere = app.get_real(SLD_PAVERE);
const real pdaresca = app.get_real(SLD_PDARESCA); const real pdaresca = app.get_real(SLD_PDARESCA);
const real paveresca = app.get_real(SLD_PAVERESCA); const real paveresca = app.get_real(SLD_PAVERESCA);
_significativo = (saldo != ZERO || pdare != ZERO || pavere != ZERO
|| pdaresca != ZERO || paveresca != ZERO);
real tot = pdare-pavere+pdaresca-paveresca; /*
_significativo = (saldo != ZERO || pdare != ZERO || pavere != ZERO
|| pdaresca != ZERO || paveresca != ZERO);
*/
_significativo = (saldo != ZERO || pdare != ZERO || pavere != ZERO);
//real tot = pdare-pavere+pdaresca-paveresca;
real tot = pdare-pavere;
if (flag == 'D') if (flag == 'D')
tot += saldo; tot += saldo;
else else
@ -206,7 +222,11 @@ real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil)
_significativo = (saldoini != ZERO || pdaresca != ZERO || paveresca != ZERO); _significativo = (saldoini != ZERO || pdaresca != ZERO || paveresca != ZERO);
if (saldoini != ZERO) if (saldoini != ZERO)
if (flag == 'A') saldoini = -saldoini; if (flag == 'A')
{
saldoini = -saldoini;
flag = 'D';
}
if (saldoini == ZERO) if (saldoini == ZERO)
if ( indbil == 1 || indbil == 2 || indbil == 5 ) if ( indbil == 1 || indbil == 2 || indbil == 5 )
@ -255,90 +275,7 @@ void TSaldo::leggi_mov(long nr)
} }
} }
/******************************************** //per bilancio scalare per data limite
bool Saldo::calcola_data_limite(int annoes, int g, int c, long s,
const TDate& data_inf, const TDate& data_sup, int indbil,
bool controllo_competenza, const TDate& inizio_es,
const TDate& fine_es, const TDate& fine_es_prec,bool stp_prov)
{
TString sezione, gcs_corr, gcs_prec="", provv = "";
real importo, dep = ZERO;
int gruppo, conto, annoe;
long sottoconto, num_reg;
TLocalisamfile rmov(LF_RMOV, FALSE);
TDate data_rmv;
bool esito = FALSE;
rmov.setkey(2);
rmov.zero();
rmov.put(RMV_GRUPPO,g);
if (c != 0)
rmov.put(RMV_CONTO,c);
if (s != 0)
rmov.put(RMV_SOTTOCONTO,s);
TRectype rec(rmov.curr());
rmov.read(_isgteq);
for ( ; !rmov.eof(); rmov.next())
{
if (rmov.curr() != rec) break;
annoe = rmov.get_int(RMV_ANNOES);
gruppo = rmov.get_int(RMV_GRUPPO);
conto = rmov.get_int(RMV_CONTO);
sottoconto = rmov.get_long(RMV_SOTTOCONTO);
data_rmv = rmov.get_date(RMV_DATAREG);
num_reg = rmov.get_long(RMV_NUMREG);
//se la causale del movimento e' uguale a quella di chiusura, il movimento non va considerato
//if (causale_mov(num_reg,inizio_es,data_sup,provv))
// break;
if ((!stp_prov) && (provv.trim().not_empty())) //se non e' richiesta stampa
continue; //mov. provvisori li scarto
gcs_corr = format ("%3d%3d%6ld", gruppo, conto, sottoconto);
if (gcs_corr != gcs_prec)
{
gcs_prec = gcs_corr;
//dep += calcola_saldo_iniziale(annoe,gruppo,conto,sottoconto,indbil);
}
//controllo sulle date
if (annoe != annoes)
if (annoe != annoes-1)
continue;
if (controllo_competenza)
if ( (annoe == annoes -1) && (data_sup != fine_es) )
continue;
else
if ( (data_rmv <= fine_es) && (data_rmv <= fine_es_prec) ||
(data_rmv > fine_es) )
continue;
if ( (data_rmv < data_inf) || (data_rmv > data_sup) )
continue;
sezione = rmov.get(RMV_SEZIONE);
importo = rmov.get_real(RMV_IMPORTO);
if (importo.is_zero())
continue;
esito = TRUE;
if (sezione == "D") dep += importo;
else dep -= importo;
}
_saldo = dep;
return esito;
}
***************************************************/
bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDate& data_inf, bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDate& data_inf,
const TDate& data_sup, int indbil, bool stp_prov) const TDate& data_sup, int indbil, bool stp_prov)
{ {
@ -445,70 +382,8 @@ bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDat
return _movimentato; return _movimentato;
} }
/**************************************************************
bool Saldo::calcola_ultima_immissione(int annoes, int annoesprec, int g, int c,
long s, int indbil)
{
//Si considerano i saldi e non piu' i movimenti
char sezione;
int gruppo, conto, annoe;
long sottoconto;
TLocalisamfile saldi(LF_SALDI, FALSE);
bool esito = TRUE;
_saldo_iniziale = ZERO;
_prg_dare = ZERO;
_prg_avere = ZERO;
_saldo = ZERO;
saldi.zero();
if (annoes != 0) saldi.put(SLD_ANNOES,annoes);
if (g != 0) saldi.put(SLD_GRUPPO,g);
if (c != 0) saldi.put(SLD_CONTO,c);
if (s != 0) saldi.put(SLD_SOTTOCONTO,s);
if (saldi.read() == NOERR)
{
annoe = saldi.get_int(SLD_ANNOES);
gruppo = saldi.get_int(SLD_GRUPPO);
conto = saldi.get_int(SLD_CONTO);
sottoconto = saldi.get_long(SLD_SOTTOCONTO);
_saldo_iniziale = saldi.get_real(SLD_SALDO);
_prg_dare = saldi.get_real(SLD_PDARE);
_prg_avere = saldi.get_real(SLD_PAVERE);
sezione = saldi.get_char(SLD_FLAGSALINI);
if (sezione == 'A') _saldo_iniziale = -_saldo_iniziale;
if (annoesprec == 0) //all'ultima immissione es.in corso
{
if (indbil == 1 || indbil == 2 || indbil == 5)
if (_saldo_iniziale == ZERO)
_saldo_iniziale += saldofin_esprec(annoes,gruppo,conto,sottoconto);
// i tre valori precedenti vengono utilizzati per la stampa bilancio
// di verifica
_saldo = _saldo_iniziale + _prg_dare - _prg_avere;
}
else //all'ultima immissione es.precedente
{
const int annoesprec = EsePre(annoes);
if (annoesprec != 0)
{
TRectype app = ricerca_progr_prec(annoe-1, gruppo, conto, sottoconto);
annoe = app.get_int (SLD_ANNOES);
_prg_dare = app.get_real(SLD_PDARE);
_prg_avere = app.get_real(SLD_PAVERE);
}
_saldo = _prg_dare - _prg_avere;
}
}
return esito;
}
*****************************************************/
//per bilancio di verifica all'ultima immissione
bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil) bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil)
{ {
//Si considerano i saldi e non piu' i movimenti //Si considerano i saldi e non piu' i movimenti
@ -518,7 +393,8 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
bool esito = FALSE; bool esito = FALSE;
TLocalisamfile saldi(LF_SALDI, FALSE); TLocalisamfile saldi(LF_SALDI, FALSE);
_saldo_iniziale = ZERO; _saldo_iniziale = ZERO;
_saldoiniziale = ZERO;
_prg_dare = ZERO; _prg_dare = ZERO;
_prg_avere = ZERO; _prg_avere = ZERO;
_prg_daresca = ZERO; _prg_daresca = ZERO;
@ -548,17 +424,19 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
if (sezione == 'A') _saldo_iniziale = -_saldo_iniziale; if (sezione == 'A') _saldo_iniziale = -_saldo_iniziale;
_saldoiniziale = _saldo_iniziale; //saldo iniziale presente sul record saldi
//non comprensivo del saldo finale es.precedente
if (indbil == 1 || indbil == 2 || indbil == 5) if (indbil == 1 || indbil == 2 || indbil == 5)
if (_saldo_iniziale == ZERO) if (_saldo_iniziale == ZERO)
_saldo_iniziale += saldofin_esprec(annoes,gruppo,conto,sottoconto); _saldo_iniziale += saldofin_esprec(annoes,gruppo,conto,sottoconto);
esito = TRUE; esito = TRUE;
_saldo = _saldo_iniziale + _prg_dare - _prg_avere + _prg_daresca - _prg_averesca; _saldo = _saldo_iniziale + _prg_dare - _prg_avere;
} }
return esito; return esito;
} }
//per bilancio scalare all'ultima immissione
bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil) bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil)
{ {
//Si considerano i saldi e non piu' i movimenti //Si considerano i saldi e non piu' i movimenti
@ -593,12 +471,16 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
_saldo_iniziale = saldi.get_real(SLD_SALDO); _saldo_iniziale = saldi.get_real(SLD_SALDO);
_prg_dare = saldi.get_real(SLD_PDARE); _prg_dare = saldi.get_real(SLD_PDARE);
_prg_avere = saldi.get_real(SLD_PAVERE); _prg_avere = saldi.get_real(SLD_PAVERE);
_prg_daresca = saldi.get_real(SLD_PDARESCA); //_prg_daresca = saldi.get_real(SLD_PDARESCA);
_prg_averesca = saldi.get_real(SLD_PAVERESCA); //_prg_averesca = saldi.get_real(SLD_PAVERESCA);
sezione = saldi.get_char(SLD_FLAGSALINI); sezione = saldi.get_char(SLD_FLAGSALINI);
esito = (_saldo_iniziale != ZERO || _prg_dare != ZERO || _prg_avere != ZERO /*
|| _prg_daresca != ZERO || _prg_averesca != ZERO); esito = (_saldo_iniziale != ZERO || _prg_dare != ZERO || _prg_avere != ZERO
|| _prg_daresca != ZERO || _prg_averesca != ZERO);
*/
esito = (_saldo_iniziale != ZERO || _prg_dare != ZERO || _prg_avere != ZERO);
if (sezione == 'A') _saldo_iniziale = -_saldo_iniziale; if (sezione == 'A') _saldo_iniziale = -_saldo_iniziale;
@ -609,7 +491,8 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
if (_saldo_iniziale == ZERO) if (_saldo_iniziale == ZERO)
_saldo_iniziale += saldofin_esprec(annoes,g,c,s); _saldo_iniziale += saldofin_esprec(annoes,g,c,s);
_saldo = _saldo_iniziale + _prg_dare - _prg_avere + _prg_daresca - _prg_averesca; //_saldo = _saldo_iniziale + _prg_dare - _prg_avere + _prg_daresca - _prg_averesca;
_saldo = _saldo_iniziale + _prg_dare - _prg_avere;
return esito; return esito;
} }
@ -617,7 +500,7 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
TRectype& TSaldo::ricerca_progr_prec (int annoesprec, int g, int c, long s) TRectype& TSaldo::ricerca_progr_prec (int annoesprec, int g, int c, long s)
{ {
TLocalisamfile saldi(LF_SALDI, FALSE); TLocalisamfile saldi(LF_SALDI, FALSE);
// TRectype rec(LF_SALDI);
const int oldkey = saldi.getkey(); const int oldkey = saldi.getkey();
saldi.setkey(1); saldi.setkey(1);
@ -722,35 +605,6 @@ bool TSaldo::prg_mov_eliminati(int annoes,TConto& conto,real& prgdare,real& prga
return TRUE; return TRUE;
} }
/************************************
TLocalisamfile * get_descr_cf (TLocalisamfile * pconti,
TLocalisamfile * clifo, int g, int c, long s)
{
pconti->zero();
pconti->put (PCN_GRUPPO, g);
pconti->put (PCN_CONTO , c);
pconti->put (PCN_SOTTOCONTO, s);
pconti->read();
if (pconti->good())
return pconti;
TString tipocf = pconti->get(PCN_TMCF);
long codcf = s;
clifo->zero();
clifo->put(CLI_CODCF, codcf);
clifo->put(CLI_TIPOCF, tipocf);
clifo->read();
if (clifo->good())
return clifo;
return NULL;
}
**********************************************/