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:
alex 2010-01-25 23:49:34 +00:00
parent f588484f0c
commit c2dee90b16
5 changed files with 116 additions and 60 deletions

View File

@ -32,50 +32,57 @@ bool TStampa_a_kg_msk::on_field_event(TOperable_field& o, TField_event e, long j
// TStampa_a_kg_rep // TStampa_a_kg_rep
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TStampa_a_kg_rep : public TDocument_report class TStampa_a_kg_rep : public TLV_report
{ {
TString4 _umkg;
protected: protected:
virtual bool get_usr_val(const TString& name, TVariant& var) const; 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 bool TStampa_a_kg_rep::get_usr_val(const TString& name, TVariant& var) const
{ {
var = 0; var = 0;
if (name == "#PESO") if (name == "#PESO")
{ {
const TRecordset& recset = *recordset(); const TLV_recordset& recset = (TLV_recordset &) *recordset();
const TString4 umkg = ini_get_string(CONFIG_DITTA, "lv", "UmKg");
const TString4 umri = recset.get(RDOC_UMQTA).as_string(); const TString4 umri = recset.get(RDOC_UMQTA).as_string();
//se la riga è già espressa in kg non devo fare niente //se la riga è già espressa in kg non devo fare niente
if(umri == umkg) if (umri == _umkg)
var = recset.get(RDOC_QTA); var = recset.get(RDOC_QTA);
// altrimenti // altrimenti
else else
{ {
// istanzio un TArticolo_lavanderie. serve?? const TString & codart = recset.get(RDOC_CODARTMAG).as_string();
const TString80 codart = recset.get(RDOC_CODART).as_string(); TArticolo & art = cached_article(codart);
TArticolo_lavanderie artlav(codart); const real qta = art.convert_to_um(recset.get(RDOC_QTA).as_real(), NULL, umri, false);
if (art.is_first_um(_umkg))
var = qta;
else
{
//leggo e controllo l'unità di misura del peso //leggo e controllo l'unità di misura del peso
//leggo e controllo il peso dell'articolo //leggo e controllo il peso dell'articolo
const TString4 ump = artlav.get(ANAMAG_UMP); const TString4 ump = art.get(ANAMAG_UMP);
const real peso = artlav.get_real(ANAMAG_PESO); const real peso = art.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);
//se l'articolo non è espresso in kg, allora: if (ump.full() && peso != ZERO)
if(umart != umkg)
{ {
//preparo una cache sulla tabella delle unità di misura //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 //leggo e controllo se esiste l'unità di misura di riferimento
const TString4 umrif = unita.get("S7"); const TString4 umrif = unita.get("S7");
if(umrif.empty())
{ if (umrif == _umkg)
if(umrif == umkg)
{ {
//leggo e controllo il fattore di conversione //leggo e controllo il fattore di conversione
const real fatconv = unita.get_real("R10"); const real fatconv = unita.get_real("R10");
@ -87,6 +94,24 @@ bool TStampa_a_kg_rep::get_usr_val(const TString& name, TVariant& var) const
} }
} }
} }
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 create();
virtual bool destroy(); virtual bool destroy();
TISAM_recordset* prepara_recordset() const; void prepara_recordset(TStampa_a_kg_rep & rep) const;
public: public:
virtual void main_loop(); 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 //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"); 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 dadata = _msk->get_date(F_DADATA);
const TDate adata = _msk->get_date(F_ADATA); const TDate adata = _msk->get_date(F_ADATA);
const int daanno = dadata.year(); const long daanno = dadata.year();
const int aanno = adata.year(); const long aanno = adata.year();
TString query; TString query;
query << "USE RDOC\n"; query << "USE RDOC\n";
@ -158,13 +183,19 @@ TISAM_recordset* TStampa_a_kg_app::prepara_recordset() const
} }
query << "JOIN DOC INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC\n" query << "JOIN DOC INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC\n"
<< "JOIN ANAMAG INTO CODART==CODART\n" << "JOIN ANAMAG INTO CODART==CODART\n"
<< "FROM CODNUM=#CODNUM\n" << "FROM CODNUM=#CODNUM ANNO=#DAANNO\n"
<< "TO CODNUM=#CODNUM\n"; << "TO CODNUM=#CODNUM ANNO=#AANNO\n";
rep.set_recordset(query);
TRecordset * righedoc = rep.recordset();
TISAM_recordset* righedoc = new TISAM_recordset(query);
righedoc->set_var("#DADATA", dadata); righedoc->set_var("#DADATA", dadata);
righedoc->set_var("#ADATA", adata); righedoc->set_var("#ADATA", adata);
righedoc->set_var("#DAANNO", daanno);
righedoc->set_var("#AANNO", aanno);
righedoc->set_var("#CODNUM", codnum); righedoc->set_var("#CODNUM", codnum);
switch(raggruppa) switch(raggruppa)
{ {
case 1: case 1:
@ -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("#DAAUT", _msk->get_long(F_DACODAUT));
righedoc->set_var("#AAUT", _msk->get_long(F_ACODAUT)); righedoc->set_var("#AAUT", _msk->get_long(F_ACODAUT));
break; break;
default: break; default:
break;
} }
return righedoc;
} }
void TStampa_a_kg_app::main_loop() void TStampa_a_kg_app::main_loop()
{ {
while (_msk->run() == K_ENTER) while (_msk->run() == K_ENTER)
{ {
TISAM_recordset* righedoc = prepara_recordset();
int cazzone = righedoc->items();
TStampa_a_kg_rep rep; TStampa_a_kg_rep rep;
const int raggruppa = _msk->get_int(F_RAGX); const int raggruppa = _msk->get_int(F_RAGX);
bool ok; bool ok;
@ -208,13 +237,11 @@ void TStampa_a_kg_app::main_loop()
ok = rep.load("lv1200e"); ok = rep.load("lv1200e");
break; break;
} }
if (ok) prepara_recordset(rep);
rep.TReport::set_recordset(righedoc);
TReport_book book; TReport_book book;
ok = book.add(rep); ok = book.add(rep);
if (ok) if (ok)
book.print_or_preview(); book.print_or_preview();
delete righedoc;
} }
} }

View File

@ -20,6 +20,9 @@
<section type="Head" level="1" /> <section type="Head" level="1" />
<section type="Head" level="2"> <section type="Head" level="2">
<groupby>CODART</groupby> <groupby>CODART</groupby>
<prescript description="H2 PRESCRIPT">0 #F2.101 !
0 #F2.102 !
0 #F2.103 !</prescript>
</section> </section>
<section type="Body" /> <section type="Body" />
<section type="Body" level="1"> <section type="Body" level="1">
@ -29,15 +32,15 @@
<field x="21" type="Stringa" hidden="1" width="50" pattern="1"> <field x="21" type="Stringa" hidden="1" width="50" pattern="1">
<source>ANAMAG.DESCR</source> <source>ANAMAG.DESCR</source>
</field> </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> <source>RDOC.QTA</source>
<postscript description="B1.101 POSTSCRIPT">MESSAGE ADD,F2.101</postscript> <postscript description="B1.101 POSTSCRIPT">MESSAGE ADD,F2.101</postscript>
</field> </field>
<field x="88" type="Valuta" hidden="1" align="right" width="10" id="102" pattern="1" text="#########,@@"> <field x="80" type="Valuta" hidden="1" align="right" width="10" id="102" pattern="1" text="#########,@@">
<source>RDOC.IMPORTO</source> <source>RDOC.IMPNS</source>
<postscript description="B1.102 POSTSCRIPT">MESSAGE ADD,F2.102</postscript> <postscript description="B1.102 POSTSCRIPT">MESSAGE ADD,F2.102</postscript>
</field> </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> <source>#PESO</source>
<postscript description="B1.103 POSTSCRIPT">MESSAGE ADD,F2.103</postscript> <postscript description="B1.103 POSTSCRIPT">MESSAGE ADD,F2.103</postscript>
</field> </field>
@ -45,9 +48,15 @@
<section type="Foot" /> <section type="Foot" />
<section type="Foot" level="1" /> <section type="Foot" level="1" />
<section type="Foot" level="2"> <section type="Foot" level="2">
<field x="81" type="Numero" align="right" width="15" id="101" pattern="1" /> <field x="1" type="Stringa" width="20" pattern="1">
<field x="97" type="Valuta" align="right" width="10" id="102" pattern="1" text="#########,@@" /> <source>RDOC.CODART</source>
<field x="108" type="Numero" align="right" width="15" id="103" pattern="1" /> </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> </section>
<sql>USE RDOC <sql>USE RDOC
</sql> </sql>

View File

@ -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... //instanzia un recordset di LVRCONSPLAN prendendo tutte le consegne fatte per un cliente su un certo...
//...itinerario prima di una certa data //...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("#CODCF",codcf);
rplan.set_var("#CODCONT",codcont); rplan.set_var("#CODCONT",codcont);
rplan.set_var("#DATA",data); rplan.set_var("#DATA",data);
if (rplan.move_last()) if (rplan.move_last())
return rplan.get(LVRCONSPLAN_DTCONS).as_date(); // data dell'ultima consegna fatta 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; return data;
} }

View File

@ -1627,7 +1627,7 @@ bool TLV_report::get_usr_val(const TString& name, TVariant& var) const
return true; return true;
} }
} }
return TReport::get_usr_val(name, var); return TDocument_report::get_usr_val(name, var);
} }
TCursor* TLV_recordset::cursor() const TCursor* TLV_recordset::cursor() const
@ -1653,5 +1653,6 @@ bool TLV_report::set_recordset(const TString& sql)
TReport::set_recordset(rex); TReport::set_recordset(rex);
return rex != NULL; return rex != NULL;
} }
return TReport::set_recordset(sql); return TDocument_report::set_recordset(sql);
} }

View File

@ -21,6 +21,10 @@
#include "../ve/velib.h" #include "../ve/velib.h"
#endif #endif
#ifndef __VELIB07_H
#include "../ve/velib07.h"
#endif
#define RDOC_QTAREALE "CIN01" #define RDOC_QTAREALE "CIN01"
#define RDOC_TOTREALE "CIN02" #define RDOC_TOTREALE "CIN02"
#define RDOC_PROVV1REALE "CIN03" #define RDOC_PROVV1REALE "CIN03"
@ -373,16 +377,16 @@ public:
TGiac_per_cli(); //costruttore TGiac_per_cli(); //costruttore
}; };
class TLV_recordset : public TISAM_recordset class TLV_recordset : public TDocument_recordset
{ {
public: public:
virtual TCursor* cursor() const; virtual TCursor* cursor() const;
TLV_recordset(const char* use) : TISAM_recordset(use) {} TLV_recordset(const char* use) : TDocument_recordset(use) {}
virtual ~TLV_recordset() {} virtual ~TLV_recordset() {}
}; };
class TLV_report : public TReport class TLV_report : public TDocument_report
{ {
protected: protected:
virtual bool get_usr_val(const TString& name, TVariant& var) const; virtual bool get_usr_val(const TString& name, TVariant& var) const;
@ -390,6 +394,8 @@ protected:
public: public:
virtual bool set_recordset(TRecordset* rs) { return TReport::set_recordset(rs); } virtual bool set_recordset(TRecordset* rs) { return TReport::set_recordset(rs); }
virtual bool set_recordset(const TString& sql); virtual bool set_recordset(const TString& sql);
TLV_report() {}
virtual ~TLV_report() {}
}; };
#endif #endif