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
|
TRecord_array & TArticolo_lavanderie::clifomag(int annoes) const
|
||||||
{
|
{
|
||||||
((TArticolo_lavanderie*)this)->set_anno_lav(annoes > 0 ? annoes : esercizi().last_mag());
|
const int es = annoes > 0 ? annoes : esercizi().last_mag();
|
||||||
TRecord_array & recarr = body(LF_CLIFOGIAC);
|
const int esprec = esercizi().pred(annoes);
|
||||||
|
|
||||||
if (recarr.rows() == 0)
|
if (esprec != 0)
|
||||||
{
|
{
|
||||||
TString query;
|
const bool closed = esercizi()[esprec].chiusura_mag().ok();
|
||||||
const char * cod = (const char *) codice();
|
|
||||||
const int esprec = esercizi().pred(annoes);
|
|
||||||
|
|
||||||
query << "USE " << LF_CLIFOGIAC << "\n";
|
if (!closed)
|
||||||
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())
|
|
||||||
{
|
{
|
||||||
const TRecmag_lavanderie oldrec(recmag.cursor()->curr());
|
((TArticolo_lavanderie*)this)->set_anno_lav(esprec);
|
||||||
const int r = recarr.add_row(oldrec);
|
TRecord_array recarrprec = body(LF_CLIFOGIAC);
|
||||||
TRecmag_lavanderie & rec = (TRecmag_lavanderie &) recarr[r];
|
|
||||||
|
|
||||||
rec.put(CLIFOGIAC_ANNOES, annoes);
|
((TArticolo_lavanderie*)this)->set_anno_lav(es);
|
||||||
::reset_clifogiac(rec, oldrec);
|
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;
|
return recarr;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TRecmag_lavanderie & TArticolo_lavanderie::find_rec(int annoes) const
|
const TRecmag_lavanderie & TArticolo_lavanderie::find_rec(int annoes) const
|
||||||
{
|
{
|
||||||
static TRecmag_lavanderie __rec;
|
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_magcode(TString & codmagdep);
|
||||||
const char * get_depcode(TString & codmagdep);
|
const char * get_depcode(TString & codmagdep);
|
||||||
bool riporta_ordinato();
|
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
|
#endif //__MGLIB_H
|
||||||
|
|
||||||
|
@ -877,6 +877,7 @@ void TMov_mag::update_balance(TRectype & rec, const char * fieldname, const real
|
|||||||
struct TBalance_params
|
struct TBalance_params
|
||||||
{
|
{
|
||||||
bool zero_giac;
|
bool zero_giac;
|
||||||
|
bool closed;
|
||||||
int codes;
|
int codes;
|
||||||
int codesprec;
|
int codesprec;
|
||||||
int esprec;
|
int esprec;
|
||||||
@ -897,7 +898,7 @@ HIDDEN bool reset_giac(const TRelation& rel, void* pJolly)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset_clifogiac(TRectype & rec, const TRectype & oldrec)
|
void reset_clifogiac(TRectype & rec, const TRectype & oldrec, bool closed)
|
||||||
{
|
{
|
||||||
if (!oldrec.empty())
|
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_VEN); rec.zero(CLIFOGIAC_VALVEN);
|
||||||
rec.zero(CLIFOGIAC_USC); rec.zero(CLIFOGIAC_VALUSC);
|
rec.zero(CLIFOGIAC_USC); rec.zero(CLIFOGIAC_VALUSC);
|
||||||
rec.zero(CLIFOGIAC_SCARTI);
|
rec.zero(CLIFOGIAC_SCARTI);
|
||||||
if (!riporta_ordinato())
|
if (!riporta_ordinato() || !closed)
|
||||||
{
|
{
|
||||||
rec.zero(CLIFOGIAC_ORDF); rec.zero(CLIFOGIAC_VALORDF);
|
rec.zero(CLIFOGIAC_ORDF);
|
||||||
rec.zero(CLIFOGIAC_ORDC); rec.zero(CLIFOGIAC_VALORDC);
|
rec.zero(CLIFOGIAC_VALORDF);
|
||||||
|
rec.zero(CLIFOGIAC_ORDC);
|
||||||
|
rec.zero(CLIFOGIAC_VALORDC);
|
||||||
}
|
}
|
||||||
rec.put(CLIFOGIAC_DOTOD, oldrec.get(CLIFOGIAC_DOTOD));
|
if (closed)
|
||||||
rec.put(CLIFOGIAC_DOTIN, oldrec.get(CLIFOGIAC_DOTIN));
|
{
|
||||||
rec.put(CLIFOGIAC_DOTTM, oldrec.get(CLIFOGIAC_DOTTM));
|
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
|
else
|
||||||
{
|
{
|
||||||
@ -942,6 +954,40 @@ void reset_clifogiac(TRectype & rec, const TRectype & oldrec)
|
|||||||
rec.zero(CLIFOGIAC_CONSANNO);
|
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)
|
HIDDEN bool rel_reset_clifogiac(const TRelation& rel, void* pJolly)
|
||||||
{
|
{
|
||||||
TRectype & rec = rel.curr();
|
TRectype & rec = rel.curr();
|
||||||
@ -954,7 +1000,7 @@ HIDDEN bool rel_reset_clifogiac(const TRelation& rel, void* pJolly)
|
|||||||
newrec = rec;
|
newrec = rec;
|
||||||
newrec.put(CLIFOGIAC_ANNOES, p.codes);
|
newrec.put(CLIFOGIAC_ANNOES, p.codes);
|
||||||
}
|
}
|
||||||
reset_clifogiac(newrec, rec);
|
reset_clifogiac(newrec, rec, p.closed);
|
||||||
return newrec.write_rewrite(rel.lfile()) == NOERR;
|
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.codes = codes;
|
||||||
p.codesprec = esercizi().pred(codes);
|
p.codesprec = esercizi().pred(codes);
|
||||||
//p.zero_giac = p.codesprec > 0 && esercizi().esercizio(p.codesprec).chiusura_mag().ok();
|
//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.zero_giac = p.codesprec <= 0 || esercizi().esercizio(p.codesprec).chiusura_mag().ok();
|
||||||
p.catv = catven;
|
p.catv = catven;
|
||||||
p.codl = codlis;
|
p.codl = codlis;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user