Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :Stampa Venduto 12 mesi


git-svn-id: svn://10.65.10.50/trunk@18175 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
lvietri 2009-02-02 14:27:54 +00:00
parent 48628bb904
commit 7fcbd1557d
3 changed files with 85 additions and 84 deletions

View File

@ -8,49 +8,47 @@
//Stampa Venduto Per Cliente nei 12 Mesi //Stampa Venduto Per Cliente nei 12 Mesi
//lvietri //lvietri
class TVendCli_recordset: public TCSV_recordset class TVend_cli_recordset: public TCSV_recordset
{ {
public: public:
TVendCli_recordset(): TCSV_recordset("CSV(\"\t\")") {} TVend_cli_recordset(): TCSV_recordset("CSV(\"\t\")") {}
}; };
struct TStruttura: public TObject struct TStruttura_venduto: public TObject
{ {
long _prezzo;
long _cliente; long _cliente;
TString _articolo; const TString _articolo;
TString _descr; const TString _descr;
TDate _dataDoc; TDate _dataDoc;
int _numeroDoc; int _numeroDoc;
long _qta; long _qta;
TStruttura():_cliente(0),_articolo(""),_descr(""),_dataDoc(""),_numeroDoc(0),_qta(0) {} TStruttura_venduto():_cliente(0),_articolo(""),_descr(""),_dataDoc(""),_numeroDoc(0),_qta(0) {}
TStruttura(long cliente, TString articolo, TString descr, TStruttura_venduto(long cliente, TString articolo, TString descr,
TDate dataDoc, int numeroDoc, TDate dataDoc, int numeroDoc,long qta):
long qta, long prezzo):_cliente(cliente),_articolo(articolo), _cliente(cliente),_articolo(articolo),
_descr(descr),_dataDoc(dataDoc),_numeroDoc(numeroDoc), _descr(descr),_dataDoc(dataDoc),_numeroDoc(numeroDoc),_qta(qta) {}
_qta(qta),_prezzo(prezzo) {}
}; };
class TVendCli_mask: public TAutomask class TVend_cli_mask: public TAutomask
{ {
protected: protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public: public:
TVendCli_mask():TAutomask("lv2800a"){} TVend_cli_mask():TAutomask("lv2800a"){}
}; };
bool TVendCli_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TVend_cli_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
return true; return true;
} }
class TVendCli_report : public TReport class TVend_cli_report : public TReport
{ {
protected: protected:
virtual bool use_mask() { return false; } virtual bool use_mask() { return false; }
}; };
class TVendCli_app: public TSkeleton_application class TVend_cli_app: public TSkeleton_application
{ {
protected: protected:
virtual void main_loop(); virtual void main_loop();
@ -58,21 +56,20 @@ protected:
TString getQuery() const; TString getQuery() const;
bool ctl(TDate dataInizio, bool ctl(TDate dataInizio,
TDate dataFine, TDate dataFine,
int dataNum,
bool isAnno) const; bool isAnno) const;
bool erroreBox(TString aMsg) const; bool erroreBox(TString aMsg) const;
}; };
TString TVendCli_app::getQuery() const TString TVend_cli_app::getQuery() const
{ {
//Stringhe x composizione query //Stringhe x composizione query
TString query, select, between, orderBy, join, from_, to_; TString query, select, between, orderBy, join, from , to;
//Richiamo parametri della ditta di configurazione //Richiamo parametri della ditta di configurazione
//file Ditta.ini //file Ditta.ini
TConfig lvini(CONFIG_DITTA, "lv"); TConfig lvini(CONFIG_DITTA, "lv");
const TString4 codnum = "B01";//lvini.get("NUM_GEN"); ?? const TString4 codnum = lvini.get("NUM_FAT");
const TString4 tipodoc = "B01";//lvini.get("TIPODOC_GEN");?? const TString4 tipodoc = lvini.get("TIPODOC_FAT");
select << "USE RDOC KEY 1\n"; select << "USE RDOC KEY 1\n";
select << "SELECT ((DOC.TIPODOC='" << tipodoc << "')&&"; select << "SELECT ((DOC.TIPODOC='" << tipodoc << "')&&";
@ -82,10 +79,10 @@ TString TVendCli_app::getQuery() const
between << "&&(BETWEEN(DOC.CODCF,#F_CODCF_FROM,#F_CODCF_TO)))\n"; between << "&&(BETWEEN(DOC.CODCF,#F_CODCF_FROM,#F_CODCF_TO)))\n";
orderBy << "BY DOC.CODCF CODART DOC.DATADOC NDOC\n"; orderBy << "BY DOC.CODCF CODART DOC.DATADOC NDOC\n";
join << "JOIN DOC TO RDOC ALIAS 1000 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC\n"; join << "JOIN DOC TO RDOC ALIAS 1000 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC\n";
from_ << "FROM CODNUM='" << codnum << "'\n"; from << "FROM CODNUM='" << codnum << "'\n";
to_ << "TO CODNUM='" << codnum << "'"; to << "TO CODNUM='" << codnum << "'";
query << select << between << orderBy << join << from_ << to_; query << select << between << orderBy << join << from << to;
return query; return query;
} }
@ -93,24 +90,24 @@ TString TVendCli_app::getQuery() const
class TRiepVendCli: public TArray class TRiepVendCli: public TArray
{ {
public: public:
void add(int count,long cliente, TString articolo, TString descr, void add(long cliente, TString articolo, TString descr,
TDate dataDoc, int numeroDoc, long qta, long prezzo); TDate dataDoc, int numeroDoc, long qta);
TRiepVendCli():TArray(){} TRiepVendCli():TArray(){}
}; };
void TRiepVendCli::add(int count,long cliente, TString articolo, TString descr, void TRiepVendCli::add(long cliente, TString articolo, TString descr,
TDate dataDoc, int numeroDoc, long qta, long prezzo) TDate dataDoc, int numeroDoc, long qta)
{ {
TStruttura* struttura = new TStruttura(cliente,articolo, descr,dataDoc,numeroDoc,qta, prezzo); TStruttura_venduto* struttura = new TStruttura_venduto(cliente,articolo, descr,dataDoc,numeroDoc,qta);
TArray::add(struttura,count); TArray::add(struttura);
} }
/* /*
Metodo di visualizzazione pop errore Metodo di visualizzazione pop errore
ritorna sempre false. ritorna sempre false.
*/ */
bool TVendCli_app::erroreBox(TString aMsg) const bool TVend_cli_app::erroreBox(TString aMsg) const
{ {
error_box (aMsg); error_box (aMsg);
return false; return false;
@ -124,36 +121,17 @@ Effettuo Controlli. Ritorna false-Errore se:
(msk gestisce controllo se data iniziale è maggiore di (msk gestisce controllo se data iniziale è maggiore di
quella finale) quella finale)
*/ */
bool TVendCli_app:: ctl(TDate dataInizio, bool TVend_cli_app:: ctl(TDate dataInizio,
TDate dataFine, TDate dataFine,
int dataNum,
bool isAnno) const bool isAnno) const
{ {
bool vRc = true; if(!isAnno)
if(isAnno)
{ {
if(dataNum==0)
{
return erroreBox(TR("ERRORE:Valorizzare l'anno"));
}
}
else
{
if(dataInizio.empty())
{
return erroreBox(TR("ERRORE:Valorizzare la data iniziale!"));;
}
if(dataFine.empty())
{
return erroreBox(TR("ERRORE:Valorizzare la data finale!"));;
}
int annoInizio = dataInizio.year(); int annoInizio = dataInizio.year();
int annoFine = dataFine.year(); int annoFine = dataFine.year();
if(annoInizio!=annoFine) if(annoInizio!=annoFine)
{ {
return erroreBox(TR("ERRORE:le date non fanno parte dello stesso anno!"));; return erroreBox(TR("le date non fanno parte dello stesso anno!"));;
} }
} }
return true; return true;
@ -161,7 +139,7 @@ bool TVendCli_app:: ctl(TDate dataInizio,
//metodo principale di elaborazione //metodo principale di elaborazione
void TVendCli_app:: elabora(const TMask& mask)const void TVend_cli_app:: elabora(const TMask& mask)const
{ {
/* /*
Se i controlli vanno a buon fine, allora Se i controlli vanno a buon fine, allora
@ -169,7 +147,6 @@ void TVendCli_app:: elabora(const TMask& mask)const
*/ */
if(ctl(mask.get_date(F_DATA_DA), if(ctl(mask.get_date(F_DATA_DA),
mask.get_date(F_DATA_A), mask.get_date(F_DATA_A),
mask.get_int(F_ANNO),
mask.get_bool(F_CHECK_ANNO))) mask.get_bool(F_CHECK_ANNO)))
{ {
TISAM_recordset riep(getQuery()); TISAM_recordset riep(getQuery());
@ -199,35 +176,41 @@ void TVendCli_app:: elabora(const TMask& mask)const
riep.set_var("#F_CODART_FROM",TVariant(mask.get(F_CODART_FROM))); riep.set_var("#F_CODART_FROM",TVariant(mask.get(F_CODART_FROM)));
riep.set_var("#F_CODART_TO",TVariant(mask.get(F_CODART_TO))); riep.set_var("#F_CODART_TO",TVariant(mask.get(F_CODART_TO)));
TRiepVendCli riepilogo; TRiepVendCli riepilogo;
int count = 1;
//inizializzazione variabili da utilizzare nella
//struttura
TDate dataDoc;
TString articolo;
TString descr;
int numeroDoc;
long cliente;
long qta;
for(bool ok = riep.move_first();ok;ok=riep.move_next()) for(bool ok = riep.move_first();ok;ok=riep.move_next())
{ {
TDate dataDoc = riep.get("DOC.DATADOC").as_date(); dataDoc = riep.get("DOC.DATADOC").as_date();
TString articolo = riep.get("CODART").as_string(); articolo = riep.get("CODART").as_string();
TString descr = riep.get("DESCR").as_string(); descr = riep.get("DESCR").as_string();
int numeroDoc = riep.get("NDOC").as_int(); numeroDoc = riep.get("NDOC").as_int();
long cliente = riep.get("DOC.CODCF").as_int(); cliente = riep.get("DOC.CODCF").as_int();
long qta = riep.get("QTA").as_int(); qta = riep.get("QTA").as_int();
long prezzo = riep.get("PREZZO").as_int();
riepilogo.add(count,cliente,articolo,descr,dataDoc,numeroDoc,qta,prezzo); riepilogo.add(cliente,articolo,descr,dataDoc,numeroDoc,qta);
count++;
} }
//gestione report //gestione report
TVendCli_report rep; TVend_cli_report rep;
bool stampa = rep.load("lv2800a"); bool stampa = rep.load("lv2800a");
TVendCli_recordset* riep_set = new TVendCli_recordset(); TVend_cli_recordset* riep_set = new TVend_cli_recordset();
rep.set_recordset(riep_set); rep.set_recordset(riep_set);
//inizializzazione variabili //inizializzazione variabili
TString articoloOld; TString articoloOld;
TString descrOld; TString descrOld;
int clienteOld = 0; int clienteOld = 0;
bool START = true; bool start = true;
int colonna = 0; int colonna = 0;
//inizializzazione array di quantità //inizializzazione array di quantità
@ -239,16 +222,16 @@ void TVendCli_app:: elabora(const TMask& mask)const
//scandisce clienti e tiene buoni solo quelli valorizzati //scandisce clienti e tiene buoni solo quelli valorizzati
FOR_EACH_ARRAY_ITEM(riepilogo,c,obj) FOR_EACH_ARRAY_ITEM(riepilogo,c,obj)
{ {
TStruttura& s = *(TStruttura*) obj; TStruttura_venduto& s = *(TStruttura_venduto*) obj;
//Solo la prima volta setto le variabili altrimenti //Solo la prima volta setto le variabili altrimenti
//entrerebbe sempre nel metodo creazione record //entrerebbe sempre nel metodo creazione record
//in report //in report
if(START) if(start)
{ {
clienteOld=s._cliente; clienteOld=s._cliente;
articoloOld=s._articolo; articoloOld=s._articolo;
START = false; start = false;
} }
//metodo creazione record in report //metodo creazione record in report
@ -283,7 +266,7 @@ void TVendCli_app:: elabora(const TMask& mask)const
} }
//Stampa Ultimo record se ne ha fatto almeno 1 //Stampa Ultimo record se ne ha fatto almeno 1
if(!START) if(!start)
{ {
riep_set->new_rec(); riep_set->new_rec();
colonna = 0; colonna = 0;
@ -326,9 +309,9 @@ void TVendCli_app:: elabora(const TMask& mask)const
} }
} }
void TVendCli_app::main_loop() void TVend_cli_app::main_loop()
{ {
TVendCli_mask mask; TVend_cli_mask mask;
//Settaggio della data finale come //Settaggio della data finale come
//31-12-(anno in corso) //31-12-(anno in corso)
@ -344,7 +327,7 @@ void TVendCli_app::main_loop()
int lv2800(int argc, char* argv[]) int lv2800(int argc, char* argv[])
{ {
TVendCli_app app; TVend_cli_app app;
app.run(argc, argv, TR("Stampa Venduto Per Cliente nei 12 Mesi")); app.run(argc, argv, TR("Stampa Venduto Per Cliente nei 12 Mesi"));
return 0; return 0;
} }

View File

@ -76,6 +76,7 @@ DATE F_DATA_DA
BEGIN BEGIN
PROMPT 2 6 "Da Data " PROMPT 2 6 "Da Data "
FLAGS "A" FLAGS "A"
CHECKTYPE REQUIRED
FIELD #F_DATA_FROM FIELD #F_DATA_FROM
GROUP 1 GROUP 1
END END
@ -84,6 +85,7 @@ DATE F_DATA_A
BEGIN BEGIN
PROMPT 30 6 "A Data " PROMPT 30 6 "A Data "
FIELD #F_DATA_TO FIELD #F_DATA_TO
CHECKTYPE REQUIRED
VALITATE DATE_CMP_FUNC >= F_DATA_DA VALITATE DATE_CMP_FUNC >= F_DATA_DA
WARNING "La data finale deve essere successiva a quella iniziale" WARNING "La data finale deve essere successiva a quella iniziale"
GROUP 1 GROUP 1
@ -101,6 +103,8 @@ NUMBER F_ANNO 4
BEGIN BEGIN
PROMPT 72 6 "" PROMPT 72 6 ""
FLAGS "A" FLAGS "A"
CHECKTYPE REQUIRED
WARNING "Inserire l'anno"
FIELD #F_ANNO_TO FIELD #F_ANNO_TO
END END

View File

@ -14,8 +14,7 @@ Picture = <ba00>
Module = 41 Module = 41
Flags = "" Flags = ""
Item_01 = "Tabelle", [LVMENU_011] Item_01 = "Tabelle", [LVMENU_011]
Item_02 = "Archivi di Base", [MGAREA_012] Item_02 = "Stampa Tabelle", [LVMENU_012]
Item_03 = "Stampa Tabelle", [LVMENU_013]
[LVMENU_011] [LVMENU_011]
Caption = "Tabelle" Caption = "Tabelle"
@ -34,7 +33,7 @@ Item_09 = "Lavatrici", "lv0 -0 &LVT", "F"
Item_10 = "Mangani", "lv0 -0 &MAN", "F" Item_10 = "Mangani", "lv0 -0 &MAN", "F"
Item_11 = "Causali Lavanderia", "lv0 -0 &CAU", "F" Item_11 = "Causali Lavanderia", "lv0 -0 &CAU", "F"
[LVMENU_013] [LVMENU_012]
Caption = "Stampa Tabelle" Caption = "Stampa Tabelle"
Picture = <ba03> Picture = <ba03>
Module = 41 Module = 41
@ -55,12 +54,26 @@ Caption = "Contratti"
Picture = <lv00> Picture = <lv00>
Module = 41 Module = 41
Flags = "" Flags = ""
Item_01 = "Gestione contratti", [LVMENU_021]
Item_02 = "Stampe contratti", [LVMENU_022]
[LVMENU_021]
Caption = "Gestione contratti"
Picture = <lv00>
Module = 41
Flags = ""
Item_01 = "Contratti", "lv0 -3", "F" Item_01 = "Contratti", "lv0 -3", "F"
Item_02 = "Passaggi per contratto e Periodi di sospensione", "lv0 -4", "F" Item_02 = "Passaggi per contratto e Periodi di sospensione", "lv0 -4", "F"
Item_03 = "Stampa Contratti per cliente", "lv0 -1 lv0400c", "F"
Item_04 = "Stampa Passaggi per cliente", "lv0 -1 lv0500c", "F" [LVMENU_022]
Item_05 = "Stampa Periodi di sospensione", "lv0 -1 lv0500d", "F" Caption = "Stampe contratti"
Item_06 = "Stampa Elenco Clienti per Articolo", "lv0 -1 lv0400d", "F" Picture = <ba03>
Module = 41
Flags = ""
Item_01 = "Contratti per cliente", "lv0 -1 lv0400c", "F"
Item_02 = "Passaggi per cliente", "lv0 -1 lv0500c", "F"
Item_03 = "Periodi di sospensione", "lv0 -1 lv0500d", "F"
Item_04 = "Elenco Clienti per Articolo", "lv0 -1 lv0400d", "F"
[LVMENU_030] [LVMENU_030]
Caption = "Giri" Caption = "Giri"
@ -104,3 +117,4 @@ Picture = <ba03>
Module = 41 Module = 41
Flags = "" Flags = ""
Item_01 = "Riepilogo Bolle di Lavanderie", "lv2 -6 lv2700a", "F" Item_01 = "Riepilogo Bolle di Lavanderie", "lv2 -6 lv2700a", "F"
Item_02 = "Venduto Per Cliente nei 12 Mesi", "lv2 -7 lv2800a", "F"