From 9766c35379a1d669e702792ad40e52daa0d94999 Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 15 Sep 2004 14:50:57 +0000 Subject: [PATCH] Patch level : 2.1 114 Files correlati : cg2.exe Ricompilazione Demo : [ ] Commento : 0000231 Se inserisco il flag di commessa obbligatoria sul piano dei conti a livello di conto, questo non scatena il controllo nel momento in cui utlizzo un qualunque sottoconto appartenente a quel conto. git-svn-id: svn://10.65.10.50/trunk@12314 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg2102.cpp | 20 +++++++------------- cg/cglib01.cpp | 33 ++++++++++++++++++++++++++------- cg/cglib01.h | 1 + cg/cgsaldac.cpp | 5 +++-- 4 files changed, 37 insertions(+), 22 deletions(-) diff --git a/cg/cg2102.cpp b/cg/cg2102.cpp index 067a25c88..b416b713e 100755 --- a/cg/cg2102.cpp +++ b/cg/cg2102.cpp @@ -792,16 +792,11 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k) // La commessa è vuota: controlliamo se era obbligatoria const TString80 cms = r.get(CG_COMMESSA-FIRST_FIELD); - if (c.tipo() <= ' ' && cms.blank()) + if (c.tipo() <= ' ' && cms.blank() && c.required_cdc()) { - TToken_string k = c.string(); - const TRectype& pc = cache().get(LF_PCON, k); - if (pc.get_bool(PCN_CMSNEEDED)) - { - k.replace('|', ' '); - return f.error_box(FR("Il codice commessa è obbligatorio per il conto %s della riga %d"), - (const char*)k, i+1); - } + TToken_string k = c.string(); k.replace('|', ' '); + return f.error_box(FR("Il codice commessa è obbligatorio per il conto %s della riga %d"), + (const char*)k, i+1); } } } @@ -1927,11 +1922,10 @@ bool TPrimanota_application::iva_sottoconto_handler(TMask_field& f, KEY key) } } - TToken_string k = zio.string(); - const TRectype& pc = cache().get(LF_PCON, k); - if (key == K_ENTER && cdc.empty() && pc.get_bool(PCN_CMSNEEDED)) + + if (key == K_ENTER && cdc.empty() && zio.required_cdc()) { - k.replace(k.separator(), ' '); + TToken_string k = zio.string(); k.replace(k.separator(), ' '); return cdc.error_box(FR("Il conto %s richiede che sia specificato il codice CDC/Commessa"), (const char*)k); } diff --git a/cg/cglib01.cpp b/cg/cglib01.cpp index 90304f9d7..14585bb07 100755 --- a/cg/cglib01.cpp +++ b/cg/cglib01.cpp @@ -919,19 +919,38 @@ const char* TBill::string(int mode) const return s; } +bool TBill::required_cdc() const +{ + TString16 key; + + for (int i = 2; i >= 0; i--) + { + key.format("%d|%d|%ld", gruppo(), i > 0 ? conto() : 0, i > 1 ? sottoconto() : 0); + const TRectype& sottoc = cache().get(LF_PCON, key); + if (sottoc.get_bool(PCN_CMSNEEDED)) + return true; + } + return false; +} + bool TBill::default_cdc(TString& cdc, TString& fas) const { bool ok = tipo() <= ' ' && sottoconto() > 0; if (ok) { - TString16 key; key.format("%d|%d|%ld", gruppo(), conto(), sottoconto()); - const TRectype& pcon = cache().get(LF_PCON, key); - ok = !pcon.empty(); - if (ok) + TString16 key; + for (int i = 2; i >= 0; i--) { - cdc = pcon.get(PCN_CODCMS); - fas = pcon.get(PCN_FASCMS); + key.format("%d|%d|%ld", gruppo(), i > 0 ? conto() : 0, i > 1 ? sottoconto() : 0); + const TRectype& pcon = cache().get(LF_PCON, key); + if (!pcon.empty()) + { + cdc = pcon.get(PCN_CODCMS); + fas = pcon.get(PCN_FASCMS); + if (cdc.not_empty() || fas.not_empty()) + break; + } } } - return ok && cdc.not_empty(); + return ok && (cdc.not_empty() || fas.not_empty()); } diff --git a/cg/cglib01.h b/cg/cglib01.h index 89f64132e..5154712cc 100755 --- a/cg/cglib01.h +++ b/cg/cglib01.h @@ -236,6 +236,7 @@ public: const char* string(int mode = 0) const; + bool required_cdc() const; bool default_cdc(TString& cdc, TString& fas) const; }; diff --git a/cg/cgsaldac.cpp b/cg/cgsaldac.cpp index a0a454833..91d5ce4ea 100755 --- a/cg/cgsaldac.cpp +++ b/cg/cgsaldac.cpp @@ -648,8 +648,9 @@ tipo_movimento TRiga_partite::tipo() const char TRiga_partite::sezione_ritsoc() const { TString16 key; key << get(PART_CODCAUS) << "|14"; // Riga ritenute sociali - const char sezrs = cache().get(LF_RCAUSALI, key, RCA_SEZIONE)[0]; - return sezrs > ' ' ? (sezrs == 'D' ? 'A' : 'D') : sezione(); + const char sez_cau = cache().get(LF_RCAUSALI, key, RCA_SEZIONE)[0]; + const char sez_rit = sez_cau > ' ' ? (sez_cau == 'D' ? 'A' : 'D') : sezione(); + return sez_rit; } // Legge le rate relative ad una riga di fattura