From c3149487f7d08da44541b6929df39233bf9fd8ca Mon Sep 17 00:00:00 2001 From: luca Date: Fri, 10 Jun 2011 14:06:55 +0000 Subject: [PATCH] Patch level : Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/branches/R_10_00@22258 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ps/ps1002100.cpp | 65 +++++++++++++++++++++++++++++++++++++++++------ ps/ps1002100a.h | 6 ++--- ps/ps1002100a.uml | 25 ++++++++++++------ 3 files changed, 77 insertions(+), 19 deletions(-) diff --git a/ps/ps1002100.cpp b/ps/ps1002100.cpp index 4a6cea8ad..5bd7e567d 100755 --- a/ps/ps1002100.cpp +++ b/ps/ps1002100.cpp @@ -399,6 +399,8 @@ void TEdit_rdocs_mask::fill_sheet() TString query; query << "USE DOC KEY 2"; query << "\nSELECT (CODNUM=#CODNUM)"; + //se vengono incluse le BEM evase -> ci vuole un anno da cui partire per non passare.. + //..il tempo a scandire documenti dello scorso millennio! if (includi_evasi) query << "&&(ANNO>=#DAANNO)"; else @@ -434,16 +436,23 @@ void TEdit_rdocs_mask::fill_sheet() //per ogni documento prende le sole righe non evase e le carica sullo sheet TDocumento doc(rec); - bool rdoc_da_considerare = false; FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc) { + //di default pensa di scartare la riga + bool rdoc_da_considerare = false; + //solo le righe BEM con una qta iniziale > 0 contano qualcosa! const real qta = rdoc->get_real(RDOC_QTA); if (qta > ZERO) { + //guy mi perdoni! + const bool riga_bem_evasa = rdoc->is_evasa(); + const bool riga_bem_evadibile = rdoc->is_evadibile(); if (includi_evasi) - rdoc_da_considerare = rdoc->is_evadibile(); + rdoc_da_considerare = riga_bem_evadibile; else - rdoc_da_considerare = !rdoc->is_evasa() && rdoc->is_evadibile(); + rdoc_da_considerare = !riga_bem_evasa && riga_bem_evadibile; + + //se la riga ha passato i primi controlli... if (rdoc_da_considerare) { if (lav.full() && rdoc->get(RDOC_CODCMS) != lav) @@ -452,12 +461,52 @@ void TEdit_rdocs_mask::fill_sheet() continue; if (codart.full() && rdoc->get(RDOC_CODART) != codart) continue; + + //se sono richieste anche le righe evase, vuole solo quelle evase le cui bolle di consegna appartengono.. + //..all'intervallo di date selezionato sulla maschera (contorto ma vero...) + if (includi_evasi && riga_bem_evasa) + { + //date limite per documento di consegna + const TDate da_data = get_date(F_DADATA_EV); + const TDate a_data = get_date(F_ADATA_EV); - sf_righe.autoload_line(++k, *rdoc); //aggiunge una riga nuova riempiendola con tutti i campi che hanno FIELD nella maschera - } - } - } - } + //campi riga BEM corrente in esame + const long daanno = rdoc->get_long(RDOC_ANNO); + const TString& dacodnum = rdoc->get(RDOC_CODNUM); + const long dandoc = rdoc->get_long(RDOC_NDOC); + const long daidriga = rdoc->get_long(RDOC_IDRIGA); + + TString rquery; + rquery << "USE RDOC KEY 4"; + rquery << "\nFROM DAPROVV=D DAANNO=#DAANNO DACODNUM=#DACODNUM DANDOC=#DANDOC DAIDRIGA=#DAIDRIGA"; + rquery << "\nTO DAPROVV=D DAANNO=#DAANNO DACODNUM=#DACODNUM DANDOC=#DANDOC DAIDRIGA=#DAIDRIGA"; + TISAM_recordset righe_recset(rquery); + + righe_recset.set_var("#DAANNO", daanno); + righe_recset.set_var("#DACODNUM", dacodnum); + righe_recset.set_var("#DANDOC", dandoc); + righe_recset.set_var("#DAIDRIGA", daidriga); + //ricava il recordset delle righe di bolla di consegna che hanno evaso la riga BEM in esame + const int ritems = righe_recset.items(); + for (bool ok = righe_recset.move_first(); ok; ok = righe_recset.move_next()) + { + TToken_string doc_babbo_key; + doc_babbo_key.add(righe_recset.get(RDOC_PROVV).as_string()); + doc_babbo_key.add(righe_recset.get(RDOC_ANNO).as_int()); + doc_babbo_key.add(righe_recset.get(RDOC_CODNUM).as_string()); + doc_babbo_key.add(righe_recset.get(RDOC_NDOC).as_int()); + const TRectype& doc_babbo = cache().get(LF_DOC, doc_babbo_key); + const TDate datadoc_babbo = doc_babbo.get_date(DOC_DATADOC); + if (datadoc_babbo < da_data || datadoc_babbo > a_data) + rdoc_da_considerare = false; + } + } //if (includi_evasi && riga_bem_evasa).. + if (rdoc_da_considerare) + sf_righe.autoload_line(++k, *rdoc); //aggiunge una riga nuova riempiendola con tutti i campi che hanno FIELD nella maschera + } //if (rdoc_da_considerare)... + } //if (qta > ZERO)... + } //FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc)... + } //for (bool ok... //richiesta del cazzo della euroforesi: ordinare le righe per codart; si sono poi resi conto loro stessi che era.. //..una richiesta del cazzo e l'hanno abbandonata diff --git a/ps/ps1002100a.h b/ps/ps1002100a.h index ae79cf674..335e4bf65 100755 --- a/ps/ps1002100a.h +++ b/ps/ps1002100a.h @@ -14,9 +14,9 @@ #define F_CODART 314 #define F_DESCR 315 #define F_INCL_EVASI 316 -#define F_DA_ANNO 317 -//#define F_DADATA_EV 317 -//#define F_ADATA_EV 318 +#define F_DA_ANNO 317 +#define F_DADATA_EV 318 +#define F_ADATA_EV 319 #define F_RIGHE 320 diff --git a/ps/ps1002100a.uml b/ps/ps1002100a.uml index 1ea46f841..4836b49d5 100755 --- a/ps/ps1002100a.uml +++ b/ps/ps1002100a.uml @@ -33,7 +33,7 @@ ENDPAGE PAGE "Produttivita' giornaliera" 0 0 0 -3 -GROUPBOX DLG_NULL 76 10 +GROUPBOX DLG_NULL 76 11 BEGIN PROMPT 0 0 "@bParametri documenti" END @@ -207,28 +207,37 @@ END BOOLEAN F_INCL_EVASI BEGIN PROMPT 2 8 "Includi evasi" - MESSAGE FALSE HIDE,F_DA_ANNO - MESSAGE TRUE SHOW,F_DA_ANNO + MESSAGE FALSE HIDE,3@ + MESSAGE TRUE SHOW,3@ END NUMBER F_DA_ANNO 4 BEGIN - PROMPT 20 8 "Dall' anno " + PROMPT 20 8 "BEM dall' anno:" CHECKTYPE REQUIRED FLAGS "A" + GROUP 3 END -/*DATA F_DADATA_EV +TEXT DLG_NULL BEGIN - PROMPT 20 8 "Dalla data " + PROMPT 2 9 "@bConsegnato" + GROUP 3 +END + +DATA F_DADATA_EV +BEGIN + PROMPT 15 9 "Dal " CHECKTYPE REQUIRED + GROUP 3 END DATA F_ADATA_EV BEGIN - PROMPT 45 8 "Alla data " + PROMPT 35 9 "al " CHECKTYPE REQUIRED -END*/ + GROUP 3 +END SPREADSHEET F_RIGHE BEGIN