Corretta la gestione linee di movimento (oggetto TLine_movmag)
Corrette funzioni di movimentazione soloqta/soloval Corretto azzeramento RIMIN in ricostruzione saldi git-svn-id: svn://10.65.10.50/trunk@4914 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
76bf0a0987
commit
7fa608923d
@ -291,8 +291,8 @@ public:
|
||||
const TString & raggfisc() {return get("S8");}
|
||||
const TString & caus_collegata() {return get("S9");}
|
||||
int sgn(TTipo_saldomag fieldname) ;
|
||||
bool update_qta() {return get_bool("B0");}
|
||||
bool update_val() {return get_bool("B1");}
|
||||
bool update_qta() {return !get_bool("B1");}
|
||||
bool update_val() {return !get_bool("B0");}
|
||||
bool update_ultcos() {return TRUE; /*get_bool("B2");*/}
|
||||
bool is_fiscale();
|
||||
TCausale_magazzino(const char * codice);
|
||||
|
@ -888,11 +888,16 @@ TCausale_magazzino::TCausale_magazzino(const char * codice):
|
||||
// dati della linea di movimento di magazzino
|
||||
class TLine_movmag : public TObject
|
||||
{
|
||||
TString16 _codcaus;
|
||||
TString16 _um;
|
||||
real _quant;
|
||||
real _prezzo;
|
||||
public:
|
||||
TString16 codcaus;
|
||||
TString16 um;
|
||||
real quant;
|
||||
real prezzo;
|
||||
const TString16 &codcaus() const {return _codcaus;}
|
||||
const TString16 &um() const {return _um;}
|
||||
const real &quant() const {return _quant;}
|
||||
const real &prezzo() const {return _prezzo;}
|
||||
void set(const TString16 cau,const TString16 um,const real q, const real p);
|
||||
int operator==(TLine_movmag &);
|
||||
|
||||
virtual TObject* dup() const {return new TLine_movmag(*this);};
|
||||
@ -902,16 +907,25 @@ public:
|
||||
virtual ~TLine_movmag() {};
|
||||
};
|
||||
|
||||
void TLine_movmag ::set(const TString16 cau,const TString16 um,const real q, const real p)
|
||||
{
|
||||
_codcaus=cau;
|
||||
_um=um;
|
||||
_quant=q;
|
||||
_prezzo=p;
|
||||
}
|
||||
|
||||
TLine_movmag ::TLine_movmag(const TLine_movmag &l)
|
||||
{
|
||||
um=l.um;
|
||||
quant=l.quant;
|
||||
prezzo=l.prezzo;
|
||||
_codcaus=l._codcaus;
|
||||
_um=l._um;
|
||||
_quant=l._quant;
|
||||
_prezzo=l._prezzo;
|
||||
}
|
||||
|
||||
int TLine_movmag::operator==(TLine_movmag &l)
|
||||
{
|
||||
return (codcaus==l.codcaus)&&(um==l.um)&&(quant==l.quant)&&(prezzo==l.prezzo);
|
||||
return (_codcaus==l._codcaus)&&(_um==l._um)&&(_quant==l._quant)&&(_prezzo==l._prezzo);
|
||||
}
|
||||
|
||||
|
||||
@ -1070,16 +1084,16 @@ int TMov_mag::force_update_bal()
|
||||
// restituisce il valore dei dati
|
||||
TLine_movmag & TMov_mag::line2data(int nrig) const
|
||||
{
|
||||
static TLine_movmag _rest;
|
||||
static TLine_movmag line;
|
||||
TRecord_array & b = body();
|
||||
|
||||
_rest.codcaus= b.row(nrig).get(RMOVMAG_CODCAUS).blank() ?
|
||||
get(MOVMAG_CODCAUS)
|
||||
: b.row(nrig).get(RMOVMAG_CODCAUS) ;
|
||||
_rest.um = b.row(nrig).get(RMOVMAG_UM);
|
||||
_rest.quant = b.row(nrig).get_real(RMOVMAG_QUANT);
|
||||
_rest.prezzo= b.row(nrig).get_real(RMOVMAG_PREZZO);
|
||||
return _rest;
|
||||
line.set(
|
||||
b.row(nrig).get(RMOVMAG_CODCAUS).blank() ? get(MOVMAG_CODCAUS)
|
||||
: b.row(nrig).get(RMOVMAG_CODCAUS) ,
|
||||
b.row(nrig).get(RMOVMAG_UM),
|
||||
b.row(nrig).get_real(RMOVMAG_QUANT),
|
||||
b.row(nrig).get_real(RMOVMAG_PREZZO));
|
||||
return line;
|
||||
}
|
||||
|
||||
TToken_string & TMov_mag::line2key(int numriga) const
|
||||
@ -1195,10 +1209,10 @@ int TMov_mag::update_balances()
|
||||
curr_art.read((const char *)key2field(*curr_key,"CODART"));
|
||||
if (curr_art.lock_and_prompt()) {
|
||||
TLine_movmag & line_mov=(TLine_movmag &)lines_to_add[*curr_key];
|
||||
TCausale_magazzino & causmag=(TCausale_magazzino &)cache_causali.get(line_mov.codcaus);
|
||||
TCausale_magazzino & causmag=(TCausale_magazzino &)cache_causali.get(line_mov.codcaus());
|
||||
|
||||
if (causmag.update_ultcos())
|
||||
curr_art.update_ultcosti(line_mov.prezzo,get_date("DATACOMP"));
|
||||
curr_art.update_ultcosti(line_mov.prezzo(),get_date("DATACOMP"));
|
||||
// lock gained
|
||||
giac_putkey(mag,get("ANNOES"),*curr_key);
|
||||
if (mag.read()!=NOERR) {
|
||||
@ -1266,17 +1280,17 @@ int TMov_mag::update_balances()
|
||||
// in base alla causale e alla modifica fatta (con segno + o -)
|
||||
int TMov_mag::update_balances(TRectype & magrec, const TLine_movmag &l,int rett_sign)
|
||||
{
|
||||
TCausale_magazzino & caus=(TCausale_magazzino &)cache_causali.get(l.codcaus);
|
||||
TCausale_magazzino & caus=(TCausale_magazzino &)cache_causali.get(l.codcaus());
|
||||
TLocalisamfile umart(LF_UMART);
|
||||
real diff,diff_val;
|
||||
umart.setkey(2);
|
||||
umart.put(UMART_CODART,magrec.get(MAG_CODART));
|
||||
umart.put(UMART_UM , l.um);
|
||||
umart.put(UMART_UM , l.um());
|
||||
umart.read();
|
||||
real fc=umart.get_real("FC");
|
||||
|
||||
diff=fc*rett_sign*l.quant;
|
||||
diff_val=rett_sign*l.quant*l.prezzo;
|
||||
diff=fc*rett_sign*l.quant();
|
||||
diff_val=rett_sign*l.quant()*l.prezzo();
|
||||
if (caus.update_qta()) {
|
||||
update_balance(magrec,"GIAC",diff*caus.sgn(s_giac)); // update ..
|
||||
update_balance(magrec,"ACQ",diff*caus.sgn(s_acq)); // update ..
|
||||
@ -1345,6 +1359,8 @@ bool rebuild_balances(TString16 annoes, bool reset_giac)
|
||||
{
|
||||
while (!mag.eof() && currcode==mag.get("CODART"))
|
||||
{
|
||||
mag.put("GIAC",0);
|
||||
mag.put("RIM",0);
|
||||
mag.put("ACQ",0);mag.put("VALACQ",0);
|
||||
mag.put("ENT",0);mag.put("VALENT",0);
|
||||
mag.put("VEN",0);mag.put("VALVEN",0);
|
||||
@ -1352,7 +1368,6 @@ bool rebuild_balances(TString16 annoes, bool reset_giac)
|
||||
mag.put("ORDF",0);mag.put("VALORDF",0);
|
||||
mag.put("ORDC",0);mag.put("VALORDC",0);
|
||||
mag.put("SCARTI",0);mag.put("VALSCARTI",0);
|
||||
mag.put("GIAC",0);
|
||||
mag.put("PRODCOMP",0);
|
||||
mag.put("PRODFIN",0);
|
||||
mag.put("INCL",0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user