Patch level : 12.0 364
Files correlati : li0.exe Commento : - Sistemato bug anno lilib01 e tolta sovrascrittura cliente. - Aggiunto blocco durante l'inserimento di una nuova dichiarazione se la precedente del cliente non è chiusa. - Tolto sovrascrittura flag "Usa li". git-svn-id: svn://10.65.10.50/branches/R_10_00@23681 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5d4ba97680
commit
05e9108d56
@ -17,6 +17,9 @@ class TLetint_mask : public TAutomask
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
virtual bool on_key(KEY k);
|
||||
bool hasLiOpen();
|
||||
|
||||
bool block;
|
||||
|
||||
public:
|
||||
TDate ultima_stampa(int anno);
|
||||
@ -83,15 +86,29 @@ bool TLetint_mask::on_field_event(TOperable_field& o, TField_event e, long jolly
|
||||
{
|
||||
}
|
||||
break;
|
||||
case F_CODCLI:
|
||||
// Controllo se il cliente non ha già una dichiarazione aperta
|
||||
if(hasLiOpen() && insert_mode())
|
||||
{
|
||||
warning_box("Il cliente %d ha già una dichiarazione aperta! Chiudere prima la precedente!", get_int(F_CODCLI));
|
||||
|
||||
disable(DLG_SAVEREC);
|
||||
block = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
enable(DLG_SAVEREC);
|
||||
enable(F_TIPOOP);
|
||||
}
|
||||
case F_TIPOOP:
|
||||
switch(get_int(F_TIPOOP))
|
||||
{
|
||||
case 1:
|
||||
enable(DLG_SAVEREC);
|
||||
if(!block) enable(DLG_SAVEREC);
|
||||
disable(F_DAL);
|
||||
break;
|
||||
case 2:
|
||||
enable(DLG_SAVEREC);
|
||||
if(!block) enable(DLG_SAVEREC);
|
||||
enable(F_DAL);
|
||||
break;
|
||||
case 3:
|
||||
@ -101,28 +118,27 @@ bool TLetint_mask::on_field_event(TOperable_field& o, TField_event e, long jolly
|
||||
default:
|
||||
break;
|
||||
}
|
||||
case DLG_SAVEREC:
|
||||
{
|
||||
// Salvo le informazioni nel cliente:
|
||||
TRectype cli = cache().get(LF_CFVEN, TString("C|")<< get_int(F_CODCLI));
|
||||
if(!cli.get("VSNRPROT").empty() && TDate(get(F_DAL)) <= TDate(TODAY))
|
||||
{
|
||||
cli.put("VSNRPROT", get_int(F_VSPROT));
|
||||
cli.put("VSDATAREG", get_date(F_VSDATA));
|
||||
cli.put("NSNPROT", get_int(F_NUMPROT));
|
||||
cli.put("NSDATAREG", get_date(F_DATAREG));
|
||||
cli.rewrite(TLocalisamfile(LF_CFVEN));
|
||||
break;
|
||||
}
|
||||
// Abilito l'utilizzo delle dichiarazioni di intento
|
||||
ini_set_bool(CONFIG_DITTA, "ve", "USELETTERE", true);
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TLetint_mask::hasLiOpen()
|
||||
{
|
||||
TRelation relLi(LF_LETINT);
|
||||
TRectype r_li(relLi.curr());
|
||||
r_li.put("CODCLI", get(F_CODCLI));
|
||||
r_li.put("ANNO", 2017); // É da quest'anno che abbiamo messo il campo chiusa
|
||||
|
||||
TCursor c_li(&relLi, "", 2, &r_li, &r_li);
|
||||
for(c_li = 0; c_li.pos() < c_li.items(); ++c_li)
|
||||
{
|
||||
if(!c_li.curr().get_bool("CHIUSA")) return true; // Alla prima trovata esco
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
TDate TLetint_mask::ultima_stampa(int anno)
|
||||
{
|
||||
TTable reg("REG");
|
||||
@ -146,7 +162,7 @@ TDate TLetint_mask::ultima_stampa(int anno)
|
||||
}
|
||||
|
||||
|
||||
TLetint_mask::TLetint_mask() : TAutomask("li0400a")
|
||||
TLetint_mask::TLetint_mask() : TAutomask("li0400a"), block(false)
|
||||
{
|
||||
first_focus(F_ANNO);
|
||||
}
|
||||
|
@ -28,7 +28,8 @@ void TLi_manager::elabPlafond()
|
||||
TDate today(TODAY);
|
||||
if(!iniDicInt.ok())
|
||||
filtro.add("ANNO", today.year());
|
||||
filtro.add("ANNO", iniDicInt.year());
|
||||
else
|
||||
filtro.add("ANNO", iniDicInt.year());
|
||||
|
||||
// Creo un cursore ordinato e prelevo la prima riga non chiusa
|
||||
TCursor c_dicint(&letint, "", 2, &filtro, &filtro);
|
||||
@ -43,22 +44,14 @@ void TLi_manager::elabPlafond()
|
||||
TRectype row = c_dicint.curr();
|
||||
if(!row.get_bool("CHIUSA"))
|
||||
{
|
||||
if(iniDicInt.ok() && row.get_date("DAL") > iniDicInt) continue;
|
||||
if(iniDicInt.ok() && row.get_date("DAL") > iniDicInt) break;
|
||||
done = true;
|
||||
if(row.get_int("TIPOOP") != FINO_A_PLAFOND && row.get_int("TIPOOP") != SOLUZIONE_UNICA) continue;
|
||||
if(row.get_int("TIPOOP") != FINO_A_PLAFOND && row.get_int("TIPOOP") != SOLUZIONE_UNICA) break;
|
||||
|
||||
if(row.get_int("TIPOOP") == SOLUZIONE_UNICA) soluzione = true;
|
||||
iniDicInt = row.get_date("DAL");
|
||||
plafond = row.get_real("IMPORTO");
|
||||
validPlafond = true;
|
||||
|
||||
// Salvo le informazioni nel cliente:
|
||||
TRectype cli = cache().get(LF_CFVEN, TString("C|")<<codcli);
|
||||
cli.put("VSNRPROT", row.get_int("VSPROT"));
|
||||
cli.put("VSDATAREG", row.get_date("VSDATA"));
|
||||
cli.put("NSNPROT", row.get_int("NUMPROT"));
|
||||
cli.put("NSDATAREG", row.get_date("DATAREG"));
|
||||
cli.rewrite(TLocalisamfile(LF_CFVEN));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user