Patch level : 10.0 652

Files correlati     : cg0.exe ve0. exe ve2.exe
Ricompilazione Demo : [ ]
Commento            :

Bug  	0001567: Gruppi codice articoli avanzato

1)Nella codifica della composizione delle parti aggiungere la possibilità di variare le etichette a seconda della tipologia di materiale.
2) Rendere inoltre opzionale l'utilizzo o meno della descrizione del gruppo, nella costruzione automatica della descrizione dell'articolo(creazione codice guidato).

Gli oggetti legati alle angarafiche non vengono salvati correttamente se vengono acquisti (copiati)
Modifica a livello di liberia


git-svn-id: svn://10.65.10.50/trunk@20161 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2010-02-24 22:59:50 +00:00
parent 94591f4f83
commit 0b4de4f0f5
5 changed files with 58 additions and 32 deletions

View File

@ -419,6 +419,7 @@ bool TGolem_field::autosave(TRelation& r)
{ {
char ext[_MAX_EXT]; char ext[_MAX_EXT];
xvt_fsys_parse_pathname(new_file, NULL, NULL, NULL, ext, NULL); xvt_fsys_parse_pathname(new_file, NULL, NULL, NULL, ext, NULL);
golem_path << SLASH;
old_file.temp(golem_path, ext); old_file.temp(golem_path, ext);
fcopy(new_file, old_file); fcopy(new_file, old_file);

View File

@ -1378,6 +1378,12 @@ const TFilename& TFilename::temp(
mask.tempdir(); mask.tempdir();
if (prefix && *prefix) if (prefix && *prefix)
{ {
bool has_path = false;
for (const char *s = prefix; !has_path && *s; s++)
has_path = *s ==':' || is_slash(*s);
if (has_path)
mask = prefix;
else
mask.add(prefix); mask.add(prefix);
mask << '*'; mask << '*';
} }
@ -2125,4 +2131,4 @@ TToken_string& get_tmp_string(int len)
if (++next >= ararar.size()) if (++next >= ararar.size())
next = 0; next = 0;
return *str; return *str;
} }

View File

@ -4,6 +4,7 @@
#define F_FORMLIV 103 #define F_FORMLIV 103
#define F_CODGROUP 104 #define F_CODGROUP 104
#define F_DESGROUP 105 #define F_DESGROUP 105
#define F_ADDDESCR 106
#define F_ROOT 197 #define F_ROOT 197
#define F_FORMAT 198 #define F_FORMAT 198
#define F_FORMATLEN 199 #define F_FORMATLEN 199

View File

@ -91,6 +91,12 @@ BEGIN
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
BOOLEAN F_ADDDESCR
BEGIN
PROMPT 65 5 "In descrizione"
FIELD B0
END
GROUPBOX DLG_NULL 75 10 GROUPBOX DLG_NULL 75 10
BEGIN BEGIN
PROMPT 1 6 "@bSottolivelli" PROMPT 1 6 "@bSottolivelli"
@ -155,8 +161,8 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 3 GROUP 3
FLAGS "GU" FLAGS "GU"
MESSAGE EMPTY CLEAR,F_CHILD3|CLEAR,F_SEPDES2|CLEAR,F_ORD2 MESSAGE EMPTY CLEAR,F_CHILD3|CLEAR,F_SEPDES2|CLEAR,F_ORD2|CLEAR,F_DESCR2
MESSAGE ENABLE,F_CHILD3|ENABLE,F_SEPDES2|ENABLE,F_ORD2 MESSAGE ENABLE,F_CHILD3|ENABLE,F_SEPDES2|ENABLE,F_ORD2|ENABLE,F_DESCR2
END END
STRING F_FORMAT2 20 10 STRING F_FORMAT2 20 10
@ -169,7 +175,7 @@ END
STRING F_DESCR2 50 33 STRING F_DESCR2 50 33
BEGIN BEGIN
PROMPT 28 8 "" PROMPT 28 8 ""
FLAGS "D" FIELD S3[1,10]
GROUP 3 GROUP 3
END END
@ -201,8 +207,8 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 3 GROUP 3
FLAGS "GU" FLAGS "GU"
MESSAGE EMPTY CLEAR,F_CHILD4|CLEAR,F_SEPDES3|CLEAR,F_ORD3 MESSAGE EMPTY CLEAR,F_CHILD4|CLEAR,F_SEPDES3|CLEAR,F_ORD3|CLEAR,F_DESCR3
MESSAGE ENABLE,F_CHILD4|ENABLE,F_SEPDES3|ENABLE,F_ORD3 MESSAGE ENABLE,F_CHILD4|ENABLE,F_SEPDES3|ENABLE,F_ORD3|ENABLE,F_DESCR3
END END
STRING F_FORMAT3 20 10 STRING F_FORMAT3 20 10
@ -215,7 +221,7 @@ END
STRING F_DESCR3 50 33 STRING F_DESCR3 50 33
BEGIN BEGIN
PROMPT 28 9 "" PROMPT 28 9 ""
FLAGS "D" FIELD S3[11,20]
GROUP 3 GROUP 3
END END
@ -247,22 +253,21 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 3 GROUP 3
FLAGS "GU" FLAGS "GU"
MESSAGE EMPTY CLEAR,F_CHILD5|CLEAR,F_SEPDES4|CLEAR,F_ORD4 MESSAGE EMPTY CLEAR,F_CHILD5|CLEAR,F_SEPDES4|CLEAR,F_ORD4|CLEAR,F_DESCR4
MESSAGE ENABLE,F_CHILD5|ENABLE,F_SEPDES4|ENABLE,F_ORD4 MESSAGE ENABLE,F_CHILD5|ENABLE,F_SEPDES4|ENABLE,F_ORD4|ENABLE,F_DESCR4
END END
STRING F_FORMAT4 20 10 STRING F_FORMAT4 20 10
BEGIN BEGIN
PROMPT 16 10 "" PROMPT 16 10 ""
GROUP 319,2 GROUP 3
FLAGS "D" FLAGS "D"
END END
STRING F_DESCR4 50 33 STRING F_DESCR4 50 33
BEGIN BEGIN
PROMPT 28 10 "" PROMPT 28 10 ""
FLAGS "D" FIELD S3[21,30]
GROUP 3 GROUP 3
END END
@ -270,7 +275,6 @@ STRING F_SEPDES4 6
BEGIN BEGIN
PROMPT 62 10 "S." PROMPT 62 10 "S."
GROUP 3 GROUP 3
FLAGS "D"
FIELD S2[19,24] FIELD S2[19,24]
END END
@ -294,8 +298,8 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 3 GROUP 3
FLAGS "GU" FLAGS "GU"
MESSAGE EMPTY CLEAR,F_CHILD6|CLEAR,F_SEPDES5|CLEAR,F_ORD5 MESSAGE EMPTY CLEAR,F_CHILD6|CLEAR,F_SEPDES5|CLEAR,F_ORD5|CLEAR,F_DESCR5
MESSAGE ENABLE,F_CHILD6|ENABLE,F_SEPDES5|ENABLE,F_ORD5 MESSAGE ENABLE,F_CHILD6|ENABLE,F_SEPDES5|ENABLE,F_ORD5|ENABLE,F_DESCR5
END END
STRING F_FORMAT5 20 10 STRING F_FORMAT5 20 10
@ -308,7 +312,7 @@ END
STRING F_DESCR5 50 33 STRING F_DESCR5 50 33
BEGIN BEGIN
PROMPT 28 11 "" PROMPT 28 11 ""
FLAGS "D" FIELD S3[31,40]
GROUP 3 GROUP 3
END END
@ -340,8 +344,8 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 3 GROUP 3
FLAGS "GU" FLAGS "GU"
MESSAGE EMPTY CLEAR,F_CHILD7|CLEAR,F_SEPDES6|CLEAR,F_ORD6 MESSAGE EMPTY CLEAR,F_CHILD7|CLEAR,F_SEPDES6|CLEAR,F_ORD6|CLEAR,F_DESCR6
MESSAGE ENABLE,F_CHILD7|ENABLE,F_SEPDES6|ENABLE,F_ORD6 MESSAGE ENABLE,F_CHILD7|ENABLE,F_SEPDES6|ENABLE,F_ORD6|ENABLE,F_DESCR6
END END
STRING F_FORMAT6 20 10 STRING F_FORMAT6 20 10
@ -354,7 +358,7 @@ END
STRING F_DESCR6 50 33 STRING F_DESCR6 50 33
BEGIN BEGIN
PROMPT 28 12 "" PROMPT 28 12 ""
FLAGS "D" FIELD S3[41,50]
GROUP 3 GROUP 3
END END
@ -386,8 +390,8 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 3 GROUP 3
FLAGS "GU" FLAGS "GU"
MESSAGE EMPTY CLEAR,F_CHILD8|CLEAR,F_SEPDES7|CLEAR,F_ORD7 MESSAGE EMPTY CLEAR,F_CHILD8|CLEAR,F_SEPDES7|CLEAR,F_ORD7|CLEAR,F_DESCR7
MESSAGE ENABLE,F_CHILD8|ENABLE,F_SEPDES7|ENABLE,F_ORD7 MESSAGE ENABLE,F_CHILD8|ENABLE,F_SEPDES7|ENABLE,F_ORD7|ENABLE,F_DESCR7
END END
STRING F_FORMAT7 20 10 STRING F_FORMAT7 20 10
@ -400,7 +404,7 @@ END
STRING F_DESCR7 50 33 STRING F_DESCR7 50 33
BEGIN BEGIN
PROMPT 28 13 "" PROMPT 28 13 ""
FLAGS "D" FIELD S3[51,70]
GROUP 3 GROUP 3
END END
@ -431,8 +435,8 @@ BEGIN
FIELD S1[22,24] FIELD S1[22,24]
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 3 GROUP 3
MESSAGE EMPTY CLEAR,F_SEPDES8|CLEAR,F_ORD8 MESSAGE EMPTY CLEAR,F_SEPDES8|CLEAR,F_ORD8|CLEAR,F_DESCR8
MESSAGE ENABLE,F_SEPDES8|ENABLE,F_ORD8 MESSAGE ENABLE,F_SEPDES8|ENABLE,F_ORD8|ENABLE,F_DESCR8
FLAGS "GU" FLAGS "GU"
END END
@ -446,7 +450,7 @@ END
STRING F_DESCR8 50 33 STRING F_DESCR8 50 33
BEGIN BEGIN
PROMPT 28 14 "" PROMPT 28 14 ""
FLAGS "D" FIELD S3[61,70]
GROUP 3 GROUP 3
END END

View File

@ -32,7 +32,7 @@ static const TRectype& get_sublevel_info(const TString& code)
} }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Maschera dianamica per inserimento codici // Maschera dinamica per inserimento codici
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TCodart_mask : public TAutomask class TCodart_mask : public TAutomask
@ -40,6 +40,8 @@ class TCodart_mask : public TAutomask
static TCodice_articolo _restart; static TCodice_articolo _restart;
TString80 _children; TString80 _children;
TString80 _separators; TString80 _separators;
TString80 _prompts;
bool _add_descr;
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);
@ -52,6 +54,7 @@ public:
static void restart_with(const TString& cod) { _restart = cod; } static void restart_with(const TString& cod) { _restart = cod; }
const TString & get_descr_separator(const int level); const TString & get_descr_separator(const int level);
int get_descr_order(const int level); int get_descr_order(const int level);
const bool add_descr() { return _add_descr; }
TCodart_mask(); TCodart_mask();
}; };
@ -143,7 +146,14 @@ 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(30); TString80 prompt = fsa.get("S0");
if (level > 2)
{
TString16 gprompt = _prompts.mid((level - 3) * 10, 10);
if (gprompt.blank() || !gprompt.starts_with(gprompt))
prompt = gprompt;
}
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();
@ -186,6 +196,8 @@ bool TCodart_mask::build_children()
// Non usare qui un TString& children, altrimenti cambia sul piu' bello! // Non usare qui un TString& children, altrimenti cambia sul piu' bello!
_children = cache().get("GSA", code, "S1"); _children = cache().get("GSA", code, "S1");
_separators = cache().get("GSA", code, "S2"); _separators = cache().get("GSA", code, "S2");
_prompts = cache().get("GSA", code, "S3");
_add_descr = cache().get("GSA", code, "B0").full();
// Affetto la stringona S1 in sottocodici da 3 caratteri l'uno // Affetto la stringona S1 in sottocodici da 3 caratteri l'uno
for (int i = 0; i < 9; i++) for (int i = 0; i < 9; i++)
@ -237,19 +249,21 @@ bool advanced_codart_ask(TString& code, TString& desc)
{ {
int ord = 1000; int ord = 1000;
int el = -1; int el = -1;
for (id = 101; m.id2pos(id) >= 0; id++) const int start_id = m.add_descr() ? 101 : 102;
for (id = start_id; m.id2pos(id) >= 0; id++)
{ {
if (order[id - 101] < ord) if (order[id - start_id] < ord)
{ {
el = id - 101; el = id - start_id;
ord = order[el]; ord = order[el];
} }
} }
if (el >= 0) if (el >= 0)
{ {
const int dlg = el + 101; const int dlg = el + start_id;
order[el] = 1001; order[el] = 1001;
if (dlg > 101) if (dlg > start_id)
desc << m.get_descr_separator(el); desc << m.get_descr_separator(el);
desc << esc(m.get(dlg + 100)); desc << esc(m.get(dlg + 100));
} }