From 0b4de4f0f5bc95f8dff7c75777762bd1a829df04 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 24 Feb 2010 22:59:50 +0000 Subject: [PATCH] Patch level : 10.0 652 Files correlati : cg0.exe ve0. exe ve2.exe Ricompilazione Demo : [ ] Commento : MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- include/golem.cpp | 1 + include/strings.cpp | 8 ++++++- mg/mgtbgsa.h | 1 + mg/mgtbgsa.uml | 52 ++++++++++++++++++++++++--------------------- ve/ve2401.cpp | 28 ++++++++++++++++++------ 5 files changed, 58 insertions(+), 32 deletions(-) diff --git a/include/golem.cpp b/include/golem.cpp index 48a668fef..858682822 100755 --- a/include/golem.cpp +++ b/include/golem.cpp @@ -419,6 +419,7 @@ bool TGolem_field::autosave(TRelation& r) { char ext[_MAX_EXT]; xvt_fsys_parse_pathname(new_file, NULL, NULL, NULL, ext, NULL); + golem_path << SLASH; old_file.temp(golem_path, ext); fcopy(new_file, old_file); diff --git a/include/strings.cpp b/include/strings.cpp index cbc926d7e..50215eba4 100755 --- a/include/strings.cpp +++ b/include/strings.cpp @@ -1378,6 +1378,12 @@ const TFilename& TFilename::temp( mask.tempdir(); 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 << '*'; } @@ -2125,4 +2131,4 @@ TToken_string& get_tmp_string(int len) if (++next >= ararar.size()) next = 0; return *str; -} \ No newline at end of file +} diff --git a/mg/mgtbgsa.h b/mg/mgtbgsa.h index 1e5b3abef..212b78f45 100755 --- a/mg/mgtbgsa.h +++ b/mg/mgtbgsa.h @@ -4,6 +4,7 @@ #define F_FORMLIV 103 #define F_CODGROUP 104 #define F_DESGROUP 105 +#define F_ADDDESCR 106 #define F_ROOT 197 #define F_FORMAT 198 #define F_FORMATLEN 199 diff --git a/mg/mgtbgsa.uml b/mg/mgtbgsa.uml index 7ed3f27c5..9708b1d3e 100755 --- a/mg/mgtbgsa.uml +++ b/mg/mgtbgsa.uml @@ -91,6 +91,12 @@ BEGIN CHECKTYPE REQUIRED END +BOOLEAN F_ADDDESCR +BEGIN + PROMPT 65 5 "In descrizione" + FIELD B0 +END + GROUPBOX DLG_NULL 75 10 BEGIN PROMPT 1 6 "@bSottolivelli" @@ -155,8 +161,8 @@ BEGIN CHECKTYPE NORMAL GROUP 3 FLAGS "GU" - MESSAGE EMPTY CLEAR,F_CHILD3|CLEAR,F_SEPDES2|CLEAR,F_ORD2 - MESSAGE ENABLE,F_CHILD3|ENABLE,F_SEPDES2|ENABLE,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|ENABLE,F_DESCR2 END STRING F_FORMAT2 20 10 @@ -169,7 +175,7 @@ END STRING F_DESCR2 50 33 BEGIN PROMPT 28 8 "" - FLAGS "D" + FIELD S3[1,10] GROUP 3 END @@ -201,8 +207,8 @@ BEGIN CHECKTYPE NORMAL GROUP 3 FLAGS "GU" - MESSAGE EMPTY CLEAR,F_CHILD4|CLEAR,F_SEPDES3|CLEAR,F_ORD3 - MESSAGE ENABLE,F_CHILD4|ENABLE,F_SEPDES3|ENABLE,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|ENABLE,F_DESCR3 END STRING F_FORMAT3 20 10 @@ -215,7 +221,7 @@ END STRING F_DESCR3 50 33 BEGIN PROMPT 28 9 "" - FLAGS "D" + FIELD S3[11,20] GROUP 3 END @@ -247,22 +253,21 @@ BEGIN CHECKTYPE NORMAL GROUP 3 FLAGS "GU" - MESSAGE EMPTY CLEAR,F_CHILD5|CLEAR,F_SEPDES4|CLEAR,F_ORD4 - MESSAGE ENABLE,F_CHILD5|ENABLE,F_SEPDES4|ENABLE,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|ENABLE,F_DESCR4 END STRING F_FORMAT4 20 10 BEGIN PROMPT 16 10 "" - GROUP 319,2 - + GROUP 3 FLAGS "D" END STRING F_DESCR4 50 33 BEGIN PROMPT 28 10 "" - FLAGS "D" + FIELD S3[21,30] GROUP 3 END @@ -270,7 +275,6 @@ STRING F_SEPDES4 6 BEGIN PROMPT 62 10 "S." GROUP 3 - FLAGS "D" FIELD S2[19,24] END @@ -294,8 +298,8 @@ BEGIN CHECKTYPE NORMAL GROUP 3 FLAGS "GU" - MESSAGE EMPTY CLEAR,F_CHILD6|CLEAR,F_SEPDES5|CLEAR,F_ORD5 - MESSAGE ENABLE,F_CHILD6|ENABLE,F_SEPDES5|ENABLE,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|ENABLE,F_DESCR5 END STRING F_FORMAT5 20 10 @@ -308,7 +312,7 @@ END STRING F_DESCR5 50 33 BEGIN PROMPT 28 11 "" - FLAGS "D" + FIELD S3[31,40] GROUP 3 END @@ -340,8 +344,8 @@ BEGIN CHECKTYPE NORMAL GROUP 3 FLAGS "GU" - MESSAGE EMPTY CLEAR,F_CHILD7|CLEAR,F_SEPDES6|CLEAR,F_ORD6 - MESSAGE ENABLE,F_CHILD7|ENABLE,F_SEPDES6|ENABLE,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|ENABLE,F_DESCR6 END STRING F_FORMAT6 20 10 @@ -354,7 +358,7 @@ END STRING F_DESCR6 50 33 BEGIN PROMPT 28 12 "" - FLAGS "D" + FIELD S3[41,50] GROUP 3 END @@ -386,8 +390,8 @@ BEGIN CHECKTYPE NORMAL GROUP 3 FLAGS "GU" - MESSAGE EMPTY CLEAR,F_CHILD8|CLEAR,F_SEPDES7|CLEAR,F_ORD7 - MESSAGE ENABLE,F_CHILD8|ENABLE,F_SEPDES7|ENABLE,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|ENABLE,F_DESCR7 END STRING F_FORMAT7 20 10 @@ -400,7 +404,7 @@ END STRING F_DESCR7 50 33 BEGIN PROMPT 28 13 "" - FLAGS "D" + FIELD S3[51,70] GROUP 3 END @@ -431,8 +435,8 @@ BEGIN FIELD S1[22,24] CHECKTYPE NORMAL GROUP 3 - MESSAGE EMPTY CLEAR,F_SEPDES8|CLEAR,F_ORD8 - MESSAGE ENABLE,F_SEPDES8|ENABLE,F_ORD8 + MESSAGE EMPTY CLEAR,F_SEPDES8|CLEAR,F_ORD8|CLEAR,F_DESCR8 + MESSAGE ENABLE,F_SEPDES8|ENABLE,F_ORD8|ENABLE,F_DESCR8 FLAGS "GU" END @@ -446,7 +450,7 @@ END STRING F_DESCR8 50 33 BEGIN PROMPT 28 14 "" - FLAGS "D" + FIELD S3[61,70] GROUP 3 END diff --git a/ve/ve2401.cpp b/ve/ve2401.cpp index 67ba87e58..d8d0c4bcb 100755 --- a/ve/ve2401.cpp +++ b/ve/ve2401.cpp @@ -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 @@ -40,6 +40,8 @@ class TCodart_mask : public TAutomask static TCodice_articolo _restart; TString80 _children; TString80 _separators; + TString80 _prompts; + bool _add_descr; protected: 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; } const TString & get_descr_separator(const int level); int get_descr_order(const int level); + const bool add_descr() { return _add_descr; } TCodart_mask(); }; @@ -143,7 +146,14 @@ 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(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 int length = picture.len(); @@ -186,6 +196,8 @@ bool TCodart_mask::build_children() // Non usare qui un TString& children, altrimenti cambia sul piu' bello! _children = cache().get("GSA", code, "S1"); _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 for (int i = 0; i < 9; i++) @@ -237,19 +249,21 @@ bool advanced_codart_ask(TString& code, TString& desc) { int ord = 1000; 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]; } } if (el >= 0) { - const int dlg = el + 101; + const int dlg = el + start_id; order[el] = 1001; - if (dlg > 101) + if (dlg > start_id) desc << m.get_descr_separator(el); desc << esc(m.get(dlg + 100)); }