Patch level : 10.0 486
Files correlati : ve0.exe Ricompilazione Demo : [ ] Commento Ricerca avanzata sulla sescrizione articoli (cerca anche nella desrcizione estesa) Nell' ini profilo riga documento bisogna impostare : EXTDESCSRC = X git-svn-id: svn://10.65.10.50/trunk@19512 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
2226dedf14
commit
4c02d14038
@ -2014,14 +2014,16 @@ bool TList_sheet::check(CheckTime t)
|
||||
TBrowse::TBrowse(TEdit_field* f, TRelation* r, int key, const char* filter)
|
||||
: TBrowse_button(f),
|
||||
_relation(r), _cursor(new TCursor (r, "", key)),
|
||||
_filter(filter), _secondary(FALSE)
|
||||
_filter(filter), _secondary(FALSE),
|
||||
_custom_filter_handler(NULL)
|
||||
{}
|
||||
|
||||
|
||||
// Certified 100%
|
||||
TBrowse::TBrowse(TEdit_field* f, TCursor* c)
|
||||
: TBrowse_button(f),
|
||||
_relation(NULL), _cursor(c), _secondary(FALSE)
|
||||
_relation(NULL), _cursor(c), _secondary(FALSE),
|
||||
_custom_filter_handler(NULL)
|
||||
{}
|
||||
|
||||
|
||||
@ -2703,7 +2705,8 @@ KEY TBrowse::run()
|
||||
|
||||
end_wait();
|
||||
|
||||
TBrowse_sheet s(_cursor, _items, caption, _head, buttons, field(), siblings);
|
||||
TBrowse_sheet s(_cursor, _items, caption, _head, buttons, field(), siblings, _custom_filter_handler);
|
||||
|
||||
k = s.run();
|
||||
selected = s.selected();
|
||||
}
|
||||
@ -2751,6 +2754,13 @@ KEY TBrowse::run()
|
||||
return k;
|
||||
}
|
||||
|
||||
void TBrowse::set_cursor(TCursor * c)
|
||||
{
|
||||
if (_cursor != NULL)
|
||||
delete _cursor;
|
||||
_cursor = c ;
|
||||
}
|
||||
|
||||
bool TBrowse::check(CheckTime t)
|
||||
{
|
||||
bool passed = TRUE;
|
||||
|
@ -918,6 +918,8 @@ class TBrowse : public TBrowse_button
|
||||
TToken_string _out_id;
|
||||
// @cmember:(INTERNAL) Campi di output sul file
|
||||
TToken_string _out_fn;
|
||||
// @cmember:(INTERNAL) handler di filtro custom
|
||||
CONTROL_HANDLER _custom_filter_handler;
|
||||
|
||||
// @access Protected Member
|
||||
protected:
|
||||
@ -988,6 +990,12 @@ public:
|
||||
void set_filter(const char * filter)
|
||||
{ _filter = filter;}
|
||||
|
||||
// @cmember Cambia il cursore della browse
|
||||
void set_cursor(TCursor * c);
|
||||
|
||||
// @cmember Cambia il filtro della browse
|
||||
void set_custom_filter_handler(CONTROL_HANDLER custom_filter_handler) { _custom_filter_handler = custom_filter_handler;}
|
||||
|
||||
// @cmember Controlla la validita' del campo
|
||||
bool check(CheckTime = RUNNING_CHECK);
|
||||
// @cmember Controlla se il campo puo' essere vuoto
|
||||
|
@ -1818,10 +1818,12 @@ void TBrowse_sheet::update_key_selector(int sel)
|
||||
|
||||
TBrowse_sheet::TBrowse_sheet(TCursor* cursor, const char* fields,
|
||||
const char* title, const char* head, byte buttons,
|
||||
TEdit_field& f, TToken_string& sibling)
|
||||
TEdit_field& f, TToken_string& sibling, CONTROL_HANDLER custom_filter_handler)
|
||||
: TCursor_sheet(cursor, fields, title, head, buttons,
|
||||
f.browse() ? f.browse()->input_fields()+1 : 1),
|
||||
_field(f), _sel(0), _original_filter(cursor->filter())
|
||||
_field(f), _sel(0), _original_filter(cursor->filter()),
|
||||
_custom_filter_handler(custom_filter_handler)
|
||||
|
||||
{
|
||||
const bool normal = f.browse() != NULL && sibling.full();
|
||||
|
||||
@ -1909,14 +1911,14 @@ TBrowse_sheet::TBrowse_sheet(TCursor* cursor, const char* fields,
|
||||
const int sz = csize > 50 ? 50 : csize; // Dimensione del campo di ricerca
|
||||
e = &add_string(c.dlg(), 0, p, 1, y++, csize, flags, sz);
|
||||
// Aggiunge campo con le icone di filtraggio
|
||||
add_checkbutton(c.dlg()+500, 0, "", sz+p.len()+ 2, y-1, 2, 1, "", 10112, 10113).set_handler(filter_handler);
|
||||
add_checkbutton(c.dlg()+500, 0, "", sz+p.len()+ 2, y-1, 2, 1, "", 10112, 10113).set_handler(_custom_filter_handler != NULL ? _custom_filter_handler : filter_handler);
|
||||
}
|
||||
break;
|
||||
case CLASS_ZOOM_FIELD:
|
||||
{
|
||||
e = &add_string(c.dlg(), 0, p, 1, y++, 32000, flags, 50);
|
||||
// Aggiunge campo con le icone di filtraggio
|
||||
add_checkbutton(c.dlg()+500, 0, "", 52 + p.len(), y-1, 2, 1, "", 10112, 10113).set_handler(filter_handler);
|
||||
add_checkbutton(c.dlg()+500, 0, "", 52 + p.len(), y-1, 2, 1, "", 10112, 10113).set_handler(_custom_filter_handler != NULL ? _custom_filter_handler : filter_handler);
|
||||
}
|
||||
break;
|
||||
case CLASS_REAL_FIELD:
|
||||
|
@ -232,7 +232,9 @@ class TBrowse_sheet : public TCursor_sheet
|
||||
|
||||
// @cmember:(INTERNAL) Campo di ricerca attuale (Tag button selezionato)
|
||||
int _sel;
|
||||
|
||||
|
||||
CONTROL_HANDLER _custom_filter_handler;
|
||||
|
||||
// long _select_row;
|
||||
|
||||
// @access Protected Member
|
||||
@ -247,7 +249,6 @@ protected:
|
||||
|
||||
void create_key_selector(TToken_string& ca);
|
||||
void update_key_selector(int sel);
|
||||
void add_custom_filter(const char* regexp);
|
||||
|
||||
static bool browse_field_handler(TMask_field& f, KEY k);
|
||||
static bool last_browse_field_handler(TMask_field& f, KEY k);
|
||||
@ -255,8 +256,12 @@ protected:
|
||||
|
||||
// @access Public Member
|
||||
public:
|
||||
void add_custom_filter(const char* regexp);
|
||||
void set_custom_filter_handler(CONTROL_HANDLER custom_filter_handler) { _custom_filter_handler = custom_filter_handler;}
|
||||
|
||||
|
||||
// @cmember Costruttore
|
||||
TBrowse_sheet(TCursor* cursor, const char* fields, const char* title, const char* head, byte buttons, TEdit_field& f, TToken_string& siblings);
|
||||
TBrowse_sheet(TCursor* cursor, const char* fields, const char* title, const char* head, byte buttons, TEdit_field& f, TToken_string& siblings,CONTROL_HANDLER custom_filter_handler = NULL);
|
||||
// @cmember Distruttore
|
||||
virtual ~TBrowse_sheet()
|
||||
{}
|
||||
|
@ -401,6 +401,7 @@ class TTipo_riga_documento : public TRectype // velib02
|
||||
int _search_years;
|
||||
int _max_rows_art;
|
||||
bool _no_desc;
|
||||
bool _extended_desc_search;
|
||||
TToken_string _search_active_docs;
|
||||
TToken_string _fields_to_update;
|
||||
TToken_string _field_list;
|
||||
@ -439,6 +440,7 @@ public:
|
||||
const TToken_string& search_nums() const { return _search_nums;}
|
||||
const int max_rows_art() const { return _max_rows_art;}
|
||||
bool no_desc() const { return _no_desc;}
|
||||
bool extended_desc_search() const { return _extended_desc_search;}
|
||||
TToken_string& search_active_docs() { return _search_active_docs;}
|
||||
TToken_string& fields_to_update() { return _fields_to_update;}
|
||||
TToken_string& field_list() { return _field_list;}
|
||||
|
@ -75,6 +75,7 @@ void TTipo_riga_documento::read_formule()
|
||||
_select_clifo = profile.get_bool("SELCLIFO", NULL, -1, true);
|
||||
_no_desc = profile.get_bool("NODESC");
|
||||
_formule = profile.get("CAMPICALC");
|
||||
_extended_desc_search = profile.get_bool("EXTDESCSRC");
|
||||
|
||||
const TString& calcoli = profile.get("CALCOLI");
|
||||
if (calcoli == "*")
|
||||
|
@ -1154,6 +1154,26 @@ bool TDocumento_mask::new_mask(int numriga) const
|
||||
return _maskriga.objptr(name) == NULL;
|
||||
}
|
||||
|
||||
static bool descr_filter_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
TString expr;
|
||||
if (!f.get().empty()) // Filtro attivato!
|
||||
{
|
||||
const short id = f.dlg()-500;
|
||||
TString e = f.mask().get(id); // Espressione regolare
|
||||
e.strip("\"'"); // Tolgo caratteri che potrebbero dare problemi
|
||||
if (!e.blank())
|
||||
expr << "(DESCR+DESCRAGG)" << "?=\"" << e << '"';
|
||||
if (expr.empty())
|
||||
f.reset();
|
||||
}
|
||||
((TBrowse_sheet&) f.mask()).add_custom_filter(expr);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
TVariable_mask* TDocumento_mask::riga_mask(int numriga)
|
||||
{
|
||||
const TRiga_documento& riga = doc()[numriga + 1];
|
||||
@ -1177,7 +1197,7 @@ TVariable_mask* TDocumento_mask::riga_mask(int numriga)
|
||||
|
||||
m->lfield(FR_TIPORIGA).replace_items(codes, values);
|
||||
|
||||
const int pos = m->id2pos(FR_CODART);
|
||||
int pos = m->id2pos(FR_CODART);
|
||||
if (pos >= 0)
|
||||
{
|
||||
const TMask_field & f = m->fld(pos);
|
||||
@ -1222,6 +1242,27 @@ TVariable_mask* TDocumento_mask::riga_mask(int numriga)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tiporiga.extended_desc_search())
|
||||
{
|
||||
pos = m->id2pos(FR_DESCRART);
|
||||
if (pos >= 0)
|
||||
{
|
||||
const TMask_field & f = m->fld(pos);
|
||||
if (f.is_edit())
|
||||
{
|
||||
TBrowse * browse = ((TEdit_field &) f).browse();
|
||||
|
||||
if (browse )
|
||||
{
|
||||
TRelation * r = new TRelation(LF_ANAMAG);
|
||||
TSorted_cursor * c = new TSorted_cursor(r,ANAMAG_DESCR "|" ANAMAG_DESCRAGG, "", 2);
|
||||
|
||||
browse->set_cursor(c);
|
||||
browse->set_custom_filter_handler(descr_filter_handler);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
m->set_handler(FR_QTAEVASA, qta_evasa_handler);
|
||||
m->set_handler(FR_CAUS, causmag_handler);
|
||||
|
||||
|
@ -1663,7 +1663,11 @@ bool codart_handler(TMask_field& f, KEY key )
|
||||
|
||||
const TString& descest = anamag.get("DESCRAGG");
|
||||
if (descest.not_empty())
|
||||
desc << "\n" << descest;
|
||||
{
|
||||
if (!mask.doc()[current_doc_row].tipo().extended_desc_search())
|
||||
desc << "\n";
|
||||
desc << descest;
|
||||
}
|
||||
|
||||
if (!mask.doc()[current_doc_row].tipo().no_desc())
|
||||
row_mask.set(FR_DESCR, desc);
|
||||
@ -2018,15 +2022,29 @@ bool um_handler( TMask_field& f, KEY key )
|
||||
|
||||
bool descr_handler( TMask_field& f, KEY key )
|
||||
{
|
||||
if (key == K_TAB && f.focusdirty() && f.mask().is_running())
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
const TString& s = f.get();
|
||||
if (s.find('\n') < 0)
|
||||
TMask& row_mask = f.mask( );
|
||||
TSheet_field& sh = *row_mask.get_sheet();
|
||||
TDocumento_mask & mask = (TDocumento_mask &)sh.mask();
|
||||
const TTipo_riga_documento & t = mask.doc()[sh.selected() + 1].tipo();
|
||||
|
||||
if (t.extended_desc_search())
|
||||
{
|
||||
TLocalisamfile& anamag = ((TEdit_field&)f).browse()->cursor()->file();
|
||||
if (s == anamag.get(ANAMAG_DESCR))
|
||||
f.mask().set(FR_CODART, anamag.get(ANAMAG_CODART), 3);
|
||||
f.mask().set(FR_CODART, anamag.get(ANAMAG_CODART), 3);
|
||||
}
|
||||
else
|
||||
if (f.mask().is_running())
|
||||
{
|
||||
const TString& s = f.get();
|
||||
if (s.find('\n') < 0)
|
||||
{
|
||||
TLocalisamfile& anamag = ((TEdit_field&)f).browse()->cursor()->file();
|
||||
if (s == anamag.get(ANAMAG_DESCR))
|
||||
f.mask().set(FR_CODART, anamag.get(ANAMAG_CODART), 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -2805,53 +2823,50 @@ bool gen_livelli_handler(TMask_field& f, KEY key )
|
||||
const TRectype & anamag = cache().get(LF_ANAMAG, codart);
|
||||
const int items = str->items();
|
||||
|
||||
if (anamag.get_bool(ANAMAG_ARTPROD))
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
for (int i = 0; i < items; i++)
|
||||
const TString & name = str->get(i);
|
||||
if (name.starts_with("PROG"))
|
||||
{
|
||||
const TString & name = str->get(i);
|
||||
if (name.starts_with("PROG"))
|
||||
{
|
||||
TTable mat(format("VE%1d", livello + 1));
|
||||
const int chars = atoi(name.after("PROG"));
|
||||
TTable mat(format("VE%1d", livello + 1));
|
||||
const int chars = atoi(name.after("PROG"));
|
||||
|
||||
mat.put("CODTAB", code);
|
||||
if (mat.read(_isequal) != NOERR)
|
||||
{
|
||||
mat.zero();
|
||||
mat.put("CODTAB", code);
|
||||
if (mat.read(_isequal) != NOERR)
|
||||
{
|
||||
mat.zero();
|
||||
mat.put("CODTAB", code);
|
||||
mat.write();
|
||||
}
|
||||
const int prog = mat.get_int("I0") + 1;
|
||||
mat.put("I0", prog);
|
||||
mat.rewrite();
|
||||
TString s; s << prog; s.lpad(chars, '0');
|
||||
code << s;
|
||||
mat.write();
|
||||
}
|
||||
const int prog = mat.get_int("I0") + 1;
|
||||
mat.put("I0", prog);
|
||||
mat.rewrite();
|
||||
TString s; s << prog; s.lpad(chars, '0');
|
||||
code << s;
|
||||
}
|
||||
else
|
||||
if (name.starts_with("33."))
|
||||
{
|
||||
TFieldref fld(name.after("33."), LF_DOC);
|
||||
|
||||
code << fld.read(d);
|
||||
}
|
||||
else
|
||||
if (name.starts_with("33."))
|
||||
if (name.starts_with("34."))
|
||||
{
|
||||
TFieldref fld(name.after("33."), LF_DOC);
|
||||
|
||||
code << fld.read(d);
|
||||
TFieldref fld(name.after("34."), LF_RIGHEDOC);
|
||||
|
||||
code << fld.read(r);
|
||||
}
|
||||
else
|
||||
if (name.starts_with("34."))
|
||||
if (name.starts_with("47."))
|
||||
{
|
||||
TFieldref fld(name.after("34."), LF_RIGHEDOC);
|
||||
TFieldref fld(name.after("47."), LF_ANAMAG);
|
||||
|
||||
code << fld.read(r);
|
||||
code << fld.read(anamag);
|
||||
}
|
||||
else
|
||||
if (name.starts_with("47."))
|
||||
{
|
||||
TFieldref fld(name.after("47."), LF_ANAMAG);
|
||||
|
||||
code << fld.read(anamag);
|
||||
}
|
||||
}
|
||||
row_mask.set(f.dlg(), code, 0x3);
|
||||
}
|
||||
row_mask.set(f.dlg(), code, 0x3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user