Patch level : 10.0

Files correlati     : ve0.exe ve0100b.msk ve0100d.msk
Ricompilazione Demo : [ ]
Commento            :
X Euroforesi
Corretta e migliorata gestione filtro per articoli in evasione ordini.
Aggiunta possibilita' di de/selezionare tutti i documenti
Riportata unità di misura in maschera evasione


git-svn-id: svn://10.65.10.50/branches/R_10_00@21397 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-01-05 13:33:02 +00:00
parent d46e00e5dd
commit d2db578b36
6 changed files with 199 additions and 144 deletions

View File

@ -1,6 +1,13 @@
#include "ve0100b1.h"
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_SELECT 2 2
BEGIN
PROMPT 1 1 "Tutti"
PICTURE TOOL_MULTISEL
END
#include <elabar.h>
ENDPAGE
@ -231,7 +238,7 @@ END
NUMBER F_QTA 13 5
BEGIN
PROMPT 51 8 "Qta' "
PROMPT 52 8 "Quantità "
GROUP GRP_ART
END

View File

@ -5,15 +5,10 @@
#include "velib.h"
#endif
#ifndef __CG2101_H
#include "../cg/cg2101.h"
#endif
#ifndef __CALIB01_H
#include "../ca/calib01.h"
#endif
class TLista_documenti : public TObject // velib04
{
TArray _documenti;

View File

@ -229,25 +229,25 @@ TConsegna_mask::TConsegna_mask(TConfig & c, int header_code, bool per_codice, bo
if (header_code == 1)
{
TString h;
h = "Quantita'\nconsegnata";
h = HR("Quantita'\nconsegnata");
s.set_column_header(S_QTARESIDUA, h);
s.sheet_mask().field(S_QTARESIDUA).set_prompt("Q.ta' consegnata");
s.sheet_mask().field(S_QTARESIDUA).set_prompt(PR("Q.ta' consegnata"));
h = "Quantita'\nda fatturare";
h = HR("Quantita'\nda fatturare");
s.set_column_header(S_QTADAEVADERE, h);
s.sheet_mask().field(S_QTADAEVADERE).set_prompt("Q.ta' da fatturare");
s.sheet_mask().field(S_QTADAEVADERE).set_prompt(PR("Q.ta' da fatturare"));
}
else
if (header_code == 2)
{
TString h;
h = "Residuo";
h = HR("Residuo");
s.set_column_header(S_QTARESIDUA, h);
s.sheet_mask().field(S_QTARESIDUA).set_prompt("Residuo ");
s.sheet_mask().field(S_QTARESIDUA).set_prompt(PR("Residuo "));
h = "Da evadere";
h = HR("Da evadere");
s.set_column_header(S_QTADAEVADERE, h);
s.sheet_mask().field(S_QTADAEVADERE).set_prompt("Da evadere ");
s.sheet_mask().field(S_QTADAEVADERE).set_prompt(PR("Da evadere "));
}
if (c.exist("CODAGG1"))
@ -345,11 +345,16 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
// params().set("QUANTITA", ZERO);
if (articolo.full())
{
m.show(F_UMQTA);
m.set(F_UMQTA, params().get("UM"));
m.show(F_QTA);
m.set(F_QTA, params().get("QUANTITA"));
}
else
{
m.hide(F_UMQTA);
m.hide(F_QTA);
}
ok = m.run() == K_ENTER;
if (ok)
@ -561,7 +566,6 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
{
const TString4 um(inrec.get(RDOC_UMQTA));
const real qta = inrec.articolo().convert_to_um(daeva, params().get("UM"), um);
params().set("QUANTITA", params().get_real("QUANTITA") - qta);
}

View File

@ -33,5 +33,6 @@
#define F_RAGFOR 214
#define F_CODVAL 215
#define F_CAMBIO 216
#define F_QTA 217
#define F_UMQTA 217
#define F_QTA 218
#define F_ROWS 250

View File

@ -152,6 +152,12 @@ BEGIN
FLAGS "D"
END
STRING F_UMQTA 2
BEGIN
PROMPT 40 7 "U.M. "
FLAG "DU"
END
NUMBER F_CAMBIO 15 5
BEGIN
PROMPT 52 6 "Cambio "
@ -161,7 +167,7 @@ END
NUMBER F_QTA 13 5
BEGIN
PROMPT 52 7 "Qta' "
PROMPT 52 7 "Quantità "
FLAGS "D"
END

View File

@ -2,6 +2,8 @@
#include <dongle.h>
#include <execp.h>
#include <modaut.h>
#include <multirel.h>
#include <occas.h>
#include <postman.h>
#include <recset.h>
#include <smartcard.h>
@ -22,10 +24,8 @@
#include "veuml1.h"
#include "veini.h"
#include <multirel.h>
#include "../cg/cfban.h"
#include "../ca/cfcms.h"
#include <occas.h>
#include "rcondv.h"
#include "sconti.h"
@ -44,9 +44,7 @@ public:
};
bool TOriginal_row_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
return true;
}
{ return true; }
bool TOriginal_row_mask::on_key(KEY key)
{
@ -175,7 +173,7 @@ TDocumento_mask::TDocumento_mask(const char* td)
const short pos = _sheet->cid2index(FR_LIV1 + i -1);
if (_livelli_giac->enabled(i))
{
const TString & header = _livelli_giac->name(i);
const TString& header = _livelli_giac->name(i);
const int len = header.len() + 1;
const int f_len = _livelli_giac->code_length(i);
_sheet->set_column_header(pos, header);
@ -2343,6 +2341,46 @@ TLista_elaborazioni::~TLista_elaborazioni()
delete _elab;
}
///////////////////////////////////////////////////////////
// Filtro per articolo
///////////////////////////////////////////////////////////
static TCodice_articolo _art_filter;
static bool rdoc_article_filter(const TRectype& rdoc)
{
bool good = rdoc.get(RDOC_CODART) == _art_filter;
if (good)
good = !rdoc.get_bool(RDOC_RIGAEVASA);
return good;
}
static bool doc_article_filter(const TRelation* rel)
{
bool yes = false;
const TRectype& doc = rel->curr();
TLocalisamfile rdoc(LF_RIGHEDOC); rdoc.setkey(5);
rdoc.put(RDOC_CODART, _art_filter);
rdoc.put(RDOC_CODNUM, doc.get(DOC_CODNUM));
rdoc.put(RDOC_ANNO, doc.get(DOC_ANNO));
rdoc.put(RDOC_PROVV, doc.get(DOC_PROVV));
rdoc.put(RDOC_NDOC, doc.get(DOC_NDOC));
for (int err = rdoc.read(); err == NOERR; err = rdoc.next())
{
const TString& codart = rdoc.get(RDOC_CODART);
if (codart != _art_filter || rdoc.get(RDOC_NDOC) != doc.get(DOC_NDOC))
break;
if (rdoc_article_filter(rdoc.curr()))
{
yes = true;
break;
}
}
return yes;
}
///////////////////////////////////////////////////////////
// TDocument_tree
///////////////////////////////////////////////////////////
@ -2355,7 +2393,6 @@ class TDocument_tree : public TBidirectional_tree
bool _multiple_selection;
TAssoc_array _selected_docs;
TString _selected;
protected:
virtual void node2id(const TObject* node, TString& id) const;
@ -2370,6 +2407,8 @@ public:
bool multiple_selection() const { return _multiple_selection;}
bool node_selected(const TObject* node = NULL) const;
void select_node(const TObject* node = NULL, bool on = true);
bool toggle_all_nodes();
real select_doc(long numdoc);
void build_doc_list(TLista_documenti & docs);
void unselect_node(const TObject* node) { select_node(node, false);}
@ -2377,6 +2416,7 @@ public:
virtual bool goto_firstson();
virtual bool goto_rbrother();
virtual bool goto_node(const TString &id);
virtual bool could_have_son() const;
virtual bool has_son() const;
virtual bool has_rbrother() const;
virtual bool has_father() const;
@ -2395,7 +2435,7 @@ public:
const TRectype& record() const;
const real totale_doc() const { TDocumento d(testata()); return d.totale_doc();}
void set_cursor(char tipocf, long codcf, int anno, const char* filter, FILTERFUNCTION ff = NULL);
void set_cursor(char tipocf, long codcf, int anno, const char* filter);
TCursor* get_cursor() { return _cursor; }
TDocument_tree();
@ -2468,11 +2508,10 @@ bool TDocument_tree::node_selected(const TObject* node) const
void TDocument_tree::select_node(const TObject* node, bool on)
{
TToken_string id;
if (node == NULL)
node = curr_node();
TToken_string id;
node2id(node, id);
id = id.get(0);
if (on)
@ -2482,10 +2521,23 @@ void TDocument_tree::select_node(const TObject* node, bool on)
select(id);
}
bool find_doc(TTree& tree, void* jolly, word flags)
bool TDocument_tree::toggle_all_nodes()
{
TDocument_tree & t = (TDocument_tree &) tree;
if (!t.node_selected() && t.testata().get_long(DOC_NDOC) == *((long *) jolly))
bool on = _selected_docs.empty() && _multiple_selection;
_selected_docs.destroy();
if (on)
{
for (bool ok = goto_root(); ok; ok = goto_rbrother())
select_node(NULL, on);
on = !_selected_docs.empty();
}
return on;
}
static bool find_doc(TTree& tree, void* jolly, word flags)
{
TDocument_tree& t = (TDocument_tree&)tree;
if (!t.node_selected() && t.testata().get_long(DOC_NDOC) == *((long*)jolly))
{
t.select_node();
return true;
@ -2496,13 +2548,12 @@ bool find_doc(TTree& tree, void* jolly, word flags)
real TDocument_tree::select_doc(long numdoc)
{
real val;
if (goto_root())
if (scan_depth_first(find_doc, (void *) &numdoc, SCAN_PRE_ORDER | SCAN_IGNORING_LEAVES))
val = totale_doc();
if (goto_root() && scan_depth_first(find_doc, &numdoc, SCAN_PRE_ORDER | SCAN_IGNORING_LEAVES))
val = totale_doc();
return val;
}
bool add_to_list(TTree& tree, void* jolly, word flags)
static bool add_to_list(TTree& tree, void* jolly, word flags)
{
TDocument_tree & t = (TDocument_tree &) tree;
if (t.node_selected())
@ -2514,10 +2565,9 @@ bool add_to_list(TTree& tree, void* jolly, word flags)
}
void TDocument_tree::build_doc_list(TLista_documenti & docs)
{
if (goto_root())
scan_depth_first(add_to_list, (void *) &docs, SCAN_PRE_ORDER | SCAN_IGNORING_LEAVES);
scan_depth_first(add_to_list, &docs, SCAN_PRE_ORDER | SCAN_IGNORING_LEAVES);
}
bool TDocument_tree::goto_root()
@ -2528,14 +2578,24 @@ bool TDocument_tree::goto_root()
return ok;
}
// Fundamental method working also when _art_filter.full()
bool TDocument_tree::goto_firstson()
{
bool ok = has_son();
if (ok)
_curnode.add(1,1);
{
int nriga = 1;
if (_art_filter.full())
{
const TRectype& rec = _relation->curr(LF_RIGHEDOC);
nriga = rec.get_int(RDOC_NRIGA);
}
_curnode.add(nriga,1);
}
return ok;
}
// Fundamental method working also when _art_filter.full()
bool TDocument_tree::goto_rbrother()
{
bool ok = has_rbrother();
@ -2558,60 +2618,78 @@ bool TDocument_tree::goto_rbrother()
bool TDocument_tree::goto_node(const TString &id)
{
_curnode = id;
return TRUE;
return true;
}
// Drawing speedup
bool TDocument_tree::could_have_son() const
{ return on_head(); }
// Fundamental method working also when _art_filter.full()
bool TDocument_tree::has_son() const
{
bool ok = on_head();
bool ok = could_have_son();
if (ok)
{
testata();
const TRectype& rec = _relation->curr(LF_RIGHEDOC);
ok = rec.get_int(RDOC_NRIGA) > 0;
if (_art_filter.full())
{
ok = rdoc_article_filter(rec);
while (!ok && _relation->next_match(LF_RIGHEDOC))
ok = rdoc_article_filter(rec);
}
}
return ok;
}
// Fundamental method working also when _art_filter.full()
bool TDocument_tree::has_rbrother() const
{
bool ok = FALSE;
bool ok = false;
if (on_head())
{
TDocument_tree& me = (TDocument_tree&)*this;
const long pos = me._curnode.get_long(0);
long pos = 0; _curnode.get(0, pos);
ok = pos < _cursor->items()-1;
}
else
{
riga(); // Posizionati sulla riga corrente
ok = _relation->next_match(LF_RIGHEDOC);
if (_art_filter.full())
{
const TRectype& rec = _relation->curr(LF_RIGHEDOC);
while (!ok && _relation->next_match(LF_RIGHEDOC))
ok = rdoc_article_filter(rec);
}
else
ok = _relation->next_match(LF_RIGHEDOC);
}
return ok;
}
// Pleonastic method working also when _art_filter.full()
bool TDocument_tree::has_father() const
{
return on_row();
}
{ return on_row(); }
// Pleonastic method not working when _art_filter.full()
bool TDocument_tree::has_lbrother() const
{
bool ok = FALSE;
TDocument_tree& me = (TDocument_tree&)*this;
bool ok = false;
if (on_head())
{
const long pos = me._curnode.get_long(0);
long pos = 0; _curnode.get(0, pos);
ok = pos > 0L;
}
else
{
const int nriga = me._curnode.get_int(1);
int nriga = 0; _curnode.get(1, nriga);
ok = nriga > 1;
}
return ok;
}
// Pleonastic method not working when _art_filter.full()
bool TDocument_tree::goto_father()
{
bool ok = on_row();
@ -2620,6 +2698,7 @@ bool TDocument_tree::goto_father()
return ok;
}
// Pleonastic method not working when _art_filter.full()
bool TDocument_tree::goto_lbrother()
{
bool ok = has_lbrother();
@ -2755,10 +2834,10 @@ bool TDocument_tree::get_description(TString& str) const
append_custom_fields(tipo, rec, str);
}
}
return TRUE;
return true;
}
void TDocument_tree::set_cursor(char tipocf, long codcf, int anno, const char* filter, FILTERFUNCTION ff)
void TDocument_tree::set_cursor(char tipocf, long codcf, int anno, const char* filter)
{
if (_relation == NULL)
{
@ -2779,20 +2858,23 @@ void TDocument_tree::set_cursor(char tipocf, long codcf, int anno, const char* f
_cursor->setfilter(""); // Force cursor rebuild
_cursor->setfilter(filter);
_cursor->setregion(rec, rec);
_cursor->set_filterfunction(ff);
const long items = _cursor->items();
if (_art_filter.full())
_cursor->set_filterfunction(doc_article_filter);
else
_cursor->set_filterfunction(NULL);
const long items = _cursor->items();
_cursor->freeze(true);
goto_root();
if (items <= 3)
if (items == 1)
expand_all();
}
TDocument_tree::TDocument_tree()
: _relation(NULL), _cursor(NULL), _multiple_selection(false)
{
}
{ }
TDocument_tree::~TDocument_tree()
{
@ -2817,10 +2899,6 @@ class TElabora_mask : public TAutomask
// @access Protected Member
protected:
TString _art_filter, _liv_filter;
static TElabora_mask* _myself;
static bool article_filter(const TRelation* rel);
void add_valuta_filter(TString& filter) const;
void docrif_search();
@ -2840,8 +2918,6 @@ public:
virtual ~TElabora_mask() {}
};
TElabora_mask* TElabora_mask::_myself = NULL;
bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
@ -2862,14 +2938,15 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
if (ne == 0)
set(F_TYPE, "");
}
update_ndoc_filter(TRUE);
update_ndoc_filter(true);
const bool add_to_doc = o.get().not_empty();
TElaborazione * e = curr_elab();
TElaborazione * e = curr_elab();
const bool external = e != NULL && e->tipo() == _esterna;
const bool is_search = o.get().empty() || field(F_CODCF_ELAB).empty() || external || add_to_doc;
o.mask().field(F_NDOC_ELAB).check_type(is_search ? CHECK_SEARCH : CHECK_NORMAL);
_tree.multiple_selection(add_to_doc);
bool check_tot = false;
if (add_to_doc)
{
@ -2906,7 +2983,7 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
break;
case F_ELAB:
if (e == fe_modify)
update_ndoc_filter(TRUE);
update_ndoc_filter(true);
break;
case F_ANNO_ELAB:
if (e == fe_modify)
@ -2941,7 +3018,7 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
if (ndoc > 0L)
{
real val = _tree.select_doc(ndoc);
if (val != ZERO)
if (!val.is_zero())
{
val += o.mask().get_real(F_TOTSEL);
o.mask().set(F_TOTSEL, val);
@ -2950,10 +3027,9 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
}
break;
case F_ROWS:
if (e == fe_modify && is_running())
if (e == fe_modify && is_running())
{
TString id;
_tree.curr_id(id);
_tree.select(id);
if (is_running() && !_tree.multiple_selection())
@ -3001,13 +3077,10 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
if (!rec.empty())
{
TFilename tempfile;
tempfile.temp("ve0");
tempfile.ext("ini");
{
TConfig configfile(tempfile);
configfile.set("Action", "Modify", "Transaction");
configfile.set("NDOC", rec.get(DOC_NDOC), "33");
configfile.set(DOC_PROVV, rec.get(DOC_PROVV), "33");
@ -3026,10 +3099,30 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
}
}
break;
case DLG_SELECT:
if (e == fe_button)
{
TTree_field& tf = tfield(F_ROWS);
if (tf.active() && _tree.multiple_selection())
{
TWait_cursor hourglass;
const bool sel = _tree.toggle_all_nodes();
if (_check_fld > DLG_NULL)
{
real tot;
for (bool ok = _tree.goto_root(); ok && sel; ok = _tree.goto_rbrother())
tot += _tree.totale_doc();
set(_check_fld, tot.string());
}
tf.win().force_update();
}
return false;
}
break;
default:
break;
}
return TRUE;
return true;
}
int TElabora_mask::update_list()
@ -3162,7 +3255,6 @@ bool TElabora_mask::elabora()
}
}
delete newdoc;
}
else
{
@ -3216,22 +3308,6 @@ bool TElabora_mask::elabora()
set(F_NUMDOCRIF_ELAB, "");
((TDocumento_mask *)_main)->set_focus_field(F_SHEET);
}
/* if (e->tipo() == _consegna_ordini)
{
TParametri_elaborazione& p = e->params();
if (p.get("ARTICOLO").not_empty())
{
real qta = get_real(F_QTA);
if (qta > ZERO)
{
const real qta_evasa = p.get_real("QUANTITA");
qta -= qta_evasa;
set(F_QTA, qta);
}
}
} */
// delete newdoc;
// Azzera l'anno in caso di ordini
if (in.items() > 0 && in[0].is_ordine())
@ -3252,34 +3328,6 @@ TElaborazione * TElabora_mask::curr_elab()
return cod_elab.not_empty() ? &_elab[cod_elab] : NULL;
}
bool TElabora_mask::article_filter(const TRelation* rel)
{
bool yes = false;
TElabora_mask& m = *_myself;
TLocalisamfile rdoc(LF_RIGHEDOC);
rdoc.put(RDOC_CODNUM, rel->curr().get(DOC_CODNUM));
rdoc.put(RDOC_ANNO, rel->curr().get(DOC_ANNO));
rdoc.put(RDOC_PROVV, rel->curr().get(DOC_PROVV));
rdoc.put(RDOC_NDOC, rel->curr().get(DOC_NDOC));
rdoc.put(RDOC_NRIGA, 1);
int next_riga = 1;
for (int err = rdoc.read(); err == NOERR; err = rdoc.next())
{
const int nriga = rdoc.get_int(RDOC_NRIGA);
if (nriga != next_riga)
break;
next_riga++;
const bool evasa= rdoc.get_bool(RDOC_RIGAEVASA);
const TString& codart = rdoc.get(RDOC_CODART);
if (!evasa && codart == m._art_filter)
{
yes = true;
break;
}
}
return yes;
}
void TElabora_mask::add_valuta_filter(TString& filter) const
{
TString16 valuta = get(F_CODVAL_ELAB);
@ -3313,6 +3361,8 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
const bool enable_group_doc = e != NULL && e->tipo() != _generazione_effetti && e->tipo() != _contabilizzazione;
show(-GRP_DOC, enable_group_doc);
enable(DLG_SELECT, aggiungi_doc_att && enable_group_doc); // Attiva la selezione multipla se possibile
if (e != NULL)
{
if (aggiungi_doc_att)
@ -3332,16 +3382,16 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
const TString8 num_in = e->codice_numerazione_iniziale();
if (elab_changed)
{
const TString16 tipo_in(e->tipo_iniziale(0));
const TString4 tipo_in(e->tipo_iniziale(0));
const char stato_in = e->stato_iniziale(0);
set(F_CODNUM_ELAB, num_in);
field(F_CODNUM_ELAB).check();
set(F_TIPODOC_ELAB , tipo_in);
field(F_TIPODOC_ELAB).check();
set(F_CODNUM_ELAB, num_in, 0x2);
//field(F_CODNUM_ELAB).check(); // sostituito da 0x2
set(F_TIPODOC_ELAB , tipo_in, 0x2);
//field(F_TIPODOC_ELAB).check(); // sostituito da 0x2
TString8 si; si << stato_in;
set(F_STATODOC_ELAB, si);
field(F_STATODOC_ELAB).check();
set(F_STATODOC_ELAB, si, 0x2);
//field(F_STATODOC_ELAB).check(); // sostituito da 0x2
// Azzero anno di elaaborazione quando ho a che fare con degli ordini
const TTipo_documento& tipodocin = cached_tipodoc(tipo_in);
@ -3351,7 +3401,7 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
if (!field(F_TIPODOC_ELAB).empty())
{
const TString16 tipo(get(F_TIPODOC_ELAB));
const TString4 tipo(get(F_TIPODOC_ELAB));
TString80 td; td.format("&&(TIPODOC==\"%s\")", (const char *)tipo);
filter << td;
const TString& stato = get(F_STATODOC_ELAB);
@ -3361,11 +3411,11 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
}
else
{
bool almost_one = FALSE;
bool almost_one = false;
for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
{
const TString16 tipo_in(e->tipo_iniziale(i));
const TString4 tipo_in(e->tipo_iniziale(i));
const char stato_in = e->stato_iniziale(i);
if (tipo == tipo_in && stato_in > '0')
@ -3445,20 +3495,19 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
brew.set_filter(filter);
_art_filter = get(F_CODART);
if (!aggiungi_doc_att || _art_filter.blank())
_art_filter.cut(0);
TCursor* cursor = brew.cursor();
if (_art_filter.not_empty() && aggiungi_doc_att)
cursor->set_filterfunction(article_filter);
if (_art_filter.full() && aggiungi_doc_att)
cursor->set_filterfunction(doc_article_filter);
else
cursor->set_filterfunction(NULL);
TTree_field& tf = tfield(F_ROWS);
if (!field(F_TIPODOC_ELAB).empty() && e != NULL)
{
if (aggiungi_doc_att && _art_filter.not_empty())
_tree.set_cursor(get(F_TIPOCF_ELAB)[0], get_long(F_CODCF_ELAB), get_int(F_ANNO_ELAB), filter, article_filter);
else
_tree.set_cursor(get(F_TIPOCF_ELAB)[0], get_long(F_CODCF_ELAB), get_int(F_ANNO_ELAB), filter);
_tree.set_cursor(get(F_TIPOCF_ELAB)[0], get_long(F_CODCF_ELAB), get_int(F_ANNO_ELAB), filter);
tf.set_tree(&_tree);
TToken_string header(256, '\n');
@ -3469,13 +3518,8 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
else
header << " Quantità";
tf.set_header(header);
if (aggiungi_doc_att && _art_filter.full())
_tree.set_cursor(get(F_TIPOCF_ELAB)[0], get_long(F_CODCF_ELAB), get_int(F_ANNO_ELAB), filter, article_filter);
else
_tree.set_cursor(get(F_TIPOCF_ELAB)[0], get_long(F_CODCF_ELAB), get_int(F_ANNO_ELAB), filter);
if (aggiungi_doc_att) // GF20059
if (aggiungi_doc_att) // GF20059
{
TCursor& cur = *_tree.get_cursor();
if (cur.items() == 1) // Propone l'unico documento possibile
@ -3542,8 +3586,6 @@ void TElabora_mask::docrif_search()
TElabora_mask::TElabora_mask(TDocumento_mask& main_mask)
: TAutomask("ve0100b"), _main(&main_mask), _last_elab(NULL), _check_fld(-883)
{
_myself = this;
const TDate oggi(TODAY);
set(F_ANNO_ELAB, oggi.year()); //anno della datadoc proposta (risolve bug 0000331)
set(F_TIPOCF_ELAB, _main->get(F_TIPOCF));