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:
parent
fc80f47683
commit
999644b0a8
@ -1,3 +1,3 @@
|
|||||||
168
|
168
|
||||||
0
|
0
|
||||||
$lvcondv|||187|0|Tabella testate di contratto|||
|
$lvcondv|||189|0|Tabella testate di contratto|||
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
168
|
168
|
||||||
44
|
46
|
||||||
CODCONT|3|6|0|Codice Contratto
|
CODCONT|3|6|0|Codice Contratto
|
||||||
STATUS|1|2|0|Stato del contratto, <CH>chiuso, <CO>confermato, <DC>da confermare
|
STATUS|1|2|0|Stato del contratto, <CH>chiuso, <CO>confermato, <DC>da confermare
|
||||||
PROPOSTA|8|1|0|Proposta di contratto
|
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
|
RITAUDTTMP|8|1|0|Ritiro automatico dotazione temporanea
|
||||||
DTFIXDDT|5|8|0|Data fissa per creazione DDT da sporco
|
DTFIXDDT|5|8|0|Data fissa per creazione DDT da sporco
|
||||||
IMPCANFIS|4|18|3|Importo per canone fisso
|
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
|
COMMENTI|11|10|0|Commenti e note
|
||||||
1
|
1
|
||||||
CODCF+CODCONT|
|
CODCF+CODCONT|
|
||||||
|
161
lv/lv0400.cpp
161
lv/lv0400.cpp
@ -86,7 +86,7 @@ bool TContratti_msk::on_art_select()
|
|||||||
//estraggo il record corrispondente su LF_CLIFOGIAC
|
//estraggo il record corrispondente su LF_CLIFOGIAC
|
||||||
const TRecmag_lavanderie& reclav = artrec.find_rec(annoes);
|
const TRecmag_lavanderie& reclav = artrec.find_rec(annoes);
|
||||||
//recupero la maschera di riga
|
//recupero la maschera di riga
|
||||||
TMask& rowmask = ss.sheet_mask();
|
TMask& rowmask = ss.sheet_mask();
|
||||||
|
|
||||||
if (ini_get_string(CONFIG_DITTA, "lv", "Qtamodi") == "X")
|
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);
|
_post_contr = lv_find_contract(codcf, indsped, oggi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
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;
|
|
||||||
case F_RIGHE:
|
case F_RIGHE:
|
||||||
//se lo sheet ha ricevuto un se_enter, allora aggiorno i campi del dettaglio sulla mashera principale
|
//se lo sheet ha ricevuto un se_enter, allora aggiorno i campi del dettaglio sulla mashera principale
|
||||||
if (e == se_enter)
|
if (e == se_enter)
|
||||||
@ -319,6 +270,114 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
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:
|
case DLG_NEWREC:
|
||||||
if (e == fe_button)
|
if (e == fe_button)
|
||||||
{
|
{
|
||||||
|
@ -43,6 +43,9 @@
|
|||||||
#define F_COLORE 241
|
#define F_COLORE 241
|
||||||
#define F_BARCODE 242
|
#define F_BARCODE 242
|
||||||
#define F_RICALT 243
|
#define F_RICALT 243
|
||||||
|
#define F_TIPOFORFTE 244
|
||||||
|
#define F_NOLCICTE 245
|
||||||
|
#define F_VCARTCLITE 246
|
||||||
|
|
||||||
// Campi del dettalio sotto lo spreadsheet
|
// Campi del dettalio sotto lo spreadsheet
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user