diff --git a/ve/ve0100.cpp b/ve/ve0100.cpp index 0b8070fab..cde40c561 100755 --- a/ve/ve0100.cpp +++ b/ve/ve0100.cpp @@ -189,6 +189,10 @@ bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key ) ss.check_row(r); ss.select(r); } + else + if ( key == K_TAB ) // modifica + set_curr_um(ss.sheet_mask()); + return TRUE; } diff --git a/ve/velib.h b/ve/velib.h index cb8b57592..807bf77ea 100755 --- a/ve/velib.h +++ b/ve/velib.h @@ -74,6 +74,7 @@ bool dummy_hndl(TMask_field& field, KEY key); bool condpag_hndl(TMask_field& field, KEY key); bool note_hndl(TMask_field& field, KEY key); bool data_hndl(TMask_field& field, KEY key); +void set_curr_um(const TMask & m); class TDocumento_variable_field : public TVariable_field { diff --git a/ve/velib01.cpp b/ve/velib01.cpp index 39f5820ed..288d11bef 100755 --- a/ve/velib01.cpp +++ b/ve/velib01.cpp @@ -387,6 +387,12 @@ bool liv_handler( TMask_field& f, KEY key ) next.on_hit(); } return TRUE; +} + +void set_curr_um(const TMask & m) +{ + curr_um = m.get(FR_UMQTA); + curr_fc = -1.0; } bool umart_handler( TMask_field& f, KEY key ) @@ -404,7 +410,6 @@ bool umart_handler( TMask_field& f, KEY key ) condv.set_riga(&row_mask); condv.set_anamag(anamag); condv.set_umart(umart); - condv.ricerca(TRUE); const TString16 um(f.get()); real fc(1.0); @@ -417,15 +422,26 @@ bool umart_handler( TMask_field& f, KEY key ) if (umart.read() == NOERR) { real qta(row_mask.get_real(FR_QTA)); - qta *= curr_fc; fc = umart.get_real(UMART_FC); + if (curr_fc < ZERO) + { + umart.put(UMART_CODART, row_mask.get(FR_CODARTMAG)); + umart.put(UMART_UM, curr_um); + if (umart.read() == NOERR) + curr_fc = umart.get_real(UMART_FC); + else + curr_fc = 1.0; + } + qta *= curr_fc; qta /= fc; + qta.round(5); row_mask.set(FR_QTA, qta); } } curr_um = um; curr_fc = fc; + condv.ricerca(TRUE); } return TRUE; }