Patch level : 10.0 754

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

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
This commit is contained in:
alex 2010-06-03 13:48:47 +00:00
parent 4c161d5ad4
commit 0fbec20102
4 changed files with 52 additions and 15 deletions

View File

@ -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);
}

View File

@ -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

View File

@ -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

View File

@ -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);
}
}