From b2580dbf7958a4b71cec458eea2f19ea2bbfbd2b Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Wed, 4 Oct 2023 17:20:57 +0200 Subject: [PATCH] Patch level : 12.00 1284 Files correlati : ve0.exe ve2.exe ve2400.msk Commento : Non era possibile svuotare una riga conai suglii articoli Se le svuotavo tutte ricaricava i vvalori di prima della conversione Il calcolo CONAI viene fatto anche se riattivo la registrazione con shift-F12 --- src/include/defmask.h | 1 + src/include/doc.h | 2 -- src/include/maskfld.cpp | 6 +++-- src/include/relation.h | 2 +- src/include/validate.cpp | 50 ++++++++++++++++++++++++++++++---------- 5 files changed, 44 insertions(+), 17 deletions(-) diff --git a/src/include/defmask.h b/src/include/defmask.h index d213d040f..ec876b31f 100755 --- a/src/include/defmask.h +++ b/src/include/defmask.h @@ -123,6 +123,7 @@ #define SCONTO_FUNC 23 0 #define CHECK_IBAN_FUNC 24 10 #define CHECK_BBAN_FUNC 25 5 +#define NOT_EMPTY_CHECK_TARGET 21 1 #define VALEXPR VALIDATE EXPR_FUNC #define NUM_EXPR VALEXPR 0 diff --git a/src/include/doc.h b/src/include/doc.h index 85a94adf6..ca5544a07 100755 --- a/src/include/doc.h +++ b/src/include/doc.h @@ -74,7 +74,6 @@ #define DOC_G1 "G1" #define DOC_DATAAGG "DATAAGG" #define DOC_UTENTE "UTENTE" -#define DOC_COLL_GOLEM "COLL_GOLEM" #define DOC_DOCEVASO "DOCEVASO" #define DOC_CONTROEURO "CONTROEURO" #define DOC_CODCMS "CODCMS" @@ -114,7 +113,6 @@ #define DOC_DATAINIRIF "DATAINIRIF" #define DOC_DATAFINRIF "DATAFINRIF" - // modulo pe #define DOC_SPESEUPD "SPESEUPD" #define DOC_USEK "USEK" diff --git a/src/include/maskfld.cpp b/src/include/maskfld.cpp index 7cdc71754..7ebd485f7 100755 --- a/src/include/maskfld.cpp +++ b/src/include/maskfld.cpp @@ -642,7 +642,7 @@ const char* TMask_field::prompt() const // Certified 100% void TMask_field::reset() -{ +{ if (!_flags.persistent) set(""); } @@ -3998,7 +3998,7 @@ int TList_field::str2curr(const char* data) } void TList_field::reset() -{ +{ if (!_flags.persistent) current(0); } @@ -4082,6 +4082,8 @@ bool TList_field::on_key(KEY key) { if (has_warning()) return error_box(get_warning()); + else + return false; } } } diff --git a/src/include/relation.h b/src/include/relation.h index d88118d5e..ebc34c8cc 100755 --- a/src/include/relation.h +++ b/src/include/relation.h @@ -409,7 +409,7 @@ public: { _filter_update = update; _filter_limit = limit; filter(filter_expr); } // @cmember Setta la regione-filtro dal record

al record

void setregion(const TRectype& from, const TRectype& to, int tilde = 0x0) - { filter(NULL,&from, &to, tilde); } + { filter(nullptr, &from, &to, tilde); } // @cmember Ritorna la relazione del cursore TRelation* relation() const diff --git a/src/include/validate.cpp b/src/include/validate.cpp index da52298a4..ae43d49e9 100755 --- a/src/include/validate.cpp +++ b/src/include/validate.cpp @@ -665,11 +665,11 @@ HIDDEN bool _chkfld_val(TMask_field& f, KEY k) else return f.check(); } - - TMask_field & chkfld = f.mask().field(fldid); - chkfld.set(f.get()); - return chkfld.check(); + TMask_field & chkfld = f.mask().field(fldid); + + chkfld.set(f.get()); + return chkfld.check(); } return true; } @@ -711,10 +711,35 @@ HIDDEN bool _alpha_val(TMask_field& f, KEY k) HIDDEN bool _not_empty_chkfld_val(TMask_field& f, KEY k) { bool ok = true; - if (f.to_check(k,true) && f.get().not_empty()) - { - TBrowse * b = ((TEdit_field&)f).browse(); - if (b != NULL) ok = b->check(k == K_TAB ? RUNNING_CHECK : FINAL_CHECK); + const int nparms = get_val_param_count(); + const int fldid = nparms > 0 ? get_int_val_param(0) : THIS_FIELD; + bool check = f.to_check(k, true); + + if (!check && fldid != THIS_FIELD) + check = f.mask().efield(fldid).to_check(k, true); + if (check && f.get().not_empty()) + { + if (fldid == THIS_FIELD) + { + TBrowse * b = ((TEdit_field&)f).browse(); + if (b != NULL) + ok = b->check(k == K_TAB ? RUNNING_CHECK : FINAL_CHECK); + } + else + { + TEdit_field & chkfld = f.mask().efield(fldid); + TBrowse * b = chkfld.browse(); + + if (b != NULL) + { + CheckType c = chkfld.check_type(); + + chkfld.check_type(CHECK_REQUIRED); + ok = b->check(k == K_TAB ? RUNNING_CHECK : FINAL_CHECK); + chkfld.check_type(c); + } + + } } return ok; } @@ -957,11 +982,11 @@ HIDDEN bool _iban_val(TMask_field& f, KEY key) id[i] = get_int_val_param(i); if (nparms < 9) - id[8] = -1; + id[8] = 0; if (nparms < 10) id[9] = 0; - bool pres = get_int_val_param(9); + bool pres = get_int_val_param(9) > 0; TString80 iban = m.get(id[0]); TString4 iso, cin, bcin; @@ -977,7 +1002,7 @@ HIDDEN bool _iban_val(TMask_field& f, KEY key) enable_iban_fields(m, id[3], id[4], id[5], id[6], id[7], id[8], italy, pres); m.reset(id[0]); m.reset(id[2]); - if (italy) + if (!italy) m.reset(id[3]); else { @@ -988,7 +1013,8 @@ HIDDEN bool _iban_val(TMask_field& f, KEY key) m.reset(id[6]); } m.reset(id[7]); - m.reset(id[8]); + if (nparms > 8) + m.reset(id[8]); } if (m.is_sheetmask()) {