Patch level : 10.0 patch 6??
Files correlati : lv3 lv3600 Ricompilazione Demo : [ ] Commento : non salva il percorso dell'ultimo lancio il peso deve essere fillato di zero e senza punti git-svn-id: svn://10.65.10.50/trunk@20201 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
9498f3a754
commit
055f037035
110
lv/lv3600.cpp
110
lv/lv3600.cpp
@ -18,44 +18,34 @@
|
||||
//classe TInvcon_rec
|
||||
class TInvcon_rec: public TAS400_recordset
|
||||
{
|
||||
TString4 _umkg;
|
||||
TString4 _umkg; // Unità di misura dei Kg
|
||||
TString4 _umgr; // Unità di misura dei gr
|
||||
|
||||
private:
|
||||
const int convert_to_kg(const TString& codart, const TString& umkg);
|
||||
long peso_in_grammi(const TArticolo& art) const;
|
||||
|
||||
public:
|
||||
void aggiungi_riga(const long codcf, const TString& codart);
|
||||
TInvcon_rec();
|
||||
};
|
||||
|
||||
//CONVERT_TO_KG: metodo che converte il peso di un articolo
|
||||
const int TInvcon_rec::convert_to_kg(const TString& codart, const TString& umkg)
|
||||
//peso_in_grammi: metodo che converte il peso di un articolo in grammi
|
||||
long TInvcon_rec::peso_in_grammi(const TArticolo& art) const
|
||||
{
|
||||
TArticolo& art = cached_article(codart);
|
||||
|
||||
const TString4 ump = art.get(ANAMAG_UMP);
|
||||
const real peso = art.get_real(ANAMAG_PESO);
|
||||
if (ump == _umgr)
|
||||
return peso.integer();
|
||||
|
||||
real qtaconv = ZERO;
|
||||
|
||||
if (ump.full() && peso != ZERO)
|
||||
{
|
||||
//preparo una cache sulla tabella delle unità di misura
|
||||
const TRectype& unita = cache().get("%UMS", ump);
|
||||
//leggo e controllo se esiste l'unità di misura di riferimento
|
||||
const TString4 umrif = unita.get("S7");
|
||||
real fatconv = UNO;
|
||||
|
||||
if (umrif == umkg)
|
||||
{
|
||||
//leggo e controllo il fattore di conversione
|
||||
fatconv = unita.get_real("R10");
|
||||
}
|
||||
|
||||
//se tutti i controlli sono andati a buon fine, converto la quantità e la restituisco
|
||||
if(fatconv != ZERO)
|
||||
qtaconv = fatconv * peso;
|
||||
real peso_gr = ZERO;
|
||||
if (ump.full() && !peso.is_zero())
|
||||
{
|
||||
peso_gr = ((TArticolo&)art).convert_to_um(peso, _umkg, ump, false); // Converto in Kg
|
||||
peso_gr *= 1000.0; // Converto in gr
|
||||
peso_gr.round(); // Arrotondo al grammo
|
||||
}
|
||||
TString8 tmp = qtaconv.string(); tmp.replace('.', ' '); tmp.strip_spaces();
|
||||
return atoi(tmp);
|
||||
|
||||
return peso_gr.integer();
|
||||
}
|
||||
|
||||
//metodo per aggiungere righe al recordset da stampare
|
||||
@ -81,11 +71,11 @@ void TInvcon_rec::aggiungi_riga(const long codcf, const TString& codart)
|
||||
citta.cut(39);
|
||||
|
||||
//preparo la cache su anamag
|
||||
const TRectype& anamag = cache().get(LF_ANAMAG, codart);
|
||||
const TArticolo& anamag = cached_article(codart);
|
||||
|
||||
//recupero i dati di interesse da anamag
|
||||
TString80 desart = anamag.get(ANAMAG_DESCR);
|
||||
long peso = convert_to_kg(codart, _umkg);
|
||||
long peso = peso_in_grammi(anamag);
|
||||
long lavco1 = atoi(anamag.get(ANAMAG_ARTLAVCONT).left(2));
|
||||
long lavco2 = 0; //non serve
|
||||
long linde1 = anamag.get_int(ANAMAG_LINDEST1);
|
||||
@ -104,7 +94,7 @@ void TInvcon_rec::aggiungi_riga(const long codcf, const TString& codart)
|
||||
set("CITTA", citta);
|
||||
set("CODART", codart);
|
||||
set("DESART", desart);
|
||||
set("PESO", (TVariant)peso);
|
||||
set("PESO_GR", (TVariant)peso);
|
||||
set("LAVCON1", (TVariant)lavco1);
|
||||
set("LINDES1", (TVariant)linde1);
|
||||
set("LINDES2", (TVariant)linde2);
|
||||
@ -127,7 +117,7 @@ TInvcon_rec::TInvcon_rec()
|
||||
create_field("CODART", -1, 8, _alfafld, true); //codice articolo
|
||||
create_field("DESART", -1, 30, _alfafld, true); //descrizione articolo
|
||||
create_field("FILLER3", -1, 9, _alfafld, false); //riempimento
|
||||
create_field("PESO", -1, 6, _intzerofld, true); //peso
|
||||
create_field("PESO_GR", -1, 6, _longzerofld, true); //peso in grammi
|
||||
create_field("LAVCON1", -1, 2, _intzerofld, true); //lavacontinua 1
|
||||
create_field("LAVCON2", -1, 2, _intzerofld, false); //lavacontinua 2
|
||||
create_field("LINDES1", -1, 2, _intzerofld, true); //linea di destinazione 1
|
||||
@ -139,7 +129,13 @@ TInvcon_rec::TInvcon_rec()
|
||||
create_field("CONF", -1, 3, _intzerofld, true); //numero di pezzi per confezione
|
||||
create_field("ACAPO", -1, 2, _alfafld, true, TVariant("\r\n")); //caratteri di a capo
|
||||
|
||||
_umkg = ini_get_string(CONFIG_DITTA, "lv", "UmKg");
|
||||
_umkg = ini_get_string(CONFIG_DITTA, "lv", "UmKg", "KG");
|
||||
TISAM_recordset ums("USE %UMS SELECT (NUM(S7==#KG))&&(STR(R10==0.001))");
|
||||
ums.set_var("#KG", _umkg);
|
||||
if (ums.move_first())
|
||||
_umgr = ums.get("CODTAB").as_string();
|
||||
else
|
||||
_umgr = _umkg == "KG" ? "GR" : "";
|
||||
}
|
||||
|
||||
|
||||
@ -154,9 +150,8 @@ class TInvcon_msk: public TAutomask
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
void esporta() const;
|
||||
|
||||
public:
|
||||
void esporta() const;
|
||||
TInvcon_msk();
|
||||
};
|
||||
|
||||
@ -241,20 +236,11 @@ void TInvcon_msk::esporta() const
|
||||
//ON_FIELD_EVENT: metodo che gestisce gli eventi sui campi della maschera
|
||||
bool TInvcon_msk::on_field_event(TOperable_field& f, TField_event e, long jolly)
|
||||
{
|
||||
switch (f.dlg())
|
||||
{
|
||||
case DLG_ELABORA:
|
||||
//alla pressione del bottone elabora eseguo il metodo elabora
|
||||
if(e == fe_button)
|
||||
esporta();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//metodo costruttore che precarica i campi di interesse sulla maschera
|
||||
TInvcon_msk::TInvcon_msk():TAutomask("lv3600a") {}
|
||||
TInvcon_msk::TInvcon_msk() : TAutomask("lv3600a") {}
|
||||
|
||||
///////////////////////////
|
||||
//// TINVCON_APP ////
|
||||
@ -263,46 +249,20 @@ TInvcon_msk::TInvcon_msk():TAutomask("lv3600a") {}
|
||||
//classe TInvcon_app
|
||||
class TInvcon_app : public TSkeleton_application
|
||||
{
|
||||
TInvcon_msk* _msk;
|
||||
protected:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
|
||||
public:
|
||||
bool transfer();
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
//CREATE: metodo costruttore
|
||||
bool TInvcon_app::create()
|
||||
{
|
||||
_msk = new TInvcon_msk;
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
//DESTROY: metodo distruttore
|
||||
bool TInvcon_app::destroy()
|
||||
{
|
||||
delete _msk;
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
//TRANSFER: metodo principale dell'elaborazione, che non deve fare niente
|
||||
//perchè viene tutto gestito nella maschera
|
||||
bool TInvcon_app::transfer()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void TInvcon_app::main_loop()
|
||||
{
|
||||
while (_msk->run() == K_ENTER)
|
||||
transfer();
|
||||
}
|
||||
TInvcon_msk msk;
|
||||
while (msk.run() != K_QUIT)
|
||||
msk.esporta();
|
||||
}
|
||||
|
||||
int lv3600(int argc, char *argv[])
|
||||
{
|
||||
TInvcon_app a;
|
||||
a.run (argc, argv, "Invio a contapezzi");
|
||||
a.run (argc, argv, TR("Invio a contapezzi"));
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
TOOLBAR "" 0 0 0 2
|
||||
|
||||
BUTTON DLG_ELABORA 2 2
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 3 1 "Esporta"
|
||||
PICTURE TOOL_ELABORA
|
||||
|
Loading…
x
Reference in New Issue
Block a user