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_bolla_handler(TMask_field& f, KEY k);
|
||||||
static bool lv_qta_handler(TMask_field& f, KEY k);
|
static bool lv_qta_handler(TMask_field& f, KEY k);
|
||||||
public:
|
public:
|
||||||
virtual void user_set_handler( int fieldid, int index);
|
virtual void user_set_handler( short fieldid, int index);
|
||||||
virtual void user_set_row_handler(TMask& rm, int field, int index);
|
virtual void user_set_row_handler(TMask& rm, short field, int index);
|
||||||
TGestione_bolle_msk(const char* tipodoc):TDocumento_mask(tipodoc) {}
|
TGestione_bolle_msk(const char* tipodoc) : TDocumento_mask(tipodoc) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
bool TGestione_bolle_msk::lv_qta_handler(TMask_field& f, KEY k)
|
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();
|
TMask& msk = f.mask();
|
||||||
real ritirato = msk.get_real(FR_QTA);
|
if (msk.field(FR_QTA).empty())
|
||||||
if (msk.field(FR_QTAGG1).empty())
|
|
||||||
{
|
{
|
||||||
const int r = msk.get_sheet()->selected()+1;
|
const int r = msk.get_sheet()->selected()+1;
|
||||||
TDocumento_mask& dmsk = (TDocumento_mask&) f.mask().get_sheet()->mask();
|
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);
|
TDate datadoc = doc.get_date(DOC_DATADOC);
|
||||||
if (!datadoc.ok())
|
if (!datadoc.ok())
|
||||||
datadoc = TODAY;
|
datadoc = TODAY;
|
||||||
const long codcont = lv_find_contract(codcf,indsped,datadoc);
|
|
||||||
//preparo la chiave per la tabella righe contratti
|
const TLaundry_contract cont(codcf, indsped, datadoc);
|
||||||
TToken_string keyrcont;
|
//leggo la riga del contratto per l'articolo corrente
|
||||||
keyrcont.add(codcf);
|
const TRectype& rcont = cont.row(msk.get(FR_CODART));
|
||||||
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);
|
|
||||||
//recupero i dati di interesse dalla riga del contratto
|
//recupero i dati di interesse dalla riga del contratto
|
||||||
const bool arrot = rcont.get_bool(LVRCONDV_ARROT);
|
const bool arrot = rcont.get_bool(LVRCONDV_ARROT);
|
||||||
|
|
||||||
//instanzio una cache sulla tabella del magazzino
|
real ritirato = f.get();
|
||||||
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)
|
if (arrot)
|
||||||
{
|
{
|
||||||
//calcolo di quanti pezzi sforo
|
//instanzio una cache sulla tabella del magazzino
|
||||||
long arr = ritirato.integer() % ppconf.integer();
|
const TRectype& anamag = cache().get(LF_ANAMAG,msk.get(FR_CODART));
|
||||||
//se sforo (arr > 0) allora calcolo quanti pezzi in più gli devo dare e aggiorno la quantità
|
//recupero i dati di interesse dall'anagrafica di magazzino
|
||||||
if (arr > 0)
|
const long ppconf = anamag.get_long(ANAMAG_PPCONF);
|
||||||
|
if (ppconf > 0)
|
||||||
{
|
{
|
||||||
arr = ppconf.integer() - arr;
|
//calcolo di quanti pezzi sforo
|
||||||
ritirato += arr;
|
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)
|
||||||
|
ritirato += ppconf - arr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
msk.set(FR_QTAGG1,ritirato);
|
msk.set(FR_QTA,ritirato);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -78,15 +73,14 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
|
|||||||
bool ok = true;
|
bool ok = true;
|
||||||
switch(f.dlg())
|
switch(f.dlg())
|
||||||
{
|
{
|
||||||
case F_CODCF: ok = TDocumento_mask::clifo_handler( f, k ); break;
|
case F_CODCF: ok = TDocumento_mask::clifo_handler( f, k ); break;
|
||||||
case F_DATADOC: ok = data_hndl( f, k ); break;
|
case F_DATADOC: ok = data_hndl( f, k ); break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ok && k == K_TAB && f.focusdirty())
|
if (ok && k == K_TAB && f.focusdirty())
|
||||||
{
|
{
|
||||||
TMask& msk = f.mask();
|
TMask& msk = f.mask();
|
||||||
|
|
||||||
TDocumento_mask& dmsk = (TDocumento_mask&)msk;
|
TDocumento_mask& dmsk = (TDocumento_mask&)msk;
|
||||||
TDocumento& doc = dmsk.doc();
|
TDocumento& doc = dmsk.doc();
|
||||||
|
|
||||||
@ -122,14 +116,10 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
|
|||||||
doc.destroy_rows();
|
doc.destroy_rows();
|
||||||
|
|
||||||
//tipo riga
|
//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
|
//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
|
//estraggo i dati di interesse dalla cache
|
||||||
const int tplis = tcont.get_int(LVCONDV_TIPOLIS); //tipo listino
|
const int tplis = tcont.get_int(LVCONDV_TIPOLIS); //tipo listino
|
||||||
const bool prinbo = tcont.get_bool(LVCONDV_STPRZBOL); //prezzo in bolla
|
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
|
//instanzio una cache sulla tabella del magazzino
|
||||||
const TRectype& anamag = cache().get(LF_ANAMAG,codart);
|
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_CODART,codart);
|
||||||
rdoc.put(RDOC_CODARTMAG,codart);
|
rdoc.put(RDOC_CODARTMAG,codart);
|
||||||
rdoc.put(RDOC_CHECKED,'X');
|
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
|
//elaborazione per il prezzo: o lo prendo dalle righe contratto, o dall'anagrafica magazzino
|
||||||
if (prinbo)
|
if (prinbo)
|
||||||
{
|
{
|
||||||
TString16 scontostr = "";
|
const TString& sconto = rcont.get(LVRCONDV_SCONTPERC).as_string();
|
||||||
TString16 prezzostr = "";
|
rdoc.put(RDOC_SCONTO, sconto);
|
||||||
real prezzo;
|
|
||||||
real sconto = rcont.get(LVRCONDV_SCONTPERC).as_real();
|
|
||||||
scontostr << sconto;
|
|
||||||
//controllo da dove devo prendere il prezzo
|
//controllo da dove devo prendere il prezzo
|
||||||
|
real prezzo;
|
||||||
if (tplis == 0)
|
if (tplis == 0)
|
||||||
prezzo = rcont.get(LVRCONDV_PREZZO).as_real();
|
prezzo = rcont.get(LVRCONDV_PREZZO).as_real();
|
||||||
else
|
else
|
||||||
{
|
|
||||||
prezzo = anamag.get_real(ANAMAG_COSTSTD);
|
prezzo = anamag.get_real(ANAMAG_COSTSTD);
|
||||||
}
|
rdoc.put(RDOC_PREZZO, prezzo);
|
||||||
prezzostr << prezzo;
|
|
||||||
rdoc.put(RDOC_PREZZO,prezzo);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dmsk.doc2mask(false);
|
dmsk.doc2mask(false);
|
||||||
@ -194,22 +175,22 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
|
|||||||
return ok;
|
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)
|
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;
|
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)
|
switch(index)
|
||||||
set_field_handler(fieldid, lv_bolla_handler);
|
{
|
||||||
else
|
case 4101: set_field_handler(fieldid, lv_bolla_handler); break;
|
||||||
TDocumento_mask::user_set_handler(fieldid, index);
|
default : TDocumento_mask::user_set_handler(fieldid, index); break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Definizione della classe dell'applicazione motore
|
// Definizione della classe dell'applicazione motore
|
||||||
|
@ -6,5 +6,5 @@ IMPONIBILE=IMPNS
|
|||||||
|
|
||||||
[HANDLERS]
|
[HANDLERS]
|
||||||
NHANDLER = 1
|
NHANDLER = 1
|
||||||
1 = 112|4101
|
1 = 133|4101
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user