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:
parent
48628bb904
commit
7fcbd1557d
137
lv/lv2800.cpp
137
lv/lv2800.cpp
@ -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;
|
||||||
}
|
}
|
@ -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
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user