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:
|
public:
|
||||||
bool reset(const TDocumento& doc); //svuota i TAssoc_array e carica cli e cont
|
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
|
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
|
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
|
//recupero il documento e la sua maschera a partire dalla riga documento
|
||||||
const TDocumento& doc = rdoc.doc();
|
const TDocumento& doc = rdoc.doc();
|
||||||
|
real vardot;
|
||||||
|
real vartmp;
|
||||||
|
|
||||||
//se sul documento leggo o il cliente o il contratto o l'indirizzo di spedizione
|
//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,
|
//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);
|
reset(doc);
|
||||||
|
|
||||||
real& dotazione = giacart_od(rdoc.get(RDOC_CODART));
|
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
|
//instanzio una cache sulla tabella delle causali
|
||||||
//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
|
|
||||||
TString4 causale = rdoc.get(RDOC_CODAGG1);
|
TString4 causale = rdoc.get(RDOC_CODAGG1);
|
||||||
const TRectype& cau = cache().get("&CAU", causale);
|
const TRectype& cau = cache().get("&CAU", causale);
|
||||||
|
|
||||||
|
|
||||||
//movimento o meno la dotazione temporanea a seconda di cosa prevede la 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"));
|
const TCausale_magazzino & rit = cached_causale_magazzino(cau.get("S1"));
|
||||||
TString4 str = caumagr.get("S2").mid(32,2);
|
|
||||||
|
vartmp += rit.sgn(s_dottm) * rdoc.get_int(RDOC_QTAGG1);
|
||||||
if (atoi(str) != ZERO)
|
vardot += rit.sgn(s_dotod) * rdoc.get_int(RDOC_QTAGG1);
|
||||||
{
|
}
|
||||||
real& dotmp = giacart_tmp(rdoc.get(RDOC_CODART));
|
if (cau.get_bool("B1"))
|
||||||
int saldotmp = rdoc.get_int(RDOC_QTA) - rdoc.get_int(RDOC_QTAGG1);
|
{
|
||||||
|
const TCausale_magazzino & con = cached_causale_magazzino(cau.get("S2"));
|
||||||
dotmp -= saldo;
|
|
||||||
}
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//GIAC_ATT: questo metodo restituisce il valore della dotazione da scrivere a video in base ai valori
|
//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,
|
//di consegnato e ritirato; ATTENZIONE: restituisce la dotazione odierna se odierna = true,
|
||||||
//restituisce la dotazione temporanea se odierna = false
|
//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);
|
const TString& codart = rdoc.get(RDOC_CODART);
|
||||||
|
|
||||||
long giac = odierna ? giacart_od(codart).integer() : giacart_tmp(codart).integer();
|
real giac = odierna ? giacart_od(codart) : giacart_tmp(codart);
|
||||||
|
real saldo;
|
||||||
//RDOC_QTA contiene il consegnato - RDOC_QTAGG1 contiene il ritirato
|
|
||||||
//queste quantità vanno rispettivamente sommate e sottratte alla dotazione
|
//instanzio una cache sulla tabella delle causali
|
||||||
long saldo = rdoc.get_long(RDOC_QTA) - rdoc.get_long(RDOC_QTAGG1);
|
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;
|
giac += saldo;
|
||||||
|
|
||||||
return giac;
|
return giac;
|
||||||
@ -406,26 +422,11 @@ bool TGestione_bolle_msk::lv_ritirato_handler(TMask_field& f, KEY k)
|
|||||||
rdoc.put(RDOC_QTAGG1,ritirato);
|
rdoc.put(RDOC_QTAGG1,ritirato);
|
||||||
|
|
||||||
TGiac_per_cli& giac = gbapp().giacenza();
|
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);
|
msk.set(FR_JOLLY1, dotod);
|
||||||
|
msk.set(FR_JOLLY2, dotmp);
|
||||||
//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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -452,26 +453,11 @@ bool TGestione_bolle_msk::lv_consegnato_handler(TMask_field& f, KEY k)
|
|||||||
rdoc.put(RDOC_QTAGG1,consegnato);
|
rdoc.put(RDOC_QTAGG1,consegnato);
|
||||||
|
|
||||||
TGiac_per_cli& giac = gbapp().giacenza();
|
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);
|
msk.set(FR_JOLLY1, dotod);
|
||||||
|
msk.set(FR_JOLLY2, dotmp);
|
||||||
//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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user