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 & 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);
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user