Patch level : 2.0 670

Files correlati     : cg1.exe cg1500a.msk
Ricompilazione Demo : [ ]
Commento            :

CM20076
Stampa bilancio di verifica. Ditta con esercizio 2003 ancora aperto e 2004
in corso. Nel 2003 ho dei movimenti provvisori. Se richiedo la stampa del
bilancio di verifica con esercizio 2004 in forma globale, nella colonna dei
progressivi precedenti mi deve dare la somma dei valori del 2003 compresi i
valori provvisori gestiti nello stesso esercizio.

CM20077
Stampa bilancio sezioni contrapposte Ditta con esercizio 2003 ancora aperto
e 2004 in corso. Nel 2003 ho dei movimenti provvisori. Se richiedo la
stampa del bilancio sezioni contrapposte con esercizio 2004 in forma
globale, deve dare la somma dei valori del 2003 compresi i valori provvisori
gestiti nello stesso esercizio.


git-svn-id: svn://10.65.10.50/trunk@11712 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2004-01-20 11:09:30 +00:00
parent 29c81ccebc
commit b549435a00
8 changed files with 84 additions and 110 deletions

View File

@ -12,7 +12,7 @@ int main(int argc,char** argv)
case 2: case 2:
cg1300(argc,argv); break; // Aggiornamenti cg1300(argc,argv); break; // Aggiornamenti
case 3: case 3:
cg1400(argc,argv); break; // Stampa deleghe iva cg1400(argc,argv); break; // Stampa deleghe iva
case 4: case 4:
cg1500(argc,argv); break; // Stampa bilanci cg1500(argc,argv); break; // Stampa bilanci
case 5: case 5:
@ -20,7 +20,7 @@ int main(int argc,char** argv)
case 6: case 6:
cg1700(argc,argv); break; // Stampa causali cg1700(argc,argv); break; // Stampa causali
default: default:
cg1100(argc,argv); break; // Stampa Piano dei conti cg1100(argc,argv); break; // Stampa Piano dei conti
} }
exit(0); // Altrimenti non esce mai! exit(0); // Altrimenti non esce mai!
return 0; return 0;

View File

@ -392,8 +392,8 @@ bool TStampa_bilanci::mask_bilancio(TMask_field& f, KEY k)
f.mask().set (F_QUADRATURA,""); f.mask().set (F_QUADRATURA,"");
f.mask().hide(F_QUADRATURA); f.mask().hide(F_QUADRATURA);
} }
} }
return TRUE; return TRUE;
} }
bool TStampa_bilanci::mask_datalim (TMask_field& f, KEY k) bool TStampa_bilanci::mask_datalim (TMask_field& f, KEY k)
@ -1477,7 +1477,7 @@ bool TStampa_bilanci::bil_verifica()
{ {
if (_annoes != 0 && (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5)) if (_annoes != 0 && (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5))
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s); saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov == 2);
//modifica del 21/11/95 //modifica del 21/11/95
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
@ -1507,7 +1507,7 @@ bool TStampa_bilanci::bil_verifica()
{ {
if (_annoes != 0 && (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5)) if (_annoes != 0 && (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5))
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s); saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov == 2);
//modifica del 21/11/95 //modifica del 21/11/95
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
@ -1535,8 +1535,7 @@ bool TStampa_bilanci::bil_verifica()
if (saldo_iniziale > 0) if (saldo_iniziale > 0)
_prg_prec_dare += saldo_iniziale; _prg_prec_dare += saldo_iniziale;
else _prg_prec_avere -= saldo_iniziale; else _prg_prec_avere -= saldo_iniziale;
saldo_finale = _prg_prec_dare-_prg_prec_avere+_mov_periodo_dare- saldo_finale = _prg_prec_dare-_prg_prec_avere+_mov_periodo_dare-_mov_periodo_avere;
_mov_periodo_avere;
} }
//if (saldo_finale == ZERO) //if (saldo_finale == ZERO)
@ -1557,7 +1556,7 @@ bool TStampa_bilanci::bil_verifica()
{ {
if (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5) if (indbil_conto == 1 || indbil_conto == 2 || indbil_conto == 5)
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,FALSE); saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,FALSE,_stampa_mov_prov == 2);
if (_stampav == 1 && sld.significativo()) if (_stampav == 1 && sld.significativo())
movimentato = TRUE; movimentato = TRUE;
} }
@ -1893,7 +1892,7 @@ bool TStampa_bilanci::ricerca_cf(int g,int c,char tipocf,int ib, real& saldo_fin
{ {
if (_annoes != 0 && (ib == 1 || ib == 2 || ib == 5)) if (_annoes != 0 && (ib == 1 || ib == 2 || ib == 5))
{ {
saldo_iniziale += sld.saldofin_esprec(_annoes,g,c,s); saldo_iniziale += sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov==2);
//modifica del 21/11/1995 //modifica del 21/11/1995
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
@ -1923,7 +1922,7 @@ bool TStampa_bilanci::ricerca_cf(int g,int c,char tipocf,int ib, real& saldo_fin
{ {
if (_annoes != 0 && (ib == 1 || ib == 2 || ib == 5)) if (_annoes != 0 && (ib == 1 || ib == 2 || ib == 5))
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s); saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov==2);
//modifica del 21/11/1995 //modifica del 21/11/1995
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
@ -1981,7 +1980,7 @@ bool TStampa_bilanci::ricerca_cf(int g,int c,char tipocf,int ib, real& saldo_fin
//solo se e' un conto patrimoniale //solo se e' un conto patrimoniale
if (ib == 1 || ib == 2 || ib == 5) if (ib == 1 || ib == 2 || ib == 5)
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,FALSE); saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,s,false,_stampa_mov_prov==2);
movimentato = sld.significativo(); movimentato = sld.significativo();
} }
} }
@ -2349,7 +2348,7 @@ void TStampa_bilanci::leggi_clifo(const TArray& gccf)
if (_indbil == 1 || _indbil == 2 || _indbil == 5) if (_indbil == 1 || _indbil == 2 || _indbil == 5)
if (_annoes != 0) //cioe' se sto ragionando per competenza if (_annoes != 0) //cioe' se sto ragionando per competenza
{ {
saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,codcf); saldo_iniziale = sld.saldofin_esprec(_annoes,g,c,codcf,false,_stampa_mov_prov==2);
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
else _saldo_ini_avere = -saldo_iniziale; else _saldo_ini_avere = -saldo_iniziale;
@ -2376,7 +2375,7 @@ void TStampa_bilanci::leggi_clifo(const TArray& gccf)
if (_indbil == 1 || _indbil == 2 || _indbil == 5) if (_indbil == 1 || _indbil == 2 || _indbil == 5)
if (s.is_zero() && _annoes != 0) //competenza!!! if (s.is_zero() && _annoes != 0) //competenza!!!
{ {
saldo_iniziale += sld.saldofin_esprec(_annoes,g,c,codcf); saldo_iniziale += sld.saldofin_esprec(_annoes,g,c,codcf,false,_stampa_mov_prov==2);
//modifica del 21/11/1995 //modifica del 21/11/1995
if (saldo_iniziale > ZERO) if (saldo_iniziale > ZERO)
_saldo_ini_dare = saldo_iniziale; _saldo_ini_dare = saldo_iniziale;
@ -2414,7 +2413,7 @@ void TStampa_bilanci::leggi_clifo(const TArray& gccf)
if (_stampa_mov_prov != 3) if (_stampa_mov_prov != 3)
if (!movimentato /* && _stampac!=1 */ ) if (!movimentato /* && _stampac!=1 */ )
if (_indbil == 1 || _indbil == 2 || _indbil == 5) if (_indbil == 1 || _indbil == 2 || _indbil == 5)
saldo_iniziale = sld.saldofin_esprec(anno,g,c,codcf,FALSE); saldo_iniziale = sld.saldofin_esprec(anno,g,c,codcf,false,_stampa_mov_prov==2);
if (movimentato) if (movimentato)
saldo_iniziale = sld.saldoini(); saldo_iniziale = sld.saldoini();
@ -3982,10 +3981,9 @@ void TStampa_bilanci::preprocess_header()
//modifica del 20/04/1995 //modifica del 20/04/1995
if (_print_exercise) if (_print_exercise)
{ {
TString d1(InizioEsercizio(_annoes).string()); const TString16 d1(InizioEsercizio(_annoes).string());
TString d2(FineEsercizio(_annoes).string()); const TString16 d2(FineEsercizio(_annoes).string());
set_header(r, "@84g%s %s %s", TR("Esercizio"), (const char*)d1, (const char*)d2); /**/ set_header(r, "@84g%s %s %s", TR("Esercizio"), (const char*)d1, (const char*)d2); /**/
} }
r++; r++;
header_cdc(r); header_cdc(r);

View File

@ -160,20 +160,12 @@ BEGIN
PROMPT 60 10 "" PROMPT 60 10 ""
END END
/*
BOOLEAN F_STAMPAMPROV
BEGIN
PROMPT 2 11 "Stampa movimenti provvisori "
HELP "Indicare se stampare i movimenti provvisori"
END
*/
LIST F_STAMPAMPROV 15 LIST F_STAMPAMPROV 15
BEGIN BEGIN
PROMPT 2 11 "Bilancio " PROMPT 2 11 "Bilancio "
ITEM "1|Normale" ITEM "1|Normale"
ITEM "2|Globale" ITEM "2|Globale"
ITEM "3|Solo provvisori" ITEM "3|Solo provvisori"
END END
LIST F_MODULO 1 12 LIST F_MODULO 1 12

View File

@ -1613,7 +1613,7 @@ void TPrimanota_application::ini2mask(TConfig& ini, TMask& msk, bool query)
add_not_empty(riga, 14, ini, RMV_CODCMS); // Commessa 115 add_not_empty(riga, 14, ini, RMV_CODCMS); // Commessa 115
add_not_empty(riga, 15, ini, RMV_FASCMS); // Fase 116 add_not_empty(riga, 15, ini, RMV_FASCMS); // Fase 116
riga.add(tipo, 16); // Tipo di riga 116 riga.add(tipo, cg.cid2index(CG_ROWTYPE)); // Tipo di riga 119
} }
if (is_fattura()) if (is_fattura())

View File

@ -1425,8 +1425,9 @@ bool TGrid_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
{ {
if (xiev->v.select.column == 0) if (xiev->v.select.column == 0)
{ {
_cur_rec = rec; // Assegno subito il record corrente // _cur_rec = rec; // A 16 bit era condizionato a XI_R4
_grid->on_record_button(rec); if (rec == _cur_rec) // Aggiunto a 32 bit
_grid->on_record_button(rec);
if (_read_only) if (_read_only)
refused = TRUE; refused = TRUE;
} }
@ -2324,9 +2325,7 @@ void TMastrini_grid::on_grid_button()
void TMastrini_grid::on_record_button(long rec) void TMastrini_grid::on_record_button(long rec)
{ {
TWait_cursor hourglass;
const TRectype& testata = _mastrino.testata(rec); const TRectype& testata = _mastrino.testata(rec);
bool refresh = testata.edit(); bool refresh = testata.edit();
if (refresh && yesno_box(TR("Si desidera aggiornare il mastrino?"))) if (refresh && yesno_box(TR("Si desidera aggiornare il mastrino?")))
reread(); reread();

View File

@ -93,7 +93,7 @@ void TParametri_ditta::check_registers(int year)
if (flags < R_ALL) if (flags < R_ALL)
{ {
TString wrn(TR("I seguenti registri non esistono per l'attivita' ")); TString wrn(TR("I seguenti registri non esistono per l'attivita' "));
wrn << att << "(" << year << "):"; wrn << att << " (" << year << "):";
if ((flags & R_VEN) == 0x00) wrn << TR("\n\tregistro vendite"); if ((flags & R_VEN) == 0x00) wrn << TR("\n\tregistro vendite");
if ((flags & R_ACQ) == 0x00) wrn << TR("\n\tregistro acquisti"); if ((flags & R_ACQ) == 0x00) wrn << TR("\n\tregistro acquisti");
warning_box(wrn); warning_box(wrn);
@ -102,8 +102,7 @@ void TParametri_ditta::check_registers(int year)
// libro giornale non si controlla per attivita' // libro giornale non si controlla per attivita'
if(!is_giornale) if(!is_giornale)
warning_box(FR("Non esiste probabilmente nessun " warning_box(FR("Non esiste probabilmente nessun libro giornale per l'anno %d"), year);
"libro giornale per l'anno %d"), year);
} }

View File

@ -93,9 +93,9 @@ TSaldo::TSaldo() : _saldi(LF_SALDI), _saldoiniziale(ZERO), _saldo_iniziale(ZERO)
real TSaldo::saldofin_esprec(int annoes, int g, int c, long s, bool saldo_chiusura, bool provvis) real TSaldo::saldofin_esprec(int annoes, int g, int c, long s, bool saldo_chiusura, bool provvis)
{ {
const int annoesprec = EsePre(annoes);
_significativo = FALSE; _significativo = FALSE;
const int annoesprec = EsePre(annoes);
if (!ricerca_progr_prec(annoesprec, g, c, s)) // non ci sono esercizi prima del primo if (!ricerca_progr_prec(annoesprec, g, c, s)) // non ci sono esercizi prima del primo
return ZERO; return ZERO;
@ -127,13 +127,13 @@ real TSaldo::saldofin_esprec(int annoes, int g, int c, long s, bool saldo_chiusu
tot -= paverepro; tot -= paverepro;
} }
_significativo = (tot != 0); _significativo = !tot.is_zero();
return tot; return tot;
} }
//richiamata nel bilancio a sez.contr per data limite //richiamata nel bilancio a sez.contr per data limite
//in realta' calcola il saldo finale es.prec //in realta' calcola il saldo finale es.prec
real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil) real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil, bool provvis)
{ {
real saldoini; real saldoini;
_significativo = TRUE; _significativo = TRUE;
@ -146,7 +146,7 @@ real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil)
_saldi.put(SLD_FLSCA,""); _saldi.put(SLD_FLSCA,"");
if (_rec_presente_ec = (_saldi.read() == NOERR)) if (_rec_presente_ec = (_saldi.read() == NOERR))
saldoini = _saldi.get_real(SLD_SALDO); saldoini = _saldi.get_real(SLD_SALDO);
_significativo = _rec_presente_ec && saldoini != ZERO; _significativo = _rec_presente_ec && saldoini != ZERO;
@ -158,31 +158,13 @@ real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil)
if (indbil == 1 || indbil == 2 || indbil == 5) if (indbil == 1 || indbil == 2 || indbil == 5)
{ {
_prec = TRUE; _prec = TRUE;
saldoini = saldofin_esprec(_annoes, g, c, s); saldoini = saldofin_esprec(_annoes, g, c, s, false, provvis);
} }
_saldo_iniziale = saldoini; _saldo_iniziale = saldoini;
} }
return _saldo_iniziale; return _saldo_iniziale;
} }
/*
const TString& TSaldo::causale_chiusura_es() const
{
TConfig conf(CONFIG_DITTA, "cg");
TString& tmp = get_tmp_string();
tmp = conf.get("CoCaCh");
return tmp;
}
const TString& TSaldo::causale_apertura_es() const
{
TConfig conf(CONFIG_DITTA, "cg");
TString& tmp = get_tmp_string();
tmp = conf.get("CoCaAp");
return tmp;
}
*/
bool TSaldo::leggi_mov(long nr) bool TSaldo::leggi_mov(long nr)
{ {
const TRectype& mov = cache().get(LF_MOV, nr); const TRectype& mov = cache().get(LF_MOV, nr);
@ -223,7 +205,7 @@ bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDat
// Anche se non movimentato vado a vedere il saldo // Anche se non movimentato vado a vedere il saldo
if (stp_prov != 3 && (filter == NULL || *filter == '\0')) if (stp_prov != 3 && (filter == NULL || *filter == '\0'))
_saldo = calcola_saldo_iniziale(g,c,s,indbil); _saldo = calcola_saldo_iniziale(g,c,s,indbil,stp_prov == 2);
for (cur = 0L; cur.pos() < items; ++cur) for (cur = 0L; cur.pos() < items; ++cur)
{ {
@ -294,8 +276,6 @@ 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
char sezione; char sezione;
int gruppo, conto, annoe;
long sottoconto;
real pdarepro, paverepro; real pdarepro, paverepro;
bool esito = FALSE; bool esito = FALSE;
@ -316,10 +296,10 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
if (_saldi.read() == NOERR) if (_saldi.read() == NOERR)
{ {
annoe = _saldi.get_int(SLD_ANNOES); // int annoe = _saldi.get_int(SLD_ANNOES);
gruppo = _saldi.get_int(SLD_GRUPPO); // int gruppo = _saldi.get_int(SLD_GRUPPO);
conto = _saldi.get_int(SLD_CONTO); // int conto = _saldi.get_int(SLD_CONTO);
sottoconto = _saldi.get_long(SLD_SOTTOCONTO); // long sottoconto = _saldi.get_long(SLD_SOTTOCONTO);
_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);
@ -330,26 +310,27 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
_saldofin = _saldi.get_real(SLD_SALDOFIN); // da PATRIZIA _saldofin = _saldi.get_real(SLD_SALDOFIN); // da PATRIZIA
if (stp_prov == 1) //bilancio normale (senza provvisori) if (stp_prov == 1) //bilancio normale (senza provvisori)
if (_saldo_iniziale == ZERO && _prg_dare == ZERO && _prg_avere == ZERO) if (_saldo_iniziale.is_zero() && _prg_dare.is_zero() && _prg_avere.is_zero())
return esito; return esito;
// if (stp_prov == 0 && paverepro == ZERO) // if (stp_prov == 0 && paverepro == ZERO)
if (stp_prov == 3 && paverepro == ZERO && pdarepro == ZERO) // Modifica del 24-09-96 errore MI0890. if (stp_prov == 3 && paverepro.is_zero() && pdarepro.is_zero()) // Modifica del 24-09-96 errore MI0890.
{ {
_saldo = _prg_dare = _prg_avere = ZERO; // N.B. Non e' detto che funzioni sempre!!!!!! _saldo = _prg_dare = _prg_avere = ZERO; // N.B. Non e' detto che funzioni sempre!!!!!!
return esito; return esito;
} }
if (sezione == 'A')
if (sezione == 'A') _saldo_iniziale = -_saldo_iniziale; _saldo_iniziale = -_saldo_iniziale;
if (_sezsf == 'A')
if (_sezsf == 'A') _saldofin = -_saldofin; // W96SALDI del 19-06-96 _saldofin = -_saldofin; // W96SALDI del 19-06-96
_saldoiniziale = _saldo_iniziale; //saldo iniziale presente sul record saldi _saldoiniziale = _saldo_iniziale; //saldo iniziale presente sul record saldi
//non comprensivo del saldo finale es.precedente //non comprensivo del saldo finale es.precedente
if (stp_prov != 3) if (_saldo_iniziale.is_zero() && stp_prov != 3)
{
if (indbil == 1 || indbil == 2 || indbil == 5) if (indbil == 1 || indbil == 2 || indbil == 5)
if (_saldo_iniziale == ZERO) _saldo_iniziale += saldofin_esprec(annoes,g,c,s, false, stp_prov == 2);
_saldo_iniziale += saldofin_esprec(annoes,gruppo,conto,sottoconto); }
esito = TRUE; esito = TRUE;
@ -388,8 +369,8 @@ 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
char sezione; char sezione;
int gruppo, conto, annoe; // int gruppo, conto, annoe;
long sottoconto; // long sottoconto;
real pdarepro, paverepro; real pdarepro, paverepro;
bool esito = FALSE; bool esito = FALSE;
@ -412,10 +393,10 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
if (_saldi.read() == NOERR) if (_saldi.read() == NOERR)
{ {
annoe = _saldi.get_int(SLD_ANNOES); // annoe = _saldi.get_int(SLD_ANNOES);
gruppo = _saldi.get_int(SLD_GRUPPO); // gruppo = _saldi.get_int(SLD_GRUPPO);
conto = _saldi.get_int(SLD_CONTO); // conto = _saldi.get_int(SLD_CONTO);
sottoconto = _saldi.get_long(SLD_SOTTOCONTO); // sottoconto = _saldi.get_long(SLD_SOTTOCONTO);
_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);
@ -435,7 +416,8 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
if (stp_prov == 3) //bilancio dei soli mov. provvisori if (stp_prov == 3) //bilancio dei soli mov. provvisori
esito = (pdarepro != ZERO || paverepro != ZERO); esito = (pdarepro != ZERO || paverepro != ZERO);
if (sezione == 'A') _saldo_iniziale = -_saldo_iniziale; if (sezione == 'A')
_saldo_iniziale = -_saldo_iniziale;
if (saldo_chiusura) // W96SALDI modifica inserita per il discorso di inclusione oppure if (saldo_chiusura) // W96SALDI modifica inserita per il discorso di inclusione oppure
if (_sezsf == 'A') // no del saldo di chiusura inserita il 09-07-96 if (_sezsf == 'A') // no del saldo di chiusura inserita il 09-07-96
@ -444,13 +426,12 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
_rec_presente_ec = esito; _rec_presente_ec = esito;
} }
if (stp_prov != 3) if (_saldo_iniziale.is_zero() && stp_prov != 3)
if (indbil == 1 || indbil == 2 || indbil == 5) if (indbil == 1 || indbil == 2 || indbil == 5)
if (_saldo_iniziale == ZERO) {
{ _prec = TRUE;
_prec = TRUE; _saldo_iniziale += saldofin_esprec(annoes,g,c,s,false,stp_prov==2);
_saldo_iniziale += saldofin_esprec(annoes,g,c,s); }
}
if (stp_prov == 1) if (stp_prov == 1)
_saldo = _saldo_iniziale + _prg_dare - _prg_avere; _saldo = _saldo_iniziale + _prg_dare - _prg_avere;
@ -623,7 +604,7 @@ bool TSaldo::prg_saldo(int annoes, TConto& conto, real& prgdare, real& prgavere,
// TContoExt // TContoExt
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TContoExt : public TConto class TContoExt : public TConto
{ {
bool _scaricato; bool _scaricato;
@ -638,11 +619,16 @@ public:
virtual ~TContoExt() {} virtual ~TContoExt() {}
}; };
const TString& TTab_conti::build_key(const TBill& c, int anno, bool scar) const
{
static TString80 key;
key.format("%4d%3d%3d%6ld%c", anno, c.gruppo(), c.conto(), c.sottoconto(), scar ? 'X' : '\0');
return key;
}
TConto* TTab_conti::add(const TBill& c, int anno, bool scar) TConto* TTab_conti::add(const TBill& c, int anno, bool scar)
{ {
TString80 key; const TString& key = build_key(c, anno, scar);
key.format("%4d%3d%3d%6ld", anno, c.gruppo(), c.conto(), c.sottoconto());
if (scar) key << "X";
TContoExt* tc = new TContoExt(c.gruppo(), c.conto(), c.sottoconto(), TContoExt* tc = new TContoExt(c.gruppo(), c.conto(), c.sottoconto(),
c.tipo(), NULL, scar); c.tipo(), NULL, scar);
TAssoc_array::add(key, tc); TAssoc_array::add(key, tc);
@ -651,18 +637,14 @@ TConto* TTab_conti::add(const TBill& c, int anno, bool scar)
TConto* TTab_conti::find(const TBill& c, int anno, bool scar) TConto* TTab_conti::find(const TBill& c, int anno, bool scar)
{ {
TString80 key; const TString& key = build_key(c, anno, scar);
key.format("%4d%3d%3d%6ld", anno, c.gruppo(), c.conto(), c.sottoconto());
if (scar) key << "X";
TContoExt* tc = (TContoExt*)objptr(key); TContoExt* tc = (TContoExt*)objptr(key);
return tc; return tc;
} }
void TTab_conti::remove(const TBill& c, int anno, bool scar) void TTab_conti::remove(const TBill& c, int anno, bool scar)
{ {
TString80 key; const TString& key = build_key(c, anno, scar);
key.format("%4d%3d%3d%6ld", anno, c.gruppo(), c.conto(), c.sottoconto());
if (scar) key << "X";
TAssoc_array::remove(key); TAssoc_array::remove(key);
} }
@ -736,8 +718,9 @@ void TSaldo_agg::aggiorna(const TBill& tc, const TImporto& imp, bool somma, bool
void TSaldo_agg::aggiorna(int gruppo, int conto, long sottoconto, const real& importo, char sezione, void TSaldo_agg::aggiorna(int gruppo, int conto, long sottoconto, const real& importo, char sezione,
bool somma, bool scaricato) bool somma, bool scaricato)
{ {
const TBill bill(gruppo, conto, sottoconto);
const TImporto imp(sezione, importo); const TImporto imp(sezione, importo);
_tab_conti.aggiorna_conto(TBill(gruppo, conto, sottoconto), _anno_es, imp, _movap, _tab_conti.aggiorna_conto(bill, _anno_es, imp, _movap,
_provv, somma, _movimentato, scaricato); _provv, somma, _movimentato, scaricato);
} }

View File

@ -88,7 +88,7 @@ class TSaldo : public TObject
protected: protected:
void InFinEs(int); void InFinEs(int);
bool leggi_mov(long numreg); // Leggi testata bool leggi_mov(long numreg); // Leggi testata
real calcola_saldo_iniziale(int g, int c, long s, int indbil); real calcola_saldo_iniziale(int g, int c, long s, int indbil, bool provvis);
bool prg_saldo(int, TConto&, real&, real&, bool); bool prg_saldo(int, TConto&, real&, real&, bool);
const real& iniziale() const { return _saldo_iniziale;} const real& iniziale() const { return _saldo_iniziale;}
void set_iniziale(const real& val) { _saldo_iniziale = val; } void set_iniziale(const real& val) { _saldo_iniziale = val; }
@ -136,6 +136,9 @@ public:
class TTab_conti : public TAssoc_array class TTab_conti : public TAssoc_array
{ {
protected:
const TString& build_key(const TBill& c, int anno, bool scar) const;
public: public:
void aggiorna_conto(const TBill& tc, int anno_es, const TImporto& importo, void aggiorna_conto(const TBill& tc, int anno_es, const TImporto& importo,
tiposal movap, bool provv, bool somma, bool movimentato, bool scaricato); tiposal movap, bool provv, bool somma, bool movimentato, bool scaricato);