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; TString price_codart;
real price_quant; real price_quant;
bool price_proposed; 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); 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 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_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_codcaus(TMask_field &fld, KEY k); // handler della causale
static bool handle_datacomp(TMask_field &, KEY k); // handler del numero di registrazione static bool handle_datacomp(TMask_field &, KEY k); // handler del numero di registrazione
static void sheetrighe_put(TSheet_field &fld_righe, int item); 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); TSheet_field & ss=(TSheet_field &)field(F_RIGHE);
set_handler(F_DATACOMP, handle_datacomp); set_handler(F_DATACOMP, handle_datacomp);
set_handler(F_CODCAUS, handle_codcaus); set_handler(F_CODCAUS, handle_codcaus);
ss.sheet_mask().field(F_PREZZO).set_handler(handle_righeprezzo); ss.sheet_mask().field(F_QUANT).set_handler(handle_righeprezzo1);
ss.sheet_mask().field(F_CODART).set_handler(handle_righeprezzo); ss.sheet_mask().field(F_CAUSRIG).set_handler(handle_righeprezzo1);
ss.sheet_mask().field(F_QUANT).set_handler(handle_righeprezzo); ss.sheet_mask().field(F_CODART).set_handler(handle_righeprezzo2);
ss.set_notify(notify_righe); ss.set_notify(notify_righe);
ss.set_handler(handle_righe); ss.set_handler(handle_righe);
ss.set_userget(sheetrighe_get); 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()); if (f.mask().get(F_PREZZO).blank())
TMask_movmag &m=(TMask_movmag &)sh.mask(); 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()) if (k==K_TAB && f.focusdirty())
{ {
m.price_proposed=FALSE; // propone il prezzo in base alla causale
// in caso di nuova linea o prezzo nullo, propone il prezzo in base alla causale
if (!f.mask().get(F_QUANT).blank() && if (!f.mask().get(F_QUANT).blank() &&
!f.mask().get(F_CODART).blank() && !f.mask().get(F_CODART).blank())
f.mask().get(F_PREZZO).blank() &&
(m.price_proposed==FALSE))
{ {
m.price_proposed=TRUE;
real prz=m.proposed_price(f.mask().get(F_CODART), 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); f.mask().set(F_PREZZO,prz);
} }
} }
@ -232,11 +238,12 @@ bool TMask_movmag::update_rigamov (int r, const char * old_codcaus)
return FALSE; return FALSE;
} }
real TMask_movmag::proposed_price(TString codart, real TMask_movmag::proposed_price(const char *codart,
real quant) real quant, const char *causrig)
{ {
real rv("0"); 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); TLocalisamfile anamag(LF_ANAMAG);
anamag.put("CODART",codart); anamag.put("CODART",codart);
anamag.read(); anamag.read();
@ -246,7 +253,7 @@ real TMask_movmag::proposed_price(TString codart,
TLocalisamfile umart(LF_UMART); TLocalisamfile umart(LF_UMART);
TConfig cfgditta(CONFIG_DITTA); TConfig cfgditta(CONFIG_DITTA);
TCondizione_vendita cv(&cfgditta,&anamag,&umart); 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); cv.ricerca(codart,quant);
rv=cv.get_prezzo(); rv=cv.get_prezzo();
} }
@ -264,7 +271,8 @@ bool TMask_movmag::handle_codcaus(TMask_field &fld, KEY k)
{ {
static TString16 old_codcaus; 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 // aggiorna le righe di sheet
TMask_movmag &m=(TMask_movmag &)fld.mask(); TMask_movmag &m=(TMask_movmag &)fld.mask();
TSheet_field & ss=(TSheet_field & )m.field(F_RIGHE); TSheet_field & ss=(TSheet_field & )m.field(F_RIGHE);