Patch level : 12.00 1370
Files correlati : ve0.exe Bug : Commento: L'obbigatorieta dei campi di analitica viene contrllata in fase di registrazione
This commit is contained in:
parent
4880af2699
commit
818d4ec7ae
@ -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
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user