Patch level : 10.0

Files correlati     : lv0, tracciati record
Ricompilazione Demo : [ ]
Commento            :
Aggiunti i campi relativi al tipo forfait in testata e fatto in modo che, se selezionati, valgano per tutte le righe del contratto


git-svn-id: svn://10.65.10.50/trunk@18960 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca83 2009-05-28 15:52:36 +00:00
parent fc80f47683
commit 999644b0a8
4 changed files with 117 additions and 53 deletions

View File

@ -1,3 +1,3 @@
168
0
$lvcondv|||187|0|Tabella testate di contratto|||
$lvcondv|||189|0|Tabella testate di contratto|||

View File

@ -1,5 +1,5 @@
168
44
46
CODCONT|3|6|0|Codice Contratto
STATUS|1|2|0|Stato del contratto, <CH>chiuso, <CO>confermato, <DC>da confermare
PROPOSTA|8|1|0|Proposta di contratto
@ -43,6 +43,8 @@ NUMETI|2|5|0|Numero etichette
RITAUDTTMP|8|1|0|Ritiro automatico dotazione temporanea
DTFIXDDT|5|8|0|Data fissa per creazione DDT da sporco
IMPCANFIS|4|18|3|Importo per canone fisso
NOLCIC|1|1|0|Scelta per dotazione odierna o iniziale
VCARTCLI|1|1|0|Scelta per la % sul val.conv su articolo <A> o cliente <C>
COMMENTI|11|10|0|Commenti e note
1
CODCF+CODCONT|

View File

@ -86,7 +86,7 @@ bool TContratti_msk::on_art_select()
//estraggo il record corrispondente su LF_CLIFOGIAC
const TRecmag_lavanderie& reclav = artrec.find_rec(annoes);
//recupero la maschera di riga
TMask& rowmask = ss.sheet_mask();
TMask& rowmask = ss.sheet_mask();
if (ini_get_string(CONFIG_DITTA, "lv", "Qtamodi") == "X")
{
@ -209,56 +209,7 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly
_post_contr = lv_find_contract(codcf, indsped, oggi);
}
}
break;
case DLG_PLANNING:
//se viene premuto il bottone "Giri", lancia lv0500 (generatore automatico dei giri)
if (e == fe_button && edit_mode())
{
TRelation_application& app = (TRelation_application&) main_app();
app.get_relation()->read(_isequal,_unlock);
TString str;
str << "lv0 -4 " << get(F_CODCF) << " " << get(F_CODCONT);
TExternal_app planning(str);
planning.run();
app.get_relation()->read(_isequal,_lock);
}
break;
case S_CODART:
if (!o.empty()) //se il campo risulta pieno
{
if (e == fe_modify) //e se risulta modificato
{
const TString& codart = o.get();
TSheet_field& ss = sfield(F_RIGHE);
TMask& m = o.mask(); // maschera di riga!
//se ho scritto un articolo diverso da quello che esisteva prima
//e se si desidera veramente modificarlo, allora permetto la modifica
//e forzo l'updatre della riga, altrimenti riscrivo l'articolo che c'era prima
//e lascio tutto invariato
if (_artrig.full() && codart != _artrig)
{
if (!yesno_box("Si desidera veramente modificare l'articolo %s",(const char*) _artrig))
{
m.set(S_CODART,_artrig);
TToken_string& row=ss.row(ss.selected());
row.add(_artrig, 0);
ss.force_update(ss.selected());
}
else
_artrig = codart;
}
//se all'articolo è associata un'unità di misura, la propongo
//in automatico e richiamo il metodo ON_ART_SELECT(); altrimenti lo richiamo
//solo se è arrivato un fe_init al campo
on_art_select();
}
else
if (e == fe_init)
on_art_select();
}
break;
break;
case F_RIGHE:
//se lo sheet ha ricevuto un se_enter, allora aggiorno i campi del dettaglio sulla mashera principale
if (e == se_enter)
@ -319,6 +270,114 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly
return false;
}
break;
case F_TIPOFORFTE:
case F_NOLCICTE:
case F_VCARTCLITE:
{
const int tipoforfte = atoi(get(F_TIPOFORFTE));
if (e == fe_modify || e == fe_init)
{
TSheet_field& ss = sfield(F_RIGHE);
//recupero le posizioni dei campi che devo modificare
const int pos_tipoforf = ss.cid2index(S_TIPOFORF);
const int pos_nolcic = ss.cid2index(S_NOLCIC);
const int pos_vcartcli = ss.cid2index(S_VCARTCLI);
if (tipoforfte > 0)
{
//recupero i valori che devo copiare
const char nolcic = get(F_NOLCICTE)[0];
const char vcartcli = get(F_VCARTCLITE)[0];
FOR_EACH_SHEET_ROW(ss, r, row)
{
TToken_string& riga = ss.row(r);
//scrivo i valori alle posizioni corrette
riga.add(tipoforfte, pos_tipoforf);
riga.add(nolcic, pos_nolcic);
riga.add(vcartcli, pos_vcartcli);
//disabilito le celle interessate
ss.disable_cell(r, pos_tipoforf);
ss.disable_cell(r, pos_nolcic);
ss.disable_cell(r, pos_vcartcli);
}
field(F_TIPOFORF).disable();
field(F_NOLCIC).disable();
field(F_VCARTCLI).disable();
}
else
{
FOR_EACH_SHEET_ROW(ss, r, row)
{
TToken_string& riga = ss.row(r);
riga.add(tipoforfte, pos_tipoforf);
riga.add('I', pos_nolcic);
riga.add('A', pos_vcartcli);
ss.enable_cell(r, pos_tipoforf);
ss.enable_cell(r, pos_nolcic);
ss.enable_cell(r, pos_vcartcli);
}
field(F_TIPOFORF).enable();
field(F_NOLCIC).enable();
field(F_VCARTCLI).enable();
}
ss.force_update();
if (ss.items() >= 0)
ss.select(0);
}
}
break;
case S_CODART:
if (!o.empty()) //se il campo risulta pieno
{
if (e == fe_modify) //e se risulta modificato
{
const TString& codart = o.get();
TSheet_field& ss = sfield(F_RIGHE);
TMask& m = o.mask(); // maschera di riga!
//se ho scritto un articolo diverso da quello che esisteva prima
//e se si desidera veramente modificarlo, allora permetto la modifica
//e forzo l'updatre della riga, altrimenti riscrivo l'articolo che c'era prima
//e lascio tutto invariato
if (_artrig.full() && codart != _artrig)
{
if (!yesno_box("Si desidera veramente modificare l'articolo %s",(const char*) _artrig))
{
m.set(S_CODART,_artrig);
TToken_string& row=ss.row(ss.selected());
row.add(_artrig, 0);
ss.force_update(ss.selected());
}
else
_artrig = codart;
}
//se all'articolo è associata un'unità di misura, la propongo
//in automatico e richiamo il metodo ON_ART_SELECT(); altrimenti lo richiamo
//solo se è arrivato un fe_init al campo
on_art_select();
}
else
if (e == fe_init)
on_art_select();
}
break;
case DLG_PLANNING:
//se viene premuto il bottone "Giri", lancia lv0500 (generatore automatico dei giri)
if (e == fe_button && edit_mode())
{
TRelation_application& app = (TRelation_application&) main_app();
app.get_relation()->read(_isequal,_unlock);
TString str;
str << "lv0 -4 " << get(F_CODCF) << " " << get(F_CODCONT);
TExternal_app planning(str);
planning.run();
app.get_relation()->read(_isequal,_lock);
}
break;
case DLG_NEWREC:
if (e == fe_button)
{

View File

@ -43,6 +43,9 @@
#define F_COLORE 241
#define F_BARCODE 242
#define F_RICALT 243
#define F_TIPOFORFTE 244
#define F_NOLCICTE 245
#define F_VCARTCLITE 246
// Campi del dettalio sotto lo spreadsheet