Patch level : 10.0 patch 810

Files correlati     : sc2.exe
Ricompilazione Demo : [ ]
Commento

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
This commit is contained in:
alex 2010-09-26 08:21:12 +00:00
parent ef3638b4df
commit 2f85214265
3 changed files with 99 additions and 16 deletions

View File

@ -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();

View File

@ -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

View File

@ -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