Patch level : 10.0
Files correlati : lv3 Ricompilazione Demo : [ ] Commento : Corretta gestione handler dei campi di riga git-svn-id: svn://10.65.10.50/trunk@17800 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
4252eebd90
commit
0901a9aa32
@ -15,18 +15,17 @@ protected:
|
||||
static bool lv_bolla_handler(TMask_field& f, KEY k);
|
||||
static bool lv_qta_handler(TMask_field& f, KEY k);
|
||||
public:
|
||||
virtual void user_set_handler( int fieldid, int index);
|
||||
virtual void user_set_row_handler(TMask& rm, int field, int index);
|
||||
TGestione_bolle_msk(const char* tipodoc):TDocumento_mask(tipodoc) {}
|
||||
virtual void user_set_handler( short fieldid, int index);
|
||||
virtual void user_set_row_handler(TMask& rm, short field, int index);
|
||||
TGestione_bolle_msk(const char* tipodoc) : TDocumento_mask(tipodoc) {}
|
||||
};
|
||||
|
||||
bool TGestione_bolle_msk::lv_qta_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (f.to_check(k, false))
|
||||
if (f.to_check(k, false) && !f.empty())
|
||||
{
|
||||
TMask& msk = f.mask();
|
||||
real ritirato = msk.get_real(FR_QTA);
|
||||
if (msk.field(FR_QTAGG1).empty())
|
||||
if (msk.field(FR_QTA).empty())
|
||||
{
|
||||
const int r = msk.get_sheet()->selected()+1;
|
||||
TDocumento_mask& dmsk = (TDocumento_mask&) f.mask().get_sheet()->mask();
|
||||
@ -40,34 +39,30 @@ bool TGestione_bolle_msk::lv_qta_handler(TMask_field& f, KEY k)
|
||||
TDate datadoc = doc.get_date(DOC_DATADOC);
|
||||
if (!datadoc.ok())
|
||||
datadoc = TODAY;
|
||||
const long codcont = lv_find_contract(codcf,indsped,datadoc);
|
||||
//preparo la chiave per la tabella righe contratti
|
||||
TToken_string keyrcont;
|
||||
keyrcont.add(codcf);
|
||||
keyrcont.add(codcont);
|
||||
keyrcont.add(msk.get(FR_CODART));
|
||||
//instanzio una cache sulla tabella delle righe contratti
|
||||
const TRectype& rcont = cache().get(LF_LVRCONDV,keyrcont);
|
||||
|
||||
const TLaundry_contract cont(codcf, indsped, datadoc);
|
||||
//leggo la riga del contratto per l'articolo corrente
|
||||
const TRectype& rcont = cont.row(msk.get(FR_CODART));
|
||||
//recupero i dati di interesse dalla riga del contratto
|
||||
const bool arrot = rcont.get_bool(LVRCONDV_ARROT);
|
||||
|
||||
real ritirato = f.get();
|
||||
if (arrot)
|
||||
{
|
||||
//instanzio una cache sulla tabella del magazzino
|
||||
const TRectype& anamag = cache().get(LF_ANAMAG,msk.get(FR_CODART));
|
||||
//recupero i dati di interesse dall'anagrafica di magazzino
|
||||
const real ppconf = anamag.get_real(ANAMAG_PPCONF);
|
||||
|
||||
if (arrot)
|
||||
const long ppconf = anamag.get_long(ANAMAG_PPCONF);
|
||||
if (ppconf > 0)
|
||||
{
|
||||
//calcolo di quanti pezzi sforo
|
||||
long arr = ritirato.integer() % ppconf.integer();
|
||||
const long arr = ritirato.integer() % ppconf;
|
||||
//se sforo (arr > 0) allora calcolo quanti pezzi in più gli devo dare e aggiorno la quantità
|
||||
if (arr > 0)
|
||||
{
|
||||
arr = ppconf.integer() - arr;
|
||||
ritirato += arr;
|
||||
ritirato += ppconf - arr;
|
||||
}
|
||||
}
|
||||
msk.set(FR_QTAGG1,ritirato);
|
||||
msk.set(FR_QTA,ritirato);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@ -86,7 +81,6 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
|
||||
if (ok && k == K_TAB && f.focusdirty())
|
||||
{
|
||||
TMask& msk = f.mask();
|
||||
|
||||
TDocumento_mask& dmsk = (TDocumento_mask&)msk;
|
||||
TDocumento& doc = dmsk.doc();
|
||||
|
||||
@ -122,14 +116,10 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
|
||||
doc.destroy_rows();
|
||||
|
||||
//tipo riga
|
||||
const TString4 tprig = msk.get(F_LBTIPORIGA);
|
||||
const TString& tprig = msk.get(F_LBTIPORIGA);
|
||||
|
||||
//preparo la chiave per la tabella contratti
|
||||
TToken_string keycont;
|
||||
keycont.add(codcf);
|
||||
keycont.add(codcont);
|
||||
//instanzio una cache sulla tabella dei contratti
|
||||
const TRectype& tcont = cache().get(LF_LVCONDV,keycont);
|
||||
const TLaundry_contract tcont(codcf, codcont);
|
||||
//estraggo i dati di interesse dalla cache
|
||||
const int tplis = tcont.get_int(LVCONDV_TIPOLIS); //tipo listino
|
||||
const bool prinbo = tcont.get_bool(LVCONDV_STPRZBOL); //prezzo in bolla
|
||||
@ -151,10 +141,6 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
|
||||
//instanzio una cache sulla tabella del magazzino
|
||||
const TRectype& anamag = cache().get(LF_ANAMAG,codart);
|
||||
|
||||
TString descr = anamag.get(ANAMAG_DESCR);
|
||||
TString um = rcont.get(LVRCONDV_UM).as_string();
|
||||
TString cau = rcont.get(LVRCONDV_CAUSLAV).as_string();
|
||||
|
||||
rdoc.put(RDOC_CODART,codart);
|
||||
rdoc.put(RDOC_CODARTMAG,codart);
|
||||
rdoc.put(RDOC_CHECKED,'X');
|
||||
@ -165,20 +151,15 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
|
||||
//elaborazione per il prezzo: o lo prendo dalle righe contratto, o dall'anagrafica magazzino
|
||||
if (prinbo)
|
||||
{
|
||||
TString16 scontostr = "";
|
||||
TString16 prezzostr = "";
|
||||
real prezzo;
|
||||
real sconto = rcont.get(LVRCONDV_SCONTPERC).as_real();
|
||||
scontostr << sconto;
|
||||
const TString& sconto = rcont.get(LVRCONDV_SCONTPERC).as_string();
|
||||
rdoc.put(RDOC_SCONTO, sconto);
|
||||
//controllo da dove devo prendere il prezzo
|
||||
real prezzo;
|
||||
if (tplis == 0)
|
||||
prezzo = rcont.get(LVRCONDV_PREZZO).as_real();
|
||||
else
|
||||
{
|
||||
prezzo = anamag.get_real(ANAMAG_COSTSTD);
|
||||
}
|
||||
prezzostr << prezzo;
|
||||
rdoc.put(RDOC_PREZZO,prezzo);
|
||||
rdoc.put(RDOC_PREZZO, prezzo);
|
||||
}
|
||||
}
|
||||
dmsk.doc2mask(false);
|
||||
@ -194,22 +175,22 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TGestione_bolle_msk::user_set_row_handler(TMask& rm, int field, int index)
|
||||
void TGestione_bolle_msk::user_set_row_handler(TMask& rm, short field, int index)
|
||||
{
|
||||
switch(index)
|
||||
{
|
||||
case 4101: set_field_handler(field, lv_qta_handler); break;
|
||||
case 4101: rm.set_handler(field, lv_qta_handler); break;
|
||||
default : TDocumento_mask::user_set_row_handler(rm, field, index); break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void TGestione_bolle_msk::user_set_handler( int fieldid, int index)
|
||||
void TGestione_bolle_msk::user_set_handler( short fieldid, int index)
|
||||
{
|
||||
if (index == 4101)
|
||||
set_field_handler(fieldid, lv_bolla_handler);
|
||||
else
|
||||
TDocumento_mask::user_set_handler(fieldid, index);
|
||||
switch(index)
|
||||
{
|
||||
case 4101: set_field_handler(fieldid, lv_bolla_handler); break;
|
||||
default : TDocumento_mask::user_set_handler(fieldid, index); break;
|
||||
}
|
||||
}
|
||||
|
||||
// Definizione della classe dell'applicazione motore
|
||||
|
@ -6,5 +6,5 @@ IMPONIBILE=IMPNS
|
||||
|
||||
[HANDLERS]
|
||||
NHANDLER = 1
|
||||
1 = 112|4101
|
||||
1 = 133|4101
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user