diff --git a/src/ve/velib06a.cpp b/src/ve/velib06a.cpp index b0fd5fcb4..719e06e50 100755 --- a/src/ve/velib06a.cpp +++ b/src/ve/velib06a.cpp @@ -2919,12 +2919,13 @@ bool cdc_mag_handler(TMask_field& f, KEY key) ca_mag_handler(f); return true; } - bool codfase_handler(TMask_field& f, KEY key) { TDocumento_mask& mask = (TDocumento_mask&)f.mask(); - if (f.to_check(key, true) && f.dlg() == mask.fsc_end()) + if (key == K_TAB && f.focusdirty() && f.empty() && f.dlg() == mask.fsc_end()) // Opera solo sull'ultimo livello del codice fase + return true; + if ((f.running_check(key) || key == K_ENTER) && f.dlg() == mask.fsc_end()) // Opera solo sull'ultimo livello del codice fase { mask.mask2doc(); @@ -2935,14 +2936,16 @@ bool codfase_handler(TMask_field& f, KEY key) if (req && f.empty()) return f.error_box(TR("La fase è obbligatoria per questo tipo documento")); } - return true; // Opera solo sull'ultimo livello del codice commessa + return true; } bool codcdc_handler(TMask_field& f, KEY key) { TDocumento_mask& mask = (TDocumento_mask&)f.mask(); - if (f.to_check(key, true) && f.dlg() == mask.cdc_end()) + if (key == K_TAB && f.focusdirty() && f.empty() && f.dlg() == mask.cdc_end()) // Opera solo sull'ultimo livello del codice centro di costo + return true; + if ((f.running_check(key) || key == K_ENTER) && f.dlg() == mask.cdc_end()) // Opera solo sull'ultimo livello del codice centro di costo { mask.mask2doc(); @@ -2952,162 +2955,162 @@ bool codcdc_handler(TMask_field& f, KEY key) if (f.empty() && req) return f.error_box(TR("Il centro di costo è obbligatorio per questo tipo documento")); } - return true; // Opera solo sull'ultimo livello del codice commessa + return true; } bool codcms_handler(TMask_field& f, KEY key) { - if (!f.to_check(key, true)) - return true; + TDocumento_mask& mask = (TDocumento_mask&)f.mask(); - TDocumento_mask& mask = (TDocumento_mask&)f.mask(); - if (f.dlg() < mask.cms_end()) - return true; // Opera solo sull'ultimo livello del codice commessa - mask.mask2doc(); - - TDocumento& doc = mask.doc(); - TSheet_field& sf = mask.sfield(F_SHEET); - const bool req = doc.valid() && doc.tipo().head_ca_required(); - - if (f.empty()) - { - if (req) - return f.error_box(TR("La commessa è obbligatoria per questo tipo documento")); - else - return true; - } - - const TRectype& curr_cms = ((TEdit_field&)f).browse()->cursor()->curr(); - const TString80 codcms = curr_cms.get(COMMESSE_CODCMS); - mask.set(F_CMSH, codcms); - - if ((key == K_TAB && f.focusdirty()) || key == K_ENTER) + if (key == K_TAB && f.focusdirty() && f.empty() && f.dlg() == mask.cms_end()) // Opera solo sull'ultimo livello del codice commessa + return true; + if ((f.running_check(key) || key == K_ENTER) && f.dlg() == mask.cms_end()) // Opera solo sull'ultimo livello del codice commessa { - // Controlla se c'e' la gestione dei centri di costo al secondo livello - if (mask.codcms() != codcms) + mask.mask2doc(); + + TDocumento& doc = mask.doc(); + TSheet_field& sf = mask.sfield(F_SHEET); + const bool req = doc.valid() && doc.tipo().head_ca_required(); + + if (f.empty()) { - if ((key == K_TAB && f.focusdirty())) - { - const TTipo_cms_check t = mask.doc().tipo().tipo_cms_check(); - bool chiusa = (t != _nessuno) && curr_cms.get_bool(COMMESSE_CHIUSA); - - if (chiusa && curr_cms.get_bool(COMMESSE_PROROGA)) - chiusa = mask.get_date(F_DATADOC) > curr_cms.get_date(COMMESSE_DATAPROR); - if (chiusa) - return (t == _bloccante) ? f.error_box(FR("La commessa %s è chiusa "), (const char*)codcms) : f.yesno_box(FR("La commessa chiusa %s, vuoi utilizzarla"), (const char*)codcms); - } - doc.put(DOC_CODCMS, codcms); - FOR_EACH_PHYSICAL_RDOC(doc, r, riga) - { - const TMask& m = sf.sheet_row_mask(r -1); - - if (m.id2pos(FR_TIPODET) >= 0 && m.field(FR_TIPODET).active()) //solo se attivo il campo di indetraibilita'... - { - riga->cms2tipodet(); - riga->autoload(sf); - sf.force_update(r - 1); - } - } + if (req) + return f.error_box(TR("La commessa è obbligatoria per questo tipo documento")); + else + return true; } - if (mask.cdc_start() > 0 && mask.cdc_start() > mask.cms_start()) // && mask.codcms() != codcms) - { - mask.codcms() = codcms; - const TString codcosto = curr_cms.get(COMMESSE_CODCOSTO); - if (codcosto.full()) // Propone centro di costo solo se specificato - { - for (short i = mask.cdc_start(); i <= mask.cdc_end(); i++) - { - TEdit_field & e = mask.efield(i); - const TFieldref * f = e.field(); - if (f != NULL) - { - const int from = f->from(); - const int to = f->to(); - mask.set(i, codcosto.sub(from, to), 0x2); - } - } - } - if ((key == K_TAB && f.focusdirty()) && !doc.bloccato()) - { - char name[8] = "CODSP0"; - TString_array spese; + const TRectype& curr_cms = ((TEdit_field&)f).browse()->cursor()->curr(); + const TString80 codcms = curr_cms.get(COMMESSE_CODCMS); + mask.set(F_CMSH, codcms); - const TRectype& ven_rec = doc.clifor().vendite(); - for (int i = 1; i <= 4; i++) - { - name[5] = '0' + i; - const TString& s = ven_rec.get(name); - if (s.full()) - spese.add(s); - } - mask.mask2doc(); - doc.zero(DOC_SPESEUPD); - doc.update_spese_aut(spese, false, &mask.sfield(F_SHEET)); - mask.update_cartacei(); - } - } - if ((main_app().has_module(CTAUT, CHK_DONGLE) || main_app().has_module(PAAUT, CHK_DONGLE)) && (key == K_TAB && f.focusdirty())) - { - TToken_string key; - static TRecord_cache __cfcm(LF_CFCMS, 4); - - if (mask.get(F_TIPOCF) != "C") + if ((key == K_TAB && f.focusdirty()) || key == K_ENTER) + { + // Controlla se c'e' la gestione dei centri di costo al secondo livello + if (mask.codcms() != codcms) { - key.add(codcms); - key.add("C"); - key.add(1); - const TRectype& cfcms = cache().get(LF_CFCMS, key); - mask.set(F_CUP, cfcms.get(CFCMS_CUP), 3); - mask.set(F_CIG, cfcms.get(CFCMS_CIG), 3); - } - else - { - key.add(codcms); - key.add(mask.get(F_TIPOCF)); - key.add(mask.get(F_CODCF)); - const TRectype & cfcms1 = __cfcm.get(key); - - if (cfcms1.empty()) + if ((key == K_TAB && f.focusdirty())) { - key = codcms; + const TTipo_cms_check t = mask.doc().tipo().tipo_cms_check(); + bool chiusa = (t != _nessuno) && curr_cms.get_bool(COMMESSE_CHIUSA); + + if (chiusa && curr_cms.get_bool(COMMESSE_PROROGA)) + chiusa = mask.get_date(F_DATADOC) > curr_cms.get_date(COMMESSE_DATAPROR); + if (chiusa) + return (t == _bloccante) ? f.error_box(FR("La commessa %s è chiusa "), (const char*)codcms) : f.yesno_box(FR("La commessa chiusa %s, vuoi utilizzarla"), (const char*)codcms); + } + doc.put(DOC_CODCMS, codcms); + FOR_EACH_PHYSICAL_RDOC(doc, r, riga) + { + const TMask& m = sf.sheet_row_mask(r -1); + + if (m.id2pos(FR_TIPODET) >= 0 && m.field(FR_TIPODET).active()) //solo se attivo il campo di indetraibilita'... + { + riga->cms2tipodet(); + riga->autoload(sf); + sf.force_update(r - 1); + } + } + } + + if (mask.cdc_start() > 0 && mask.cdc_start() > mask.cms_start()) // && mask.codcms() != codcms) + { + mask.codcms() = codcms; + const TString codcosto = curr_cms.get(COMMESSE_CODCOSTO); + if (codcosto.full()) // Propone centro di costo solo se specificato + { + for (short i = mask.cdc_start(); i <= mask.cdc_end(); i++) + { + TEdit_field & e = mask.efield(i); + const TFieldref * f = e.field(); + if (f != NULL) + { + const int from = f->from(); + const int to = f->to(); + mask.set(i, codcosto.sub(from, to), 0x2); + } + } + } + if ((key == K_TAB && f.focusdirty()) && !doc.bloccato()) + { + char name[8] = "CODSP0"; + TString_array spese; + + const TRectype& ven_rec = doc.clifor().vendite(); + for (int i = 1; i <= 4; i++) + { + name[5] = '0' + i; + const TString& s = ven_rec.get(name); + if (s.full()) + spese.add(s); + } + mask.mask2doc(); + doc.zero(DOC_SPESEUPD); + doc.update_spese_aut(spese, false, &mask.sfield(F_SHEET)); + mask.update_cartacei(); + } + } + if ((main_app().has_module(CTAUT, CHK_DONGLE) || main_app().has_module(PAAUT, CHK_DONGLE)) && (key == K_TAB && f.focusdirty())) + { + TToken_string key; + static TRecord_cache __cfcm(LF_CFCMS, 4); + + if (mask.get(F_TIPOCF) != "C") + { + key.add(codcms); key.add("C"); key.add(1); - const TRectype & cfcms2 = cache().get(LF_CFCMS, key); - - mask.set(F_CUP, cfcms2.get(CFCMS_CUP), 3); - mask.set(F_CIG, cfcms2.get(CFCMS_CIG), 3); + const TRectype& cfcms = cache().get(LF_CFCMS, key); + mask.set(F_CUP, cfcms.get(CFCMS_CUP), 3); + mask.set(F_CIG, cfcms.get(CFCMS_CIG), 3); } else { - mask.set(F_CUP, cfcms1.get(CFCMS_CUP), 3); - mask.set(F_CIG, cfcms1.get(CFCMS_CIG), 3); - } - } - - key.cut(0); - key.add(codcms); - key.add(mask.get(F_TIPOCF)); - key.add(mask.get(F_CODCF)); - - const TRectype & cfcms1 = __cfcm.get(key); - const int nrigaban = cfcms1.get_int(CFCMS_NRIGABAN); + key.add(codcms); + key.add(mask.get(F_TIPOCF)); + key.add(mask.get(F_CODCF)); + const TRectype & cfcms1 = __cfcm.get(key); - if (nrigaban > 0) - { + if (cfcms1.empty()) + { + key = codcms; + key.add("C"); + key.add(1); + const TRectype & cfcms2 = cache().get(LF_CFCMS, key); + + mask.set(F_CUP, cfcms2.get(CFCMS_CUP), 3); + mask.set(F_CIG, cfcms2.get(CFCMS_CIG), 3); + } + else + { + mask.set(F_CUP, cfcms1.get(CFCMS_CUP), 3); + mask.set(F_CIG, cfcms1.get(CFCMS_CIG), 3); + } + } key.cut(0); + key.add(codcms); key.add(mask.get(F_TIPOCF)); key.add(mask.get(F_CODCF)); - key.add("V"); - key.add(nrigaban); - - const TRectype & cfban = cache().get(LF_CFBAN, key); + + const TRectype & cfcms1 = __cfcm.get(key); + const int nrigaban = cfcms1.get_int(CFCMS_NRIGABAN); - mask.set(mask.field(F_CODABIA).active() ? F_CODABIA : F_CODABIA1, cfban.get(CFBAN_ABI), 3); - mask.set(mask.field(F_CODCABA).active() ? F_CODCABA : F_CODCABA1, cfban.get(CFBAN_CAB), 3); - mask.set(F_IBAN, cfban.get(CFBAN_IBAN)); - } - } //if (main_app().has_module(CTAUT) && (... + if (nrigaban > 0) + { + key.cut(0); + key.add(mask.get(F_TIPOCF)); + key.add(mask.get(F_CODCF)); + key.add("V"); + key.add(nrigaban); + + const TRectype & cfban = cache().get(LF_CFBAN, key); + + mask.set(mask.field(F_CODABIA).active() ? F_CODABIA : F_CODABIA1, cfban.get(CFBAN_ABI), 3); + mask.set(mask.field(F_CODCABA).active() ? F_CODCABA : F_CODCABA1, cfban.get(CFBAN_CAB), 3); + mask.set(F_IBAN, cfban.get(CFBAN_IBAN)); + } + } //if (main_app().has_module(CTAUT) && (... + } //aggiornamento automatico del campo codice contabilita' separata nel caso di commessa che ce lo abbia if (mask.id2pos(F_CONTSEP) >= 0 && main_app().has_module(NPAUT, CHK_DONGLE) && mask.get(F_CONTSEP).full() && f.running_check(key)) @@ -3122,7 +3125,6 @@ bool codcms_handler(TMask_field& f, KEY key) if (key == K_TAB && !mask.is_running()) mask.codcms() = mask.doc().get(DOC_CODCMS); } - return true; } @@ -3401,11 +3403,7 @@ bool datafcomp_handler(TMask_field& f, KEY key) // Gestione note articolo /////////////////////////////////////////////////////////// -#if 0 && (_MSC_VER > 1300) // Dalla versione 10.x #define NAR_TABLE "&VENAR" -#else // Versione 3.x -#define NAR_TABLE "NAR" -#endif class TNar_mask : public TAutomask {