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