diff --git a/lv/lv0400.cpp b/lv/lv0400.cpp index f3acef0fc..b97444d14 100755 --- a/lv/lv0400.cpp +++ b/lv/lv0400.cpp @@ -108,27 +108,31 @@ bool TContratti_msk::on_art_select(TField_event e) //se esiste il record su LF_CLIFOGIAC, recupero l'unità di misura dalla riga dello sheet selezionata //e setto i campi delle dotazioni e dei consegnati ai valori corretti riportati alla giusta unità di misura + real dotin = ZERO; + real dotod = ZERO; + real dottmp = ZERO; + real consyear = ZERO; + real consmonth = ZERO; + if (!reclav.empty()) { - if (rowmask.get(S_DOTIN).blank()) - { - //calcolo dotazione iniziale, scritta sia sulla maschera che sullo sheet - const real dotin = reclav.get_real(CLIFOGIAC_DOTIN); - rowmask.set(S_DOTIN, dotin); - //calcolo dotazione odierna, scritta sia sulla maschera che sullo sheet - const real dotod = reclav.get_real(CLIFOGIAC_DOTOD); - rowmask.set(S_DOTOD, dotod); - //calcolo dotazione temporanea, scritta sia sulla maschera che sullo sheet - const real dottmp = reclav.get_real(CLIFOGIAC_DOTTM); - rowmask.set(S_DOTTMP, dottmp); - } + //calcolo dotazione iniziale, scritta sia sulla maschera che sullo sheet + dotin = reclav.get_real(CLIFOGIAC_DOTIN); + //calcolo dotazione odierna, scritta sia sulla maschera che sullo sheet + dotod = reclav.get_real(CLIFOGIAC_DOTOD); + //calcolo dotazione temporanea, scritta sia sulla maschera che sullo sheet + dottmp = reclav.get_real(CLIFOGIAC_DOTTM); //calcolo consegnato anno, scritto sia sulla maschera che sullo sheet - const real consyear = reclav.get_real("CONSANNO"); - rowmask.set(S_CONSANNO, consyear); + consyear = reclav.get_real("CONSANNO"); //calcolo consegnato mese, scritto sia sulla maschera che sullo sheet - const real consmonth = reclav.get_real("CONSMESE"); - rowmask.set(S_CONSMESE, consmonth); - } + consmonth = reclav.get_real("CONSMESE"); + } + + rowmask.set(S_DOTIN, dotin); + rowmask.set(S_DOTOD, dotod); + rowmask.set(S_DOTTMP, dottmp); + rowmask.set(S_CONSANNO, consyear); + rowmask.set(S_CONSMESE, consmonth); //instanzio una cache sull'anagrafica di magazzino //per leggere il valore di PPCONF corretto e sempre aggiornato @@ -514,17 +518,19 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly if(r == rigasel) continue; - if(riga->get(0) == codart) + const TString80 tmp = riga->get(0); + if(tmp == art) { TString msg; msg << "L'articolo " << codart << " è già presente a contratto e non è possibile reinserirlo."; warning_box(msg); - + m.set(S_CODART, _artrig); TToken_string& row = ss.row(rigasel); row.add(_artrig, 0); ss.force_update(rigasel); - break; + + return false; } } @@ -587,21 +593,19 @@ bool TContratti_msk::on_field_event(TOperable_field& o,TField_event e,long jolly //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 (codart != _artrig) { - if (noyes_box("Si desidera veramente modificare l'articolo %s",(const char*) _artrig)) - _artrig = codart; - + if (_artrig.empty() || noyes_box("Si desidera veramente modificare l'articolo %s",(const char*) _artrig)) + _artrig = codart; else - { m.set(S_CODART, _artrig); - TToken_string& row = ss.row(ss.selected()); - row.add(_artrig, 0); - ss.force_update(ss.selected()); - } + + TToken_string& row = ss.row(ss.selected()); + row.add(_artrig, 0); + ss.force_update(ss.selected()); } //se all'articolo è associata un'unità di misura, la propongo - //in automatico e richiamo il metodo ON_ART_SELECT(); altrimenti lo richiamo + //in automatico e richiamo il metodo (); altrimenti lo richiamo //solo se è arrivato un fe_init al campo on_art_select(e); }