From 4798589955ee8080fee93d4da922be76574f8272 Mon Sep 17 00:00:00 2001 From: guy Date: Sun, 3 Mar 2013 21:49:23 +0000 Subject: [PATCH] Corretto report CONAI git-svn-id: svn://10.65.10.50/branches/R_10_00@22816 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- tp/tp0.cpp | 12 +--- tp/tp0900.cpp | 184 +++++++++++++++++++++++++++--------------------- tp/tp0900a.uml | 36 +++++----- tp/tp0900sc.rep | 2 +- 4 files changed, 127 insertions(+), 107 deletions(-) diff --git a/tp/tp0.cpp b/tp/tp0.cpp index 334eab9d1..058c83106 100755 --- a/tp/tp0.cpp +++ b/tp/tp0.cpp @@ -6,15 +6,9 @@ int main(int argc, char** argv) const int n = argc > 1 ? argv[1][1]-'0' : 0; switch (n) { - case 1: - tp0200(argc, argv); //tabelle PACK - break; - case 8: - tp0900(argc, argv); //dichiarazione CONAI - break; - default: - tp0100(argc, argv); //trasferimento PACK - break; + case 1: tp0200(argc, argv); break; //tabelle PACK + case 8: tp0900(argc, argv); break; //dichiarazione CONAI + default: tp0100(argc, argv); break; //trasferimento PACK } return 0; } \ No newline at end of file diff --git a/tp/tp0900.cpp b/tp/tp0900.cpp index 18260f8f5..cd5e00cb3 100755 --- a/tp/tp0900.cpp +++ b/tp/tp0900.cpp @@ -162,7 +162,7 @@ void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(const TDocumento& do //quantita' totale conai (A + B) sul report const real n = rdoc.calc_conai_qta(conai_specie); - if (n != ZERO) + if (!n.is_zero()) { qta_AB_conai.add(n, j); //va calcolato con il metodo apposito @@ -361,9 +361,8 @@ void TDichiarazione_CONAI::scrivi_csv(const TRectype& prima_riga, TDichiarazione const bool addconai = clifo.vendite().get_bool(CFV_ADDCONAI); #ifdef DBG - //check del cliente e del documento - const long cazzo_codclifo = clifo.codice(); - if (cazzo_codclifo == 200348 && numdoc == 740) + //check di debug + if (numdoc == 5) const int cazzone = 1; #endif @@ -399,24 +398,24 @@ static int compare_csv_rows_specie(const TObject** o1, const TObject** o2) TToken_string& s2 = *(TToken_string*)*o2; //deve ordinare sul campo sottocat = codice specie conai (campo 8) - const TString& c1 = s1.get(8); - const TString& c2 = s2.get(8); + const TFixed_string c1 = s1.get(8); + const TFixed_string c2 = s2.get(8); int cmp = c1.compare(c2); // sotto ordinamento per codice cliente (campo 4) if (cmp == 0) { - const TString& c1 = s1.get(4); - const TString& c2 = s2.get(4); - cmp = c1.compare(c2); + const long c1 = s1.get_long(4); + const long c2 = s2.get_long(4); + cmp = c1 - c2; // sotto-sotto ordinamento per ndoc (campo 2) if (cmp == 0) { - const TString& c1 = s1.get(2); - const TString& c2 = s2.get(2); - cmp = c1.compare(c2); + const long n1 = s1.get_long(2); + const long n2 = s2.get_long(2); + cmp = n1 - n2; } } @@ -429,9 +428,25 @@ static int compare_csv_rows_cofi(const TObject** o1, const TObject** o2) TToken_string& s2 = *(TToken_string*)*o2; //deve ordinare sul campo cofi/piva (campo 5) - const TString& c1 = s1.get(5); - const TString& c2 = s2.get(5); - int cmp = c1.compare(c2); + const TString& cf1 = s1.get(5); + const TString& cf2 = s2.get(5); + int cmp = cf1.compare(cf2); + + // sotto ordinamento per codnum (campo 0) + if (cmp == 0) + { + const TString4 c1 = s1.get(0); + const TString4 c2 = s2.get(0); + cmp = c1.compare(c2); + + // sotto-sotto ordinamento per ndoc (campo 2) + if (cmp == 0) + { + const long n1 = s1.get_long(2); + const long n2 = s2.get_long(2); + cmp = n1 - n2; + } + } return cmp; } @@ -442,16 +457,24 @@ static int compare_csv_rows_datadoc(const TObject** o1, const TObject** o2) TToken_string& s2 = *(TToken_string*)*o2; //deve ordinare sul campo datadoc (campo 3) - const TDate c1 = s1.get(3); - const TDate c2 = s2.get(3); - int cmp = c1 - c2; + const TDate d1 = s1.get(3); + const TDate d2 = s2.get(3); + int cmp = d1 - d2; - // sotto-sotto ordinamento per ndoc (campo 2) + // sotto ordinamento per codnum (campo 0) if (cmp == 0) { - const long c1 = s1.get_long(2); - const long c2 = s2.get_long(2); - cmp = c1 - c2; + const TString4 c1 = s1.get(0); + const TString4 c2 = s2.get(0); + cmp = c1.compare(c2); + + // sotto-sotto ordinamento per ndoc (campo 2) + if (cmp == 0) + { + const long n1 = s1.get_long(2); + const long n2 = s2.get_long(2); + cmp = n1 - n2; + } } return cmp; @@ -540,25 +563,21 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const default: break; } - //Adesso prende le numerazioni e i tipi documento - TSheet_field& sf = mask.sfield(F_TIPI); - //la query e' sulle righe documento //cerca le righe con numerazione e tipo indicate nello sheet;prende sia le righe che generano CONAI (per avere il codice conai,.. //..le quantita' etc) e le righe generate da CONAI (per avere i prezzi) - TString query; - TString scat_fieldname(conai_sottocat_name(conai_specie)); + TString16 scat_fieldname = conai_sottocat_name(conai_specie); if (scat_fieldname.blank()) return; + scat_fieldname.insert("RG1:"); - scat_fieldname.insert("RG1:"); - + TString query; query << "USE RDOC"; - query << "\nSELECT BETWEEN(33.DATADOC,#DADATA,#ADATA)&&(33.TIPODOC==#TIPODOC)&&(" << scat_fieldname <<"!=\"\")"; + query << "\nSELECT BETWEEN(33.DATADOC,#DADATA,#ADATA)&&BETWEEN(33.TIPODOC,#TIPODOC,#TIPODOC)&&(" << scat_fieldname <<"!=\"\")"; query << "\nJOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC"; - query << "\nFROM CODNUM=#CODNUM ANNO=#ANNO PROVV=\"D\""; - query << "\nTO CODNUM=#CODNUM ANNO=#ANNO PROVV=\"D\""; + query << "\nFROM CODNUM=#CODNUM ANNO=#ANNO PROVV=D"; + query << "\nTO CODNUM=#CODNUM ANNO=#ANNO PROVV=D"; //crea il recordset principale relativo alle righe originali CONAI ed assegna subito i valori delle variabili che restano costanti al cambio.. //..numerazione/tipo: sono le date ed il codice articolo @@ -572,18 +591,22 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const //creazione del csv recordset che verra' riempito dai record del recordset rdoc TDichiarazione_CONAI_csv_recordset* csv = new TDichiarazione_CONAI_csv_recordset; + //Adesso prende le numerazioni e i tipi documento + TSheet_field& sf = mask.sfield(F_TIPI); //Visto che e' possibile avere una secchiata di numerazioni, gli tocca fare un giro per ogni numerazione FOR_EACH_SHEET_ROW(sf, r, row) { //estrazione definitiva dei record che soddisfano il casino di parametri richiesti - rdoc.set_var("#CODNUM", TVariant(row->get(0))); + const TString4 last_codnum = row->get(0); + rdoc.set_var("#CODNUM", TVariant(last_codnum)); rdoc.set_var("#TIPODOC", TVariant(row->get(2))); //quanti record validi ha trovato? const long items = rdoc.items(); //E crea pure la progind.. - TProgind pi(items, TR("Generazione righe...")); + TString msg; msg << TR("Generazione righe ") << last_codnum << " ..."; + TProgind pi(items, msg); long last_ndoc = 0; @@ -603,53 +626,56 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const } //for(bool ok = rdoc.move_first(.. } //FOR_EACH... - - //riordinamento del file secondo il tipo di stampa selezionato: - switch (tipostampa) + + if (!csv->empty()) { - case 1: - csv->sort(compare_csv_rows_specie); //Mod.6.1: specie conai, codice cliente, numero documento - break; - case 2: - csv->sort(compare_csv_rows_datadoc); //Allegato 6.1: datadoc - break; - case 3: - csv->sort(compare_csv_rows_cofi); //Mod.6.3: piva e cofi - break; - case 4: - csv->sort(compare_csv_rows_cofi); //Lista clienti in esenzione: piva e cofi - break; - default: - break; + //riordinamento del file secondo il tipo di stampa selezionato: + switch (tipostampa) + { + case 1: + csv->sort(compare_csv_rows_specie); //Mod.6.1: specie conai, codice cliente, numero documento + break; + case 2: + csv->sort(compare_csv_rows_datadoc); //Allegato 6.1: datadoc + break; + case 3: + csv->sort(compare_csv_rows_cofi); //Mod.6.3: piva e cofi + break; + case 4: + csv->sort(compare_csv_rows_cofi); //Lista clienti in esenzione: piva e cofi + break; + default: + break; + } + + //se richiesto il file in formato excel... + if (mask.get_bool(F_EXCEL) && !mask.field(F_PATH).empty()) + { + TFilename path = mask.get(F_PATH); + path.lower(); + if (path.ends_with(".xls") || path.ends_with(".slk")) + csv->save_as(path, fmt_html); + else + csv->save_as(path); + if (path.exist()) + xvt_sys_goto_url(path, "open"); + } + + //creazione del report di stampa + TDichiarazione_CONAI_report rep; + bool ok = rep.load(nome_report); + + if (ok) + { + //setta il recordset... + //deve settare almeno un campo manualmente perche' funzioni la mask2report + csv->set_var("#EMAIL", TVariant(TR("Manca la email")), true); + rep.set_recordset(csv); + //..e poi carica i valori sulla maschera nel report!!!! + rep.mask2report(mask); + rep.print_or_preview(); + } } - - //se richiesto il file in formato excel... - if (mask.get_bool(F_EXCEL)) - { - TFilename path = mask.get(F_PATH); - path.lower(); - if (path.ends_with(".xls") || path.ends_with(".slk")) - csv->save_as(path, fmt_html); - else - csv->save_as(path); - xvt_sys_goto_url(path, "open"); - } - - //creazione del report di stampa - TDichiarazione_CONAI_report rep; - bool ok = rep.load(nome_report); - - if (ok) - { - //setta il recordset... - //deve settare almeno un campo manualmente perche' funzioni la mask2report - csv->set_var("#EMAIL", TVariant(TR("Manca la email")), true); - rep.set_recordset(csv); - //..e poi carica i valori sulla maschera nel report!!!! - rep.mask2report(mask); - rep.print_or_preview(); - } - } void TDichiarazione_CONAI::main_loop() diff --git a/tp/tp0900a.uml b/tp/tp0900a.uml index caf68510f..ec81459ee 100755 --- a/tp/tp0900a.uml +++ b/tp/tp0900a.uml @@ -41,39 +41,39 @@ BEGIN PROMPT 1 0 "@bPeriodo da considerare" END -RADIOBUTTON F_PERIODO 39 +RADIOBUTTON F_PERIODO 44 BEGIN PROMPT 2 0 "" - ITEM "1|Annuale" MESSAGE HIDE,F_TRIMESTRE|HIDE,F_MESE - ITEM "2|Trimestrale" MESSAGE SHOW,F_TRIMESTRE|HIDE,F_MESE - ITEM "3|Mensile" MESSAGE HIDE,F_TRIMESTRE|SHOW,F_MESE + ITEM "1|Anno" MESSAGE HIDE,F_TRIMESTRE|HIDE,F_MESE + ITEM "2|Trimestre" MESSAGE SHOW,F_TRIMESTRE|HIDE,F_MESE + ITEM "3|Mese" MESSAGE HIDE,F_TRIMESTRE|SHOW,F_MESE FIELD #PERIODO FLAGS "Z" END NUMBER F_ANNO 4 BEGIN - PROMPT 40 1 "Anno " + PROMPT 48 1 "Anno " HELP "Anno per cui effettuare la dichiarazione" CHECKTYPE REQUIRED FIELD #ANNO END -LIST F_MESE 15 +LIST F_MESE 2 12 BEGIN - PROMPT 52 1 "Periodo " + PROMPT 62 1 "" HELP "Mese per cui effettuare la dichiarazione" FLAGS "AM" FIELD #MESE END -LIST F_TRIMESTRE 15 +LIST F_TRIMESTRE 2 12 BEGIN - PROMPT 52 1 "Periodo " + PROMPT 62 1 "" HELP "Trimestre di cui effettuare la dichiarazione" - ITEM "3|1 Trimestre " - ITEM "6|2 Trimestre " - ITEM "9|3 Trimestre " + ITEM "3|1 Trimestre" + ITEM "6|2 Trimestre" + ITEM "9|3 Trimestre" ITEM "12|4 Trimestre" FIELD #TRIMESTRE END @@ -149,12 +149,11 @@ BEGIN FIELD #INDIR END -RADIOBUTTON F_PRODUT 27 +RADIOBUTTON F_PRODUT 28 BEGIN - PROMPT 51 14 "Iscritto in quanto:" + PROMPT 51 13 "Iscritto in quanto:" ITEM "1|Produttore" ITEM "2|Utilizzatore" - FLAGS "Z" FIELD #PRODUT END @@ -166,7 +165,7 @@ END STRING F_TEL 26 BEGIN - PROMPT 46 17 "Tel. " + PROMPT 47 17 "Tel." FIELD TEL END @@ -180,6 +179,7 @@ END STRING F_PATH 256 50 BEGIN PROMPT 27 19 "" + CHECKTYPE REQUIRED END STRING DLG_PROFILE 50 @@ -194,7 +194,7 @@ ENDPAGE ENDMASK //maschera dello sheet sulle numerazioni/tipi documento -PAGE "Tipi" -1 -1 68 9 +PAGE "Tipi" -1 -1 68 6 STRING 101 4 BEGIN @@ -205,7 +205,7 @@ BEGIN DISPLAY "Descrizione@50" S0 OUTPUT 101 CODTAB OUTPUT 102 S0 - CHECKTYPE NORMAL + CHECKTYPE REUIRED FLAGS "U" END diff --git a/tp/tp0900sc.rep b/tp/tp0900sc.rep index 416ee1013..bb1bd8c94 100755 --- a/tp/tp0900sc.rep +++ b/tp/tp0900sc.rep @@ -197,7 +197,7 @@
- C + A+C MESSAGE RESET,F2