diff --git a/mg/mg1200.cpp b/mg/mg1200.cpp index 380d59084..fe0969103 100755 --- a/mg/mg1200.cpp +++ b/mg/mg1200.cpp @@ -4,18 +4,15 @@ #include "mglib.h" #include "../cg/cglib01.h" - class TMask_buildmov: public TMask { TEsercizi_contabili _esercizi; static bool handle_annoes(TMask_field &, KEY); // handler del numero di registrazione public: TMask_buildmov(); - virtual ~TMask_buildmov() {} }; -TMask_buildmov::TMask_buildmov() - : TMask("mg1200") +TMask_buildmov::TMask_buildmov() : TMask("mg1200") { set_handler(F_ANNOES, handle_annoes); } @@ -26,31 +23,29 @@ bool TMask_buildmov::handle_annoes(TMask_field &fld, KEY k) if (fld.empty()) { // DEFAULT - const long esc=mask._esercizi.date2esc(mask.get_date(F_DATA)); - if (esc!=0) - fld.set(esc); + const TDate d = mask.get_date(F_DATA); + const int codes = mask._esercizi.date2esc(d); + if (codes > 0) + fld.set(codes); } if (fld.to_check(k) || k == K_ENTER) { - if (mask._esercizi.exist(mask.get_int(F_ANNOES))) + const int codes = mask.get_int(F_ANNOES); + if (codes > 0 && mask._esercizi.exist(codes)) { - const TEsercizio & e=mask._esercizi.esercizio(mask.get_int(F_ANNOES)); - if (e.chiusura_mag()!=TDate(NULLDATE)) - { - fld.error_box(TR("Il magazzino dell'esercizio indicato risulta chiuso \nImpossibile effettuare la ricostruzione saldi")) ; - return FALSE; - } + const TEsercizio& e = mask._esercizi.esercizio(codes); + if (e.chiusura_mag().ok()) + return fld.error_box(TR("Il magazzino dell'esercizio indicato risulta chiuso\n" + "Impossibile effettuare la ricostruzione saldi")); } } - return TRUE; + return true; } class TApp_rebuildbalances : public TSkeleton_application { TRelation* _rel; // relazione TCursor* _cur; // cursore - int _annoes; - bool _reset_giac; protected: virtual bool create(); @@ -71,7 +66,8 @@ void TApp_rebuildbalances::main_loop() while (m.run()==K_ENTER) { if (!rebuild_balances(m.get_int(F_ANNOES))) - warning_box(TR("A causa degli errori riscontrati i saldi di magazzino \npotrebbero non essere stati del tutto aggiornati. \nProcedere ad una nuova operazione di ''Ricostruzione saldi''")); + warning_box(TR("A causa degli errori riscontrati i saldi di magazzino\npotrebbero non essere stati del tutto aggiornati.\n" + "Procedere ad una nuova operazione di ''Ricostruzione saldi''")); } } diff --git a/mg/mglib02a.cpp b/mg/mglib02a.cpp index 4082540b5..b9e3a2cd6 100755 --- a/mg/mglib02a.cpp +++ b/mg/mglib02a.cpp @@ -621,22 +621,15 @@ bool TMov_mag::update_balances(bool lock) TRectype& magcurr = mag.curr(); TString_array keys_mag; - _saldi_mag.get_keys(keys_mag); keys_mag.sort(); - TProgind* pi = NULL; - if (keys_mag.items() >= 100) - { - TString msg; - msg << TR("Aggiornamento saldi del movimento ") << get(MOVMAG_NUMREG) - << ": " << get(MOVMAG_DESCR); - pi = new TProgind(keys_mag.items(), msg, false, true); - } - + TString msg; + msg << TR("Aggiornamento saldi del movimento ") << get(MOVMAG_NUMREG) + << ": " << get(MOVMAG_DESCR); + TProgress_monitor pi(keys_mag.items(), msg, false); FOR_EACH_ARRAY_ROW(keys_mag, r, curr_key) { - if (pi) pi->addstatus(1); const TSaldo_mag& saldo = (const TSaldo_mag&)_saldi_mag[*curr_key]; const TCodice_articolo& codart = saldo.codart(); @@ -665,9 +658,8 @@ bool TMov_mag::update_balances(bool lock) if (lock) art.unlock(); } + pi.add_status(); } - - if (pi) delete pi; } if (_saldi_mag_clifo.items() > 0) @@ -1028,10 +1020,12 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz, if (a.open(_excllock) != NOERR) return false; + const TEsercizi_contabili& esc = esercizi(); + TBalance_params p; p.codes = codes; - p.codesprec = esercizi().pred(codes); - p.closed = p.codesprec <= 0 || esercizi().esercizio(p.codesprec).chiusura_mag().ok(); + p.codesprec = esc.pred(codes); + p.closed = p.codesprec <= 0 || esc[p.codesprec].chiusura_mag().ok(); p.zero_giac = p.closed; p.catv = catven; p.codl = codlis; @@ -1045,16 +1039,19 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz, TCursor anamag_cur(&anamag_rel); //anamag_cur.relation()->lfile().set_curr(new TArticolo_giacenza()); - msg.format(FR("Ricostruzione saldi esercizio %04d : azzeramento..."), codes); + msg.format(FR("Ricostruzione saldi esercizio %04d: azzeramento..."), codes); anamag_cur.scan(reset_giac, (void*)&p, msg); } + if (p.codesprec > 0) { - TString filter; filter << CLIFOGIAC_ANNOES << "==" << p.codesprec; + TString16 filter; + filter << CLIFOGIAC_ANNOES << "==" << p.codesprec; // Copia giacenze da anno precedente ad anno corrente + TRelation clifogiac_rel(LF_CLIFOGIAC); TCursor c(&clifogiac_rel, filter); - msg.format(FR("Ricostruzione saldi esercizio %04d : azzeramento giacenze clienti..."), codes); + msg.format(FR("Ricostruzione saldi esercizio %04d: azzeramento giacenze clienti..."), codes); c.scan(rel_reset_clifogiac, (void*)&p, msg); }