diff --git a/ve/ve3800.cpp b/ve/ve3800.cpp index 6d14fbaf5..345551d44 100755 --- a/ve/ve3800.cpp +++ b/ve/ve3800.cpp @@ -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) { diff --git a/ve/ve3800.h b/ve/ve3800.h index 2d0abe7d7..0bfed4501 100755 --- a/ve/ve3800.h +++ b/ve/ve3800.h @@ -24,5 +24,7 @@ #define F_ACODCLI 120 #define F_ADESCLI 121 +#define F_TIPORIGA 124 + #define F_EXCEL 125 #define F_PATH 126 diff --git a/ve/ve3800.uml b/ve/ve3800.uml index 6d0ea6eac..5952ee126 100755 --- a/ve/ve3800.uml +++ b/ve/ve3800.uml @@ -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|erce" + ITEMS "S|pese" + ITEMS "P|

restazioni" + ITEMS "R|isorse" + ITEMS "A|ttrezzature" + ITEMS "C|Sonti" + ITEMS "O|maggi" + ITEMS "D|escrizioni" + ITEMS "T|Retifiche" 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