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:
mtollari 2017-03-09 15:29:54 +00:00
parent 5d4ba97680
commit 05e9108d56
2 changed files with 39 additions and 30 deletions

View File

@ -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);
}

View File

@ -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));
}
}
}