Patch level :10.0
Files correlati : lv3, menu lavanderie Ricompilazione Demo : [ ] Commento : Gestione Documenti di trasporto, inserita a menu. git-svn-id: svn://10.65.10.50/trunk@17805 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
dda7153508
commit
1d8dba9612
140
lv/lv3100.cpp
140
lv/lv3100.cpp
@ -2,6 +2,7 @@
|
|||||||
#include "../ve/veini.h"
|
#include "../ve/veini.h"
|
||||||
#include "../ve/veuml.h"
|
#include "../ve/veuml.h"
|
||||||
#include "../ve/verig.h"
|
#include "../ve/verig.h"
|
||||||
|
#include "../ve/vepriv.h"
|
||||||
|
|
||||||
#include "lv0.h"
|
#include "lv0.h"
|
||||||
#include "lvlib.h"
|
#include "lvlib.h"
|
||||||
@ -12,62 +13,125 @@
|
|||||||
class TGestione_bolle_msk : public TDocumento_mask
|
class TGestione_bolle_msk : public TDocumento_mask
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
static void arrotonda(const TMask& msk, real& quantita);
|
||||||
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_ritirato_handler(TMask_field& f, KEY k);
|
||||||
|
static bool lv_consegnato_handler(TMask_field& f, KEY k);
|
||||||
|
static bool lv_codart_handler(TMask_field& f, KEY k);
|
||||||
public:
|
public:
|
||||||
virtual void user_set_handler( short fieldid, int index);
|
virtual void user_set_handler( short fieldid, int index);
|
||||||
virtual void user_set_row_handler(TMask& rm, short 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)
|
void TGestione_bolle_msk::arrotonda(const TMask& msk, real& quantita)
|
||||||
|
{
|
||||||
|
const TString& codart = msk.get(FR_CODART);
|
||||||
|
//instanzio una cache sulla tabella del magazzino
|
||||||
|
const TRectype& anamag = cache().get(LF_ANAMAG,codart);
|
||||||
|
//recupero i dati di interesse dall'anagrafica di magazzino
|
||||||
|
const long ppconf = anamag.get_long(ANAMAG_PPCONF);
|
||||||
|
if (ppconf > 0)
|
||||||
|
{
|
||||||
|
TDocumento_mask& dmsk = (TDocumento_mask&) msk.get_sheet()->mask();
|
||||||
|
|
||||||
|
//recupero dal documento i dati di interesse per recuperare...
|
||||||
|
//...i dati dalla riga contratto
|
||||||
|
const long codcf = dmsk.get_long(F_CODCF);
|
||||||
|
const int indsped = dmsk.get_int(F_CODINDSP);
|
||||||
|
TDate datadoc = dmsk.get_date(F_DATADOC);
|
||||||
|
if (!datadoc.ok())
|
||||||
|
datadoc = TODAY;
|
||||||
|
|
||||||
|
const TLaundry_contract cont(codcf, indsped, datadoc);
|
||||||
|
//leggo la riga del contratto per l'articolo corrente
|
||||||
|
const TRectype& rcont = cont.row(codart);
|
||||||
|
//recupero i dati di interesse dalla riga del contratto
|
||||||
|
if (rcont.get_bool(LVRCONDV_ARROT))
|
||||||
|
{
|
||||||
|
//calcolo di quanti pezzi sforo
|
||||||
|
const long arr = quantita.integer() % ppconf;
|
||||||
|
//se sforo (arr > 0) allora calcolo quanti pezzi in più gli devo dare e aggiorno la quantità
|
||||||
|
if (arr > 0)
|
||||||
|
quantita += ppconf - arr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TGestione_bolle_msk::lv_ritirato_handler(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
if (f.to_check(k, false) && !f.empty())
|
if (f.to_check(k, false) && !f.empty())
|
||||||
{
|
{
|
||||||
TMask& msk = f.mask();
|
TMask& msk = f.mask();
|
||||||
if (msk.field(FR_QTA).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();
|
|
||||||
const TRiga_documento& rdoc = dmsk.doc()[r];
|
|
||||||
const TDocumento doc = rdoc.doc();
|
|
||||||
|
|
||||||
//recupero dal documento i dati di interesse per recuperare...
|
|
||||||
//...i dati dalla riga contratto
|
|
||||||
const long codcf = doc.get_long(DOC_CODCF);
|
|
||||||
const int indsped = doc.get_int(DOC_CODINDSP);
|
|
||||||
TDate datadoc = doc.get_date(DOC_DATADOC);
|
|
||||||
if (!datadoc.ok())
|
|
||||||
datadoc = TODAY;
|
|
||||||
|
|
||||||
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();
|
real ritirato = f.get();
|
||||||
if (arrot)
|
arrotonda(msk,ritirato);
|
||||||
{
|
|
||||||
//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 long ppconf = anamag.get_long(ANAMAG_PPCONF);
|
|
||||||
if (ppconf > 0)
|
|
||||||
{
|
|
||||||
//calcolo di quanti pezzi sforo
|
|
||||||
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_QTA,ritirato);
|
msk.set(FR_QTA,ritirato);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TGestione_bolle_msk::lv_consegnato_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
bool ok = true;
|
||||||
|
switch(f.dlg())
|
||||||
|
{
|
||||||
|
case FR_QTA: ok = qta_handler( f, k ); break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ok && f.to_check(k) && !f.empty())
|
||||||
|
{
|
||||||
|
TMask& msk = f.mask();
|
||||||
|
real ritirato = msk.get_real(FR_QTAGG1);
|
||||||
|
real consegnato = f.get();
|
||||||
|
arrotonda(msk, consegnato);
|
||||||
|
arrotonda(msk, ritirato);
|
||||||
|
if (consegnato.integer() != ritirato.integer() &&
|
||||||
|
!yesno_box(TR("Si desidera consegnare una quantita' di merce diversa da quella ritirata?")))
|
||||||
|
f.set(ritirato.string());
|
||||||
|
else
|
||||||
|
f.set(consegnato.string());
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TGestione_bolle_msk::lv_codart_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
bool ok = true;
|
||||||
|
switch(f.dlg())
|
||||||
|
{
|
||||||
|
case FR_CODART: ok = codart_handler( f, k ); break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ok && f.to_check(k))
|
||||||
|
{
|
||||||
|
TMask& msk = f.mask();
|
||||||
|
const TString& codart = msk.get(FR_CODART);
|
||||||
|
|
||||||
|
TDocumento_mask& dmsk = (TDocumento_mask&) msk.get_sheet()->mask();
|
||||||
|
|
||||||
|
//recupero dal documento i dati di interesse per recuperare...
|
||||||
|
//...i dati dalla riga contratto
|
||||||
|
const long codcf = dmsk.get_long(F_CODCF);
|
||||||
|
const int indsped = dmsk.get_int(F_CODINDSP);
|
||||||
|
TDate datadoc = dmsk.get_date(F_DATADOC);
|
||||||
|
if (!datadoc.ok())
|
||||||
|
datadoc = TODAY;
|
||||||
|
|
||||||
|
const TLaundry_contract cont(codcf, indsped, datadoc);
|
||||||
|
|
||||||
|
if (cont.row(codart).empty() &&
|
||||||
|
yesno_box(TR("L'articolo in esame non fa parte della dotazione standard di questo cliente."
|
||||||
|
"Si desidera aggiungerla ai contratti?")))
|
||||||
|
cont.edit();
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
|
bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
@ -179,7 +243,9 @@ void TGestione_bolle_msk::user_set_row_handler(TMask& rm, short field, int index
|
|||||||
{
|
{
|
||||||
switch(index)
|
switch(index)
|
||||||
{
|
{
|
||||||
case 4101: rm.set_handler(field, lv_qta_handler); break;
|
case 4101: rm.set_handler(field, lv_ritirato_handler); break;
|
||||||
|
case 4102: rm.set_handler(field, lv_consegnato_handler); break;
|
||||||
|
case 4103: rm.set_handler(field, lv_codart_handler); break;
|
||||||
default : TDocumento_mask::user_set_row_handler(rm, field, index); break;
|
default : TDocumento_mask::user_set_row_handler(rm, field, index); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ Caption = "Documenti"
|
|||||||
Picture = <ve01>
|
Picture = <ve01>
|
||||||
Module = 41
|
Module = 41
|
||||||
Flags = ""
|
Flags = ""
|
||||||
Item_01 = "Documenti di Trasporto", "ve0 -1 -filtI1=1 -defNUM_GEN,TIPODOC_GEN,lv", "F"
|
Item_01 = "Documenti di Trasporto", "lv3 -0 -filtI1=1 -defNUM_GEN,TIPODOC_GEN,lv", "F"
|
||||||
Item_02 = "Fatture", "ve0 -1 -filtI1=2 -defNUM_FAT,TIPODOC_FAT,lv", "F"
|
Item_02 = "Fatture", "ve0 -1 -filtI1=2 -defNUM_FAT,TIPODOC_FAT,lv", "F"
|
||||||
Item_03 = "Ordini Fornitori", "ve0 -1 -filtI1=3 -defNUM_ORF,TIPODOC_ORF,lv", "F"
|
Item_03 = "Ordini Fornitori", "ve0 -1 -filtI1=3 -defNUM_ORF,TIPODOC_ORF,lv", "F"
|
||||||
Item_04 = "Ordini Clienti", "ve0 -1 -filtI1=3 -defNUM_ORC,TIPODOC_ORC,lv", "F"
|
Item_04 = "Ordini Clienti", "ve0 -1 -filtI1=3 -defNUM_ORC,TIPODOC_ORC,lv", "F"
|
||||||
|
@ -5,6 +5,8 @@ CAMPICALC=
|
|||||||
IMPONIBILE=IMPNS
|
IMPONIBILE=IMPNS
|
||||||
|
|
||||||
[HANDLERS]
|
[HANDLERS]
|
||||||
NHANDLER = 1
|
NHANDLER = 3
|
||||||
1 = 133|4101
|
1 = 133|4101
|
||||||
|
2 = 112|4102
|
||||||
|
3 = 105|4103
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user