Patch level : 10.0 214
Files correlati : lv3.exe Ricompilazione Demo : [ ] Commento : Rivisto il meccanismo di calcolo delle dotazioni git-svn-id: svn://10.65.10.50/trunk@18102 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
95054f85a5
commit
be32b4ceba
110
lv/lv3100.cpp
110
lv/lv3100.cpp
@ -33,7 +33,7 @@ protected:
|
||||
public:
|
||||
bool reset(const TDocumento& doc); //svuota i TAssoc_array e carica cli e cont
|
||||
bool load_row(const TRiga_documento& rdoc); //popola i TAssoc_array
|
||||
long giac_att(TRiga_documento& rdoc, bool odierna); //restituisce le quantità attuali di dotazione
|
||||
real giac_att(TRiga_documento& rdoc, bool odierna); //restituisce le quantità attuali di dotazione
|
||||
TGiac_per_cli(); //costruttore
|
||||
};
|
||||
|
||||
@ -103,6 +103,8 @@ bool TGiac_per_cli::load_row(const TRiga_documento& rdoc)
|
||||
{
|
||||
//recupero il documento e la sua maschera a partire dalla riga documento
|
||||
const TDocumento& doc = rdoc.doc();
|
||||
real vardot;
|
||||
real vartmp;
|
||||
|
||||
//se sul documento leggo o il cliente o il contratto o l'indirizzo di spedizione
|
||||
//diversi da quelli che avevo salvato vuol dire che ho cambiato uno dei due,
|
||||
@ -111,46 +113,60 @@ bool TGiac_per_cli::load_row(const TRiga_documento& rdoc)
|
||||
reset(doc);
|
||||
|
||||
real& dotazione = giacart_od(rdoc.get(RDOC_CODART));
|
||||
real& dotmp = giacart_tmp(rdoc.get(RDOC_CODART));
|
||||
|
||||
//RDOC_QTA contiene il consegnato - RDOC_QTAGG1 contiene il ritirato
|
||||
//queste quantità vanno rispettivamente sommate e sottratte alla dotazione iniziale
|
||||
int saldo = rdoc.get_int(RDOC_QTA) - rdoc.get_int(RDOC_QTAGG1);
|
||||
|
||||
dotazione -= saldo;
|
||||
|
||||
//instanzio una cache sulla tabella delle causali
|
||||
//instanzio una cache sulla tabella delle causali
|
||||
TString4 causale = rdoc.get(RDOC_CODAGG1);
|
||||
const TRectype& cau = cache().get("&CAU", causale);
|
||||
|
||||
|
||||
//movimento o meno la dotazione temporanea a seconda di cosa prevede la causale
|
||||
if (cau.get_bool("B0") || cau.get_bool("B1"))
|
||||
if (cau.get_bool("B0"))
|
||||
{
|
||||
const TRectype& caumagr = cache().get("%CAU", cau.get(cau.get_bool("B0") ? "S1": "S2"));
|
||||
TString4 str = caumagr.get("S2").mid(32,2);
|
||||
|
||||
if (atoi(str) != ZERO)
|
||||
{
|
||||
real& dotmp = giacart_tmp(rdoc.get(RDOC_CODART));
|
||||
int saldotmp = rdoc.get_int(RDOC_QTA) - rdoc.get_int(RDOC_QTAGG1);
|
||||
|
||||
dotmp -= saldo;
|
||||
}
|
||||
}
|
||||
const TCausale_magazzino & rit = cached_causale_magazzino(cau.get("S1"));
|
||||
|
||||
vartmp += rit.sgn(s_dottm) * rdoc.get_int(RDOC_QTAGG1);
|
||||
vardot += rit.sgn(s_dotod) * rdoc.get_int(RDOC_QTAGG1);
|
||||
}
|
||||
if (cau.get_bool("B1"))
|
||||
{
|
||||
const TCausale_magazzino & con = cached_causale_magazzino(cau.get("S2"));
|
||||
|
||||
vartmp += con.sgn(s_dottm) * rdoc.get_int(RDOC_QTA);
|
||||
vardot += con.sgn(s_dotod) * rdoc.get_int(RDOC_QTA);
|
||||
}
|
||||
dotmp += vartmp;
|
||||
dotazione += vardot;
|
||||
return true;
|
||||
}
|
||||
|
||||
//GIAC_ATT: questo metodo restituisce il valore della dotazione da scrivere a video in base ai valori
|
||||
//di consegnato e ritirato; ATTENZIONE: restituisce la dotazione odierna se odierna = true,
|
||||
//restituisce la dotazione temporanea se odierna = false
|
||||
long TGiac_per_cli::giac_att(TRiga_documento& rdoc, bool odierna)
|
||||
real TGiac_per_cli::giac_att(TRiga_documento& rdoc, bool odierna)
|
||||
{
|
||||
const TString& codart = rdoc.get(RDOC_CODART);
|
||||
|
||||
long giac = odierna ? giacart_od(codart).integer() : giacart_tmp(codart).integer();
|
||||
|
||||
//RDOC_QTA contiene il consegnato - RDOC_QTAGG1 contiene il ritirato
|
||||
//queste quantità vanno rispettivamente sommate e sottratte alla dotazione
|
||||
long saldo = rdoc.get_long(RDOC_QTA) - rdoc.get_long(RDOC_QTAGG1);
|
||||
real giac = odierna ? giacart_od(codart) : giacart_tmp(codart);
|
||||
real saldo;
|
||||
|
||||
//instanzio una cache sulla tabella delle causali
|
||||
TString4 causale = rdoc.get(RDOC_CODAGG1);
|
||||
const TRectype& cau = cache().get("&CAU", causale);
|
||||
|
||||
//movimento o meno la dotazione temporanea/odierna a seconda di cosa prevede la causale
|
||||
if (cau.get_bool("B0"))
|
||||
{
|
||||
const TCausale_magazzino & rit = cached_causale_magazzino(cau.get("S1"));
|
||||
|
||||
saldo += rit.sgn(odierna ? s_dotod : s_dottm) * rdoc.get_int(RDOC_QTAGG1);
|
||||
}
|
||||
if (cau.get_bool("B1"))
|
||||
{
|
||||
const TCausale_magazzino & con = cached_causale_magazzino(cau.get("S2"));
|
||||
|
||||
saldo += con.sgn(odierna ? s_dotod : s_dottm) * rdoc.get_int(RDOC_QTA);
|
||||
}
|
||||
giac += saldo;
|
||||
|
||||
return giac;
|
||||
@ -406,26 +422,11 @@ bool TGestione_bolle_msk::lv_ritirato_handler(TMask_field& f, KEY k)
|
||||
rdoc.put(RDOC_QTAGG1,ritirato);
|
||||
|
||||
TGiac_per_cli& giac = gbapp().giacenza();
|
||||
long dotod = giac.giac_att(rdoc, true);
|
||||
real dotod = giac.giac_att(rdoc, true);
|
||||
real dotmp = giac.giac_att(rdoc, false);
|
||||
|
||||
msk.set(FR_JOLLY1, dotod);
|
||||
|
||||
//instanzio una cache sulla tabella delle causali
|
||||
TString4 causale = rdoc.get(RDOC_CODAGG1);
|
||||
const TRectype& cau = cache().get("&CAU", causale);
|
||||
|
||||
//movimento o meno la dotazione temporanea a seconda di cosa prevede la causale
|
||||
if (cau.get_bool("B0") || cau.get_bool("B1"))
|
||||
{
|
||||
const TRectype& caumagr = cache().get("%CAU", cau.get(cau.get_bool("B0") ? "S1": "S2"));
|
||||
TString4 str = caumagr.get("S2").mid(32,2);
|
||||
|
||||
if (atoi(str) != ZERO)
|
||||
{
|
||||
long dotmp = giac.giac_att(rdoc, false);
|
||||
msk.set(FR_JOLLY2, dotmp);
|
||||
}
|
||||
}
|
||||
msk.set(FR_JOLLY2, dotmp);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -452,26 +453,11 @@ bool TGestione_bolle_msk::lv_consegnato_handler(TMask_field& f, KEY k)
|
||||
rdoc.put(RDOC_QTAGG1,consegnato);
|
||||
|
||||
TGiac_per_cli& giac = gbapp().giacenza();
|
||||
long dotod = giac.giac_att(rdoc, true);
|
||||
real dotod = giac.giac_att(rdoc, true);
|
||||
real dotmp = giac.giac_att(rdoc, false);
|
||||
|
||||
msk.set(FR_JOLLY1, dotod);
|
||||
|
||||
//instanzio una cache sulla tabella delle causali
|
||||
TString4 causale = rdoc.get(RDOC_CODAGG1);
|
||||
const TRectype& cau = cache().get("&CAU", causale);
|
||||
|
||||
//movimento o meno la dotazione temporanea a seconda di cosa prevede la causale
|
||||
if (cau.get_bool("B0") || cau.get_bool("B1"))
|
||||
{
|
||||
const TRectype& caumagr = cache().get("%CAU", cau.get(cau.get_bool("B0") ? "S1": "S2"));
|
||||
TString4 str = caumagr.get("S2").mid(32,2);
|
||||
|
||||
if (atoi(str) != ZERO)
|
||||
{
|
||||
long dotmp = giac.giac_att(rdoc, false);
|
||||
msk.set(FR_JOLLY2, dotmp);
|
||||
}
|
||||
}
|
||||
msk.set(FR_JOLLY2, dotmp);
|
||||
}
|
||||
|
||||
return ok;
|
||||
|
Loading…
x
Reference in New Issue
Block a user