From 0fbec201027216c3a23b7bb51ec10aab11483bb3 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 3 Jun 2010 13:48:47 +0000 Subject: [PATCH] Patch level : 10.0 754 Files correlati : ve2.exe Ricompilazione Demo : [ ] Commento MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug 0001648: Anagrafica Articoli-Gestione Tabella Gruppi cod. art. avanzati Se tolgo la spunta nel campo "in descrizione" non solo non mi mette la descrizione in quella dell'articolo corrispondente ma anche il codice del gruppo nella costruzioine dell'articolo con la funzionalitĆ  "codice guidato" Se sono su un livello secondario e premo il bottone nuovo non mi propone i default di dove sono come fa se vado in modifica. git-svn-id: svn://10.65.10.50/trunk@20538 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- mg/mg0100.cpp | 41 +++++++++++++++++++++++++++++++++++------ mg/mgtbfsa.h | 9 +++++---- mg/mgtbfsa.uml | 8 +++++++- ve/ve2400.cpp | 9 +++++---- 4 files changed, 52 insertions(+), 15 deletions(-) diff --git a/mg/mg0100.cpp b/mg/mg0100.cpp index b66c6eb20..3b6019058 100755 --- a/mg/mg0100.cpp +++ b/mg/mg0100.cpp @@ -299,6 +299,7 @@ bool TMask_tabmag::adv_codgrp_handler(TMask_field& f, KEY k) { TString newcod(m.get(F_CODLIV)); const int prlen = newcod.len(); + const bool autonumalfa = cache().get("FSA", newcod).get_bool("B1"); newcod << ((TEditable_field&)f).get_window_data(); @@ -306,7 +307,7 @@ bool TMask_tabmag::adv_codgrp_handler(TMask_field& f, KEY k) const int len = cod.len(); TTable gsa("GSA"); - cod << "999999"; + cod << (autonumalfa ? "ZZZZZZ" : "999999"); gsa.put("CODTAB", cod); if (gsa.read(_isgteq) != _isemptyfile) { @@ -319,11 +320,39 @@ bool TMask_tabmag::adv_codgrp_handler(TMask_field& f, KEY k) } if (newcod == code.left(len)) { - const int progr = atol(code.mid(len)) + 1; - TString fmt; - fmt.format("%%s%%0%dld", code.len() - len); - newcod.ltrim(prlen); - newcod.format(fmt, (const char *)newcod, progr); + if (autonumalfa) + { + + newcod = code; + newcod.ltrim(prlen); + + int add = 1; + int lastpos = newcod.len() - 1; + + while (lastpos >= 0) + { + newcod[lastpos] += add; + if (newcod[lastpos] > '9' && newcod[lastpos] < 'A') + { + newcod[lastpos] = 'A'; + break; + } + else + if (newcod[lastpos] > 'Z') + newcod[lastpos--] = '0'; + else + break; + } + } + else + { + const int progr = atol(code.mid(len)) + 1; + TString fmt; + + fmt.format("%%s%%0%dld", code.len() - len); + newcod.ltrim(prlen); + newcod.format(fmt, (const char *)newcod, progr); + } f.set(newcod); m.stop_run(K_INS); } diff --git a/mg/mgtbfsa.h b/mg/mgtbfsa.h index 25712efd1..76415b326 100755 --- a/mg/mgtbfsa.h +++ b/mg/mgtbfsa.h @@ -1,6 +1,7 @@ -#define F_CODLIV 101 -#define F_ROOT 102 -#define F_DESLIV 103 -#define F_FORMLIV 104 +#define F_CODLIV 101 +#define F_ROOT 102 +#define F_DESLIV 103 +#define F_FORMLIV 104 +#define F_AUTOALFA 105 diff --git a/mg/mgtbfsa.uml b/mg/mgtbfsa.uml index 759614c87..491ceb868 100755 --- a/mg/mgtbfsa.uml +++ b/mg/mgtbfsa.uml @@ -9,7 +9,7 @@ ENDPAGE PAGE "Formato Sottocodice Articoli" 0 0 0 0 -GROUPBOX DLG_NULL 78 7 +GROUPBOX DLG_NULL 78 9 BEGIN PROMPT 1 1 "Sottocodici Articolo" FLAGS "R" @@ -61,6 +61,12 @@ BEGIN CHECKTYPE REQUIRED END +BOOLEAN F_AUTOALFA +BEGIN + PROMPT 2 7 "Auto numerazione alfabetica" + FIELD B1 +END + ENDPAGE ENDMASK \ No newline at end of file diff --git a/ve/ve2400.cpp b/ve/ve2400.cpp index f96192a94..61ef0f371 100755 --- a/ve/ve2400.cpp +++ b/ve/ve2400.cpp @@ -1035,15 +1035,16 @@ bool TMask_anamag::handle_sheet_cod(TMask_field &fld, KEY k) TMask &m= fld.mask(); // prende la maschere d'origine del campo TAssoc_array v; // istanzia l'hash table per il controllo di univocitą - TString80 codart = m.get(F_CODART); - v.add(codart); // aggiunge all'hash table il codice articolo originale + TString80 codart; for (int i= 0; i< items; i++) { codart = f.cell(i,0); if (codart.blank()) return error_box("I codici alternativi non possono essere vuoti"); - if (v.add(codart)) + if (codart == m.get(F_CODART)) return error_box("I codici alternativi devono essere diversi tra loro e dal codice dell'articolo"); // aggiunge all'hash table l'elemento 0 (primo) della riga corrente e controlla che non esista gią + if (v.add(codart) && !yesno_box("I codici alternativi devono essere diversi tra loro, si desidera continuare ?")) + return false; // aggiunge all'hash table l'elemento 0 (primo) della riga corrente e controlla che non esista gią } } } @@ -1107,7 +1108,7 @@ bool TMask_anamag::notify_sheet_cod(TSheet_field & s, int r, KEY k) if (codcorr.read(_isgteq) == NOERR && codcorr.get(CODCORR_CODARTALT) == codice) { if (codcorr.get(CODCORR_CODART) != codart) - return s.error_box("Il codice %s č gią un codice corrispondente", (const char *) codice); + return s.yesno_box("Il codice %s č gią un codice corrispondente", (const char *) codice); } }