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:
parent
0861f950cc
commit
4f2eea5dc9
@ -627,120 +627,133 @@ bool TSaldo::prg_saldo(int annoes, TConto& conto, real& prgdare, real& prgavere,
|
||||
return ok;
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
{
|
||||
_saldo_iniziale = ZERO;
|
||||
_saldo = ZERO;
|
||||
_prg_dare = ZERO;
|
||||
_prg_avere = ZERO;
|
||||
_movimentato = false;
|
||||
_rec_presente_ep = false;
|
||||
_rec_presente_ec = false;
|
||||
_prec = false;
|
||||
|
||||
TEsercizi_contabili es;
|
||||
|
||||
_annoes = codes;
|
||||
const TDate inizio = es[_annoes].inizio();
|
||||
|
||||
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 (_prec && first)
|
||||
{
|
||||
const int codesprec = es.date2prevesc(al);
|
||||
|
||||
_saldo_iniziale = saldo_cont_sep(g, c, s, codesprec, es[codesprec].fine(), indbil, cont_sep, provv, false);
|
||||
} */
|
||||
|
||||
TRelation relrmov(LF_RMOV);
|
||||
|
||||
TRectype& rmov = relrmov.curr();
|
||||
|
||||
rmov.put(RMV_GRUPPO,g);
|
||||
rmov.put(RMV_CONTO,c);
|
||||
rmov.put(RMV_SOTTOCONTO,s);
|
||||
|
||||
TCursor cur(&relrmov, "", 2, &rmov, &rmov);
|
||||
const TRecnotype items = cur.items();
|
||||
|
||||
if (items > 0)
|
||||
{
|
||||
cur.freeze();
|
||||
|
||||
TProgind* p = NULL;
|
||||
if (items > 100) // E' proprio utile la progind?
|
||||
{
|
||||
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)
|
||||
p->addstatus(1L);
|
||||
|
||||
const long num_reg = rmov.get_long(RMV_NUMREG);
|
||||
const real importo = rmov.get_real(RMV_IMPORTO);
|
||||
|
||||
if (!importo.is_zero())
|
||||
{
|
||||
const char sezione = rmov.get_char(RMV_SEZIONE);
|
||||
const TRectype& mov = cache().get(LF_MOV, num_reg);
|
||||
const bool ok = !mov.empty();
|
||||
|
||||
if (ok)
|
||||
{
|
||||
if (mov.get(MOV_CONTSEP) == cont_sep)
|
||||
{
|
||||
_codcaus = mov.get(MOV_CODCAUS);
|
||||
_datareg = mov.get(MOV_DATAREG);
|
||||
_provv = mov.get(MOV_PROVVIS);
|
||||
_datacomp = mov.get(MOV_DATACOMP);
|
||||
const TString& movap = _causali_apertura.decode(_codcaus);
|
||||
|
||||
if (provv > 1 || _provv.empty())
|
||||
{
|
||||
if (_datacomp >= inizio && _datacomp <= al)
|
||||
{
|
||||
if (movap.blank())
|
||||
{
|
||||
_movimentato = true;
|
||||
if (sezione == 'D')
|
||||
_prg_dare += importo;
|
||||
else
|
||||
_prg_avere += importo;
|
||||
}
|
||||
else
|
||||
if (movap == "A")
|
||||
{
|
||||
_movimentato = true;
|
||||
if (sezione == 'D')
|
||||
_saldo_iniziale += importo;
|
||||
else
|
||||
_saldo_iniziale -= importo;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
NFCHECK("Testata assente: %ld", num_reg);
|
||||
}
|
||||
}
|
||||
if (p != NULL)
|
||||
delete p;
|
||||
}
|
||||
_saldo = _saldo_iniziale + _prg_dare - _prg_avere;
|
||||
return _movimentato;
|
||||
}
|
||||
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 chiusura, bool first)
|
||||
|
||||
{
|
||||
_movimentato = false;
|
||||
_rec_presente_ep = false;
|
||||
_rec_presente_ec = false;
|
||||
_prec = false;
|
||||
real saldo_ini_prec;
|
||||
|
||||
TEsercizi_contabili es;
|
||||
|
||||
_annoes = codes;
|
||||
const TDate inizio = es[_annoes].inizio();
|
||||
|
||||
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 ((indbil < 3 || indbil == 5) && first)
|
||||
{
|
||||
const int codesprec = es.date2prevesc(al);
|
||||
|
||||
saldo_cont_sep(g, c, s, codesprec, es[codesprec].fine(), indbil, cont_sep, provv, chiusura, false);
|
||||
saldo_ini_prec = _saldo;
|
||||
} */
|
||||
_saldo_iniziale = ZERO;
|
||||
_saldo = ZERO;
|
||||
_prg_dare = ZERO;
|
||||
_prg_avere = ZERO;
|
||||
|
||||
TRelation relrmov(LF_RMOV);
|
||||
|
||||
TRectype& rmov = relrmov.curr();
|
||||
|
||||
rmov.put(RMV_GRUPPO,g);
|
||||
rmov.put(RMV_CONTO,c);
|
||||
rmov.put(RMV_SOTTOCONTO,s);
|
||||
|
||||
TCursor cur(&relrmov, "", 2, &rmov, &rmov);
|
||||
const TRecnotype items = cur.items();
|
||||
|
||||
if (items > 0)
|
||||
{
|
||||
cur.freeze();
|
||||
|
||||
TProgind* p = NULL;
|
||||
if (items > 100) // E' proprio utile la progind?
|
||||
{
|
||||
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)
|
||||
p->addstatus(1L);
|
||||
|
||||
const long num_reg = rmov.get_long(RMV_NUMREG);
|
||||
const real importo = rmov.get_real(RMV_IMPORTO);
|
||||
|
||||
if (!importo.is_zero())
|
||||
{
|
||||
const char sezione = rmov.get_char(RMV_SEZIONE);
|
||||
const TRectype& mov = cache().get(LF_MOV, num_reg);
|
||||
const bool ok = !mov.empty();
|
||||
|
||||
if (ok)
|
||||
{
|
||||
if (mov.get(MOV_CONTSEP) == cont_sep)
|
||||
{
|
||||
_codcaus = mov.get(MOV_CODCAUS);
|
||||
_datareg = mov.get(MOV_DATAREG);
|
||||
_provv = mov.get(MOV_PROVVIS);
|
||||
_datacomp = mov.get(MOV_DATACOMP);
|
||||
const TString& movap = _causali_apertura.decode(_codcaus);
|
||||
|
||||
if (provv > 1 || _provv.empty())
|
||||
{
|
||||
if (_datacomp >= inizio && _datacomp <= al)
|
||||
{
|
||||
if (movap.blank())
|
||||
{
|
||||
_movimentato = true;
|
||||
if (sezione == 'D')
|
||||
_prg_dare += importo;
|
||||
else
|
||||
_prg_avere += importo;
|
||||
}
|
||||
else
|
||||
if (movap == "A")
|
||||
{
|
||||
_movimentato = true;
|
||||
if (sezione == 'D')
|
||||
_saldo_iniziale += importo;
|
||||
else
|
||||
_saldo_iniziale -= importo;
|
||||
}
|
||||
else
|
||||
if (chiusura && movap == "C")
|
||||
{
|
||||
_movimentato = true;
|
||||
if (sezione == 'D')
|
||||
_prg_dare += importo;
|
||||
else
|
||||
_prg_avere += importo;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -119,7 +119,7 @@ public:
|
||||
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 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);
|
||||
|
||||
real saldofin_esprec(int,int,int,long,bool saldo_chiusura = FALSE, bool provvisori = FALSE);
|
||||
|
Loading…
x
Reference in New Issue
Block a user