Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
modifiche alla stampa statistiche


git-svn-id: svn://10.65.10.50/trunk@20451 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2010-05-14 09:45:14 +00:00
parent 105d301e4d
commit e39e03a360
3 changed files with 74 additions and 36 deletions

View File

@ -592,16 +592,18 @@ void TStatistiche_ve::elabora(const TMask& mask) const
const char tipo_stat = mask.get(F_TIPOSTAT)[0];
//se sceglie per cliente ha 3 possibilità di dettaglio (''=nessuno,'C'=raccolto per cliente,'A'=raccolto per articolo)
const char tipo_dettaglio = mask.get(F_DETTAGLIO)[0];
//volendo si possono includere anche le righedoc con articoli non in anamag o addirittura vuoti!
const char tipo_riga = mask.get(F_TIPORIGA)[0];
//stampa particolare bernazzalica in caso di UN SOLO CLIENTE selezionato nella stampa per cliente
//in questo caso i totali non sono generali ma solo su quel cliente
bool bernazzata = false;
bool only_one_client = false;
if (tipo_stat == 'C')
{
const long dacli = mask.get_long(F_DACODCLI);
const long acodcli = mask.get_long(F_ACODCLI);
if (dacli == acodcli && dacli > 0)
bernazzata = true;
only_one_client = true;
}
//creazione del csv recordset che verra' riempito dai record del recordset righe
@ -612,19 +614,22 @@ void TStatistiche_ve::elabora(const TMask& mask) const
//recordset per il calcolo dei totali mese/anno;servono per i calcoli futuri delle percentuali
TString prequery;
prequery << "USE RDOC KEY 1\n";
prequery << "SELECT ((CODARTMAG!=\"\")&&(BETWEEN(33->DATADOC,#DADATA,#ADATA))";
if (bernazzata)
prequery << "SELECT (BETWEEN(33->DATADOC,#DADATA,#ADATA)&&(333@.S7=#TIPORIGA))";
if (only_one_client)
prequery << "&&(DOC.TIPOCF=='C')&&(DOC.CODCF==#DACODCLI)";
prequery <<")\n";
prequery << "JOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC\n";
prequery << "FROM CODNUM=#CODNUM ANNO=#ANNO PROVV='D'\n";
prequery << "TO CODNUM=#CODNUM ANNO=#ANNO PROVV='D'\n";
prequery << "\nJOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC";
prequery << "\nJOIN %TRI ALIAS 333 INTO CODTAB=TIPORIGA";
prequery << "\nFROM CODNUM=#CODNUM ANNO=#ANNO PROVV=D";
prequery << "\nTO CODNUM=#CODNUM ANNO=#ANNO PROVV=D";
TDocument_recordset totali(prequery);
totali.set_var("#CODNUM", TVariant(mask.get(F_CODNUM)));
totali.set_var("#DADATA", mask.get_date(F_DADATA));
totali.set_var("#ADATA", mask.get_date(F_ADATA));
totali.set_var("#ANNO", TVariant((long)mask.get_int(F_ANNO)));
if (bernazzata)
totali.set_var("#TIPORIGA", mask.get(F_TIPORIGA));
if (only_one_client)
totali.set_var("#DACODCLI", mask.get_long(F_DACODCLI));
const long totali_items = totali.items();
if (totali_items > 0)
@ -653,27 +658,38 @@ void TStatistiche_ve::elabora(const TMask& mask) const
//scatta la query per la costruzione del recordset
TString query;
query << "USE RDOC KEY 1\n";
query << "SELECT ((CODARTMAG!=\"\")&&(BETWEEN(33->DATADOC,#DADATA,#ADATA))&&";
query << "SELECT (BETWEEN(33->DATADOC,#DADATA,#ADATA)&&(333@.S7=#TIPORIGA))";
switch (tipo_stat)
{
case 'A': query << "(BETWEEN(CODARTMAG,#DACODART,#ACODART)))\n"; break;
case 'C': query << "(DOC.TIPOCF=='C')&&(BETWEEN(DOC.CODCF,#DACODCLI,#ACODCLI)))\n"; break;
case 'G': query << "(BETWEEN(ANAMAG.GRMERC,#DAGRMERC,#AGRMERC)))\n"; break;
default: break;
case 'A':
query << "&&(BETWEEN(CODART,#DACODART,#ACODART))";
break;
case 'C':
query << "&&(DOC.TIPOCF=='C')&&(BETWEEN(DOC.CODCF,#DACODCLI,#ACODCLI))";
break;
case 'G':
if (tipo_riga == 'M')
query << "&&(BETWEEN(ANAMAG.GRMERC,#DAGRMERC,#AGRMERC))";
break;
default:
break;
}
//parte comune ai vari casi di statistica della query
query << "JOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC\n";
//parte non comune (deve joinare anamag per avere il grmerc
if (tipo_stat == 'G' || (tipo_stat == 'C' && (tipo_dettaglio == 'G' || tipo_dettaglio == 'M')))
query << "JOIN ANAMAG INTO CODART==CODARTMAG\n";
query << "\nJOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC";
query << "\nJOIN %TRI ALIAS 333 INTO CODTAB=TIPORIGA";
//parte non comune (deve joinare anamag per avere il grmerc)
if (tipo_riga == 'M')
{
if (tipo_stat == 'G' || (tipo_stat == 'C' && (tipo_dettaglio == 'G' || tipo_dettaglio == 'M')))
query << "\nJOIN ANAMAG INTO CODART==CODARTMAG";
}
//ri-parte comune
query << "FROM CODNUM=#CODNUM ANNO=#ANNO PROVV='D'\n";
query << "TO CODNUM=#CODNUM ANNO=#ANNO PROVV='D'\n";
query << "\nFROM CODNUM=#CODNUM ANNO=#ANNO PROVV=D";
query << "\nTO CODNUM=#CODNUM ANNO=#ANNO PROVV=D";
//CREAZIONE RECORDSET
@ -685,6 +701,7 @@ void TStatistiche_ve::elabora(const TMask& mask) const
righe.set_var("#DADATA", mask.get_date(F_DADATA));
righe.set_var("#ADATA", mask.get_date(F_ADATA));
righe.set_var("#ANNO", TVariant((long)mask.get_int(F_ANNO)));
righe.set_var("#TIPORIGA", mask.get(F_TIPORIGA));
switch(tipo_stat)
{

View File

@ -24,5 +24,7 @@
#define F_ACODCLI 120
#define F_ADESCLI 121
#define F_TIPORIGA 124
#define F_EXCEL 125
#define F_PATH 126

View File

@ -64,28 +64,34 @@ END
GROUPBOX -1 78 5
BEGIN
PROMPT 1 6 "@bParametri per la generazione statistiche"
PROMPT 1 6 "@bParametri da utilizzare per la generazione statistiche"
END
LIST F_TIPORIGA 16
BEGIN
PROMPT 2 7 "Tipo riga "
ITEMS "M|<M>erce"
ITEMS "S|<S>pese"
ITEMS "P|<P>restazioni"
ITEMS "R|<R>isorse"
ITEMS "A|<A>ttrezzature"
ITEMS "C|S<C>onti"
ITEMS "O|<O>maggi"
ITEMS "D|<D>escrizioni"
ITEMS "T|Re<T>tifiche"
END
LIST F_TIPOSTAT 21
BEGIN
PROMPT 2 7 "Tipo di statistica "
PROMPT 2 8 "Tipo statistica "
ITEM "A|Articoli" MESSAGE HIDE,2@|HIDE,3@|SHOW,1@ //group1=articoli,2=grmerc,3=clienti
ITEM "G|Gruppi merceologici" MESSAGE HIDE,1@|HIDE,3@|SHOW,2@
ITEM "C|Clienti" MESSAGE HIDE,1@|HIDE,2@|SHOW,3@
END
LIST F_TIPODATA 10
BEGIN
PROMPT 2 8 "Dati da analizzare "
ITEM "P|Prezzi"
ITEM "Q|Quantità"
FIELD #TIPODATA
END
LIST F_DETTAGLIO 20
BEGIN
PROMPT 2 9 "Dettagliato per "
PROMPT 43 8 "Dettagli "
ITEM "|Non dettagliato"
ITEM "A|Articolo - Cliente"
ITEM "M|Gr.Merc. - Cliente"
@ -94,7 +100,15 @@ BEGIN
GROUP 3
END
GROUPBOX -1 78 5
LIST F_TIPODATA 10
BEGIN
PROMPT 2 9 "Dati "
ITEM "P|Prezzi"
ITEM "Q|Quantità"
FIELD #TIPODATA
END
GROUPBOX -1 78 4
BEGIN
PROMPT 1 11 "@bIntervallo di selezione"
END
@ -264,17 +278,22 @@ BEGIN
CHECKTYPE NORMAL
GROUP 3
END
//dati per file excel
GROUPBOX -1 78 4
BEGIN
PROMPT 1 15 "@bParametri per il file formato Excel"
END
BOOLEAN F_EXCEL
BEGIN
PROMPT 2 16 "Genera file in formato Excel (stat_ art/gmc/cli .xls)"
PROMPT 2 16 "Genera file (stat_ art/gmc/cli .xls)"
MESSAGE FALSE CLEAR,F_PATH
MESSAGE TRUE ENABLE,F_PATH
END
STRING F_PATH 256 50
STRING F_PATH 256 44
BEGIN
PROMPT 2 17 "Cartella dove salvare il file "
DSELECT