diff --git a/src/lv/lv2900.cpp b/src/lv/lv2900.cpp index 72ed7fcdd..bef1e84f1 100755 --- a/src/lv/lv2900.cpp +++ b/src/lv/lv2900.cpp @@ -240,7 +240,7 @@ protected: void sposta_file(const TFilename& file); bool genera_documenti(const TFilename& file, TAssoc_array& documenti, TLog_report& logrep); void prepara_movimenti(const TFilename& file, TAssoc_array& movimenti, TLog_report& logrep); - bool genera_movmag(TAssoc_array& movimenti); + bool genera_movmag(TAssoc_array& movimenti, TLog_report& logrep); public: TConta_pulito_msk(); @@ -329,7 +329,7 @@ bool TConta_pulito_msk::on_field_event(TOperable_field& f,TField_event e,long jo prepara_movimenti(file, movimenti, logrep); if (movimenti.items() > 0) { - genera_movmag(movimenti); + genera_movmag(movimenti, logrep); if (_auto != "A") message_box(TR("Generazione dei movimenti di magazzino terminata")); } @@ -807,7 +807,7 @@ void TConta_pulito_msk::prepara_movimenti(const TFilename& file, TAssoc_array& m } //GENERA_MOVMAG: metodo che genera i movimenti di magazzino dai pacchi -bool TConta_pulito_msk::genera_movmag(TAssoc_array& movimenti) +bool TConta_pulito_msk::genera_movmag(TAssoc_array& movimenti, TLog_report& logrep) { const TCausale_magazzino causale(ini_get_string(CONFIG_DITTA, "lv", "CAUCARMAG")); TString8 magazzino; @@ -893,13 +893,22 @@ bool TConta_pulito_msk::genera_movmag(TAssoc_array& movimenti) { TLocalisamfile& pacchi = selrighe.cursor()->file(); // scorro tutti i pacchi trovati - for (bool ok = selrighe.move_first(); ok; ok = selrighe.move_next()) - { - TRiga_pacco rp = pacchi.curr(); - rp.set_movmag(nummov); - const int err = rp.rewrite(pacchi); - if (err != NOERR) - return error_box(FR("Errore %d in aggiornamento numero di movimento sul file pacchi"), err); + for (bool ok = selrighe.move_first(); ok; ok = selrighe.move_next()) + { + TRiga_pacco rp = pacchi.curr(); + rp.set_movmag(nummov); + const int err = rp.rewrite(pacchi); + if (err != NOERR) + { + TString msg = FR("Errore %d in aggiornamento numero di movimento sul file pacchi"); + if (_auto == "A") + { + logrep.log(2, msg); + return false; + } + else + return error_box(msg, err); + } } } } diff --git a/src/lv/lv3300.cpp b/src/lv/lv3300.cpp index 903133132..7078d680b 100755 --- a/src/lv/lv3300.cpp +++ b/src/lv/lv3300.cpp @@ -414,30 +414,32 @@ bool TGestione_buoni_msk::set_righe_buono_handler(TMask_field& f, KEY k) default: break; } - TGestione_buoni_msk& dmsk = (TGestione_buoni_msk&)f.mask(); - if(dmsk.mode() == MODE_INS) - dmsk.set(F_CODAG, dmsk.proponi_autista()); + TGestione_buoni_msk& dmsk = (TGestione_buoni_msk&)f.mask(); - if (ok && k == K_TAB && ((dmsk.insert_mode() && f.to_check(k, true)) || f.focusdirty()) && dmsk.mode() != MODE_MOD) + if (ok && k == K_TAB && ((dmsk.insert_mode() && f.to_check(k, true)) || (f.focusdirty()) && dmsk.edit_mode())) { - f.set_focusdirty(false); - + const TString8 autista = dmsk.proponi_autista(); TDocumento& doc = dmsk.doc(); - TSheet_field& sheet = dmsk.sfield(F_SHEET); int nrighe = sheet.items(); - const long codcf = dmsk.get_long(F_CODCF); const int indsped = dmsk.get_int(F_CODINDSP); TDate datadoc = dmsk.get_date(F_DATADOC); + if (!datadoc.ok()) datadoc = TODAY; + const int anno = datadoc.year(); + + f.set_focusdirty(false); + if (dmsk.insert_mode() && cache().get(LF_AGENTI, autista).full()) + dmsk.set(F_CODAG, autista); if (codcf <= 0) return true; const long codcont = lv_find_contract(codcf,indsped,datadoc); + if (codcont <= 0) { warning_box(TR("Non ci sono contratti in essere alla data indicata"));