From 9abac455f4cf7f36347d0cb82fa3e89b5ca45c9b Mon Sep 17 00:00:00 2001 From: guy Date: Tue, 24 Feb 2015 08:37:50 +0000 Subject: [PATCH] cosmesi da TString80 a TCodice_articolo git-svn-id: svn://10.65.10.50/branches/R_10_00@23043 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- mg/mg0400.cpp | 15 +++++----- mg/mg1.cpp | 2 +- mg/mg1200.cpp | 4 +-- mg/mg4200.cpp | 12 ++++---- mg/mglib.h | 2 +- mg/mglib01.cpp | 43 +++++++++++++-------------- mg/mglib02.cpp | 16 ++++++---- mg/mglib02a.cpp | 79 +++++++++++++++++++++++++++++++++++-------------- 8 files changed, 103 insertions(+), 70 deletions(-) diff --git a/mg/mg0400.cpp b/mg/mg0400.cpp index 059d59575..6634c2a6b 100755 --- a/mg/mg0400.cpp +++ b/mg/mg0400.cpp @@ -184,7 +184,7 @@ void TClifo_giac_mask::set_parametered_fields() if (_magazzini) delete _magazzini; - _magazzini = new TMagazzini; + _magazzini = new TMagazzini; // imposta il puntatore al gestore livelli giacenze livelli_giac= new TCodgiac_livelli(); @@ -283,7 +283,7 @@ TString TClifo_giac::query_giacenze(const TMask& m) { const char tipocf = m.get(F_TIPOCF)[0]; const long codcf = m.get_long(F_CODCF); - const TString80 codart = m.get(F_CODART); + const TCodice_articolo codart = m.get(F_CODART); const int annoes = m.get_int(F_ANNOES); TString& giacenze = get_tmp_string(); @@ -335,7 +335,7 @@ bool TClifo_giac::find(word key) bool ok = false; const char tipocf = _msk->get(F_TIPOCF)[0]; const long codcf = _msk->get_long(F_CODCF); - const TString80 codart = _msk->get(F_CODART); + const TCodice_articolo codart = _msk->get(F_CODART); const int annoes = _msk->get_int(F_ANNOES); TLocalisamfile clifogiac(LF_CLIFOGIAC); @@ -403,7 +403,7 @@ int TClifo_giac::write_giacenze(const TMask& m) //prende i dati dalla maschera principale const char tipocf = m.get(F_TIPOCF)[0]; const long codcf = m.get_long(F_CODCF); - const TString80 codart = m.get(F_CODART); + const TCodice_articolo codart = m.get(F_CODART); const int annoes = m.get_int(F_ANNOES); //..e quindi la maschera di sheet @@ -474,13 +474,14 @@ int TClifo_giac::remove_giacenze(const char tipocf, const long codcf, const TStr } return err; } + bool TClifo_giac::remove() { //recupero i dati della testata const TRectype rec = _rel->curr(); const char tipocf = rec.get_char(CLIFOGIAC_TIPOCF); const long codcf = rec.get_long(CLIFOGIAC_CODCF); - const TString80 codart = rec.get(CLIFOGIAC_CODART); + const TCodice_articolo codart = rec.get(CLIFOGIAC_CODART); const int annoes = rec.get_int(CLIFOGIAC_ANNOES); return remove_giacenze(tipocf, codcf, codart, annoes) > 0; @@ -496,9 +497,7 @@ bool TClifo_giac::user_create() const bool gestmag = _msk->magazzini().gestmag(); if (!gestmag) - { - return error_box(TR("Per utilizzare questo programma e' NECESSARIO attivare la Gestione del magazzino!")); - } + return error_box(TR("Per utilizzare questo programma è NECESSARIO attivare la Gestione del magazzino!")); return true; } diff --git a/mg/mg1.cpp b/mg/mg1.cpp index 2a0442ef1..78d698896 100755 --- a/mg/mg1.cpp +++ b/mg/mg1.cpp @@ -1,6 +1,6 @@ #include -// Modulo di gestione movimenti +// Modulo di gestione movimenti e saldi #include "mg1.h" int main(int argc, char** argv) diff --git a/mg/mg1200.cpp b/mg/mg1200.cpp index fe0969103..21e963b4c 100755 --- a/mg/mg1200.cpp +++ b/mg/mg1200.cpp @@ -66,8 +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.\n" - "Procedere ad una nuova operazione di ''Ricostruzione saldi''")); + warning_box(TR("A causa degli errori riscontrati, i saldi di magazzino potrebbero non essere aggiornati.\n" + "Si consiglia di procedere ad una nuova operazione di \"Ricostruzione saldi\"")); } } diff --git a/mg/mg4200.cpp b/mg/mg4200.cpp index 359912be1..715e0a937 100755 --- a/mg/mg4200.cpp +++ b/mg/mg4200.cpp @@ -162,7 +162,7 @@ bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t) case valorizz_costmediopond: { const TString4 codmag = magrec.get(MAG_CODMAG).left(3); - const TString80 livello(magrec.get(MAG_LIVELLO)); + const TString16 livello(magrec.get(MAG_LIVELLO)); const TPrice prezzo(curr_art().costo_mediopond(annoes,codmag,livello)); p = prezzo.get_num(); } @@ -170,7 +170,7 @@ bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t) case valorizz_costmedio: { const TString4 codmag = magrec.get(MAG_CODMAG).left(3); - const TString80 livello(magrec.get(MAG_LIVELLO)); + const TString16 livello(magrec.get(MAG_LIVELLO)); const TPrice prezzo(curr_art().costo_medio(annoes,codmag,livello)); p = prezzo.get_num(); } @@ -178,28 +178,28 @@ bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t) case valorizz_LIFO: { const TString4 codmag = magrec.get(MAG_CODMAG).left(3); - const TString80 livello(magrec.get(MAG_LIVELLO)); + const TString16 livello(magrec.get(MAG_LIVELLO)); p = curr_art().LIFO(annoes,codmag,livello, false,_valcomp); } break; case valorizz_FIFO: { const TString4 codmag = magrec.get(MAG_CODMAG).left(3); - const TString80 livello(magrec.get(MAG_LIVELLO)); + const TString16 livello(magrec.get(MAG_LIVELLO)); p = curr_art().FIFO(annoes,codmag,livello, false,_valcomp); } break; case valorizz_LIFOa: { const TString4 codmag = magrec.get(MAG_CODMAG).left(3); - const TString80 livello(magrec.get(MAG_LIVELLO)); + const TString16 livello(magrec.get(MAG_LIVELLO)); p = curr_art().LIFO_annuale(annoes,codmag,livello, false, _valcomp); } break; case valorizz_FIFOa: { const TString4 codmag = magrec.get(MAG_CODMAG).left(3); - const TString80 livello(magrec.get(MAG_LIVELLO)); + const TString16 livello(magrec.get(MAG_LIVELLO)); p = curr_art().FIFO_annuale(annoes,codmag,livello, false, _valcomp); } break; diff --git a/mg/mglib.h b/mg/mglib.h index c6b47053f..1922498a6 100755 --- a/mg/mglib.h +++ b/mg/mglib.h @@ -209,7 +209,7 @@ public: bool riporta_saldi(const char * oldes, const char* newes, const TTipo_valorizz tipo, const char * catven ,const char * codlist, bool save_to_disk = true) { return riporta_saldi(atoi(oldes), atoi(newes), tipo, catven, codlist, save_to_disk);} bool azzera_saldi(int codes, int codespre, bool save_to_disk = true); - bool azzera_saldi(const char* codes, bool save_to_disk = true) { return azzera_saldi(atoi(codes), save_to_disk); } + //bool azzera_saldi(const char* codes, bool save_to_disk = true); // valorizzazioni real ultimo_costo(int annoes) const; diff --git a/mg/mglib01.cpp b/mg/mglib01.cpp index b91d9f18e..caa284533 100755 --- a/mg/mglib01.cpp +++ b/mg/mglib01.cpp @@ -967,7 +967,8 @@ TMagazzini::TMagazzini() : TMagazzini::~TMagazzini() { - if (_mgconfig) delete _mgconfig; + if (_mgconfig) + delete _mgconfig; } void TMagazzini::init() @@ -1009,34 +1010,30 @@ bool TMagazzini::gestmag(bool verbose) const { test_firm() ; if (!_gestmag && verbose) - warning_box("La ditta corrente non gestisce il magazzino"); + warning_box(TR("La ditta corrente non gestisce il magazzino")); return _gestmag; } -bool TMagazzini::gestdep() const -{ - test_firm() ; return _gestdep; -} -bool TMagazzini::gestubi_man() const -{ - test_firm() ; return _gestubi=='M'; -} -bool TMagazzini::gestubi_tab() const -{ - test_firm() ; return _gestubi=='T'; -} -bool TMagazzini::gestmultimag() const -{ - test_firm() ; return _gestmultimag; -} -const char * add_magcode(TString & str, const char * m) +bool TMagazzini::gestdep() const +{ test_firm() ; return _gestdep; } + +bool TMagazzini::gestubi_man() const +{ test_firm() ; return _gestubi=='M'; } + +bool TMagazzini::gestubi_tab() const +{ test_firm() ; return _gestubi=='T'; } + +bool TMagazzini::gestmultimag() const +{ test_firm() ; return _gestmultimag; } + +const char* add_magcode(TString& str, const char* m) { str = m; str.rpad(3); return str; } -const char * add_depcode(TString & str, const char * d) +const char* add_depcode(TString& str, const char* d) { str << d; return str.trim(); @@ -1046,8 +1043,8 @@ bool riporta_ordinato() { static bool __riporta_ordinato = FALSE; static long __firm = -883; + const long cur_firm = prefix().get_codditta(); - if (__firm != cur_firm) { __firm = cur_firm; @@ -1056,12 +1053,12 @@ bool riporta_ordinato() return __riporta_ordinato; } -const char * get_magcode(const TString & codmagdep) +const char* get_magcode(const TString& codmagdep) { return codmagdep.left(3); } -const char * get_depcode(const TString & codmagdep) +const char* get_depcode(const TString& codmagdep) { return codmagdep.mid(3); } diff --git a/mg/mglib02.cpp b/mg/mglib02.cpp index 14967e36b..f1fc73bac 100755 --- a/mg/mglib02.cpp +++ b/mg/mglib02.cpp @@ -646,7 +646,7 @@ bool TArticolo_giacenza::azzera_saldi(int codes, int codespre, bool save_to_disk if (codespre > 0 && oldmag.rows() > 0) { - const TString80 liv(mag.get(MAG_LIVELLO)); + const TString16 liv(mag.get(MAG_LIVELLO)); const int row = find_mag(oldmag, mag.get(MAG_CODMAG), liv); if (row >= 0) { @@ -669,6 +669,9 @@ bool TArticolo_giacenza::azzera_saldi(int codes, int codespre, bool save_to_disk return ok; } +//bool azzera_saldi(const char* codes, bool save_to_disk = true) +//{ return azzera_saldi(atoi(codes), save_to_disk); } + bool TArticolo_giacenza::riporta_saldi(int oldes, int newes, const TTipo_valorizz tipo, const char* catven, const char* codlis, bool save_to_disk) { @@ -1602,11 +1605,11 @@ void TArticolo_giacenza_data::al(const TDate& data, const char* codmag, const ch const long items = cur.items(); cur.freeze(); - TProgind* pi = NULL; - if (items >= 10) + TProgress_monitor* pi = NULL; + if (items >= 16) { TString80 str; str << TR("Calcolo giacenza articolo ") << codice(); - pi = new TProgind(items, str, false, true); + pi = new TProgress_monitor(items, str, false); } /* TMov_mag* p_movmag = new TMov_mag; @@ -1618,8 +1621,6 @@ void TArticolo_giacenza_data::al(const TDate& data, const char* codmag, const ch for (cur = 0; cur.pos() < items; ++cur) { - if (pi && !pi->addstatus(1)) - break; const TDate datacomp = rel.curr(LF_MOVMAG).get_date(MOVMAG_DATACOMP); const TString& codart = rmovmag.get(RMOVMAG_CODART); if (codart == codice() && datacomp >= inizio && datacomp <= data) @@ -1646,6 +1647,9 @@ void TArticolo_giacenza_data::al(const TDate& data, const char* codmag, const ch movmag.update_balances(rec, nrig); } } + + if (pi && !pi->add_status()) + break; } if (pi) delete pi; diff --git a/mg/mglib02a.cpp b/mg/mglib02a.cpp index b9e3a2cd6..3832bf16f 100755 --- a/mg/mglib02a.cpp +++ b/mg/mglib02a.cpp @@ -882,13 +882,13 @@ struct TBalance_params int codes; int codesprec; TTipo_valorizz tipov; - const char * catv; - const char * codl; + const char* catv; + const char* codl; }; HIDDEN bool reset_giac(const TRelation& rel, void* pJolly) { - TBalance_params & p = *((TBalance_params *)pJolly); + TBalance_params& p = *((TBalance_params *)pJolly); TArticolo_giacenza articolo(rel.curr()); if (p.zero_giac) articolo.azzera_saldi(p.codes, p.codesprec); @@ -897,7 +897,7 @@ HIDDEN bool reset_giac(const TRelation& rel, void* pJolly) return true; } -void reset_clifogiac(TRectype & rec, const TRectype & oldrec, bool closed) +void reset_clifogiac(TRectype& rec, const TRectype& oldrec, bool closed) { if (!oldrec.empty()) { @@ -929,18 +929,20 @@ void reset_clifogiac(TRectype & rec, const TRectype & oldrec, bool closed) rec.zero(CLIFOGIAC_ORDC); rec.zero(CLIFOGIAC_VALORDC); } - if (closed) + //if (closed) // Gestione che pare insensata { rec.put(CLIFOGIAC_DOTOD, oldrec.get(CLIFOGIAC_DOTOD)); rec.put(CLIFOGIAC_DOTIN, oldrec.get(CLIFOGIAC_DOTIN)); rec.put(CLIFOGIAC_DOTTM, oldrec.get(CLIFOGIAC_DOTTM)); } + /* else { rec.zero(CLIFOGIAC_DOTOD); rec.zero(CLIFOGIAC_DOTIN); rec.zero(CLIFOGIAC_DOTTM); } + */ } else { @@ -989,20 +991,43 @@ void update_clifogiac(TRectype & rec, const TRectype & oldrec) HIDDEN bool rel_reset_clifogiac(const TRelation& rel, void* pJolly) { - TRectype & rec = rel.curr(); - TBalance_params & p = *((TBalance_params *)pJolly); - TRectype newrec(rec); + const TBalance_params& p = *((TBalance_params *)pJolly); - newrec.put(CLIFOGIAC_ANNOES, p.codes); - if (newrec.read(rel.lfile()) != NOERR) + TLocalisamfile& cg = rel.lfile(); + const TRectype oldrec = cg.curr(); // DON'T USE const TRectype& ON READING FILE! + CHECK(oldrec.get_int(CLIFOGIAC_ANNOES) == p.codesprec, "Anno esercizio non valido"); + + TRectype& newrec = cg.curr(); + newrec.put(CLIFOGIAC_ANNOES, p.codes); // cambio da vecchio a nuovo anno + if (cg.read() != NOERR) // verifica se record esiste già { - newrec = rec; + newrec = oldrec; newrec.put(CLIFOGIAC_ANNOES, p.codes); } - reset_clifogiac(newrec, rec, p.closed); - return newrec.write_rewrite(rel.lfile()) == NOERR; + reset_clifogiac(newrec, oldrec, p.closed); + return cg.write_rewrite() == NOERR; } +HIDDEN bool rel_reset_newclifogiac(const TRelation& rel, void* pJolly) +{ + const TBalance_params& p = *((TBalance_params *)pJolly); + if (p.codesprec > 0) // Always! + { + TLocalisamfile& cg = rel.lfile(); + TRectype newrec = cg.curr(); + CHECK(newrec.get_int(CLIFOGIAC_ANNOES) == p.codes, "Anno esercizio non valido"); + cg.put(CLIFOGIAC_ANNOES, p.codesprec); // cambio da nuovo a vecchio anno + if (cg.read() != NOERR) // verifica se prima non esisteva allora azzero anno nuovo + { + cg.zero(); + reset_clifogiac(newrec, cg.curr(), p.closed); + newrec.rewrite(cg); + } + } + return true; +} + + bool recalc_mov(const TRelation& rel, void* pJolly) { TMov_mag & mov_rec = (TMov_mag &) rel.lfile().curr(); @@ -1016,7 +1041,6 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz, const char* catven, const char* codlis) { TSystemisamfile a(LF_MOVMAG); - if (a.open(_excllock) != NOERR) return false; @@ -1032,7 +1056,6 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz, p.tipov = tipo_valorizz; TString msg; - { // azzera tutte giacenze (ciclo sulle giacenze) TRelation anamag_rel(LF_ANAMAG); @@ -1045,14 +1068,17 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz, if (p.codesprec > 0) { - 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); + TRectype filter = clifogiac_rel.curr(); + filter.put(CLIFOGIAC_ANNOES, p.codesprec); // Scandisce anno precedente + TCursor c(&clifogiac_rel, "", 1, &filter, &filter); // ANNO+CODCF+CODART+NRIGA + msg.format(FR("Ricostruzione saldi esercizio %04d: azzeramento giacenze clienti..."), codes); + c.scan(rel_reset_clifogiac, (void*)&p, msg); - msg.format(FR("Ricostruzione saldi esercizio %04d: azzeramento giacenze clienti..."), codes); - c.scan(rel_reset_clifogiac, (void*)&p, msg); + filter.put(CLIFOGIAC_ANNOES, p.codes); // Scandisce anno corrente + c.setregion(filter, filter); + msg.format(FR("Ricostruzione saldi esercizio %04d: ricalcolo dotazione iniziale..."), codes); + c.scan(rel_reset_newclifogiac, (void*)&p, msg); } // Compattamento giacenze dopo cancellazione @@ -1060,9 +1086,16 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz, //prefix().close_closeable_isamfiles(); // Altrimenti segnala -69 durante la pack TSystemisamfile mag(LF_MAG); mag.pack(true, true); - } - + /* Mi da sempre errore di compattamento + if (p.codesprec > 0) + { + TSystemisamfile clifogiac(LF_CLIFOGIAC); + clifogiac.pack(true, true); + } + */ + } + // ricostruisce i saldi (ciclo sui movimenti) bool ok = true; {