Patch level : 2..0 452

Files correlati     :  ab0.exe
Ricompilazione Demo : [ ]
Commento            :
Aggiunto metodo valore_al all' oggetto saldo
fare la patch man mano che ci sono spedizioni


git-svn-id: svn://10.65.10.50/trunk@11008 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2003-04-14 15:47:09 +00:00
parent 6126e3356e
commit 391a5e9a50
2 changed files with 108 additions and 3 deletions

View File

@ -5,6 +5,7 @@
//
/////////////////////////////////////////////////////////////////////////////
#include <diction.h>
#include <progind.h>
#include <relation.h>
#include <tabutil.h>
@ -463,6 +464,108 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
return esito;
}
real & TSaldo::valore_al(int g, int c, long s, const TDate& dal, const TDate& al,
int indbil, bool provv)
{
_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;
const int codes = es.date2esc(dal);
_annoes = codes;
TString16 key;
key.format("%d||%d|%d|%ld", _annoes, g, c, s);
const TRectype & saldo = cache().get(LF_SALDI, key);
_saldo_iniziale = saldo.get_real(SLD_SALDO);
_prec = _saldo_iniziale == ZERO;
if (_prec)
{
_prec = TRUE;
_saldo_iniziale = saldofin_esprec(codes,g,c,s);
}
else
if (saldo.get_char(SLD_FLAGSALINI) == 'A')
_saldo_iniziale = -_saldo_iniziale;
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();
cur.freeze();
TString prompt(30);
prompt.format(FR("Calcolo saldo conto %d-%d_%ld"), g, c, s);
TProgind p(items, prompt, FALSE);
for (cur = 0L; cur.pos() < items && !p.iscancelled(); ++cur)
{
p.addstatus(1L);
const long num_reg = rmov.get_long(RMV_NUMREG);
leggi_mov(num_reg);
const char sezione = rmov.get_char(RMV_SEZIONE);
const real importo = rmov.get_real(RMV_IMPORTO);
if ((_datacomp >= dal && _datacomp <= al) &&
(provv || _provv.empty()) &&
importo != ZERO)
{
// "Se la causale del movimento e' di chiusura,
// o di apertura il movimento non va considerato"
if (_codcaus.not_empty())
{
const TString& movap = _causali_apertura.decode(_codcaus);
if (movap == "A" || movap == "C")
continue;
}
_movimentato = TRUE;
if (sezione == 'D')
_prg_dare += importo;
else
_prg_avere += importo;
}
else
if (_datacomp < dal)
{
if (codes == es.date2esc(_datacomp))
{
if (sezione == 'D')
_saldo_iniziale += importo;
else
_saldo_iniziale -= importo;
}
}
}
_saldo = _saldo_iniziale + _prg_dare - _prg_avere;
return _saldo;
}
bool TSaldo::ricerca_progr_prec (int annoesprec, int g, int c, long s)
{
if (annoesprec == 0)

View File

@ -87,11 +87,13 @@ class TSaldo : public TObject
TRecord_cache _movimenti;
protected:
void InFinEs(int);
void InFinEs(int);
bool leggi_mov(long numreg); // Leggi testata
real calcola_saldo_iniziale(int g, int c, long s, int indbil);
bool prg_saldo(int, TConto&, real&, real&, bool);
const real & iniziale() const { return _saldo_iniziale;}
void set_iniziale(const real & val) { _saldo_iniziale = val; }
public:
bool movimentato() const { return _movimentato; }
@ -109,7 +111,7 @@ public:
bool ultima_immissione_bilancio(int anno,int g,int c,long s,int indbil,int prov,bool saldo_chiusura = TRUE);
bool ultima_immissione_verifica(int anno,int g,int c,long s,int indbil,int prov);
bool data_limite_bilancio(int,int,int,long,const TDate&,const TDate&,int,int, const char* = NULL);
real & valore_al(int g,int c,long s,const TDate& dal,const TDate& al,int indbil, bool provv);
bool ricerca_progr_prec(int, int, int, long);