From f0b53ea023ae20208bc1ff4efaeed0233f41dc9b Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 15 Jun 2011 14:32:28 +0000 Subject: [PATCH] Patch level : 10.1026 Files correlati : db0.exe Ricompilazione Demo : [ ] Commento : Completata la modifica per avere una descrione di riga sulla distinta base git-svn-id: svn://10.65.10.50/branches/R_10_00@22269 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- db/db0500.cpp | 24 ++++++++++++++++++++---- db/db1100.cpp | 24 ++++++++++++++++++++++-- db/db1200a.frm | 1 + db/dblib.cpp | 11 +++++++---- 4 files changed, 50 insertions(+), 10 deletions(-) diff --git a/db/db0500.cpp b/db/db0500.cpp index dae8c6c08..3c33b36b6 100755 --- a/db/db0500.cpp +++ b/db/db0500.cpp @@ -1198,8 +1198,14 @@ bool TDistinta_mask::on_distsheet_event(TOperable_field& o, TField_event e, long const TToken_string& row = sheet.row(m); row.get(F_CODART-FIRST_FIELD, code1); if (code == code1) - if (!yesno_box("Il codice %s e' ripetuto alla riga %d,\ncontinuare ugualmente ?", (const char *) code, n + 1)) + { + int k = noyesall_box("Il codice %s e' ripetuto alla riga %d,\ncontinuare ugualmente ?", (const char *) code, n + 1); + if (k == K_NO) return false; + else + if (k == K_SPACE) + return true; + } } } else @@ -1265,7 +1271,7 @@ bool TDistinta_mask::on_distsheet_event(TOperable_field& o, TField_event e, long if (e == fe_modify) { TAutomask& m = (TAutomask&)o.mask(); - const TString& str = o.get(); + TString str = o.get(); str.replace(',', '.'); if (str.not_empty()) { TDistinta_expr expr; @@ -1285,7 +1291,10 @@ bool TDistinta_mask::on_distsheet_event(TOperable_field& o, TField_event e, long } } else + { + str = expr.as_string(); str.replace('.', ','); o.set(expr.as_string()); + } } else return m.error_box(FR("Errore di sintassi: %s"), expr.last_token()); @@ -1337,7 +1346,7 @@ bool TDistinta_mask::on_parmsheet_event(TOperable_field& o, TField_event e, long { TString var; sf.row(sf.selected()).get(1,var); - const TString& expr = o.get(); + TString expr = o.get(); expr.replace(',', '.'); TDistinta_expr e; const TTypeexp exprtype = _tree.get_var_type(var); if (!e.set(expr, exprtype)) @@ -1746,6 +1755,7 @@ void TDistinta_app::load_memo(TMask& m, TToken_string& memo) if (equal > 0) row[equal] = SAFE_PIPE_CHR; row.insert(format(" %c",SAFE_PIPE_CHR),0); + row.replace('.', ','); if (_tree.is_global(row.get(1))) row[0]='G'; } @@ -1760,6 +1770,9 @@ int TDistinta_app::read(TMask& m) TSheet_field& sheet = m.sfield(F_SHEET); FOR_EACH_SHEET_ROW(sheet, nrig, row) { + TString s = row->get(sheet.cid2index(F_EXPR)); + s.replace('.' , ','); + row->add(s, sheet.cid2index(F_EXPR)); sheet.check_row(nrig); row->add(nrig+1, sheet.cid2index(F_SORT0)); if (*row->get(sheet.cid2index(F_DESCOMP)) == '\0') @@ -1823,7 +1836,7 @@ bool TDistinta_app::parms2rel(const TMask& m) var = row->get(); if (!var.blank()) { - expr = row->get(); + expr = row->get(); expr.replace(',', '.'); if (typ == 'G' && !_tree.is_global(var)) error_box(FR("La variabile %s non e' una delle variabili globali. Consultare la documentazione del modulo Distinta Base"),(const char *)var); memo.add(var); @@ -1844,6 +1857,9 @@ void TDistinta_app::remove_desc(const TMask& m) FOR_EACH_SHEET_ROW(sf, r, row) { + TString s = row->get(sf.cid2index(F_EXPR)); + s.replace(',' , '.'); + row->add(s, sf.cid2index(F_EXPR)); const char type = row->get(sf.cid2index(F_TIPOCOMP))[0]; const TString cod = row->get(sf.cid2index(F_CODART)); TString descr; diff --git a/db/db1100.cpp b/db/db1100.cpp index 3bb4aeed8..5880133ef 100755 --- a/db/db1100.cpp +++ b/db/db1100.cpp @@ -15,6 +15,7 @@ #include "../mg/mglib.h" #include "../ve/velib.h" +#include "rdist.h" #include "dblib.h" #include #include @@ -867,6 +868,24 @@ bool TExplode_distinta_form::validate(TForm_item &f, TToken_string &t) else if (code == "_DES") { + TToken_string fa(re.path(), '~'); + TToken_string key(fa.get(0)); + TToken_string tmp("", '~'); + TString code; + + TToken_string & p = (TToken_string &) re.path(); + p.get(-2, (TString &)tmp); + tmp.get(2, code); + key.add(code); + + valore = cache().get(LF_RDIST, key, RDIST_DESCR); + + if (valore.full()) + { + f.set(valore); + return true; + } + switch (tipo) { case 'A': @@ -894,7 +913,8 @@ bool TExplode_distinta_form::validate(TForm_item &f, TToken_string &t) TString lv = re.giacenza(); for (int l = livelli_giacenza().last_level(); l > 0 ; l--) lv.insert(" ",livelli_giacenza().packed_length(l)); - valore.insert(lv); + if (lv.full()) + valore.insert(lv); } } else @@ -967,7 +987,7 @@ bool TExplode_distinta_form::validate(TForm_item &f, TToken_string &t) } } f.set(valore); - return TRUE; + return true; } real TExplode_distinta_form::res2produce_by_father(TRiga_esplosione& re) diff --git a/db/db1200a.frm b/db/db1200a.frm index b745f8254..be3a0b970 100755 --- a/db/db1200a.frm +++ b/db/db1200a.frm @@ -136,6 +136,7 @@ END BEGIN KEY "Descrizione componente" PROMPT 3 1 "" + FIELD RDIST->DESCR FIELD ALIAS_ANAMAG_RIGHE@->DESCR FIELD ALIAS_LAV_RIGHE@->S0 FIELD ALIAS_VAR_RIGHE@->S0 diff --git a/db/dblib.cpp b/db/dblib.cpp index 607499a55..cecb48216 100755 --- a/db/dblib.cpp +++ b/db/dblib.cpp @@ -670,6 +670,7 @@ char TDistinta_tree::path_type(const TToken_string & path) const { path.get(-2, (TString &)_tmp); char ap = ((TToken_string &) _tmp).get_char(6); + if (ap == ' ') ap = 'G'; return ap; } @@ -759,11 +760,13 @@ const TString& TDistinta_tree::describe(const TCodice_articolo& codart) const bool TDistinta_tree::describe(const TCodice_articolo& codart, TString& descr) const { - static TRecord_cache __rdist_cache(LF_RDIST, 2); - TToken_string key = codart; + TToken_string key; + TCodice_articolo code = codart; - key.add(TToken_string(_root, '~').get(0)); - descr = __rdist_cache.get(key, RDIST_DESCR); + father_code(code); + key.add(code); + key.add(curr_comp(code)); + descr = cache().get(LF_RDIST, key, RDIST_DESCR); if (descr.not_empty()) return TRUE; descr = cache().get(LF_ANAMAG, codart, ANAMAG_DESCR);