Patch level : 10.0 276
Files correlati : mg1.exe lv0.exe lv2.exe lv3.exe ve0.exe ve1.exe ve5.exe ve6.exe Ricompilazione Demo : [ ] Commento : Bug : 0001240 L'oggetto consegnato anno deve essere registrato e non ricalcolato tutte le volte, mentre il consegnato mese deve essere sempre ricalcolato. git-svn-id: svn://10.65.10.50/trunk@18629 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
2c4eb14b5f
commit
71790b83b9
64
lv/lvlib.cpp
64
lv/lvlib.cpp
@ -163,7 +163,6 @@ void TRecmag_lavanderie::update()
|
||||
const TString80 livello(get(CLIFOGIAC_LIVELLO));
|
||||
const TDate oggi(TODAY);
|
||||
TDate imese;
|
||||
TDate ianno;
|
||||
TEsercizi_contabili & esc = esercizi();
|
||||
const TArticolo & artrec = cached_article(codart);
|
||||
|
||||
@ -171,16 +170,12 @@ void TRecmag_lavanderie::update()
|
||||
{
|
||||
imese = oggi;
|
||||
imese.set_day(1);
|
||||
ianno.set_month(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
imese = esc.esercizio(anno).fine();
|
||||
ianno = imese;
|
||||
}
|
||||
|
||||
query="USE MOVMAG KEY 2\n";
|
||||
query << "SELECT (TIPOCF='C')&&(STR(CODCF=" << codcf << "))&&(STR(CODINDSP=" << indsped << "))&&(STR(DATACOMP<=" << oggi << "))\n";
|
||||
query << "SELECT (TIPOCF='C')&&(CODCF==" << codcf << ")&&(CODINDSP==" << indsped << ")&&(BETWEEN(DATACOMP," << imese.date2ansi() << "," << oggi.date2ansi() << "))\n";
|
||||
query << "FROM ANNOES=" << anno << "\n";
|
||||
query << "TO ANNOES=" << anno << "\n";
|
||||
|
||||
@ -200,23 +195,13 @@ void TRecmag_lavanderie::update()
|
||||
{
|
||||
const TString& codcaus = recrmag.get(RMOVMAG_CODCAUS).as_string();
|
||||
const TCausale_magazzino & tcaus = cached_causale_magazzino(codcaus.full() ? codcaus : recmag.get(MOVMAG_CODCAUS).as_string());
|
||||
int sgn_dotin = tcaus.sgn(s_dotin);
|
||||
int sgn_dotod = tcaus.sgn(s_dotod);
|
||||
int sgn_dottm = tcaus.sgn(s_dottm);
|
||||
int sgn_consanno = tcaus.sgn(s_consanno);
|
||||
int sgn_consmese = tcaus.sgn(s_consmese);
|
||||
if (sgn_dotin != 0 || sgn_dotod != 0 || sgn_dottm != 0 || sgn_consanno != 0 || sgn_consmese != 0)
|
||||
if (sgn_consmese != 0)
|
||||
{
|
||||
const TString4 um = recrmag.get(RMOVMAG_UM).as_string();
|
||||
const real qta = ((TArticolo &)artrec).convert_to_um(recrmag.get(RMOVMAG_QUANT).as_real(), NULL,um);
|
||||
|
||||
_dotin += real(qta * sgn_dotin);
|
||||
_dotod += real(qta * sgn_dotod);
|
||||
_dottm += real(qta * sgn_dottm);
|
||||
if (datareg >= ianno)
|
||||
_consanno += real(qta * sgn_consanno);
|
||||
if (datareg >= imese)
|
||||
_consmese += real(qta * sgn_consmese);
|
||||
_consmese += real(qta * sgn_consmese);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -224,10 +209,8 @@ void TRecmag_lavanderie::update()
|
||||
|
||||
int TRecmag_lavanderie::name2index(const char* fieldname) const
|
||||
{
|
||||
if (strcmp(fieldname, "CONSANNO") == 0)
|
||||
return 0;
|
||||
if (strcmp(fieldname, "CONSMESE") == 0)
|
||||
return 1;
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -271,10 +254,12 @@ const TString & TRecmag_lavanderie::get_str(const char* fieldname) const
|
||||
((TRecmag_lavanderie *)this)->update();
|
||||
switch (index)
|
||||
{
|
||||
case 0: return get_tmp_string() = _consanno.string();
|
||||
case 1: return get_tmp_string() = _consmese.string();
|
||||
case 0: return get_tmp_string() = _consmese.string();
|
||||
default: break;
|
||||
}
|
||||
// rec.put(CLIFOGIAC_DOTOD, oldrec.get(CLIFOGIAC_DOTOD));
|
||||
// rec.put(CLIFOGIAC_DOTIN, oldrec.get(CLIFOGIAC_DOTIN));
|
||||
|
||||
return TVariable_rectype::get_str(fieldname);
|
||||
}
|
||||
|
||||
@ -415,7 +400,38 @@ 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());
|
||||
return body(LF_CLIFOGIAC);
|
||||
TRecord_array & recarr = body(LF_CLIFOGIAC);
|
||||
|
||||
if (recarr.rows() == 0)
|
||||
{
|
||||
TString query;
|
||||
const char * cod = (const char *) codice();
|
||||
const int esprec = esercizi().pred(annoes);
|
||||
|
||||
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())
|
||||
{
|
||||
const TRecmag_lavanderie oldrec(recmag.cursor()->curr());
|
||||
const int r = recarr.add_row(oldrec);
|
||||
TRecmag_lavanderie & rec = (TRecmag_lavanderie &) recarr[r];
|
||||
|
||||
rec.put(CLIFOGIAC_ANNOES, annoes);
|
||||
::reset_clifogiac(rec, oldrec);
|
||||
}
|
||||
}
|
||||
return recarr;
|
||||
}
|
||||
|
||||
TArticolo_lavanderie::TArticolo_lavanderie(const char* codice, const char tipocf, const long codcf, const int indsped)
|
||||
|
@ -32,10 +32,6 @@ public:
|
||||
|
||||
class TRecmag_lavanderie : public TVariable_rectype
|
||||
{
|
||||
real _dotin;
|
||||
real _dotod;
|
||||
real _dottm;
|
||||
real _consanno;
|
||||
real _consmese;
|
||||
long _update_time;
|
||||
|
||||
@ -53,6 +49,7 @@ public:
|
||||
virtual TObject* dup() const;
|
||||
TRecmag_lavanderie();
|
||||
TRecmag_lavanderie(const TRecmag_lavanderie & rec) : TVariable_rectype(rec), _update_time(0L) {}
|
||||
TRecmag_lavanderie(const TRectype & rec) : TVariable_rectype(rec), _update_time(0L) {}
|
||||
virtual ~TRecmag_lavanderie() {}
|
||||
};
|
||||
|
||||
|
@ -32,6 +32,7 @@
|
||||
#define CLIFOGIAC_DOTIN "DOTIN"
|
||||
#define CLIFOGIAC_DOTOD "DOTOD"
|
||||
#define CLIFOGIAC_DOTTM "DOTTM"
|
||||
#define CLIFOGIAC_CONSANNO "CONSANNO"
|
||||
#define CLIFOGIAC_NLABEL "NLABEL"
|
||||
#define CLIFOGIAC_NDIST "NDIST"
|
||||
#define CLIFOGIAC_SCARTI "SCARTI"
|
||||
|
@ -1,3 +1,3 @@
|
||||
166
|
||||
0
|
||||
$clifogiac|0|0|742|0|Giacenze per cliente|||
|
||||
$clifogiac|0|0|757|0|Giacenze per cliente|||
|
||||
|
@ -1,5 +1,5 @@
|
||||
166
|
||||
52
|
||||
53
|
||||
ANNOES|1|4|0|Codice esercizio
|
||||
TIPOCF|1|1|0|Tipo <C>liente <F>ornitore
|
||||
CODCF|3|6|0|Codice Cliente Fornitore
|
||||
@ -40,6 +40,7 @@ SCORTAMIN|4|15|5|Scorta minima
|
||||
DOTIN|4|15|5|Dotazione iniziale (lavanderie)
|
||||
DOTOD|4|15|5|Dotazione odierna (lavanderie)
|
||||
DOTTM|4|15|5|Dotazione temporanea (lavanderie)
|
||||
CONSANNO|4|15|5|Consegnato anno (lavanderie)
|
||||
USER1|4|15|5|campo definito dall'utente
|
||||
USERVAL1|4|18|3|valore
|
||||
USER2|4|15|5|campo definito dall'utente
|
||||
|
@ -751,6 +751,7 @@ 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);
|
||||
|
||||
#endif //__MGLIB_H
|
||||
|
||||
|
@ -778,6 +778,7 @@ void TMov_mag::update_balances_clifo(TRectype & clifomagrec, const TSaldo_mag_cl
|
||||
update_balance(clifomagrec, CLIFOGIAC_DOTIN, diff * (real)caus.sgn(s_dotin));
|
||||
update_balance(clifomagrec, CLIFOGIAC_DOTOD, diff * (real)caus.sgn(s_dotod));
|
||||
update_balance(clifomagrec, CLIFOGIAC_DOTTM, diff * (real)caus.sgn(s_dottm));
|
||||
update_balance(clifomagrec, CLIFOGIAC_CONSANNO, diff * (real)caus.sgn(s_consanno));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER1, diff * (real)caus.sgn(s_user1));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER2, diff * (real)caus.sgn(s_user2));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER3, diff * (real)caus.sgn(s_user3));
|
||||
@ -861,7 +862,7 @@ struct TBalance_params
|
||||
const char * codl;
|
||||
};
|
||||
|
||||
bool reset_giac(const TRelation& rel, void* pJolly)
|
||||
HIDDEN bool reset_giac(const TRelation& rel, void* pJolly)
|
||||
{
|
||||
TArticolo_giacenza & articolo = (TArticolo_giacenza &) rel.lfile().curr();
|
||||
TBalance_params & p = *((TBalance_params *)pJolly);
|
||||
@ -873,15 +874,9 @@ bool reset_giac(const TRelation& rel, void* pJolly)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool reset_clifogiac(const TRelation& rel, void* pJolly)
|
||||
void reset_clifogiac(TRectype & rec, const TRectype & oldrec)
|
||||
{
|
||||
TRectype & rec = rel.curr();
|
||||
TBalance_params & p = *((TBalance_params *)pJolly);
|
||||
|
||||
TRectype oldrec(rec);
|
||||
|
||||
oldrec.put(CLIFOGIAC_ANNOES, p.codesprec);
|
||||
if (oldrec.read(rel.lfile()) == NOERR)
|
||||
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);
|
||||
@ -921,6 +916,19 @@ bool reset_clifogiac(const TRelation& rel, void* pJolly)
|
||||
rec.zero(CLIFOGIAC_DOTOD);
|
||||
rec.zero(CLIFOGIAC_DOTTM);
|
||||
}
|
||||
rec.zero(CLIFOGIAC_CONSANNO);
|
||||
}
|
||||
|
||||
HIDDEN bool rel_reset_clifogiac(const TRelation& rel, void* pJolly)
|
||||
{
|
||||
TRectype & rec = rel.curr();
|
||||
TBalance_params & p = *((TBalance_params *)pJolly);
|
||||
TRectype oldrec(rec);
|
||||
|
||||
oldrec.put(CLIFOGIAC_ANNOES, p.codesprec);
|
||||
if (oldrec.read(rel.lfile()) != NOERR)
|
||||
oldrec.zero();
|
||||
reset_clifogiac(rec, oldrec);
|
||||
return rec.rewrite(rel.lfile()) == NOERR;
|
||||
}
|
||||
|
||||
@ -962,7 +970,7 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz,
|
||||
TCursor c(new TRelation(LF_CLIFOGIAC), filter);
|
||||
|
||||
msg.format(FR("Ricostruzione saldi esercizio %04d : azzeramento giacenze clienti..."), codes);
|
||||
c.scan(reset_clifogiac, (void *) &p, msg);
|
||||
c.scan(rel_reset_clifogiac, (void *) &p, msg);
|
||||
|
||||
// ricostruisce i saldi (ciclo sui movimenti)
|
||||
bool ok = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user