From 2f8521426541cb9a7896dc667fa310997e179904 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 26 Sep 2010 08:21:12 +0000 Subject: [PATCH] Patch level : 10.0 patch 810 Files correlati : sc2.exe Ricompilazione Demo : [ ] Commento MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug 0001693: 002768 - Bustaplast - selezione scadenzario la sig.ra Anna richiede di poter selezionare lo scadenzario in funzione della data di fattura anzichè nella data di scadenza. BIsogna verificare i vari ordinamenti della stampa scadenzario. git-svn-id: svn://10.65.10.50/branches/R_10_00@20904 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- sc/sc2200.cpp | 83 ++++++++++++++++++++++++++++++++++++++++---------- sc/sc2200.h | 3 ++ sc/sc2200a.uml | 29 ++++++++++++++++++ 3 files changed, 99 insertions(+), 16 deletions(-) diff --git a/sc/sc2200.cpp b/sc/sc2200.cpp index 2165e253a..e06fccfa2 100755 --- a/sc/sc2200.cpp +++ b/sc/sc2200.cpp @@ -107,6 +107,7 @@ public: virtual bool user_create(); // Qui creo i cursori... virtual bool user_destroy(); // e qui li distruggo. virtual bool set_print(int); // Qui c'e' la maschera di selezione. + void add_filter_fatt(TCursor * cur, const char * filter); // aggiungo il gfiltro per data fattura virtual void set_page (int file, int counter); // Setta le righe di stampa. void set_page_clifo(int nriga); // Frammenti di set_page void set_page_pcon (int nriga); @@ -944,6 +945,18 @@ bool TStampaScadenzario::user_destroy() return TRUE; } +void TStampaScadenzario::add_filter_fatt(TCursor * cur, const char * filter) +{ + if (cur->relation()->log2ind(LF_PARTITE) < 0) + cur->relation()->add(LF_PARTITE, "TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO==ANNO|NUMPART==NUMPART|NRIGA==NRIGA"); + TString newfilter(cur->filter()); + + if (newfilter.full()) + newfilter << "&&"; + newfilter << filter; + cur->setfilter(newfilter, true); +} + bool TStampaScadenzario::set_print(int) { _m->reset(F_SORTBAN); @@ -988,9 +1001,20 @@ bool TStampaScadenzario::set_print(int) _ordata = _m->get_bool(F_ORDDATA); _stvaluta = _m->get_bool(F_VALUTA); _striepilogo = _m->get_int(F_RIEPILOGO); - _datai = (const char *)(_m->get(F_DATASCADENZAI)); - _dataf = (const char *)(_m->get(F_DATASCADENZAF)); - _datas = (const char *)(_m->get(F_DATASTAMPA)); + + const bool sel_datafatt = _m->get_bool(F_SELDATAFAT); + + if (sel_datafatt) + { + _datai = _m->get_date(F_DATAFATTI); + _dataf = _m->get_date(F_DATAFATTF); + } + else + { + _datai = _m->get_date(F_DATASCADENZAI); + _dataf = _m->get_date(F_DATASCADENZAF); + } + _datas = _m->get_date(F_DATASTAMPA); // N.B I cursori sono tutti TSorted_cursor; alcuni di questi(_cur11 e _cur41) referenziano a campi di sort // presenti anche su altri file (LF_CLIFO o LF_PCON), percio' e' necessario che il metodo filtercursor() @@ -1011,20 +1035,32 @@ bool TStampaScadenzario::set_print(int) // Setta l'intervallo di data. Si puo' fare per tutti i cursori, poiche' // il file principale e' sempre LF_SCADENZE. - TRectype da_data(LF_SCADENZE), a_data(LF_SCADENZE); - da_data.put(SCAD_DATASCAD,_datai); - a_data.put(SCAD_DATASCAD,_dataf); - get_cursor(_cur1)->setregion(da_data,a_data); - get_cursor(_cur11)->setregion(da_data,a_data); - get_cursor(_cur2)->setregion(da_data,a_data); - get_cursor(_cur3)->setregion(da_data,a_data); - get_cursor(_cur4)->setregion(da_data,a_data); - get_cursor(_cur41)->setregion(da_data,a_data); - get_cursor(_cur5)->setregion(da_data,a_data); - get_cursor(_cur6)->setregion(da_data,a_data); - get_cursor(_cur7)->setregion(da_data,a_data); - switch (_tipost) + if (!sel_datafatt) + { + TRectype da_data(LF_SCADENZE), a_data(LF_SCADENZE); + da_data.put(SCAD_DATASCAD,_datai); + a_data.put(SCAD_DATASCAD,_dataf); + get_cursor(_cur1)->setregion(da_data,a_data); + get_cursor(_cur11)->setregion(da_data,a_data); + get_cursor(_cur2)->setregion(da_data,a_data); + get_cursor(_cur3)->setregion(da_data,a_data); + get_cursor(_cur4)->setregion(da_data,a_data); + get_cursor(_cur41)->setregion(da_data,a_data); + get_cursor(_cur5)->setregion(da_data,a_data); + get_cursor(_cur6)->setregion(da_data,a_data); + get_cursor(_cur7)->setregion(da_data,a_data); + } + get_cursor(_cur1)->setfilter(""); + get_cursor(_cur11)->setfilter(""); + get_cursor(_cur2)->setfilter(""); + get_cursor(_cur3)->setfilter(""); + get_cursor(_cur4)->setfilter(""); + get_cursor(_cur41)->setfilter(""); + get_cursor(_cur5)->setfilter(""); + get_cursor(_cur6)->setfilter(""); + get_cursor(_cur7)->setfilter(""); + switch (_tipost) { case tutti: select_cursor(_cur7); @@ -1107,6 +1143,21 @@ bool TStampaScadenzario::set_print(int) break; } + if (sel_datafatt) + { + TString filter("(BETWEEN("); + + filter << LF_PARTITE << "->" << PART_DATADOC << ",\"" << _datai.string() << "\",\"" << _dataf.string() << "\"))"; + add_filter_fatt(get_cursor(_cur1), filter); + add_filter_fatt(get_cursor(_cur11), filter); + add_filter_fatt(get_cursor(_cur2), filter); + add_filter_fatt(get_cursor(_cur3), filter); + add_filter_fatt(get_cursor(_cur4), filter); + add_filter_fatt(get_cursor(_cur41), filter); + add_filter_fatt(get_cursor(_cur5), filter); + add_filter_fatt(get_cursor(_cur6), filter); + add_filter_fatt(get_cursor(_cur7), filter); + } if (current_cursor()->is_sorted()) // Should always be true! { TSorted_cursor* sorcur = (TSorted_cursor*)current_cursor(); diff --git a/sc/sc2200.h b/sc/sc2200.h index ccf334e3c..f2e680bbe 100755 --- a/sc/sc2200.h +++ b/sc/sc2200.h @@ -20,3 +20,6 @@ #define F_CODAG_D 118 #define F_TIPOPAG 119 #define F_NOTOT 120 +#define F_SELDATAFAT 121 +#define F_DATAFATTI 122 +#define F_DATAFATTF 123 diff --git a/sc/sc2200a.uml b/sc/sc2200a.uml index 485c489d5..f048471d2 100755 --- a/sc/sc2200a.uml +++ b/sc/sc2200a.uml @@ -41,6 +41,13 @@ BEGIN FLAGS "A" END +BOOLEAN F_SELDATAFAT +BEGIN + PROMPT 40 4 "Selezione per data fattura" + MESSAGE FALSE SHOW,10@|HIDE,11@ + MESSAGE TRUE HIDE,10@|SHOW,11@ +END + DATE F_DATASCADENZAI BEGIN PROMPT 2 5 "Data di scadenza dal " @@ -48,6 +55,7 @@ BEGIN CHECKTYPE REQUIRED WARNING "Data di inizio scadenza non valida" FLAGS "A" + GROUP 10 END DATE F_DATASCADENZAF @@ -57,6 +65,27 @@ BEGIN CHECKTYPE REQUIRED VALIDATE DATE_CMP_FUNC >= F_DATASCADENZAI WARNING "Data di fine scadenza non valida" + GROUP 10 +END + +DATE F_DATAFATTI +BEGIN + PROMPT 2 5 "Data fattura dal " + HELP "Data di inizio scadenza" + CHECKTYPE REQUIRED + WARNING "Data di inizio scadenza non valida" + FLAGS "A" + GROUP 11 +END + +DATE F_DATAFATTF +BEGIN + PROMPT 40 5 "al " + HELP "Data di fine scadenza" + CHECKTYPE REQUIRED + VALIDATE DATE_CMP_FUNC >= F_DATAFATTI + WARNING "Data di fine scadenza non valida" + GROUP 11 END BOOLEAN F_RATESALDATE