Patch level : 4.0

Files correlati     : ve2
Ricompilazione Demo : [ ]
Commento            :
Corretta gestione codici articoli avanzati


git-svn-id: svn://10.65.10.50/trunk@15451 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2007-06-26 11:06:18 +00:00
parent 8208cb6728
commit aa1d73d431

View File

@ -37,22 +37,43 @@ static const TRectype& get_sublevel_info(const TString& code)
class TCodart_mask : public TAutomask
{
static TString4 _restart;
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void create_level(int level, const TString& subcode);
void rebuild();
void build_children();
public:
bool restart() const { return _restart.full(); }
TCodart_mask();
};
TString4 TCodart_mask::_restart;
bool TCodart_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case 101:
if (e == fe_modify) // Se cambio il contenuto del primo livello ...
rebuild(); // Ricostruisco la maschera
if (e == fe_init && restart())
{
o.set(_restart);
_restart.cut(0);
o.check(STARTING_CHECK);
e = fe_modify;
}
if (e == fe_modify) // Se cambio il contenuto del primo livello ...
{
if (id2pos(102) < 0)
build_children(); // Ricostruisco la maschera
else
{
_restart = o.get();
stop_run(K_FORCE_CLOSE);
}
}
break;
default:
break;
@ -66,7 +87,7 @@ void TCodart_mask::create_level(int level, const TString& subcode)
if (!fsa.empty())
{
const TString4 code = fsa.get("CODTAB"); // Puo' essere diverso da subcode!
TString80 prompt = fsa.get("S0"); prompt.left_just(21);
TString80 prompt = fsa.get("S0"); prompt.left_just(30);
const TString& picture = fsa.get("S1");
const int length = picture.len();
@ -101,17 +122,14 @@ void TCodart_mask::create_level(int level, const TString& subcode)
}
}
void TCodart_mask::rebuild()
void TCodart_mask::build_children()
{
TArray& a = fields_array();
int i = 0;
for (i = a.last(); i > 3; i--)
a.destroy(i);
TString8 code = root_code();
code << get(101);
const TString& children = cache().get("GSA", code, "S1");
for (i = 0; i < 8; i++)
for (int i = 0; i < 8; i++)
{
const TString& subcode = children.mid(i*3, 3);
if (subcode.full())
@ -132,19 +150,27 @@ TCodart_mask::TCodart_mask() : TAutomask(TR("Articolo guidato"), 1, 78, 13)
bool advanced_get_codart(TString& code, TString& desc)
{
TCodart_mask m;
const bool ok = m.run() == K_ENTER;
if (ok)
bool ok = false;
bool running = true;
while (running)
{
code.cut(0);
desc.cut(0);
for (short id = 101; m.id2pos(id) >= 0; id++)
TCodart_mask m;
ok = m.run() == K_ENTER;
if (ok)
{
code << m.get(id);
if (id == 102)
desc << ' ';
desc << m.get(id+100);
code.cut(0);
desc.cut(0);
for (short id = 101; m.id2pos(id) >= 0; id++)
{
code << m.get(id);
if (id == 102)
desc << ' ';
desc << m.get(id+100);
}
running = false;
}
else
running = m.restart();
}
return ok;
}
@ -168,6 +194,7 @@ bool advanced_codart_handler(TMask_field& fld, KEY key)
TMask& msk = fld.mask();
msk.set(F_DESCR, desc);
msk.set(F_CODART, code, true);
msk.field(F_CODART).set_focus();
}
}
return true;