Corretto la proposta prezzo sulle righe mov

git-svn-id: svn://10.65.10.50/trunk@4954 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
augusto 1997-07-28 10:32:58 +00:00
parent 5507e9b4cf
commit 5be9e4f3dc

View File

@ -24,13 +24,14 @@ class TMask_movmag: public TMask {
TString price_codart;
real price_quant;
bool price_proposed;
real proposed_price(TString codart, real quant);
real proposed_price(const char * codart, real quant,const char * causrig);
bool update_rigamov (int r, const char * old_codcaus);
static bool notify_righe(TSheet_field & fld_righe, int item, KEY k); // notify delle righe di sheet
static bool handle_righe(TMask_field &f, KEY k); // handler delle righe
static bool handle_righeprezzo(TMask_field &f, KEY k); // handler del prezzo delle righe
static bool handle_righeprezzo1(TMask_field &f, KEY k); // handler del prezzo delle righe
static bool handle_righeprezzo2(TMask_field &f, KEY k); // handler del prezzo delle righe
static bool handle_codcaus(TMask_field &fld, KEY k); // handler della causale
static bool handle_datacomp(TMask_field &, KEY k); // handler del numero di registrazione
static void sheetrighe_put(TSheet_field &fld_righe, int item);
@ -56,9 +57,9 @@ TMask_movmag::TMask_movmag(TCodgiac_livelli *l_m,TMov_mag * m_m)
TSheet_field & ss=(TSheet_field &)field(F_RIGHE);
set_handler(F_DATACOMP, handle_datacomp);
set_handler(F_CODCAUS, handle_codcaus);
ss.sheet_mask().field(F_PREZZO).set_handler(handle_righeprezzo);
ss.sheet_mask().field(F_CODART).set_handler(handle_righeprezzo);
ss.sheet_mask().field(F_QUANT).set_handler(handle_righeprezzo);
ss.sheet_mask().field(F_QUANT).set_handler(handle_righeprezzo1);
ss.sheet_mask().field(F_CAUSRIG).set_handler(handle_righeprezzo1);
ss.sheet_mask().field(F_CODART).set_handler(handle_righeprezzo2);
ss.set_notify(notify_righe);
ss.set_handler(handle_righe);
ss.set_userget(sheetrighe_get);
@ -169,22 +170,27 @@ bool TMask_movmag::notify_righe(TSheet_field & ss, int r, KEY key)
}
bool TMask_movmag::handle_righeprezzo(TMask_field &f, KEY k)
// proposta soft: solo se il prezzo è non nullo (già impostato)
bool TMask_movmag::handle_righeprezzo1(TMask_field &f, KEY k)
{
TSheet_field &sh=(TSheet_field &)(*f.mask().get_sheet());
TMask_movmag &m=(TMask_movmag &)sh.mask();
if (f.mask().get(F_PREZZO).blank())
return handle_righeprezzo2(f, k);
return TRUE;
}
// proposta hard: propone il prezzo in ogni caso
bool TMask_movmag::handle_righeprezzo2(TMask_field &f, KEY k)
{
TMask_movmag &m=(TMask_movmag &)f.mask().get_sheet()->mask();
if (k==K_TAB && f.focusdirty())
{
m.price_proposed=FALSE;
// in caso di nuova linea o prezzo nullo, propone il prezzo in base alla causale
// propone il prezzo in base alla causale
if (!f.mask().get(F_QUANT).blank() &&
!f.mask().get(F_CODART).blank() &&
f.mask().get(F_PREZZO).blank() &&
(m.price_proposed==FALSE))
!f.mask().get(F_CODART).blank())
{
m.price_proposed=TRUE;
real prz=m.proposed_price(f.mask().get(F_CODART),
f.mask().get_real(F_QUANT));
f.mask().get_real(F_QUANT),
f.mask().get(F_CAUSRIG));
f.mask().set(F_PREZZO,prz);
}
}
@ -232,11 +238,12 @@ bool TMask_movmag::update_rigamov (int r, const char * old_codcaus)
return FALSE;
}
real TMask_movmag::proposed_price(TString codart,
real quant)
real TMask_movmag::proposed_price(const char *codart,
real quant, const char *causrig)
{
real rv("0");
TCausale_magazzino & cau=(TCausale_magazzino &)cache_causali.get(get(F_CODCAUS));
TCausale_magazzino & cau=
(TCausale_magazzino &)cache_causali.get(*causrig ? causrig : get(F_CODCAUS));
TLocalisamfile anamag(LF_ANAMAG);
anamag.put("CODART",codart);
anamag.read();
@ -246,7 +253,7 @@ real TMask_movmag::proposed_price(TString codart,
TLocalisamfile umart(LF_UMART);
TConfig cfgditta(CONFIG_DITTA);
TCondizione_vendita cv(&cfgditta,&anamag,&umart);
cv.put_listino(get(F_CODCONDV),get(F_CATVEN));
cv.put_listino(get(F_CODLIST),get(F_CATVEN));
cv.ricerca(codart,quant);
rv=cv.get_prezzo();
}
@ -264,7 +271,8 @@ bool TMask_movmag::handle_codcaus(TMask_field &fld, KEY k)
{
static TString16 old_codcaus;
if (k == K_TAB && fld.focusdirty() && old_codcaus!="") {
if (k == K_TAB && fld.focusdirty() && old_codcaus!="")
{
// aggiorna le righe di sheet
TMask_movmag &m=(TMask_movmag &)fld.mask();
TSheet_field & ss=(TSheet_field & )m.field(F_RIGHE);