Patch level : 10.0 848
Files correlati : ve0.exe ve1.exe ve5.exe ve6.exe mg1.exe lv0.exe lv3.exe Ricompilazione Demo : [ ] Commento : MOdificata la gestione del cambio anno per le lavanderie git-svn-id: svn://10.65.10.50/branches/R_10_00@21206 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
404b0230cb
commit
eaafbe86e6
69
lv/lvlib.cpp
69
lv/lvlib.cpp
@ -654,40 +654,57 @@ int TArticolo_lavanderie::find_clifomag(int annoes, const char * livello, int fr
|
||||
|
||||
TRecord_array & TArticolo_lavanderie::clifomag(int annoes) const
|
||||
{
|
||||
((TArticolo_lavanderie*)this)->set_anno_lav(annoes > 0 ? annoes : esercizi().last_mag());
|
||||
TRecord_array & recarr = body(LF_CLIFOGIAC);
|
||||
|
||||
if (recarr.rows() == 0)
|
||||
const int es = annoes > 0 ? annoes : esercizi().last_mag();
|
||||
const int esprec = esercizi().pred(annoes);
|
||||
|
||||
if (esprec != 0)
|
||||
{
|
||||
TString query;
|
||||
const char * cod = (const char *) codice();
|
||||
const int esprec = esercizi().pred(annoes);
|
||||
const bool closed = esercizi()[esprec].chiusura_mag().ok();
|
||||
|
||||
query << "USE " << LF_CLIFOGIAC << "\n";
|
||||
query << "FROM " << CLIFOGIAC_ANNOES << '=' << esprec << ' '
|
||||
<< CLIFOGIAC_TIPOCF << '=' << _tipocf << ' '
|
||||
<< CLIFOGIAC_CODCF << '=' << _codcf << ' '
|
||||
<< CLIFOGIAC_INDSPED << '=' << _indsped << ' '
|
||||
<< CLIFOGIAC_CODART << '=' << cod << '\n';
|
||||
query << "TO " << CLIFOGIAC_ANNOES << '=' << esprec << ' '
|
||||
<< CLIFOGIAC_TIPOCF << '=' << _tipocf << ' '
|
||||
<< CLIFOGIAC_CODCF << '=' << _codcf << ' '
|
||||
<< CLIFOGIAC_INDSPED << '=' << _indsped << ' '
|
||||
<< CLIFOGIAC_CODART << '=' << cod << '\n';
|
||||
|
||||
TISAM_recordset recmag(query);
|
||||
for (bool ok=recmag.move_first(); ok; ok=recmag.move_next())
|
||||
if (!closed)
|
||||
{
|
||||
const TRecmag_lavanderie oldrec(recmag.cursor()->curr());
|
||||
const int r = recarr.add_row(oldrec);
|
||||
TRecmag_lavanderie & rec = (TRecmag_lavanderie &) recarr[r];
|
||||
((TArticolo_lavanderie*)this)->set_anno_lav(esprec);
|
||||
TRecord_array recarrprec = body(LF_CLIFOGIAC);
|
||||
|
||||
rec.put(CLIFOGIAC_ANNOES, annoes);
|
||||
::reset_clifogiac(rec, oldrec);
|
||||
((TArticolo_lavanderie*)this)->set_anno_lav(es);
|
||||
TRecord_array & recarr = body(LF_CLIFOGIAC);
|
||||
|
||||
for (int r = 1; r <= recarr.rows(); r++)
|
||||
{
|
||||
TRecmag_lavanderie & rec = (TRecmag_lavanderie &) recarr[r];
|
||||
int r1;
|
||||
|
||||
for (r1 = 1; r <= recarrprec.rows(); r++)
|
||||
if (rec.get(CLIFOGIAC_INDSPED) == recarrprec[r1].get(CLIFOGIAC_INDSPED) &&
|
||||
rec.get(CLIFOGIAC_CODART) == recarrprec[r1].get(CLIFOGIAC_CODART) &&
|
||||
rec.get(CLIFOGIAC_LIVELLO) == recarrprec[r1].get(CLIFOGIAC_LIVELLO))
|
||||
break;
|
||||
if (r1 <= recarrprec.rows())
|
||||
{
|
||||
TRecmag_lavanderie & rec = (TRecmag_lavanderie &) recarr[r];
|
||||
TRecmag_lavanderie & old = (TRecmag_lavanderie &) recarrprec[r1];
|
||||
::update_clifogiac(rec, old);
|
||||
recarrprec.destroy_row(r1, true);
|
||||
}
|
||||
}
|
||||
for (int rp = 1; rp <= recarrprec.rows(); rp++)
|
||||
{
|
||||
TRecmag_lavanderie & old = (TRecmag_lavanderie &) recarrprec[rp];
|
||||
const int r = recarr.add_row(old);
|
||||
TRecmag_lavanderie & rec = (TRecmag_lavanderie &) recarr[r];
|
||||
|
||||
rec.put(CLIFOGIAC_ANNOES, annoes);
|
||||
::reset_clifogiac(rec, old, esercizi()[esprec].chiusura_mag().ok());
|
||||
}
|
||||
return recarr;
|
||||
}
|
||||
}
|
||||
((TArticolo_lavanderie*)this)->set_anno_lav(es);
|
||||
TRecord_array & recarr = body(LF_CLIFOGIAC);
|
||||
|
||||
return recarr;
|
||||
}
|
||||
|
||||
const TRecmag_lavanderie & TArticolo_lavanderie::find_rec(int annoes) const
|
||||
{
|
||||
static TRecmag_lavanderie __rec;
|
||||
|
@ -757,7 +757,8 @@ const char * add_depcode(TString & codmagdep, const char * d);
|
||||
const char * get_magcode(TString & codmagdep);
|
||||
const char * get_depcode(TString & codmagdep);
|
||||
bool riporta_ordinato();
|
||||
void reset_clifogiac(TRectype & rec, const TRectype & oldrec);
|
||||
void update_clifogiac(TRectype & rec, const TRectype & oldrec);
|
||||
void reset_clifogiac(TRectype & rec, const TRectype & oldrec, bool closed);
|
||||
|
||||
#endif //__MGLIB_H
|
||||
|
||||
|
@ -877,6 +877,7 @@ void TMov_mag::update_balance(TRectype & rec, const char * fieldname, const real
|
||||
struct TBalance_params
|
||||
{
|
||||
bool zero_giac;
|
||||
bool closed;
|
||||
int codes;
|
||||
int codesprec;
|
||||
int esprec;
|
||||
@ -897,7 +898,7 @@ HIDDEN bool reset_giac(const TRelation& rel, void* pJolly)
|
||||
return true;
|
||||
}
|
||||
|
||||
void reset_clifogiac(TRectype & rec, const TRectype & oldrec)
|
||||
void reset_clifogiac(TRectype & rec, const TRectype & oldrec, bool closed)
|
||||
{
|
||||
if (!oldrec.empty())
|
||||
{
|
||||
@ -922,14 +923,25 @@ void reset_clifogiac(TRectype & rec, const TRectype & oldrec)
|
||||
rec.zero(CLIFOGIAC_VEN); rec.zero(CLIFOGIAC_VALVEN);
|
||||
rec.zero(CLIFOGIAC_USC); rec.zero(CLIFOGIAC_VALUSC);
|
||||
rec.zero(CLIFOGIAC_SCARTI);
|
||||
if (!riporta_ordinato())
|
||||
if (!riporta_ordinato() || !closed)
|
||||
{
|
||||
rec.zero(CLIFOGIAC_ORDF); rec.zero(CLIFOGIAC_VALORDF);
|
||||
rec.zero(CLIFOGIAC_ORDC); rec.zero(CLIFOGIAC_VALORDC);
|
||||
rec.zero(CLIFOGIAC_ORDF);
|
||||
rec.zero(CLIFOGIAC_VALORDF);
|
||||
rec.zero(CLIFOGIAC_ORDC);
|
||||
rec.zero(CLIFOGIAC_VALORDC);
|
||||
}
|
||||
rec.put(CLIFOGIAC_DOTOD, oldrec.get(CLIFOGIAC_DOTOD));
|
||||
rec.put(CLIFOGIAC_DOTIN, oldrec.get(CLIFOGIAC_DOTIN));
|
||||
rec.put(CLIFOGIAC_DOTTM, oldrec.get(CLIFOGIAC_DOTTM));
|
||||
if (closed)
|
||||
{
|
||||
rec.put(CLIFOGIAC_DOTOD, oldrec.get(CLIFOGIAC_DOTOD));
|
||||
rec.put(CLIFOGIAC_DOTIN, oldrec.get(CLIFOGIAC_DOTIN));
|
||||
rec.put(CLIFOGIAC_DOTTM, oldrec.get(CLIFOGIAC_DOTTM));
|
||||
}
|
||||
else
|
||||
{
|
||||
rec.zero(CLIFOGIAC_DOTOD);
|
||||
rec.zero(CLIFOGIAC_DOTIN);
|
||||
rec.zero(CLIFOGIAC_DOTTM);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -942,6 +954,40 @@ void reset_clifogiac(TRectype & rec, const TRectype & oldrec)
|
||||
rec.zero(CLIFOGIAC_CONSANNO);
|
||||
}
|
||||
|
||||
void update_clifogiac(TRectype & rec, const TRectype & oldrec)
|
||||
{
|
||||
if (!oldrec.empty())
|
||||
{
|
||||
const real acq = oldrec.get_real(CLIFOGIAC_ACQ) + oldrec.get_real(CLIFOGIAC_RIM);
|
||||
const real valacq = oldrec.get_real(CLIFOGIAC_VALACQ) + oldrec.get_real(CLIFOGIAC_VALRIM);
|
||||
real val = acq.is_zero() ? ZERO : valacq / acq;
|
||||
const TPrice p(val);
|
||||
const real rim_prec = rec.get_real(CLIFOGIAC_RIM);
|
||||
real rim = oldrec.get_real(CLIFOGIAC_GIAC);
|
||||
|
||||
rim += oldrec.get_real(CLIFOGIAC_PRODFIN);
|
||||
rim -= oldrec.get_real(CLIFOGIAC_PRODCOMP);
|
||||
rim += oldrec.get_real(CLIFOGIAC_ACL);
|
||||
rim -= oldrec.get_real(CLIFOGIAC_INCL);
|
||||
|
||||
const real valrim = p.get_num() * rim;
|
||||
const TCurrency c(valrim); // Arrontonda alla valuta
|
||||
|
||||
rec.put(CLIFOGIAC_RIM, rim); rec.put(CLIFOGIAC_VALRIM, c.get_num());
|
||||
rec.add(CLIFOGIAC_GIAC, rim - rim_prec);
|
||||
if (riporta_ordinato())
|
||||
{
|
||||
rec.add(CLIFOGIAC_ORDF, oldrec.get_real(CLIFOGIAC_ORDF));
|
||||
rec.add(CLIFOGIAC_VALORDF, oldrec.get_real(CLIFOGIAC_VALORDF));
|
||||
rec.add(CLIFOGIAC_ORDC, oldrec.get_real(CLIFOGIAC_ORDC));
|
||||
rec.add(CLIFOGIAC_VALORDC, oldrec.get_real(CLIFOGIAC_VALORDC));
|
||||
}
|
||||
rec.add(CLIFOGIAC_DOTOD, oldrec.get_real(CLIFOGIAC_DOTOD));
|
||||
rec.add(CLIFOGIAC_DOTIN, oldrec.get_real(CLIFOGIAC_DOTIN));
|
||||
rec.add(CLIFOGIAC_DOTTM, oldrec.get_real(CLIFOGIAC_DOTTM));
|
||||
}
|
||||
}
|
||||
|
||||
HIDDEN bool rel_reset_clifogiac(const TRelation& rel, void* pJolly)
|
||||
{
|
||||
TRectype & rec = rel.curr();
|
||||
@ -954,7 +1000,7 @@ HIDDEN bool rel_reset_clifogiac(const TRelation& rel, void* pJolly)
|
||||
newrec = rec;
|
||||
newrec.put(CLIFOGIAC_ANNOES, p.codes);
|
||||
}
|
||||
reset_clifogiac(newrec, rec);
|
||||
reset_clifogiac(newrec, rec, p.closed);
|
||||
return newrec.write_rewrite(rel.lfile()) == NOERR;
|
||||
}
|
||||
|
||||
@ -980,6 +1026,7 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz,
|
||||
p.codes = codes;
|
||||
p.codesprec = esercizi().pred(codes);
|
||||
//p.zero_giac = p.codesprec > 0 && esercizi().esercizio(p.codesprec).chiusura_mag().ok();
|
||||
p.closed = esercizi().esercizio(p.codesprec).chiusura_mag().ok();
|
||||
p.zero_giac = p.codesprec <= 0 || esercizi().esercizio(p.codesprec).chiusura_mag().ok();
|
||||
p.catv = catven;
|
||||
p.codl = codlis;
|
||||
|
Loading…
x
Reference in New Issue
Block a user