Patch level : 10.0 no patch
Files correlati : Ricompilazione Demo : [ ] Commento : Stampa a kg ora i tlv_report derivano da tdocument_report e i tlv_recordset derivano da tdocument_recordset spostare velib07 in vedoc controllare lv0200 e lv2300 git-svn-id: svn://10.65.10.50/trunk@19982 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f588484f0c
commit
c2dee90b16
119
lv/lv1200.cpp
119
lv/lv1200.cpp
@ -32,59 +32,84 @@ bool TStampa_a_kg_msk::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
// TStampa_a_kg_rep
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TStampa_a_kg_rep : public TDocument_report
|
||||
class TStampa_a_kg_rep : public TLV_report
|
||||
{
|
||||
TString4 _umkg;
|
||||
|
||||
protected:
|
||||
virtual bool get_usr_val(const TString& name, TVariant& var) const;
|
||||
|
||||
public:
|
||||
TStampa_a_kg_rep();
|
||||
virtual ~TStampa_a_kg_rep() {}
|
||||
};
|
||||
|
||||
TStampa_a_kg_rep::TStampa_a_kg_rep()
|
||||
{
|
||||
_umkg = ini_get_string(CONFIG_DITTA, "lv", "UmKg");
|
||||
}
|
||||
|
||||
bool TStampa_a_kg_rep::get_usr_val(const TString& name, TVariant& var) const
|
||||
{
|
||||
var = 0;
|
||||
if (name == "#PESO")
|
||||
{
|
||||
const TRecordset& recset = *recordset();
|
||||
const TString4 umkg = ini_get_string(CONFIG_DITTA, "lv", "UmKg");
|
||||
const TLV_recordset& recset = (TLV_recordset &) *recordset();
|
||||
const TString4 umri = recset.get(RDOC_UMQTA).as_string();
|
||||
//se la riga è già espressa in kg non devo fare niente
|
||||
if(umri == umkg)
|
||||
if (umri == _umkg)
|
||||
var = recset.get(RDOC_QTA);
|
||||
// altrimenti
|
||||
else
|
||||
{
|
||||
// istanzio un TArticolo_lavanderie. serve??
|
||||
const TString80 codart = recset.get(RDOC_CODART).as_string();
|
||||
TArticolo_lavanderie artlav(codart);
|
||||
//leggo e controllo l'unità di misura del peso
|
||||
//leggo e controllo il peso dell'articolo
|
||||
const TString4 ump = artlav.get(ANAMAG_UMP);
|
||||
const real peso = artlav.get_real(ANAMAG_PESO);
|
||||
if (!ump.empty() && peso!=ZERO)
|
||||
{
|
||||
//leggo l'unità di misura dell'articolo e la quantità convertita all'unità di misura dell'articolo
|
||||
int cazzone = artlav.um().rows();
|
||||
const TString4 umart = artlav.um()[1].get(UMART_UM);
|
||||
const real qta = artlav.convert_to_um(recset.get(RDOC_QTA).as_real(), umart, umri, false);
|
||||
const TString & codart = recset.get(RDOC_CODARTMAG).as_string();
|
||||
TArticolo & art = cached_article(codart);
|
||||
const real qta = art.convert_to_um(recset.get(RDOC_QTA).as_real(), NULL, umri, false);
|
||||
|
||||
//se l'articolo non è espresso in kg, allora:
|
||||
if(umart != umkg)
|
||||
if (art.is_first_um(_umkg))
|
||||
var = qta;
|
||||
else
|
||||
{
|
||||
//leggo e controllo l'unità di misura del peso
|
||||
//leggo e controllo il peso dell'articolo
|
||||
const TString4 ump = art.get(ANAMAG_UMP);
|
||||
const real peso = art.get_real(ANAMAG_PESO);
|
||||
|
||||
if (ump.full() && peso != ZERO)
|
||||
{
|
||||
//preparo una cache sulla tabella delle unità di misura
|
||||
const TRectype& unita = cache().get("%UMS", umart);
|
||||
const TRectype& unita = cache().get("%UMS", ump);
|
||||
//leggo e controllo se esiste l'unità di misura di riferimento
|
||||
const TString4 umrif = unita.get("S7");
|
||||
if(umrif.empty())
|
||||
|
||||
if (umrif == _umkg)
|
||||
{
|
||||
if(umrif == umkg)
|
||||
//leggo e controllo il fattore di conversione
|
||||
const real fatconv = unita.get_real("R10");
|
||||
if (fatconv != ZERO)
|
||||
{
|
||||
//leggo e controllo il fattore di conversione
|
||||
const real fatconv = unita.get_real("R10");
|
||||
if (fatconv != ZERO)
|
||||
{
|
||||
//se tutti i controlli sono andati a buon fine, converto la quantità e la restituisco
|
||||
const real qtaconv = qta * fatconv * peso;
|
||||
var = qtaconv;
|
||||
}
|
||||
//se tutti i controlli sono andati a buon fine, converto la quantità e la restituisco
|
||||
const real qtaconv = qta * fatconv * peso;
|
||||
var = qtaconv;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//preparo una cache sulla tabella delle unità di misura
|
||||
const TRectype& unita = cache().get("%UMS", art.first_um());
|
||||
//leggo e controllo se esiste l'unità di misura di riferimento
|
||||
const TString4 umrif = unita.get("S7");
|
||||
|
||||
if (umrif == _umkg)
|
||||
{
|
||||
//leggo e controllo il fattore di conversione
|
||||
const real fatconv = unita.get_real("R10");
|
||||
if (fatconv != ZERO)
|
||||
{
|
||||
//se tutti i controlli sono andati a buon fine, converto la quantità e la restituisco
|
||||
const real qtaconv = qta * fatconv * peso;
|
||||
var = qtaconv;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -108,7 +133,7 @@ protected:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
|
||||
TISAM_recordset* prepara_recordset() const;
|
||||
void prepara_recordset(TStampa_a_kg_rep & rep) const;
|
||||
|
||||
public:
|
||||
virtual void main_loop();
|
||||
@ -129,7 +154,7 @@ bool TStampa_a_kg_app::destroy()
|
||||
}
|
||||
|
||||
//PREPARA_RECORDSET: metodo che estre tutte le righe documento in base ai criteri selezionati
|
||||
TISAM_recordset* TStampa_a_kg_app::prepara_recordset() const
|
||||
void TStampa_a_kg_app::prepara_recordset(TStampa_a_kg_rep & rep) const
|
||||
{
|
||||
const TString4 codnum = ini_get_string(CONFIG_DITTA, "lv", "NUM_GEN");
|
||||
|
||||
@ -139,8 +164,8 @@ TISAM_recordset* TStampa_a_kg_app::prepara_recordset() const
|
||||
const TDate dadata = _msk->get_date(F_DADATA);
|
||||
const TDate adata = _msk->get_date(F_ADATA);
|
||||
|
||||
const int daanno = dadata.year();
|
||||
const int aanno = adata.year();
|
||||
const long daanno = dadata.year();
|
||||
const long aanno = adata.year();
|
||||
|
||||
TString query;
|
||||
query << "USE RDOC\n";
|
||||
@ -158,14 +183,20 @@ TISAM_recordset* TStampa_a_kg_app::prepara_recordset() const
|
||||
}
|
||||
query << "JOIN DOC INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC\n"
|
||||
<< "JOIN ANAMAG INTO CODART==CODART\n"
|
||||
<< "FROM CODNUM=#CODNUM\n"
|
||||
<< "TO CODNUM=#CODNUM\n";
|
||||
<< "FROM CODNUM=#CODNUM ANNO=#DAANNO\n"
|
||||
<< "TO CODNUM=#CODNUM ANNO=#AANNO\n";
|
||||
|
||||
TISAM_recordset* righedoc = new TISAM_recordset(query);
|
||||
righedoc->set_var("#DADATA", dadata);
|
||||
rep.set_recordset(query);
|
||||
|
||||
TRecordset * righedoc = rep.recordset();
|
||||
|
||||
righedoc->set_var("#DADATA", dadata);
|
||||
righedoc->set_var("#ADATA", adata);
|
||||
righedoc->set_var("#DAANNO", daanno);
|
||||
righedoc->set_var("#AANNO", aanno);
|
||||
righedoc->set_var("#CODNUM", codnum);
|
||||
switch(raggruppa)
|
||||
|
||||
switch(raggruppa)
|
||||
{
|
||||
case 1:
|
||||
righedoc->set_var("#DACODCF", _msk->get_long(F_DACODCF));
|
||||
@ -179,17 +210,15 @@ TISAM_recordset* TStampa_a_kg_app::prepara_recordset() const
|
||||
righedoc->set_var("#DAAUT", _msk->get_long(F_DACODAUT));
|
||||
righedoc->set_var("#AAUT", _msk->get_long(F_ACODAUT));
|
||||
break;
|
||||
default: break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return righedoc;
|
||||
}
|
||||
|
||||
void TStampa_a_kg_app::main_loop()
|
||||
{
|
||||
while (_msk->run() == K_ENTER)
|
||||
{
|
||||
TISAM_recordset* righedoc = prepara_recordset();
|
||||
int cazzone = righedoc->items();
|
||||
TStampa_a_kg_rep rep;
|
||||
const int raggruppa = _msk->get_int(F_RAGX);
|
||||
bool ok;
|
||||
@ -208,13 +237,11 @@ void TStampa_a_kg_app::main_loop()
|
||||
ok = rep.load("lv1200e");
|
||||
break;
|
||||
}
|
||||
if (ok)
|
||||
rep.TReport::set_recordset(righedoc);
|
||||
prepara_recordset(rep);
|
||||
TReport_book book;
|
||||
ok = book.add(rep);
|
||||
if (ok)
|
||||
book.print_or_preview();
|
||||
delete righedoc;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,9 @@
|
||||
<section type="Head" level="1" />
|
||||
<section type="Head" level="2">
|
||||
<groupby>CODART</groupby>
|
||||
<prescript description="H2 PRESCRIPT">0 #F2.101 !
|
||||
0 #F2.102 !
|
||||
0 #F2.103 !</prescript>
|
||||
</section>
|
||||
<section type="Body" />
|
||||
<section type="Body" level="1">
|
||||
@ -29,15 +32,15 @@
|
||||
<field x="21" type="Stringa" hidden="1" width="50" pattern="1">
|
||||
<source>ANAMAG.DESCR</source>
|
||||
</field>
|
||||
<field x="72" type="Numero" hidden="1" align="right" width="15" id="101" pattern="1">
|
||||
<field x="71" type="Numero" hidden="1" align="right" width="8" id="101" pattern="1">
|
||||
<source>RDOC.QTA</source>
|
||||
<postscript description="B1.101 POSTSCRIPT">MESSAGE ADD,F2.101</postscript>
|
||||
</field>
|
||||
<field x="88" type="Valuta" hidden="1" align="right" width="10" id="102" pattern="1" text="#########,@@">
|
||||
<source>RDOC.IMPORTO</source>
|
||||
<field x="80" type="Valuta" hidden="1" align="right" width="10" id="102" pattern="1" text="#########,@@">
|
||||
<source>RDOC.IMPNS</source>
|
||||
<postscript description="B1.102 POSTSCRIPT">MESSAGE ADD,F2.102</postscript>
|
||||
</field>
|
||||
<field x="99" type="Numero" hidden="1" align="right" width="15" id="103" pattern="1">
|
||||
<field x="90" type="Numero" hidden="1" align="right" width="10" id="103" pattern="1" text="#####,@@@">
|
||||
<source>#PESO</source>
|
||||
<postscript description="B1.103 POSTSCRIPT">MESSAGE ADD,F2.103</postscript>
|
||||
</field>
|
||||
@ -45,9 +48,15 @@
|
||||
<section type="Foot" />
|
||||
<section type="Foot" level="1" />
|
||||
<section type="Foot" level="2">
|
||||
<field x="81" type="Numero" align="right" width="15" id="101" pattern="1" />
|
||||
<field x="97" type="Valuta" align="right" width="10" id="102" pattern="1" text="#########,@@" />
|
||||
<field x="108" type="Numero" align="right" width="15" id="103" pattern="1" />
|
||||
<field x="1" type="Stringa" width="20" pattern="1">
|
||||
<source>RDOC.CODART</source>
|
||||
</field>
|
||||
<field x="21.5" type="Stringa" width="50" pattern="1">
|
||||
<source>ANAMAG.DESCR</source>
|
||||
</field>
|
||||
<field x="71.5" type="Numero" align="right" width="15" id="101" pattern="1" />
|
||||
<field x="87" type="Valuta" align="right" width="10" id="102" pattern="1" text="#########,@@" />
|
||||
<field x="97.5" type="Numero" align="right" width="15" id="103" pattern="1" />
|
||||
</section>
|
||||
<sql>USE RDOC
|
||||
</sql>
|
||||
|
@ -188,12 +188,25 @@ TDate TGenera_planning_app::cerca_ultima_consegna(long codcf, long codcont, cons
|
||||
{
|
||||
//instanzia un recordset di LVRCONSPLAN prendendo tutte le consegne fatte per un cliente su un certo...
|
||||
//...itinerario prima di una certa data
|
||||
TISAM_recordset rplan("USE LVRCONSPLAN KEY 3\nFROM CODCF=#CODCF CODCONT=#CODCONT\nTO CODCF=#CODCF CODCONT=#CODCONT DTCONS=#DATA");
|
||||
/* TISAM_recordset rplan("USE LVRCONSPLAN KEY 3\nFROM CODCF=#CODCF CODCONT=#CODCONT\nTO CODCF=#CODCF CODCONT=#CODCONT DTCONS=#DATA");
|
||||
rplan.set_var("#CODCF",codcf);
|
||||
rplan.set_var("#CODCONT",codcont);
|
||||
rplan.set_var("#DATA",data);
|
||||
if (rplan.move_last())
|
||||
return rplan.get(LVRCONSPLAN_DTCONS).as_date(); // data dell'ultima consegna fatta
|
||||
*/
|
||||
TLocalisamfile rplan(LF_LVRCONSPLAN);
|
||||
|
||||
rplan.put(LVRCONSPLAN_CODCF, codcf);
|
||||
rplan.put(LVRCONSPLAN_CODCONT, codcont);
|
||||
rplan.put(LVRCONSPLAN_DTCONS, data);
|
||||
rplan.put(LVRCONSPLAN_CODITI, 999);
|
||||
int err;
|
||||
if ((err = rplan.read(_isgteq)) == NOERR)
|
||||
err = rplan.prev();
|
||||
|
||||
if (err == NOERR)
|
||||
return rplan.get_date(LVRCONSPLAN_DTCONS); // data dell'ultima consegna fatta
|
||||
return data;
|
||||
}
|
||||
|
||||
|
@ -1627,7 +1627,7 @@ bool TLV_report::get_usr_val(const TString& name, TVariant& var) const
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return TReport::get_usr_val(name, var);
|
||||
return TDocument_report::get_usr_val(name, var);
|
||||
}
|
||||
|
||||
TCursor* TLV_recordset::cursor() const
|
||||
@ -1653,5 +1653,6 @@ bool TLV_report::set_recordset(const TString& sql)
|
||||
TReport::set_recordset(rex);
|
||||
return rex != NULL;
|
||||
}
|
||||
return TReport::set_recordset(sql);
|
||||
}
|
||||
return TDocument_report::set_recordset(sql);
|
||||
}
|
||||
|
||||
|
12
lv/lvlib.h
12
lv/lvlib.h
@ -21,6 +21,10 @@
|
||||
#include "../ve/velib.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VELIB07_H
|
||||
#include "../ve/velib07.h"
|
||||
#endif
|
||||
|
||||
#define RDOC_QTAREALE "CIN01"
|
||||
#define RDOC_TOTREALE "CIN02"
|
||||
#define RDOC_PROVV1REALE "CIN03"
|
||||
@ -373,16 +377,16 @@ public:
|
||||
TGiac_per_cli(); //costruttore
|
||||
};
|
||||
|
||||
class TLV_recordset : public TISAM_recordset
|
||||
class TLV_recordset : public TDocument_recordset
|
||||
{
|
||||
public:
|
||||
virtual TCursor* cursor() const;
|
||||
|
||||
TLV_recordset(const char* use) : TISAM_recordset(use) {}
|
||||
TLV_recordset(const char* use) : TDocument_recordset(use) {}
|
||||
virtual ~TLV_recordset() {}
|
||||
};
|
||||
|
||||
class TLV_report : public TReport
|
||||
class TLV_report : public TDocument_report
|
||||
{
|
||||
protected:
|
||||
virtual bool get_usr_val(const TString& name, TVariant& var) const;
|
||||
@ -390,6 +394,8 @@ protected:
|
||||
public:
|
||||
virtual bool set_recordset(TRecordset* rs) { return TReport::set_recordset(rs); }
|
||||
virtual bool set_recordset(const TString& sql);
|
||||
TLV_report() {}
|
||||
virtual ~TLV_report() {}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user