From 8d78c4b8e74531306d19f62afc06bf8a8cb0652b Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 3 Dec 2009 15:05:19 +0000 Subject: [PATCH] Patch level : 10.0 542 Files correlati : ve2.exe Ricompilazione Demo : [ ] Aggiunto ordinamento della descrizione nella generazione codici avanzata git-svn-id: svn://10.65.10.50/trunk@19723 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- mg/mgtbfsa.uml | 2 - mg/mgtbgsa.h | 8 +++ mg/mgtbgsa.uml | 135 ++++++++++++++++++++++++++++++++++--------------- ve/ve2401.cpp | 59 +++++++++++++++++---- 4 files changed, 152 insertions(+), 52 deletions(-) diff --git a/mg/mgtbfsa.uml b/mg/mgtbfsa.uml index dabd3f993..759614c87 100755 --- a/mg/mgtbfsa.uml +++ b/mg/mgtbfsa.uml @@ -37,8 +37,6 @@ BOOLEAN F_ROOT BEGIN PROMPT 28 2 "Livello radice (Primo livello della gerarchia)" FIELD B0 - MESSAGE FALSE ENABLE,F_SEPDESC - MESSAGE TRUE CLEAR,F_SEPDESC END // descrizione parte del formato codice diff --git a/mg/mgtbgsa.h b/mg/mgtbgsa.h index e93170369..1e5b3abef 100755 --- a/mg/mgtbgsa.h +++ b/mg/mgtbgsa.h @@ -13,39 +13,47 @@ #define F_FORMAT1 301 #define F_DESCR1 401 #define F_SEPDES1 501 +#define F_ORD1 601 #define F_CHILD2 202 #define F_FORMAT2 302 #define F_DESCR2 402 #define F_SEPDES2 502 +#define F_ORD2 602 #define F_CHILD3 203 #define F_FORMAT3 303 #define F_DESCR3 403 #define F_SEPDES3 503 +#define F_ORD3 603 #define F_CHILD4 204 #define F_FORMAT4 304 #define F_DESCR4 404 #define F_SEPDES4 504 +#define F_ORD4 604 #define F_CHILD5 205 #define F_FORMAT5 305 #define F_DESCR5 405 #define F_SEPDES5 505 +#define F_ORD5 605 #define F_CHILD6 206 #define F_FORMAT6 306 #define F_DESCR6 406 #define F_SEPDES6 506 +#define F_ORD6 606 #define F_CHILD7 207 #define F_FORMAT7 307 #define F_DESCR7 407 #define F_SEPDES7 507 +#define F_ORD7 607 #define F_CHILD8 208 #define F_FORMAT8 308 #define F_DESCR8 408 #define F_SEPDES8 508 +#define F_ORD8 608 diff --git a/mg/mgtbgsa.uml b/mg/mgtbgsa.uml index 8beb587c7..7ed3f27c5 100755 --- a/mg/mgtbgsa.uml +++ b/mg/mgtbgsa.uml @@ -16,7 +16,7 @@ BEGIN FIELD CODTAB[1,3] KEY 1 FLAG "UZ" - USE FSA + USE FSA SELECT (B0=="X") INPUT CODTAB F_CODLIV DISPLAY "Codice Parte" CODTAB DISPLAY "Descrizione@50" S0 @@ -71,7 +71,6 @@ BEGIN OUTPUT F_CODGROUP CODTAB[4,24] OUTPUT F_DESGROUP S0 CHECKTYPE REQUIRED - MESSAGE EMPTY ENABLE,F_DESLIV MESSAGE DISABLE,F_DESLIV END @@ -110,7 +109,7 @@ BEGIN FIELD S1[1,3] CHECKTYPE REQUIRED GROUP 3 - FLAGS "G" + FLAGS "GU" MESSAGE EMPTY CLEAR,F_CHILD2 MESSAGE ENABLE,F_CHILD2 END @@ -122,7 +121,7 @@ BEGIN FLAGS "D" END -STRING F_DESCR1 50 35 +STRING F_DESCR1 50 33 BEGIN PROMPT 28 7 "" GROUP 3 @@ -131,11 +130,18 @@ END STRING F_SEPDES1 6 BEGIN - PROMPT 64 7 "Sep." + PROMPT 62 7 "S." GROUP 3 FIELD S2[1,6] END +NUMBER F_ORD1 1 +BEGIN + PROMPT 71 7 "O." + GROUP 3 + FIELD S2[49,49] +END + STRING F_CHILD2 3 BEGIN PROMPT 2 8 "Parte 3 " @@ -148,9 +154,9 @@ BEGIN FIELD S1[4,6] CHECKTYPE NORMAL GROUP 3 - FLAGS "G" - MESSAGE EMPTY CLEAR,F_CHILD3|CLEAR,F_SEPDES2 - MESSAGE ENABLE,F_CHILD3|ENABLE,F_SEPDES2 + FLAGS "GU" + MESSAGE EMPTY CLEAR,F_CHILD3|CLEAR,F_SEPDES2|CLEAR,F_ORD2 + MESSAGE ENABLE,F_CHILD3|ENABLE,F_SEPDES2|ENABLE,F_ORD2 END STRING F_FORMAT2 20 10 @@ -160,7 +166,7 @@ BEGIN FLAGS "D" END -STRING F_DESCR2 50 35 +STRING F_DESCR2 50 33 BEGIN PROMPT 28 8 "" FLAGS "D" @@ -169,12 +175,19 @@ END STRING F_SEPDES2 6 BEGIN - PROMPT 64 8 "Sep." + PROMPT 62 8 "S." GROUP 3 FLAGS "D" FIELD S2[7,12] END +NUMBER F_ORD2 1 +BEGIN + PROMPT 71 8 "O." + GROUP 3 + FIELD S2[50,50] +END + STRING F_CHILD3 3 BEGIN PROMPT 2 9 "Parte 4 " @@ -187,9 +200,9 @@ BEGIN FIELD S1[7,9] CHECKTYPE NORMAL GROUP 3 - FLAGS "G" - MESSAGE EMPTY CLEAR,F_CHILD4|CLEAR,F_SEPDES3 - MESSAGE ENABLE,F_CHILD4|ENABLE,F_SEPDES3 + FLAGS "GU" + MESSAGE EMPTY CLEAR,F_CHILD4|CLEAR,F_SEPDES3|CLEAR,F_ORD3 + MESSAGE ENABLE,F_CHILD4|ENABLE,F_SEPDES3|ENABLE,F_ORD3 END STRING F_FORMAT3 20 10 @@ -199,7 +212,7 @@ BEGIN FLAGS "D" END -STRING F_DESCR3 50 35 +STRING F_DESCR3 50 33 BEGIN PROMPT 28 9 "" FLAGS "D" @@ -208,12 +221,19 @@ END STRING F_SEPDES3 6 BEGIN - PROMPT 64 9 "Sep." + PROMPT 62 9 "S." GROUP 3 FLAGS "D" FIELD S2[13,18] END +NUMBER F_ORD3 1 +BEGIN + PROMPT 71 9 "O." + GROUP 3 + FIELD S2[51,51] +END + STRING F_CHILD4 3 BEGIN PROMPT 2 10 "Parte 5 " @@ -226,9 +246,9 @@ BEGIN FIELD S1[10,12] CHECKTYPE NORMAL GROUP 3 - FLAGS "G" - MESSAGE EMPTY CLEAR,F_CHILD5|CLEAR,F_SEPDES4 - MESSAGE ENABLE,F_CHILD5|ENABLE,F_SEPDES4 + FLAGS "GU" + MESSAGE EMPTY CLEAR,F_CHILD5|CLEAR,F_SEPDES4|CLEAR,F_ORD4 + MESSAGE ENABLE,F_CHILD5|ENABLE,F_SEPDES4|ENABLE,F_ORD4 END STRING F_FORMAT4 20 10 @@ -239,7 +259,7 @@ BEGIN FLAGS "D" END -STRING F_DESCR4 50 35 +STRING F_DESCR4 50 33 BEGIN PROMPT 28 10 "" FLAGS "D" @@ -248,12 +268,19 @@ END STRING F_SEPDES4 6 BEGIN - PROMPT 64 10 "Sep." + PROMPT 62 10 "S." GROUP 3 FLAGS "D" FIELD S2[19,24] END +NUMBER F_ORD4 1 +BEGIN + PROMPT 71 10 "O." + GROUP 3 + FIELD S2[52,52] +END + STRING F_CHILD5 3 BEGIN PROMPT 2 11 "Parte 6 " @@ -266,9 +293,9 @@ BEGIN FIELD S1[13,15] CHECKTYPE NORMAL GROUP 3 - FLAGS "G" - MESSAGE EMPTY CLEAR,F_CHILD6|CLEAR,F_SEPDES5 - MESSAGE ENABLE,F_CHILD6|ENABLE,F_SEPDES5 + FLAGS "GU" + MESSAGE EMPTY CLEAR,F_CHILD6|CLEAR,F_SEPDES5|CLEAR,F_ORD5 + MESSAGE ENABLE,F_CHILD6|ENABLE,F_SEPDES5|ENABLE,F_ORD5 END STRING F_FORMAT5 20 10 @@ -278,7 +305,7 @@ BEGIN FLAGS "D" END -STRING F_DESCR5 50 35 +STRING F_DESCR5 50 33 BEGIN PROMPT 28 11 "" FLAGS "D" @@ -287,12 +314,19 @@ END STRING F_SEPDES5 6 BEGIN - PROMPT 64 11 "Sep." + PROMPT 62 11 "S." GROUP 3 FLAGS "D" FIELD S2[25,30] END +NUMBER F_ORD5 1 +BEGIN + PROMPT 71 11 "O." + GROUP 3 + FIELD S2[53,53] +END + STRING F_CHILD6 3 BEGIN PROMPT 2 12 "Parte 7 " @@ -305,9 +339,9 @@ BEGIN FIELD S1[16,18] CHECKTYPE NORMAL GROUP 3 - FLAGS "G" - MESSAGE EMPTY CLEAR,F_CHILD7|CLEAR,F_SEPDES6 - MESSAGE ENABLE,F_CHILD7|ENABLE,F_SEPDES6 + FLAGS "GU" + MESSAGE EMPTY CLEAR,F_CHILD7|CLEAR,F_SEPDES6|CLEAR,F_ORD6 + MESSAGE ENABLE,F_CHILD7|ENABLE,F_SEPDES6|ENABLE,F_ORD6 END STRING F_FORMAT6 20 10 @@ -317,7 +351,7 @@ BEGIN FLAGS "D" END -STRING F_DESCR6 50 35 +STRING F_DESCR6 50 33 BEGIN PROMPT 28 12 "" FLAGS "D" @@ -326,12 +360,19 @@ END STRING F_SEPDES6 6 BEGIN - PROMPT 64 12 "Sep." + PROMPT 62 12 "S." GROUP 3 FLAGS "D" FIELD S2[31,36] END +NUMBER F_ORD6 1 +BEGIN + PROMPT 71 12 "O." + GROUP 3 + FIELD S2[54,54] +END + STRING F_CHILD7 3 BEGIN PROMPT 2 13 "Parte 8 " @@ -344,9 +385,9 @@ BEGIN FIELD S1[19,21] CHECKTYPE NORMAL GROUP 3 - FLAGS "G" - MESSAGE EMPTY CLEAR,F_CHILD8|CLEAR,F_SEPDES7 - MESSAGE ENABLE,F_CHILD8|ENABLE,F_SEPDES7 + FLAGS "GU" + MESSAGE EMPTY CLEAR,F_CHILD8|CLEAR,F_SEPDES7|CLEAR,F_ORD7 + MESSAGE ENABLE,F_CHILD8|ENABLE,F_SEPDES7|ENABLE,F_ORD7 END STRING F_FORMAT7 20 10 @@ -356,7 +397,7 @@ BEGIN FLAGS "D" END -STRING F_DESCR7 50 35 +STRING F_DESCR7 50 33 BEGIN PROMPT 28 13 "" FLAGS "D" @@ -365,12 +406,19 @@ END STRING F_SEPDES7 6 BEGIN - PROMPT 64 13 "Sep." + PROMPT 62 13 "S." GROUP 3 FLAGS "D" FIELD S2[37,42] END +NUMBER F_ORD7 1 +BEGIN + PROMPT 71 13 "O." + GROUP 3 + FIELD S2[55,55] +END + STRING F_CHILD8 3 BEGIN PROMPT 2 14 "Parte 9 " @@ -383,9 +431,9 @@ BEGIN FIELD S1[22,24] CHECKTYPE NORMAL GROUP 3 - MESSAGE EMPTY CLEAR,F_SEPDES8 - MESSAGE ENABLE,F_SEPDES8 - FLAGS "G" + MESSAGE EMPTY CLEAR,F_SEPDES8|CLEAR,F_ORD8 + MESSAGE ENABLE,F_SEPDES8|ENABLE,F_ORD8 + FLAGS "GU" END STRING F_FORMAT8 20 10 @@ -395,7 +443,7 @@ BEGIN FLAGS "D" END -STRING F_DESCR8 50 35 +STRING F_DESCR8 50 33 BEGIN PROMPT 28 14 "" FLAGS "D" @@ -404,12 +452,19 @@ END STRING F_SEPDES8 6 BEGIN - PROMPT 64 14 "Sep." + PROMPT 62 14 "S." GROUP 3 FLAGS "D" FIELD S2[43,48] END +NUMBER F_ORD8 1 +BEGIN + PROMPT 71 14 "O." + GROUP 3 + FIELD S2[56,56] +END + STRING F_FORMAT 90 30 BEGIN PROMPT 1 16 "Formato complessivo " diff --git a/ve/ve2401.cpp b/ve/ve2401.cpp index 8ae9f445d..67ba87e58 100755 --- a/ve/ve2401.cpp +++ b/ve/ve2401.cpp @@ -51,7 +51,7 @@ public: bool restart() const { return _restart.full(); } static void restart_with(const TString& cod) { _restart = cod; } const TString & get_descr_separator(const int level); - + int get_descr_order(const int level); TCodart_mask(); }; @@ -108,6 +108,21 @@ void TCodart_mask::start_run() TAutomask::start_run(); } +int TCodart_mask::get_descr_order(const int level) +{ + int order = 0; + const int pos = 48 + (level - 1); + + if (level > 0 && _separators.len() >= pos) + { + char ord = _separators[pos]; + + if (ord > ' ') + order = ord - '0'; + } + return order; +} + const TString & TCodart_mask::get_descr_separator(const int level) { TString & sep = get_tmp_string(8); @@ -185,7 +200,7 @@ bool TCodart_mask::build_children() return id2pos(102) > 0; } -TCodart_mask::TCodart_mask() : TAutomask(TR("Articolo guidato"), 1, 78, 13) +TCodart_mask::TCodart_mask() : TAutomask(TR("Articolo guidato"), 1, 78, 17) { add_button(DLG_OK, 0, "", -12, -1, 10, 2); add_button(DLG_CANCEL, 0, "", -22, -1, 10, 2); @@ -207,14 +222,38 @@ bool advanced_codart_ask(TString& code, TString& desc) TCodart_mask m; ok = m.run() == K_ENTER; if (ok) - { - for (short id = 101; m.id2pos(id) >= 0; id++) - { - code << m.get(id); - if (id > 101) - desc << m.get_descr_separator(id - 101); - desc << esc(m.get(id+100)); - } + { + int order[20]; + int elements = 0; + int id; + + for (id = 101; m.id2pos(id) >= 0; id++, elements++) + { + const int el = id - 101; + order[el] = m.get_descr_order(el); + code << m.get(id); + } + while (elements-- > 0) + { + int ord = 1000; + int el = -1; + for (id = 101; m.id2pos(id) >= 0; id++) + { + if (order[id - 101] < ord) + { + el = id - 101; + ord = order[el]; + } + } + if (el >= 0) + { + const int dlg = el + 101; + order[el] = 1001; + if (dlg > 101) + desc << m.get_descr_separator(el); + desc << esc(m.get(dlg + 100)); + } + } running = false; } else