From 999644b0a848e50ccda51d5a983377c13fe553c6 Mon Sep 17 00:00:00 2001 From: luca83 Date: Thu, 28 May 2009 15:52:36 +0000 Subject: [PATCH] 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 --- lv/f168.dir | 2 +- lv/f168.trr | 4 +- lv/lv0400.cpp | 161 ++++++++++++++++++++++++++++++++++---------------- lv/lv0400.h | 3 + 4 files changed, 117 insertions(+), 53 deletions(-) diff --git a/lv/f168.dir b/lv/f168.dir index 8f661f7cc..363c8ad59 100755 --- a/lv/f168.dir +++ b/lv/f168.dir @@ -1,3 +1,3 @@ 168 0 -$lvcondv|||187|0|Tabella testate di contratto||| +$lvcondv|||189|0|Tabella testate di contratto||| diff --git a/lv/f168.trr b/lv/f168.trr index 257a56315..fa7e15d72 100755 --- a/lv/f168.trr +++ b/lv/f168.trr @@ -1,5 +1,5 @@ 168 -44 +46 CODCONT|3|6|0|Codice Contratto STATUS|1|2|0|Stato del contratto, chiuso, confermato, 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 o cliente COMMENTI|11|10|0|Commenti e note 1 CODCF+CODCONT| diff --git a/lv/lv0400.cpp b/lv/lv0400.cpp index 7e3b20847..6fc8fb5fb 100755 --- a/lv/lv0400.cpp +++ b/lv/lv0400.cpp @@ -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) { diff --git a/lv/lv0400.h b/lv/lv0400.h index 00d8b830a..2be327a43 100755 --- a/lv/lv0400.h +++ b/lv/lv0400.h @@ -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