Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : stampa a kg (inizio) git-svn-id: svn://10.65.10.50/trunk@19978 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
65126e81e2
commit
28fb3889c5
189
lv/lv1200.cpp
189
lv/lv1200.cpp
@ -4,6 +4,7 @@
|
||||
#include <relation.h>
|
||||
#include <reprint.h>
|
||||
|
||||
#include "lvlib.h"
|
||||
#include "lv1200a.h"
|
||||
#include "../ve/velib.h"
|
||||
|
||||
@ -26,64 +27,73 @@ bool TStampa_a_kg_msk::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
///////////////////////////////////////////////////////////
|
||||
// TStampa_a_kg_set
|
||||
// TStampa_a_kg_rep
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TStampa_a_kg_set : public TISAM_recordset
|
||||
class TStampa_a_kg_rep : public TReport
|
||||
{
|
||||
protected:
|
||||
static bool status_filter(const TRelation* rel);
|
||||
virtual void set_custom_filter(TCursor& cursor) const;
|
||||
|
||||
public:
|
||||
TStampa_a_kg_set(const TMask& mask);
|
||||
virtual bool get_usr_val(const TString& name, TVariant& var) const;
|
||||
};
|
||||
|
||||
// Accetta solo i documenti stampabili in definitivo
|
||||
bool TStampa_a_kg_set::status_filter(const TRelation* rel)
|
||||
bool TStampa_a_kg_rep::get_usr_val(const TString& name, TVariant& var) const
|
||||
{
|
||||
const TRectype& doc = rel->curr();
|
||||
const char stato_attuale = doc.get_char(DOC_STATO);
|
||||
if (stato_attuale <= ' ')
|
||||
return true;
|
||||
var = 0;
|
||||
if (name == "#PESO")
|
||||
{
|
||||
const TRecordset& recset = *recordset();
|
||||
const TString4 umkg = ini_get_string(CONFIG_DITTA, "lv", "UmKg");
|
||||
const TString4 umri = recset.get(RDOC_UMQTA).as_string();
|
||||
//se la riga è già espressa in kg non devo fare niente
|
||||
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
|
||||
const TString4 umart = artlav.um()[0].get(UMART_UM);
|
||||
const real qta = artlav.convert_to_um(recset.get(RDOC_QTA).as_real(), umart, umri, false);
|
||||
|
||||
const TTipo_documento& tipo = cached_tipodoc(doc.get(DOC_TIPODOC));
|
||||
if (stato_attuale == tipo.stato_finale_stampa())
|
||||
return false;
|
||||
|
||||
const TString& stati_stampa = tipo.stati_iniziali_stampa();
|
||||
return stati_stampa.blank() || stati_stampa.find(stato_attuale) >= 0;
|
||||
//se l'articolo non è espresso in kg, allora:
|
||||
if(umart != umkg)
|
||||
{
|
||||
//preparo una cache sulla tabella delle unità di misura
|
||||
const TRectype& unita = cache().get("%UMS", umart);
|
||||
//leggo e controllo se esiste l'unità di misura di riferimento
|
||||
const TString4 umrif = unita.get("S7");
|
||||
if(umrif.empty())
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return TReport::get_usr_val(name, var);
|
||||
}
|
||||
|
||||
void TStampa_a_kg_set::set_custom_filter(TCursor& cursor) const
|
||||
{
|
||||
cursor.set_filterfunction(status_filter);
|
||||
}
|
||||
|
||||
TStampa_a_kg_set::TStampa_a_kg_set(const TMask& mask) : TISAM_recordset("USE DOC")
|
||||
{
|
||||
const TDate data_from = mask.get_date(F_DATA_FROM);
|
||||
TString query = "USE DOC \n"
|
||||
"SELECT (BETWEEN(DATADOC,#DATA_FROM,#DATA_TO))"
|
||||
"&&(BETWEEN(CODCF,#CODCF_FROM,#CODCF_TO))"
|
||||
"&&(BETWEEN(G1:CODITI,#CODITI_FROM,#CODITI_TO))\n"
|
||||
"JOIN CLIFO INTO TIPOCF=='C' CODCF==CODCF\n"
|
||||
"JOIN %STD INTO CODTAB==STATO\n"
|
||||
;
|
||||
query << "FROM PROVV=\"D\" ANNO=" << data_from.year() << " CODNUM=\"" << mask.get(F_CODNUM) << "\"\n"
|
||||
<< "TO PROVV=\"D\" ANNO=" << data_from.year() << " CODNUM=\"" << mask.get(F_CODNUM) << "\"\n";
|
||||
set(query);
|
||||
//inserire parametri filtri
|
||||
set_var("#DATA_FROM", data_from);
|
||||
set_var("#DATA_TO", mask.get_date(F_DATA_TO));
|
||||
set_var("#CODCF_FROM", TVariant(mask.get(F_CODCF_FROM)));
|
||||
set_var("#CODCF_TO", TVariant(mask.get(F_CODCF_TO)));
|
||||
set_var("#CODITI_FROM", TVariant(mask.get(F_CODITI_FROM)));
|
||||
set_var("#CODITI_TO", TVariant(mask.get(F_CODITI_TO)));
|
||||
}
|
||||
*/
|
||||
///////////////////////////////////////////////////////////
|
||||
// TStampa_a_kg_app
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -96,10 +106,9 @@ protected:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
|
||||
TISAM_recordset prepara_recordset() const;
|
||||
TISAM_recordset* prepara_recordset() const;
|
||||
|
||||
public:
|
||||
bool transfer();
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
@ -118,7 +127,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
|
||||
TISAM_recordset* TStampa_a_kg_app::prepara_recordset() const
|
||||
{
|
||||
const TString4 codnum = ini_get_string(CONFIG_DITTA, "lv", "NUM_GEN");
|
||||
|
||||
@ -134,56 +143,82 @@ TISAM_recordset TStampa_a_kg_app::prepara_recordset() const
|
||||
TString query;
|
||||
query << "USE RDOC\n";
|
||||
if(datadog)
|
||||
query << "SELECT (BETWEEN(DATADOC,#DADATA,#ADATA))";
|
||||
query << "SELECT (BETWEEN(33.DATADOC,#DADATA,#ADATA))";
|
||||
else
|
||||
query << "SELECT (BETWEEN(33.G1:DATAGEN,#DADATA,#ADATA))";
|
||||
query << "&&(33.TIPOCF=\"C\")";
|
||||
query << "&&(TIPORIGA==\"21\")&&(33.TIPOCF=\"C\")";
|
||||
switch(raggruppa)
|
||||
{
|
||||
case 1: query << "&&(BETWEEN(33.CODCF,#DACODCF,#ACODCF))\nBY 33.CODCF CODART\n"; break;
|
||||
case 2: query << "&&(BETWEEN(33.G1:CODITI,#DAITI,#AITI)\nBY 33.G1:CODITI CODART\n"; break;
|
||||
case 3: query << "&&(BETWEEN(33.CODAG,#DAAUT,#AAUT)\nBY 33.CODAG CODART\n"; break;
|
||||
default: query << "\nBY CODART\n"; break;
|
||||
case 1: query << "&&(BETWEEN(33.CODCF,#DACODCF,#ACODCF))\nBY 33.CODCF CODART\n"; break;
|
||||
case 2: query << "&&(BETWEEN(33.G1:CODITI,#DAITI,#AITI)\nBY 33.G1:CODITI CODART\n"; break;
|
||||
case 3: query << "&&(BETWEEN(33.CODAG,#DAAUT,#AAUT)\nBY 33.CODAG CODART\n"; break;
|
||||
default: query << "\nBY CODART\n"; break;
|
||||
}
|
||||
query << "JOIN DOC INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC\n"
|
||||
<< "FROM CODNUM=" << codnum << " ANNO=" << daanno << " PROVV=D\n"
|
||||
<< "TO CODNUM=" << codnum << " ANNO=" << aanno << " PROVV=D\n";
|
||||
<< "JOIN ANAMAG INTO CODART==CODART\n"
|
||||
//<< "FROM CODNUM=" << codnum << " ANNO=" << daanno << " PROVV=\"D\"\n"
|
||||
//<< "FROM CODNUM=#CODNUM ANNO=#DAANNO PROVV=\"D\"\n"
|
||||
//<< "TO CODNUM=#CODNUM ANNO=#AANNO PROVV=\"D\"\n";
|
||||
<< "FROM CODNUM=#CODNUM\n"
|
||||
<< "TO CODNUM=#CODNUM\n";
|
||||
|
||||
TISAM_recordset righedoc(query);
|
||||
righedoc.set_var("#DADATA", dadata);
|
||||
righedoc.set_var("#ADATA", adata);
|
||||
TISAM_recordset* righedoc = new TISAM_recordset(query);
|
||||
righedoc->set_var("#DADATA", dadata);
|
||||
righedoc->set_var("#ADATA", adata);
|
||||
righedoc->set_var("#CODNUM", codnum);
|
||||
//righedoc.set_var("#DAANNO", daanno);
|
||||
//righedoc.set_var("#AANNO", aanno);
|
||||
switch(raggruppa)
|
||||
{
|
||||
case 1:
|
||||
righedoc.set_var("#DACODCF", _msk->get_long(F_DACODCF));
|
||||
righedoc.set_var("#ACODCF", _msk->get_long(F_ACODCF));
|
||||
righedoc->set_var("#DACODCF", _msk->get_long(F_DACODCF));
|
||||
righedoc->set_var("#ACODCF", _msk->get_long(F_ACODCF));
|
||||
break;
|
||||
case 2:
|
||||
righedoc.set_var("#DAITI", _msk->get_long(F_DACODITI));
|
||||
righedoc.set_var("#AITI", _msk->get_long(F_ACODITI));
|
||||
righedoc->set_var("#DAITI", _msk->get_long(F_DACODITI));
|
||||
righedoc->set_var("#AITI", _msk->get_long(F_ACODITI));
|
||||
break;
|
||||
case 3:
|
||||
righedoc.set_var("#DAAUT", _msk->get_long(F_DACODAUT));
|
||||
righedoc.set_var("#AAUT", _msk->get_long(F_ACODAUT));
|
||||
righedoc->set_var("#DAAUT", _msk->get_long(F_DACODAUT));
|
||||
righedoc->set_var("#AAUT", _msk->get_long(F_ACODAUT));
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return righedoc;
|
||||
}
|
||||
|
||||
//TRANSFER: metodo principale dell'elaborazione, che non deve fare niente
|
||||
//perchè viene tutto gestito nella maschera
|
||||
bool TStampa_a_kg_app::transfer()
|
||||
{
|
||||
TISAM_recordset righedoc = prepara_recordset();
|
||||
return true;
|
||||
}
|
||||
|
||||
void TStampa_a_kg_app::main_loop()
|
||||
{
|
||||
while (_msk->run() == K_ENTER)
|
||||
transfer();
|
||||
}
|
||||
{
|
||||
TISAM_recordset* righedoc = prepara_recordset();
|
||||
TStampa_a_kg_rep rep;
|
||||
const int raggruppa = _msk->get_int(F_RAGX);
|
||||
bool ok;
|
||||
switch (raggruppa)
|
||||
{
|
||||
case '1':
|
||||
ok = rep.load("lv1200b");
|
||||
break;
|
||||
case '2':
|
||||
ok = rep.load("lv1200c");
|
||||
break;
|
||||
case '3':
|
||||
ok = rep.load("lv1200d");
|
||||
break;
|
||||
default:
|
||||
ok = rep.load("lv1200e");
|
||||
break;
|
||||
}
|
||||
if (ok)
|
||||
rep.set_recordset(righedoc);
|
||||
TReport_book book;
|
||||
ok = book.add(rep);
|
||||
if (ok)
|
||||
book.print_or_preview();
|
||||
delete righedoc;
|
||||
}
|
||||
}
|
||||
|
||||
int lv1200(int argc, char *argv[])
|
||||
{
|
||||
|
54
lv/lv1200e.rep
Executable file
54
lv/lv1200e.rep
Executable file
@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<report name="lv1200e" lpi="6">
|
||||
<description>Stampa a kg per articolo</description>
|
||||
<font face="Courier New" size="10" />
|
||||
<section type="Head">
|
||||
<field x="16" type="Testo" width="20" pattern="1" text="Codice">
|
||||
<source>RDOC.CODART</source>
|
||||
</field>
|
||||
<field x="37" type="Testo" width="50" pattern="1" text="Descrizione articolo">
|
||||
<source>ANAMAG.DESCR</source>
|
||||
</field>
|
||||
<field x="88" type="Testo" align="right" width="15" id="101" pattern="1" text="Quantita">
|
||||
<source>RDOC.QTA</source>
|
||||
</field>
|
||||
<field x="104" type="Testo" align="right" width="10" id="102" pattern="1" text="Importo">
|
||||
<source>RDOC.IMPORTO</source>
|
||||
</field>
|
||||
<field x="115" type="Testo" hidden="1" align="right" width="15" id="103" pattern="1" text="Peso" />
|
||||
</section>
|
||||
<section type="Head" level="1" />
|
||||
<section type="Head" level="2">
|
||||
<groupby>CODART</groupby>
|
||||
</section>
|
||||
<section type="Body" />
|
||||
<section type="Body" level="1">
|
||||
<field type="Stringa" hidden="1" width="20" pattern="1">
|
||||
<source>RDOC.CODART</source>
|
||||
</field>
|
||||
<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">
|
||||
<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>
|
||||
<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">
|
||||
<source>#PESO</source>
|
||||
<postscript description="B1.103 POSTSCRIPT">MESSAGE ADD,F2.103</postscript>
|
||||
</field>
|
||||
</section>
|
||||
<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" />
|
||||
</section>
|
||||
<sql>USE RDOC
|
||||
</sql>
|
||||
</report>
|
Loading…
x
Reference in New Issue
Block a user