Patch level : 12.0 848
Files correlati : cg1.exe cg2.exe cg4.exe f23.dir f23.trr cg1500a.msk cg2100b.msk cg2100c.msk cg2200a.msk cg5500b.msk Commento : Aggiunta data competenza costi ricavi Issue #15 Aggiunto tipo provvisorio "B" Bilancio costi/ricavi (Prima nota, Stampa Bilancio, Apertura Chiusura conti)
This commit is contained in:
parent
3b7aa87dea
commit
b33ee374e1
@ -95,7 +95,7 @@ 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, int provv)
|
||||
{
|
||||
_significativo = false;
|
||||
|
||||
@ -107,8 +107,6 @@ real TSaldo::saldofin_esprec(int annoes, int g, int c, long s, bool saldo_chiusu
|
||||
const real saldo = _saldi.get_real(SLD_SALDO);
|
||||
const real pdare = _saldi.get_real(SLD_PDARE);
|
||||
const real pavere = _saldi.get_real(SLD_PAVERE);
|
||||
const real pdarepro = _saldi.get_real(SLD_PDAREPRO);
|
||||
const real paverepro = _saldi.get_real(SLD_PAVEREPRO);
|
||||
const char flagsf = _saldi.get_char(SLD_FLAGSALFIN);
|
||||
const real saldosf = _saldi.get_real(SLD_SALDOFIN);
|
||||
|
||||
@ -125,19 +123,29 @@ real TSaldo::saldofin_esprec(int annoes, int g, int c, long s, bool saldo_chiusu
|
||||
tot -= saldosf; // che e' l'unico programma ad usare la funzione
|
||||
} // passandogli come flag saldo_chiusura il valore true.
|
||||
|
||||
if (provvis)
|
||||
{
|
||||
tot += pdarepro;
|
||||
tot -= paverepro;
|
||||
}
|
||||
|
||||
if (provv & 0x2)
|
||||
{
|
||||
tot += _saldi.get_real(SLD_PDAREPRO);
|
||||
tot -= _saldi.get_real(SLD_PAVEREPRO);
|
||||
}
|
||||
if (provv & 0x4)
|
||||
{
|
||||
tot += _saldi.get_real(SLD_PDAREPROB);
|
||||
tot -= _saldi.get_real(SLD_PAVEREPROB);
|
||||
}
|
||||
if (provv & 0x8)
|
||||
{
|
||||
tot += _saldi.get_real(SLD_PDAREPROC);
|
||||
tot -= _saldi.get_real(SLD_PAVEREPROC);
|
||||
}
|
||||
|
||||
_significativo = !tot.is_zero();
|
||||
return tot;
|
||||
}
|
||||
|
||||
//richiamata nel bilancio a sez.contr per data limite
|
||||
//in realtà calcola il saldo finale es.prec
|
||||
real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil, bool provvis)
|
||||
real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil, int provv)
|
||||
{
|
||||
real saldoini;
|
||||
_significativo = true;
|
||||
@ -162,7 +170,7 @@ real TSaldo::calcola_saldo_iniziale(int g,int c,long s,int indbil, bool provvis)
|
||||
if (indbil == 1 || indbil == 2 || indbil == 5)
|
||||
{
|
||||
_prec = true;
|
||||
saldoini = saldofin_esprec(_annoes, g, c, s, false, provvis);
|
||||
saldoini = saldofin_esprec(_annoes, g, c, s, false, provv);
|
||||
}
|
||||
_saldo_iniziale = saldoini;
|
||||
}
|
||||
@ -187,7 +195,7 @@ bool TSaldo::leggi_mov(long nr)
|
||||
|
||||
//per bilancio scalare (ovvero a sezioni contrapposte) per data limite
|
||||
bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDate& data_inf,
|
||||
const TDate& data_sup, int indbil, int stp_prov, const char* filter)
|
||||
const TDate& data_sup, int indbil, int provv, const char* filter)
|
||||
{
|
||||
_saldo_iniziale = ZERO;
|
||||
_saldo = ZERO;
|
||||
@ -208,8 +216,8 @@ bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDat
|
||||
cur.freeze();
|
||||
|
||||
// Anche se non movimentato vado a vedere il saldo
|
||||
if (stp_prov != 3 && (filter == NULL || *filter == '\0'))
|
||||
_saldo = calcola_saldo_iniziale(g,c,s,indbil,stp_prov == 2);
|
||||
if ((provv & 0x1) && (filter == NULL || *filter == '\0'))
|
||||
_saldo = calcola_saldo_iniziale(g,c,s,indbil,provv);
|
||||
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
{
|
||||
@ -234,34 +242,30 @@ bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDat
|
||||
|
||||
// "Se la causale del movimento e' di chiusura,
|
||||
// o di apertura il movimento non va considerato"
|
||||
if (_codcaus.not_empty())
|
||||
if (_codcaus.full())
|
||||
{
|
||||
const TString& movap = _causali_apertura.decode(_codcaus);
|
||||
if (movap == "C")
|
||||
continue;
|
||||
}
|
||||
|
||||
//bilancio normale (non comprende i provvisori) ?
|
||||
if (stp_prov == 1 && _provv.not_empty())
|
||||
continue;
|
||||
|
||||
//bilancio dei soli provvisori ?
|
||||
if (stp_prov == 3 && _provv.empty())
|
||||
continue;
|
||||
|
||||
const char sezione = rmov.get_char(RMV_SEZIONE);
|
||||
const real importo = rmov.get_real(RMV_IMPORTO);
|
||||
|
||||
// I mov. di puro riferimento (= con importo = 0) vanno scartati
|
||||
if (importo.is_zero())
|
||||
continue;
|
||||
|
||||
_movimentato = true;
|
||||
if (((provv & 0x1) && _provv.blank()) ||
|
||||
((provv & 0x2) && ((_provv == "P") || (_provv == "N"))) ||
|
||||
((provv & 0x4) && (_provv == "B")) || ((provv & 0x8) && (_provv == "C")))
|
||||
{
|
||||
const char sezione = rmov.get_char(RMV_SEZIONE);
|
||||
const real importo = rmov.get_real(RMV_IMPORTO);
|
||||
|
||||
if (sezione == 'D')
|
||||
_saldo += importo;
|
||||
else
|
||||
_saldo -= importo;
|
||||
// I mov. di puro riferimento (= con importo = 0) vanno scartati
|
||||
if (importo != ZERO)
|
||||
{
|
||||
_movimentato = true;
|
||||
if (sezione == 'D')
|
||||
_saldo += importo;
|
||||
else
|
||||
_saldo -= importo;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef DBG
|
||||
@ -273,11 +277,10 @@ bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDat
|
||||
|
||||
|
||||
//per bilancio di verifica all'ultima immissione
|
||||
bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil,int stp_prov)
|
||||
bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil, int provv)
|
||||
{
|
||||
//Si considerano i saldi e non piu' i movimenti
|
||||
char sezione;
|
||||
real pdarepro, paverepro;
|
||||
bool esito = false;
|
||||
|
||||
_saldo_iniziale = ZERO;
|
||||
@ -310,21 +313,14 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
|
||||
_saldo_iniziale = _saldi.get_real(SLD_SALDO);
|
||||
_prg_dare = _saldi.get_real(SLD_PDARE);
|
||||
_prg_avere = _saldi.get_real(SLD_PAVERE);
|
||||
pdarepro = _saldi.get_real(SLD_PDAREPRO);
|
||||
paverepro = _saldi.get_real(SLD_PAVEREPRO);
|
||||
|
||||
sezione = _saldi.get_char(SLD_FLAGSALINI);
|
||||
_sezsf = _saldi.get_char(SLD_FLAGSALFIN); // W96SALDI del 19-06-96 modifica richiesta
|
||||
_saldofin = _saldi.get_real(SLD_SALDOFIN); // da PATRIZIA
|
||||
|
||||
if (stp_prov == 1) //bilancio normale (senza provvisori)
|
||||
if (provv == 1) //bilancio normale (senza provvisori)
|
||||
if (_saldo_iniziale.is_zero() && _prg_dare.is_zero() && _prg_avere.is_zero())
|
||||
return esito;
|
||||
// if (stp_prov == 0 && paverepro == ZERO)
|
||||
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!!!!!!
|
||||
return esito;
|
||||
}
|
||||
if (sezione == 'A')
|
||||
_saldo_iniziale = -_saldo_iniziale;
|
||||
if (_sezsf == 'A')
|
||||
@ -333,34 +329,35 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
|
||||
_saldoiniziale = _saldo_iniziale; //saldo iniziale presente sul record saldi
|
||||
//non comprensivo del saldo finale es.precedente
|
||||
|
||||
if (_saldo_iniziale.is_zero() && stp_prov != 3)
|
||||
if (_saldo_iniziale.is_zero() && !(provv & 0x1))
|
||||
{
|
||||
if (indbil == 1 || indbil == 2 || indbil == 5)
|
||||
_saldo_iniziale += saldofin_esprec(annoes,g,c,s, false, stp_prov == 2);
|
||||
_saldo_iniziale += saldofin_esprec(annoes,g,c,s, false, provv);
|
||||
}
|
||||
|
||||
esito = true;
|
||||
|
||||
switch (stp_prov)
|
||||
_saldo = _saldo_iniziale + _saldofin;
|
||||
if (!(provv & 0x1))
|
||||
{
|
||||
case 1:
|
||||
_saldo = _saldo_iniziale + _prg_dare - _prg_avere + _saldofin; // W96SALDI del 19-06-96
|
||||
break;
|
||||
case 2:
|
||||
_saldo = _saldo_iniziale + _prg_dare - _prg_avere + pdarepro - paverepro + _saldofin; // W96SALDI del 19-06-96
|
||||
if (pdarepro != ZERO) // Modifica del 24-09-96 errore MI0890: nel caso in cui i progressivi
|
||||
_prg_dare = pdarepro; // pdarepro o paverepro sono compilati sono in presenza di un movimento
|
||||
if (paverepro != ZERO) // provvisorio, dunque li trasferisco nei progressivi che poi uso nel
|
||||
_prg_avere = paverepro; // CG1500 per la stampa.
|
||||
break;
|
||||
case 3:
|
||||
_saldo = pdarepro - paverepro;
|
||||
_prg_dare = pdarepro; // Idem come sopra.
|
||||
_prg_avere = paverepro; // N.B. Non e' detto che funzioni sempre!!!!!!
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
_prg_dare = ZERO;
|
||||
_prg_avere = ZERO;
|
||||
}
|
||||
|
||||
if (provv & 0x2)
|
||||
{
|
||||
_prg_dare += _saldi.get_real(SLD_PDAREPRO);
|
||||
_prg_avere += _saldi.get_real(SLD_PAVEREPRO);
|
||||
}
|
||||
if (provv & 0x4)
|
||||
{
|
||||
_prg_dare += _saldi.get_real(SLD_PDAREPROB);
|
||||
_prg_avere += _saldi.get_real(SLD_PAVEREPROB);
|
||||
}
|
||||
if (provv & 0x8)
|
||||
{
|
||||
_prg_dare += _saldi.get_real(SLD_PDAREPROC);
|
||||
_prg_avere += _saldi.get_real(SLD_PAVEREPROC);
|
||||
}
|
||||
}
|
||||
return esito;
|
||||
}
|
||||
@ -372,13 +369,13 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
|
||||
// risulterebbero aperti); siccome alcuni programmi (esempio il bilancio IV dir. CEE) non ne
|
||||
// devono tenere conto, si e' data la possibilità di usare la funzione passandogli il parametro a false.
|
||||
// Modifica del 09-07-96
|
||||
bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil,int stp_prov,bool saldo_chiusura)
|
||||
bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil,int provv,bool saldo_chiusura)
|
||||
{
|
||||
//Si considerano i saldi e non piu' i movimenti
|
||||
char sezione;
|
||||
// int gruppo, conto, annoe;
|
||||
// long sottoconto;
|
||||
real pdarepro, paverepro;
|
||||
real pdarepro, paverepro, pdareprob, pavereprob, pdareproc, pavereproc;
|
||||
bool esito = false;
|
||||
|
||||
_saldo_iniziale = ZERO;
|
||||
@ -413,21 +410,25 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
|
||||
_saldo_iniziale = _saldi.get_real(SLD_SALDO);
|
||||
_prg_dare = _saldi.get_real(SLD_PDARE);
|
||||
_prg_avere = _saldi.get_real(SLD_PAVERE);
|
||||
pdarepro = _saldi.get_real(SLD_PDAREPRO);
|
||||
paverepro = _saldi.get_real(SLD_PAVEREPRO);
|
||||
sezione = _saldi.get_char(SLD_FLAGSALINI);
|
||||
pdarepro = _saldi.get_real(SLD_PDAREPRO);
|
||||
paverepro = _saldi.get_real(SLD_PAVEREPRO);
|
||||
pdareprob = _saldi.get_real(SLD_PDAREPROB);
|
||||
pavereprob = _saldi.get_real(SLD_PAVEREPROB);
|
||||
pdareproc = _saldi.get_real(SLD_PDAREPROC);
|
||||
pavereproc = _saldi.get_real(SLD_PAVEREPROC);
|
||||
sezione = _saldi.get_char(SLD_FLAGSALINI);
|
||||
_sezsf = _saldi.get_char(SLD_FLAGSALFIN);
|
||||
_saldofin = _saldi.get_real(SLD_SALDOFIN);
|
||||
|
||||
if (stp_prov == 1) //bilancio normale (senza provvisori)
|
||||
esito = (_saldo_iniziale != ZERO || _prg_dare != ZERO || _prg_avere != ZERO);
|
||||
|
||||
if (stp_prov == 2) //bilancio globale (con provvisori)
|
||||
esito = (_saldo_iniziale != ZERO || _prg_dare != ZERO || _prg_avere != ZERO
|
||||
|| pdarepro != ZERO || paverepro != ZERO);
|
||||
|
||||
if (stp_prov == 3) //bilancio dei soli mov. provvisori
|
||||
esito = (pdarepro != ZERO || paverepro != ZERO);
|
||||
esito = false;
|
||||
if (provv & 0x1)
|
||||
esito |= (_saldo_iniziale != ZERO || _prg_dare != ZERO || _prg_avere != ZERO);
|
||||
if (provv & 0x2) // (con provvisori manuali)
|
||||
esito |= (pdarepro != ZERO || paverepro != ZERO);
|
||||
if (provv & 0x4) // (con provvisori bilancio costi/ricavi)
|
||||
esito |= (pdareprob != ZERO || pavereprob != ZERO);
|
||||
if (provv & 0x8) // (con provvisori cespiti)
|
||||
esito |= (pdareproc != ZERO || pavereproc != ZERO);
|
||||
|
||||
if (sezione == 'A')
|
||||
_saldo_iniziale = -_saldo_iniziale;
|
||||
@ -439,34 +440,30 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
|
||||
_rec_presente_ec = esito;
|
||||
}
|
||||
|
||||
if (_saldo_iniziale.is_zero() && stp_prov != 3)
|
||||
if (_saldo_iniziale.is_zero() && (provv & 0x1))
|
||||
if (indbil == 1 || indbil == 2 || indbil == 5)
|
||||
{
|
||||
_prec = true;
|
||||
_saldo_iniziale += saldofin_esprec(annoes,g,c,s,false,stp_prov==2);
|
||||
_saldo_iniziale += saldofin_esprec(annoes,g,c,s,false,provv);
|
||||
}
|
||||
|
||||
if (stp_prov == 1)
|
||||
_saldo = _saldo_iniziale + _prg_dare - _prg_avere;
|
||||
|
||||
if (stp_prov == 2)
|
||||
_saldo = _saldo_iniziale + _prg_dare - _prg_avere + pdarepro - paverepro;
|
||||
|
||||
if (stp_prov == 3)
|
||||
_saldo = pdarepro - paverepro;
|
||||
|
||||
if (saldo_chiusura) // W96SALDI modifica inserita per il discorso di inclusione oppure
|
||||
|
||||
_saldo = ZERO;
|
||||
if (provv & 0x1)
|
||||
_saldo += _saldo_iniziale + _prg_dare - _prg_avere;
|
||||
if (provv & 0x2) // (con provvisori manuali)
|
||||
_saldo += pdarepro - paverepro;
|
||||
if (provv & 0x4) // (con provvisori bilancio costi/ricavi)
|
||||
_saldo += pdareprob - pavereprob;
|
||||
if (provv & 0x8) // (con provvisori cespiti)
|
||||
_saldo += pdareproc - pavereproc;
|
||||
if (saldo_chiusura && (provv & 0x1)) // W96SALDI modifica inserita per il discorso di inclusione oppure
|
||||
_saldo += _saldofin; // no del saldo di chiusura inserita il 09-07-96
|
||||
|
||||
#ifdef __LONGDOUBLE__
|
||||
_saldo.round(TCurrency::get_firm_dec());
|
||||
#endif
|
||||
|
||||
return esito;
|
||||
}
|
||||
|
||||
const real& TSaldo::saldo_periodo(int g, int c, long s, const TDate& dal, const TDate& al,
|
||||
int indbil, bool provv)
|
||||
int indbil, int provv)
|
||||
|
||||
{
|
||||
_saldo_iniziale = ZERO;
|
||||
@ -496,9 +493,7 @@ const real& TSaldo::saldo_periodo(int g, int c, long s, const TDate& dal, const
|
||||
_prec = _saldo_iniziale.is_zero() && (indbil == 1 || indbil == 2 || indbil == 5);
|
||||
|
||||
if (_prec)
|
||||
{
|
||||
_saldo_iniziale = saldofin_esprec(codes,g,c,s);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (saldo.get_char(SLD_FLAGSALINI) == 'A')
|
||||
@ -542,7 +537,7 @@ const real& TSaldo::saldo_periodo(int g, int c, long s, const TDate& dal, const
|
||||
leggi_mov(num_reg);
|
||||
const TString& movap = _causali_apertura.decode(_codcaus);
|
||||
|
||||
if ((provv || _provv.empty()) && movap.blank())
|
||||
if (!((provv & 0x1) || _provv.empty()) && movap.blank()) // ????
|
||||
{
|
||||
if (_datacomp >= dal && _datacomp <= al)
|
||||
{
|
||||
@ -701,8 +696,10 @@ bool TSaldo::saldo_cont_sep(int g, int c, long s, const int codes, TDate al,
|
||||
_datacomp = mov.get(MOV_DATACOMP);
|
||||
const TString& movap = _causali_apertura.decode(_codcaus);
|
||||
|
||||
if (provv > 1 || _provv.empty())
|
||||
{
|
||||
if (((provv & 0x1) && _provv.empty()) ||
|
||||
((provv & 0x2) && (_provv == "P" || _provv == "N")) ||
|
||||
(provv & 0x4) && (_provv == "B") || (provv & 0x8) && (_provv == "C"))
|
||||
{
|
||||
if (_datacomp >= inizio && _datacomp <= al)
|
||||
{
|
||||
if (movap.blank())
|
||||
@ -797,7 +794,7 @@ void TTab_conti::remove(const TBill& c, int anno, bool scar)
|
||||
|
||||
void TTab_conti::aggiorna_conto(const TBill& tcon,
|
||||
int anno_es, const TImporto& importo, tiposal movap,
|
||||
bool provv, bool somma, bool movimentato, bool scaricato)
|
||||
char provv, bool somma, bool movimentato, bool scaricato)
|
||||
{
|
||||
TContoExt* tc = (TContoExt*)find(tcon, anno_es, scaricato);
|
||||
if (tc == NULL)
|
||||
@ -805,40 +802,56 @@ void TTab_conti::aggiorna_conto(const TBill& tcon,
|
||||
|
||||
const real i(somma ? importo.valore() : -importo.valore());
|
||||
|
||||
if (provv)
|
||||
{
|
||||
if (importo.sezione() == 'D')
|
||||
tc->darepro() += i;
|
||||
else
|
||||
tc->averepro() += i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (movap == apertura)
|
||||
{
|
||||
if (importo.sezione() == 'D')
|
||||
tc->saldo() += i;
|
||||
else
|
||||
tc->saldo() -= i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (movap == chiusura)
|
||||
if ((provv == 'P') || (provv == 'N'))
|
||||
{
|
||||
if (importo.sezione() == 'D')
|
||||
tc->darepro() += i;
|
||||
else
|
||||
tc->averepro() += i;
|
||||
}
|
||||
else
|
||||
if (provv == 'B')
|
||||
{
|
||||
if (importo.sezione() == 'D')
|
||||
tc->dareprob() += i;
|
||||
else
|
||||
tc->avereprob() += i;
|
||||
}
|
||||
else
|
||||
if (provv == 'C')
|
||||
{
|
||||
if (importo.sezione() == 'D')
|
||||
tc->dareproc() += i;
|
||||
else
|
||||
tc->avereproc() += i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (importo.sezione() == 'D')
|
||||
tc->saldofin() += i;
|
||||
if (movap == apertura)
|
||||
{
|
||||
if (importo.sezione() == 'D')
|
||||
tc->saldo() += i;
|
||||
else
|
||||
tc->saldo() -= i;
|
||||
}
|
||||
else
|
||||
tc->saldofin() -= i;
|
||||
{
|
||||
if (movap == chiusura)
|
||||
{
|
||||
if (importo.sezione() == 'D')
|
||||
tc->saldofin() += i;
|
||||
else
|
||||
tc->saldofin() -= i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (importo.sezione() == 'D')
|
||||
tc->dare() += i;
|
||||
else
|
||||
tc->avere() += i;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (importo.sezione() == 'D')
|
||||
tc->dare() += i;
|
||||
else
|
||||
tc->avere() += i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// rimuovo dalla tabella il conto se dare e avere vanno a zero
|
||||
@ -945,8 +958,6 @@ void TSaldo_agg::clear_saldi(int year)
|
||||
|
||||
void TSaldo_agg::registra()
|
||||
{
|
||||
real si, r;
|
||||
char flag_salini;
|
||||
TDate data_ulmov;
|
||||
long num_ulmov;
|
||||
TLocalisamfile saldi(LF_SALDI);
|
||||
@ -978,19 +989,19 @@ void TSaldo_agg::registra()
|
||||
saldi.put(SLD_SOTTOCONTO, tcon.sottoconto());
|
||||
saldi.put(SLD_FLSCA, tcon.scaricato());
|
||||
|
||||
si = tcon.saldo();
|
||||
if (si < ZERO)
|
||||
{ flag_salini = 'A'; si = -si; }
|
||||
else
|
||||
flag_salini = 'D';
|
||||
const bool swap = tcon.saldo() < ZERO;
|
||||
|
||||
saldi.put(SLD_FLAGSALINI, flag_salini);
|
||||
saldi.put(SLD_SALDO, si);
|
||||
saldi.put(SLD_FLAGSALINI, swap ? "A" : "D");
|
||||
saldi.put(SLD_SALDO, swap ? -tcon.saldo() : tcon.saldo());
|
||||
saldi.put(SLD_PDARE, tcon.dare());
|
||||
saldi.put(SLD_PAVERE, tcon.avere());
|
||||
saldi.put(SLD_PDAREPRO, tcon.darepro());
|
||||
saldi.put(SLD_PAVEREPRO, tcon.averepro());
|
||||
|
||||
saldi.put(SLD_PDAREPRO, tcon.darepro());
|
||||
saldi.put(SLD_PAVEREPRO, tcon.averepro());
|
||||
saldi.put(SLD_PDAREPROB, tcon.dareprob());
|
||||
saldi.put(SLD_PAVEREPROB, tcon.avereprob());
|
||||
saldi.put(SLD_PDAREPROC, tcon.dareproc());
|
||||
saldi.put(SLD_PAVEREPROC, tcon.avereproc());
|
||||
|
||||
real sf = tcon.saldofin();
|
||||
char flag_salfin = sf < ZERO ? 'A' : 'D';
|
||||
if (flag_salfin == 'A') sf = -sf;
|
||||
@ -1014,12 +1025,15 @@ void TSaldo_agg::registra()
|
||||
saldi.put(SLD_NUMULTMOV, _num_ulmov);
|
||||
if ((_data_ulmov.ok()) && (_data_ulmov > data_ulmov))
|
||||
saldi.put(SLD_DATAULMOV, _data_ulmov);
|
||||
r = tcon.saldo();
|
||||
si = saldi.get_real(SLD_SALDO);
|
||||
flag_salini = saldi.get_char(SLD_FLAGSALINI);
|
||||
|
||||
const real r = tcon.saldo();
|
||||
real si = saldi.get_real(SLD_SALDO);
|
||||
char flag_salini = saldi.get_char(SLD_FLAGSALINI);
|
||||
|
||||
if (!r.is_zero())
|
||||
{
|
||||
if (flag_salini == 'A')
|
||||
|
||||
if (flag_salini == 'A')
|
||||
si = r - si;
|
||||
else
|
||||
si += r;
|
||||
@ -1033,75 +1047,72 @@ void TSaldo_agg::registra()
|
||||
saldi.put(SLD_FLAGSALINI, flag_salini);
|
||||
saldi.put(SLD_SALDO, si);
|
||||
}
|
||||
|
||||
TImporto sld('D', tcon.saldo());
|
||||
TImporto old_sld(saldi.get_char(SLD_FLAGSALINI), saldi.get_real(SLD_SALDO));
|
||||
|
||||
sld += old_sld;
|
||||
sld.normalize();
|
||||
saldi.put(SLD_FLAGSALINI, sld.sezione());
|
||||
saldi.put(SLD_SALDO, sld.valore());
|
||||
|
||||
TImporto sf('D', tcon.saldofin());
|
||||
char old_flag_sf = saldi.get(SLD_FLAGSALFIN)[0];
|
||||
TImporto old_sf(old_flag_sf, saldi.get_real(SLD_SALDOFIN));
|
||||
TImporto old_sf(saldi.get_char(SLD_FLAGSALFIN), saldi.get_real(SLD_SALDOFIN));
|
||||
|
||||
sf += old_sf;
|
||||
sf.normalize();
|
||||
saldi.put(SLD_FLAGSALFIN, sf.sezione());
|
||||
saldi.put(SLD_SALDOFIN, sf.valore());
|
||||
|
||||
r = saldi.get_real(SLD_PDARE);
|
||||
r += tcon.dare();
|
||||
saldi.put(SLD_PDARE, r);
|
||||
saldi.add(SLD_PDARE, tcon.dare());
|
||||
saldi.add(SLD_PAVERE, tcon.avere());
|
||||
saldi.add(SLD_PDAREPRO, tcon.darepro());
|
||||
saldi.add(SLD_PAVEREPRO, tcon.averepro());
|
||||
saldi.add(SLD_PDAREPROB, tcon.dareprob());
|
||||
saldi.add(SLD_PAVEREPROB, tcon.avereprob());
|
||||
saldi.add(SLD_PDAREPROC, tcon.dareproc());
|
||||
saldi.add(SLD_PAVEREPROC, tcon.avereproc());
|
||||
|
||||
r = saldi.get_real(SLD_PAVERE);
|
||||
r += tcon.avere();
|
||||
saldi.put(SLD_PAVERE, r);
|
||||
|
||||
r = saldi.get_real(SLD_PDAREPRO);
|
||||
r += tcon.darepro();
|
||||
saldi.put(SLD_PDAREPRO, r);
|
||||
const int err = saldi.rewrite();
|
||||
|
||||
r = saldi.get_real(SLD_PAVEREPRO);
|
||||
r += tcon.averepro();
|
||||
saldi.put(SLD_PAVEREPRO, r);
|
||||
|
||||
const int err = saldi.rewrite();
|
||||
if (err != NOERR)
|
||||
yesnofatal_box(FR("Errore %d nell'aggiornamento del saldo %d %d %ld"),
|
||||
err, tcon.gruppo(), tcon.conto(), tcon.sottoconto());
|
||||
}
|
||||
|
||||
// Calcolo saldo finale per controllo segno in prima nota
|
||||
if (si.is_zero())
|
||||
{
|
||||
TLocalisamfile pcon(LF_PCON);
|
||||
TRectype& curr = pcon.curr();
|
||||
curr.put(PCN_GRUPPO, tcon.gruppo());
|
||||
curr.put(PCN_CONTO, tcon.conto());
|
||||
const int err = pcon.read();
|
||||
if (err == NOERR)
|
||||
{
|
||||
const int indbil = curr.get_int(PCN_INDBIL);
|
||||
if (indbil == 1 || indbil == 2 || indbil == 5)
|
||||
{
|
||||
TSaldo saldo;
|
||||
si = saldo.saldofin_esprec(annoes, tcon.gruppo(), tcon.conto(), tcon.sottoconto());
|
||||
if (si < ZERO)
|
||||
{
|
||||
flag_salini = 'A';
|
||||
si = -si;
|
||||
}
|
||||
else
|
||||
flag_salini = 'D';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Era errore fatale
|
||||
}
|
||||
}
|
||||
|
||||
TImporto sf(flag_salini, si);
|
||||
const TImporto dare('D', saldi.get_real(SLD_PDARE));
|
||||
const TImporto avere('A', saldi.get_real(SLD_PAVERE));
|
||||
sf += dare;
|
||||
sf += avere;
|
||||
sf.normalize(+1); // Rendi sempre positivo
|
||||
tcon.saldo_finale() = sf;
|
||||
// Calcolo saldo finale per controllo segno in prima nota
|
||||
if (si.is_zero())
|
||||
{
|
||||
TLocalisamfile pcon(LF_PCON);
|
||||
TRectype& curr = pcon.curr();
|
||||
curr.put(PCN_GRUPPO, tcon.gruppo());
|
||||
curr.put(PCN_CONTO, tcon.conto());
|
||||
if (pcon.read() == NOERR)
|
||||
{
|
||||
const int indbil = curr.get_int(PCN_INDBIL);
|
||||
if (indbil == 1 || indbil == 2 || indbil == 5)
|
||||
{
|
||||
TSaldo saldo;
|
||||
si = saldo.saldofin_esprec(annoes, tcon.gruppo(), tcon.conto(), tcon.sottoconto());
|
||||
if (si < ZERO)
|
||||
{
|
||||
flag_salini = 'A';
|
||||
si = -si;
|
||||
}
|
||||
else
|
||||
flag_salini = 'D';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
TImporto sldf(flag_salini, si);
|
||||
const TImporto dare('D', saldi.get_real(SLD_PDARE));
|
||||
const TImporto avere('A', saldi.get_real(SLD_PAVERE));
|
||||
|
||||
sldf += dare;
|
||||
sldf += avere;
|
||||
sldf.normalize(+1); // Rendi sempre positivo
|
||||
tcon.saldo_finale() = sldf;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1113,14 +1124,14 @@ TBalance::TBalance()
|
||||
{
|
||||
}
|
||||
|
||||
TBalance::TBalance(int g, int c, long s, int esercizio, bool ignora_movap, bool provvis)
|
||||
TBalance::TBalance(int g, int c, long s, int esercizio, bool ignora_movap, bool provv)
|
||||
{
|
||||
read(g, c, s, esercizio, ignora_movap, provvis);
|
||||
read(g, c, s, esercizio, ignora_movap, provv);
|
||||
}
|
||||
|
||||
TBalance::TBalance(const TBill& b, int esercizio, bool ignora_movap, bool provvis)
|
||||
TBalance::TBalance(const TBill& b, int esercizio, bool ignora_movap, bool provv)
|
||||
{
|
||||
read(b, esercizio, ignora_movap, provvis);
|
||||
read(b, esercizio, ignora_movap, provv);
|
||||
}
|
||||
|
||||
bool TBalance::find(const TBill& b, int esercizio,
|
||||
@ -1141,8 +1152,12 @@ bool TBalance::find(const TBill& b, int esercizio,
|
||||
av.set('A', saldi.get_real(SLD_PAVERE));
|
||||
sf.set(saldi.get_char(SLD_FLAGSALFIN), saldi.get_real(SLD_SALDOFIN));
|
||||
pd.set('D', saldi.get_real(SLD_PDAREPRO));
|
||||
pa.set('A', saldi.get_real(SLD_PAVEREPRO));
|
||||
}
|
||||
pd += TImporto('D', saldi.get_real(SLD_PDAREPROB));
|
||||
pd += TImporto('D', saldi.get_real(SLD_PDAREPROC));
|
||||
pa.set('A', saldi.get_real(SLD_PAVEREPRO));
|
||||
pa += TImporto('A', saldi.get_real(SLD_PAVEREPROB));
|
||||
pa += TImporto('A', saldi.get_real(SLD_PAVEREPROC));
|
||||
}
|
||||
else
|
||||
{
|
||||
si.set('D', ZERO);
|
||||
@ -1151,10 +1166,10 @@ bool TBalance::find(const TBill& b, int esercizio,
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TBalance::read(int gruppo, int conto, long sottoconto, int esercizio, bool ignora_movap, bool provvis)
|
||||
void TBalance::read(int gruppo, int conto, long sottoconto, int esercizio, bool ignora_movap, bool provv) // qui
|
||||
{
|
||||
const TBill zio(gruppo, conto, sottoconto);
|
||||
read(zio, esercizio, ignora_movap, provvis);
|
||||
read(zio, esercizio, ignora_movap, provv);
|
||||
}
|
||||
|
||||
int TBalance::indicatore_bilancio(const TBill& b) const
|
||||
@ -1173,12 +1188,12 @@ int TBalance::indicatore_bilancio(const TBill& b) const
|
||||
return ib;
|
||||
}
|
||||
|
||||
void TBalance::read(const TBill& b, int esercizio, bool ignora_movap, bool provvis)
|
||||
void TBalance::read(const TBill& b, int esercizio, bool ignora_movap, bool provv)
|
||||
{
|
||||
TImporto si, sf, pd, pa, prd, pra;
|
||||
|
||||
find(b, esercizio, si, pd, pa, sf, prd, pra);
|
||||
if (provvis)
|
||||
if (provv)
|
||||
{
|
||||
pd += prd;
|
||||
pa += pra;
|
||||
@ -1197,7 +1212,7 @@ void TBalance::read(const TBill& b, int esercizio, bool ignora_movap, bool provv
|
||||
const int precedente = esercizi.pred(esercizio);
|
||||
if (precedente > 0 && find(b, precedente, si, pd, pa, sf, prd, pra))
|
||||
{
|
||||
if (provvis)
|
||||
if (provv)
|
||||
{
|
||||
pd += prd;
|
||||
pa += pra;
|
||||
|
@ -17,7 +17,7 @@ class TCausale;
|
||||
|
||||
class TConto : public TBill
|
||||
{
|
||||
real _dare, _avere, _darepro, _averepro, _saldofin, _saldo;
|
||||
real _dare, _avere, _darepro, _averepro, _dareprob, _avereprob, _dareproc, _avereproc, _saldofin, _saldo;
|
||||
TImporto _saldo_finale;
|
||||
|
||||
public:
|
||||
@ -38,7 +38,19 @@ public:
|
||||
real& averepro() { return _averepro; }
|
||||
const real& averepro() const { return _averepro; }
|
||||
|
||||
real& saldo() { return _saldo; }
|
||||
real& dareprob() { return _dareprob; }
|
||||
const real& dareprob() const { return _dareprob; }
|
||||
|
||||
real& avereprob() { return _avereprob; }
|
||||
const real& avereprob() const { return _avereprob; }
|
||||
|
||||
real& dareproc() { return _dareproc; }
|
||||
const real& dareproc() const { return _dareproc; }
|
||||
|
||||
real& avereproc() { return _avereproc; }
|
||||
const real& avereproc() const { return _avereproc; }
|
||||
|
||||
real& saldo() { return _saldo; }
|
||||
const real& saldo() const { return _saldo; }
|
||||
|
||||
real& saldofin() { return _saldofin; }
|
||||
@ -94,7 +106,7 @@ class TSaldo : public TObject
|
||||
protected:
|
||||
void InFinEs(int);
|
||||
bool leggi_mov(long numreg); // Leggi testata
|
||||
real calcola_saldo_iniziale(int g, int c, long s, int indbil, bool provvis);
|
||||
real calcola_saldo_iniziale(int g, int c, long s, int indbil, int provv = 0x1);
|
||||
bool prg_saldo(int, TConto&, real&, real&, bool);
|
||||
const real& iniziale() const { return _saldo_iniziale;}
|
||||
void set_iniziale(const real& val) { _saldo_iniziale = val; }
|
||||
@ -115,14 +127,14 @@ public:
|
||||
|
||||
bool causale_mov(long, const TDate&, const TDate&, TString&);
|
||||
|
||||
bool ultima_immissione_bilancio(int annoes, int g,int c,long s,int indbil,int prov,bool saldo_chiusura = true);
|
||||
bool ultima_immissione_verifica(int annoes, int g,int c,long s,int indbil,int prov);
|
||||
bool data_limite_bilancio(int annoes,int g,int c,long s,const TDate& data_inf,const TDate& data_suo,int indbil,int stp_prov, const char* filter = NULL);
|
||||
const real& saldo_periodo(int g, int c, long s, const TDate& dal, const TDate& al, int indbil, bool provv);
|
||||
bool saldo_cont_sep(int g, int c, long s, const int codes, TDate al, int indbil, const char * cont_sep, int provv, bool chiusura = false, bool first = true);
|
||||
bool ultima_immissione_bilancio(int annoes, int g,int c,long s,int indbil,int provv = 0x1,bool saldo_chiusura = true);
|
||||
bool ultima_immissione_verifica(int annoes, int g,int c,long s,int indbil,int provv = 0x1);
|
||||
bool data_limite_bilancio(int annoes,int g,int c,long s,const TDate& data_inf,const TDate& data_suo,int indbil, int provv = 0x1, const char* filter = NULL);
|
||||
const real& saldo_periodo(int g, int c, long s, const TDate& dal, const TDate& al, int indbil, int provv = 0x1);
|
||||
bool saldo_cont_sep(int g, int c, long s, const int codes, TDate al, int indbil, const char * cont_sep, int provv = 0x1, bool chiusura = false, bool first = true);
|
||||
bool ricerca_progr_prec(int, int, int, long);
|
||||
|
||||
real saldofin_esprec(int,int,int,long,bool saldo_chiusura = FALSE, bool provvisori = FALSE);
|
||||
real saldofin_esprec(int,int,int,long,bool saldo_chiusura = FALSE, int provv = 0x1);
|
||||
bool prg_attuali(int i,TConto& c, real& p1, real& p2)
|
||||
{ return prg_saldo(i, c, p1, p2, FALSE); }
|
||||
bool prg_mov_eliminati(int i, TConto& c, real& p1, real& p2)
|
||||
@ -153,7 +165,7 @@ protected:
|
||||
|
||||
public:
|
||||
void aggiorna_conto(const TBill& tc, int anno_es, const TImporto& importo,
|
||||
tiposal movap, bool provv, bool somma, bool movimentato, bool scaricato);
|
||||
tiposal movap, char provv, bool somma, bool movimentato, bool scaricato);
|
||||
|
||||
TConto* add(const TBill& c, int anno, bool provv = FALSE);
|
||||
TConto* find(const TBill& c, int anno, bool provv = FALSE);
|
||||
@ -167,7 +179,7 @@ class TSaldo_agg : public TObject
|
||||
TDate _data_ulmov; // data ultimo movimento
|
||||
long _num_ulmov; // numero ultimo movimento
|
||||
tiposal _movap; // se e' mov. d'apertura (aggiorno SALDO e FLAGSALINI in saldi)
|
||||
bool _provv;
|
||||
char _provv;
|
||||
TRectype* _rec; // record corrente sui saldi
|
||||
bool _movimentato; // di default e' FALSE; viene usato a TRUE solo quando voglio
|
||||
// che un conto sia movimentato sui saldi anche se progressivi
|
||||
@ -189,8 +201,8 @@ public:
|
||||
void set_tipo_saldo (tiposal movap) { _movap = movap; }
|
||||
tiposal tipo_saldo() const { return _movap; }
|
||||
|
||||
void set_movprovv (bool p) { _provv = p; }
|
||||
bool movprovv() const { return _provv; }
|
||||
void set_movprovv (char p) { _provv = p; }
|
||||
char movprovv() const { return _provv; }
|
||||
|
||||
void set_movimentato (bool movimentato) { _movimentato = movimentato; }
|
||||
bool movimentato() const { return _movimentato; }
|
||||
@ -223,8 +235,8 @@ protected:
|
||||
int indicatore_bilancio(const TBill& b) const;
|
||||
|
||||
public:
|
||||
void read(int g, int c, long s, int esercizio, bool ignora_movap, bool provvis);
|
||||
void read(const TBill& b, int esercizio, bool ignora_movap, bool provvis);
|
||||
void read(int g, int c, long s, int esercizio, bool ignora_movap, bool provv);
|
||||
void read(const TBill& b, int esercizio, bool ignora_movap, bool provv);
|
||||
void reread();
|
||||
|
||||
const TImporto& saldo_iniziale() const;
|
||||
@ -236,8 +248,8 @@ public:
|
||||
TImporto saldo_finale_chiusura() const;
|
||||
|
||||
TBalance();
|
||||
TBalance(int g, int c, long s, int esercizio, bool ignora_movap, bool provvis);
|
||||
TBalance(const TBill& b, int esercizio, bool ignora_movap, bool provvis);
|
||||
TBalance(int g, int c, long s, int esercizio, bool ignora_movap, bool provv);
|
||||
TBalance(const TBill& b, int esercizio, bool ignora_movap, bool provv);
|
||||
virtual ~TBalance() { }
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user