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:
augusto 1997-07-25 10:13:54 +00:00
parent 76bf0a0987
commit 7fa608923d
2 changed files with 40 additions and 25 deletions

View File

@ -291,8 +291,8 @@ public:
const TString & raggfisc() {return get("S8");} const TString & raggfisc() {return get("S8");}
const TString & caus_collegata() {return get("S9");} const TString & caus_collegata() {return get("S9");}
int sgn(TTipo_saldomag fieldname) ; int sgn(TTipo_saldomag fieldname) ;
bool update_qta() {return get_bool("B0");} bool update_qta() {return !get_bool("B1");}
bool update_val() {return get_bool("B1");} bool update_val() {return !get_bool("B0");}
bool update_ultcos() {return TRUE; /*get_bool("B2");*/} bool update_ultcos() {return TRUE; /*get_bool("B2");*/}
bool is_fiscale(); bool is_fiscale();
TCausale_magazzino(const char * codice); TCausale_magazzino(const char * codice);

View File

@ -888,11 +888,16 @@ TCausale_magazzino::TCausale_magazzino(const char * codice):
// dati della linea di movimento di magazzino // dati della linea di movimento di magazzino
class TLine_movmag : public TObject class TLine_movmag : public TObject
{ {
TString16 _codcaus;
TString16 _um;
real _quant;
real _prezzo;
public: public:
TString16 codcaus; const TString16 &codcaus() const {return _codcaus;}
TString16 um; const TString16 &um() const {return _um;}
real quant; const real &quant() const {return _quant;}
real prezzo; const real &prezzo() const {return _prezzo;}
void set(const TString16 cau,const TString16 um,const real q, const real p);
int operator==(TLine_movmag &); int operator==(TLine_movmag &);
virtual TObject* dup() const {return new TLine_movmag(*this);}; virtual TObject* dup() const {return new TLine_movmag(*this);};
@ -902,16 +907,25 @@ public:
virtual ~TLine_movmag() {}; 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) TLine_movmag ::TLine_movmag(const TLine_movmag &l)
{ {
um=l.um; _codcaus=l._codcaus;
quant=l.quant; _um=l._um;
prezzo=l.prezzo; _quant=l._quant;
_prezzo=l._prezzo;
} }
int TLine_movmag::operator==(TLine_movmag &l) 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 // restituisce il valore dei dati
TLine_movmag & TMov_mag::line2data(int nrig) const TLine_movmag & TMov_mag::line2data(int nrig) const
{ {
static TLine_movmag _rest; static TLine_movmag line;
TRecord_array & b = body(); TRecord_array & b = body();
_rest.codcaus= b.row(nrig).get(RMOVMAG_CODCAUS).blank() ? line.set(
get(MOVMAG_CODCAUS) b.row(nrig).get(RMOVMAG_CODCAUS).blank() ? get(MOVMAG_CODCAUS)
: b.row(nrig).get(RMOVMAG_CODCAUS) ; : b.row(nrig).get(RMOVMAG_CODCAUS) ,
_rest.um = b.row(nrig).get(RMOVMAG_UM); b.row(nrig).get(RMOVMAG_UM),
_rest.quant = b.row(nrig).get_real(RMOVMAG_QUANT); b.row(nrig).get_real(RMOVMAG_QUANT),
_rest.prezzo= b.row(nrig).get_real(RMOVMAG_PREZZO); b.row(nrig).get_real(RMOVMAG_PREZZO));
return _rest; return line;
} }
TToken_string & TMov_mag::line2key(int numriga) const 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")); curr_art.read((const char *)key2field(*curr_key,"CODART"));
if (curr_art.lock_and_prompt()) { if (curr_art.lock_and_prompt()) {
TLine_movmag & line_mov=(TLine_movmag &)lines_to_add[*curr_key]; 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()) 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 // lock gained
giac_putkey(mag,get("ANNOES"),*curr_key); giac_putkey(mag,get("ANNOES"),*curr_key);
if (mag.read()!=NOERR) { if (mag.read()!=NOERR) {
@ -1266,17 +1280,17 @@ int TMov_mag::update_balances()
// in base alla causale e alla modifica fatta (con segno + o -) // 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) 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); TLocalisamfile umart(LF_UMART);
real diff,diff_val; real diff,diff_val;
umart.setkey(2); umart.setkey(2);
umart.put(UMART_CODART,magrec.get(MAG_CODART)); umart.put(UMART_CODART,magrec.get(MAG_CODART));
umart.put(UMART_UM , l.um); umart.put(UMART_UM , l.um());
umart.read(); umart.read();
real fc=umart.get_real("FC"); real fc=umart.get_real("FC");
diff=fc*rett_sign*l.quant; diff=fc*rett_sign*l.quant();
diff_val=rett_sign*l.quant*l.prezzo; diff_val=rett_sign*l.quant()*l.prezzo();
if (caus.update_qta()) { if (caus.update_qta()) {
update_balance(magrec,"GIAC",diff*caus.sgn(s_giac)); // update .. update_balance(magrec,"GIAC",diff*caus.sgn(s_giac)); // update ..
update_balance(magrec,"ACQ",diff*caus.sgn(s_acq)); // 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")) 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("ACQ",0);mag.put("VALACQ",0);
mag.put("ENT",0);mag.put("VALENT",0); mag.put("ENT",0);mag.put("VALENT",0);
mag.put("VEN",0);mag.put("VALVEN",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("ORDF",0);mag.put("VALORDF",0);
mag.put("ORDC",0);mag.put("VALORDC",0); mag.put("ORDC",0);mag.put("VALORDC",0);
mag.put("SCARTI",0);mag.put("VALSCARTI",0); mag.put("SCARTI",0);mag.put("VALSCARTI",0);
mag.put("GIAC",0);
mag.put("PRODCOMP",0); mag.put("PRODCOMP",0);
mag.put("PRODFIN",0); mag.put("PRODFIN",0);
mag.put("INCL",0); mag.put("INCL",0);