Patch level : 12.0 310 314

Files correlati     : 

Modifica CRPA

Aggiunto flag per la contabilità separata.Patch level         : 12.0 310 314
Files correlati     : 

Modifica CRPA

Separata la contabilità separata dalla contabilità.


git-svn-id: svn://10.65.10.50/branches/R_10_00@23446 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
bonazzi 2016-12-13 13:54:49 +00:00
parent 0861f950cc
commit 4f2eea5dc9
2 changed files with 128 additions and 115 deletions

View File

@ -627,120 +627,133 @@ bool TSaldo::prg_saldo(int annoes, TConto& conto, real& prgdare, real& prgavere,
return ok; return ok;
} }
bool TSaldo::saldo_cont_sep(int g, int c, long s, const int codes, TDate al, bool TSaldo::saldo_cont_sep(int g, int c, long s, const int codes, TDate al,
int indbil, const char * cont_sep, int provv, bool first) int indbil, const char * cont_sep, int provv, bool chiusura, bool first)
{ {
_saldo_iniziale = ZERO; _movimentato = false;
_saldo = ZERO; _rec_presente_ep = false;
_prg_dare = ZERO; _rec_presente_ec = false;
_prg_avere = ZERO; _prec = false;
_movimentato = false; real saldo_ini_prec;
_rec_presente_ep = false;
_rec_presente_ec = false; TEsercizi_contabili es;
_prec = false;
_annoes = codes;
TEsercizi_contabili es; const TDate inizio = es[_annoes].inizio();
_annoes = codes; TString80 key; key.format("%04d| |%d|%d|%ld", _annoes, g, c, s);
const TDate inizio = es[_annoes].inizio(); const TRectype& saldo = cache().get(LF_SALDI, key);
TString80 key; key.format("%04d| |%d|%d|%ld", _annoes, g, c, s);
const TRectype& saldo = cache().get(LF_SALDI, key); if (!al.ok())
al = es[_annoes].fine();
if (!al.ok()) /* if ((indbil < 3 || indbil == 5) && first)
al = es[_annoes].fine(); {
const int codesprec = es.date2prevesc(al);
/* if (_prec && first)
{ saldo_cont_sep(g, c, s, codesprec, es[codesprec].fine(), indbil, cont_sep, provv, chiusura, false);
const int codesprec = es.date2prevesc(al); saldo_ini_prec = _saldo;
} */
_saldo_iniziale = saldo_cont_sep(g, c, s, codesprec, es[codesprec].fine(), indbil, cont_sep, provv, false); _saldo_iniziale = ZERO;
} */ _saldo = ZERO;
_prg_dare = ZERO;
TRelation relrmov(LF_RMOV); _prg_avere = ZERO;
TRectype& rmov = relrmov.curr(); TRelation relrmov(LF_RMOV);
rmov.put(RMV_GRUPPO,g); TRectype& rmov = relrmov.curr();
rmov.put(RMV_CONTO,c);
rmov.put(RMV_SOTTOCONTO,s); rmov.put(RMV_GRUPPO,g);
rmov.put(RMV_CONTO,c);
TCursor cur(&relrmov, "", 2, &rmov, &rmov); rmov.put(RMV_SOTTOCONTO,s);
const TRecnotype items = cur.items();
TCursor cur(&relrmov, "", 2, &rmov, &rmov);
if (items > 0) const TRecnotype items = cur.items();
{
cur.freeze(); if (items > 0)
{
TProgind* p = NULL; cur.freeze();
if (items > 100) // E' proprio utile la progind?
{ TProgind* p = NULL;
TString80 prompt; if (items > 100) // E' proprio utile la progind?
prompt.format(FR("Calcolo saldo del conto %d.%d.%ld"), g, c, s); {
p = new TProgind(items, prompt, false); TString80 prompt;
} prompt.format(FR("Calcolo saldo del conto %d.%d.%ld"), g, c, s);
p = new TProgind(items, prompt, false);
for (cur = 0L; cur.pos() < items; ++cur) }
{
if (p != NULL) for (cur = 0L; cur.pos() < items; ++cur)
p->addstatus(1L); {
if (p != NULL)
const long num_reg = rmov.get_long(RMV_NUMREG); p->addstatus(1L);
const real importo = rmov.get_real(RMV_IMPORTO);
const long num_reg = rmov.get_long(RMV_NUMREG);
if (!importo.is_zero()) const real importo = rmov.get_real(RMV_IMPORTO);
{
const char sezione = rmov.get_char(RMV_SEZIONE); if (!importo.is_zero())
const TRectype& mov = cache().get(LF_MOV, num_reg); {
const bool ok = !mov.empty(); const char sezione = rmov.get_char(RMV_SEZIONE);
const TRectype& mov = cache().get(LF_MOV, num_reg);
if (ok) const bool ok = !mov.empty();
{
if (mov.get(MOV_CONTSEP) == cont_sep) if (ok)
{ {
_codcaus = mov.get(MOV_CODCAUS); if (mov.get(MOV_CONTSEP) == cont_sep)
_datareg = mov.get(MOV_DATAREG); {
_provv = mov.get(MOV_PROVVIS); _codcaus = mov.get(MOV_CODCAUS);
_datacomp = mov.get(MOV_DATACOMP); _datareg = mov.get(MOV_DATAREG);
const TString& movap = _causali_apertura.decode(_codcaus); _provv = mov.get(MOV_PROVVIS);
_datacomp = mov.get(MOV_DATACOMP);
if (provv > 1 || _provv.empty()) const TString& movap = _causali_apertura.decode(_codcaus);
{
if (_datacomp >= inizio && _datacomp <= al) if (provv > 1 || _provv.empty())
{ {
if (movap.blank()) if (_datacomp >= inizio && _datacomp <= al)
{ {
_movimentato = true; if (movap.blank())
if (sezione == 'D') {
_prg_dare += importo; _movimentato = true;
else if (sezione == 'D')
_prg_avere += importo; _prg_dare += importo;
} else
else _prg_avere += importo;
if (movap == "A") }
{ else
_movimentato = true; if (movap == "A")
if (sezione == 'D') {
_saldo_iniziale += importo; _movimentato = true;
else if (sezione == 'D')
_saldo_iniziale -= importo; _saldo_iniziale += importo;
} else
} _saldo_iniziale -= importo;
} }
} else
} if (chiusura && movap == "C")
else {
NFCHECK("Testata assente: %ld", num_reg); _movimentato = true;
} if (sezione == 'D')
} _prg_dare += importo;
if (p != NULL) else
delete p; _prg_avere += importo;
} }
_saldo = _saldo_iniziale + _prg_dare - _prg_avere; }
return _movimentato; }
} }
}
else
NFCHECK("Testata assente: %ld", num_reg);
}
}
if (p != NULL)
delete p;
}
// if ((indbil < 3 || indbil == 5) && first && _saldo_iniziale == ZERO)
// _saldo_iniziale = saldo_ini_prec;
_saldo = _saldo_iniziale + _prg_dare - _prg_avere;
return _movimentato;
}
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////

View File

@ -119,7 +119,7 @@ public:
bool ultima_immissione_verifica(int annoes, int g,int c,long s,int indbil,int prov); 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); 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); 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 first = true); 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 ricerca_progr_prec(int, int, int, long); 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, bool provvisori = FALSE);