cosmesi da TString80 a TCodice_articolo

git-svn-id: svn://10.65.10.50/branches/R_10_00@23043 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2015-02-24 08:37:50 +00:00
parent 643681129b
commit 9abac455f4
8 changed files with 103 additions and 70 deletions

View File

@ -283,7 +283,7 @@ TString TClifo_giac::query_giacenze(const TMask& m)
{ {
const char tipocf = m.get(F_TIPOCF)[0]; const char tipocf = m.get(F_TIPOCF)[0];
const long codcf = m.get_long(F_CODCF); 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); const int annoes = m.get_int(F_ANNOES);
TString& giacenze = get_tmp_string(); TString& giacenze = get_tmp_string();
@ -335,7 +335,7 @@ bool TClifo_giac::find(word key)
bool ok = false; bool ok = false;
const char tipocf = _msk->get(F_TIPOCF)[0]; const char tipocf = _msk->get(F_TIPOCF)[0];
const long codcf = _msk->get_long(F_CODCF); 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); const int annoes = _msk->get_int(F_ANNOES);
TLocalisamfile clifogiac(LF_CLIFOGIAC); TLocalisamfile clifogiac(LF_CLIFOGIAC);
@ -403,7 +403,7 @@ int TClifo_giac::write_giacenze(const TMask& m)
//prende i dati dalla maschera principale //prende i dati dalla maschera principale
const char tipocf = m.get(F_TIPOCF)[0]; const char tipocf = m.get(F_TIPOCF)[0];
const long codcf = m.get_long(F_CODCF); 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); const int annoes = m.get_int(F_ANNOES);
//..e quindi la maschera di sheet //..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; return err;
} }
bool TClifo_giac::remove() bool TClifo_giac::remove()
{ {
//recupero i dati della testata //recupero i dati della testata
const TRectype rec = _rel->curr(); const TRectype rec = _rel->curr();
const char tipocf = rec.get_char(CLIFOGIAC_TIPOCF); const char tipocf = rec.get_char(CLIFOGIAC_TIPOCF);
const long codcf = rec.get_long(CLIFOGIAC_CODCF); 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); const int annoes = rec.get_int(CLIFOGIAC_ANNOES);
return remove_giacenze(tipocf, codcf, codart, annoes) > 0; return remove_giacenze(tipocf, codcf, codart, annoes) > 0;
@ -496,9 +497,7 @@ bool TClifo_giac::user_create()
const bool gestmag = _msk->magazzini().gestmag(); const bool gestmag = _msk->magazzini().gestmag();
if (!gestmag) if (!gestmag)
{ return error_box(TR("Per utilizzare questo programma è NECESSARIO attivare la Gestione del magazzino!"));
return error_box(TR("Per utilizzare questo programma e' NECESSARIO attivare la Gestione del magazzino!"));
}
return true; return true;
} }

View File

@ -1,6 +1,6 @@
#include <xvt.h> #include <xvt.h>
// Modulo di gestione movimenti // Modulo di gestione movimenti e saldi
#include "mg1.h" #include "mg1.h"
int main(int argc, char** argv) int main(int argc, char** argv)

View File

@ -66,8 +66,8 @@ void TApp_rebuildbalances::main_loop()
while (m.run()==K_ENTER) while (m.run()==K_ENTER)
{ {
if (!rebuild_balances(m.get_int(F_ANNOES))) 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" warning_box(TR("A causa degli errori riscontrati, i saldi di magazzino potrebbero non essere aggiornati.\n"
"Procedere ad una nuova operazione di ''Ricostruzione saldi''")); "Si consiglia di procedere ad una nuova operazione di \"Ricostruzione saldi\""));
} }
} }

View File

@ -162,7 +162,7 @@ bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t)
case valorizz_costmediopond: case valorizz_costmediopond:
{ {
const TString4 codmag = magrec.get(MAG_CODMAG).left(3); 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)); const TPrice prezzo(curr_art().costo_mediopond(annoes,codmag,livello));
p = prezzo.get_num(); p = prezzo.get_num();
} }
@ -170,7 +170,7 @@ bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t)
case valorizz_costmedio: case valorizz_costmedio:
{ {
const TString4 codmag = magrec.get(MAG_CODMAG).left(3); 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)); const TPrice prezzo(curr_art().costo_medio(annoes,codmag,livello));
p = prezzo.get_num(); p = prezzo.get_num();
} }
@ -178,28 +178,28 @@ bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t)
case valorizz_LIFO: case valorizz_LIFO:
{ {
const TString4 codmag = magrec.get(MAG_CODMAG).left(3); 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); p = curr_art().LIFO(annoes,codmag,livello, false,_valcomp);
} }
break; break;
case valorizz_FIFO: case valorizz_FIFO:
{ {
const TString4 codmag = magrec.get(MAG_CODMAG).left(3); 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); p = curr_art().FIFO(annoes,codmag,livello, false,_valcomp);
} }
break; break;
case valorizz_LIFOa: case valorizz_LIFOa:
{ {
const TString4 codmag = magrec.get(MAG_CODMAG).left(3); 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); p = curr_art().LIFO_annuale(annoes,codmag,livello, false, _valcomp);
} }
break; break;
case valorizz_FIFOa: case valorizz_FIFOa:
{ {
const TString4 codmag = magrec.get(MAG_CODMAG).left(3); 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); p = curr_art().FIFO_annuale(annoes,codmag,livello, false, _valcomp);
} }
break; break;

View File

@ -209,7 +209,7 @@ public:
bool riporta_saldi(const char * oldes, const char* newes, const TTipo_valorizz tipo, 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);} 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(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 // valorizzazioni
real ultimo_costo(int annoes) const; real ultimo_costo(int annoes) const;

View File

@ -967,7 +967,8 @@ TMagazzini::TMagazzini() :
TMagazzini::~TMagazzini() TMagazzini::~TMagazzini()
{ {
if (_mgconfig) delete _mgconfig; if (_mgconfig)
delete _mgconfig;
} }
void TMagazzini::init() void TMagazzini::init()
@ -1009,25 +1010,21 @@ bool TMagazzini::gestmag(bool verbose) const
{ {
test_firm() ; test_firm() ;
if (!_gestmag && verbose) if (!_gestmag && verbose)
warning_box("La ditta corrente non gestisce il magazzino"); warning_box(TR("La ditta corrente non gestisce il magazzino"));
return _gestmag; return _gestmag;
} }
bool TMagazzini::gestdep() const bool TMagazzini::gestdep() const
{ { test_firm() ; return _gestdep; }
test_firm() ; return _gestdep;
}
bool TMagazzini::gestubi_man() const bool TMagazzini::gestubi_man() const
{ { test_firm() ; return _gestubi=='M'; }
test_firm() ; return _gestubi=='M';
}
bool TMagazzini::gestubi_tab() const bool TMagazzini::gestubi_tab() const
{ { test_firm() ; return _gestubi=='T'; }
test_firm() ; return _gestubi=='T';
}
bool TMagazzini::gestmultimag() const bool TMagazzini::gestmultimag() const
{ { test_firm() ; return _gestmultimag; }
test_firm() ; return _gestmultimag;
}
const char* add_magcode(TString& str, const char* m) const char* add_magcode(TString& str, const char* m)
{ {
@ -1046,8 +1043,8 @@ bool riporta_ordinato()
{ {
static bool __riporta_ordinato = FALSE; static bool __riporta_ordinato = FALSE;
static long __firm = -883; static long __firm = -883;
const long cur_firm = prefix().get_codditta();
const long cur_firm = prefix().get_codditta();
if (__firm != cur_firm) if (__firm != cur_firm)
{ {
__firm = cur_firm; __firm = cur_firm;

View File

@ -646,7 +646,7 @@ bool TArticolo_giacenza::azzera_saldi(int codes, int codespre, bool save_to_disk
if (codespre > 0 && oldmag.rows() > 0) 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); const int row = find_mag(oldmag, mag.get(MAG_CODMAG), liv);
if (row >= 0) if (row >= 0)
{ {
@ -669,6 +669,9 @@ bool TArticolo_giacenza::azzera_saldi(int codes, int codespre, bool save_to_disk
return ok; 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, bool TArticolo_giacenza::riporta_saldi(int oldes, int newes, const TTipo_valorizz tipo,
const char* catven, const char* codlis, bool save_to_disk) 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(); const long items = cur.items();
cur.freeze(); cur.freeze();
TProgind* pi = NULL; TProgress_monitor* pi = NULL;
if (items >= 10) if (items >= 16)
{ {
TString80 str; str << TR("Calcolo giacenza articolo ") << codice(); 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; 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) 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 TDate datacomp = rel.curr(LF_MOVMAG).get_date(MOVMAG_DATACOMP);
const TString& codart = rmovmag.get(RMOVMAG_CODART); const TString& codart = rmovmag.get(RMOVMAG_CODART);
if (codart == codice() && datacomp >= inizio && datacomp <= data) 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); movmag.update_balances(rec, nrig);
} }
} }
if (pi && !pi->add_status())
break;
} }
if (pi) delete pi; if (pi) delete pi;

View File

@ -929,18 +929,20 @@ void reset_clifogiac(TRectype & rec, const TRectype & oldrec, bool closed)
rec.zero(CLIFOGIAC_ORDC); rec.zero(CLIFOGIAC_ORDC);
rec.zero(CLIFOGIAC_VALORDC); rec.zero(CLIFOGIAC_VALORDC);
} }
if (closed) //if (closed) // Gestione che pare insensata
{ {
rec.put(CLIFOGIAC_DOTOD, oldrec.get(CLIFOGIAC_DOTOD)); rec.put(CLIFOGIAC_DOTOD, oldrec.get(CLIFOGIAC_DOTOD));
rec.put(CLIFOGIAC_DOTIN, oldrec.get(CLIFOGIAC_DOTIN)); rec.put(CLIFOGIAC_DOTIN, oldrec.get(CLIFOGIAC_DOTIN));
rec.put(CLIFOGIAC_DOTTM, oldrec.get(CLIFOGIAC_DOTTM)); rec.put(CLIFOGIAC_DOTTM, oldrec.get(CLIFOGIAC_DOTTM));
} }
/*
else else
{ {
rec.zero(CLIFOGIAC_DOTOD); rec.zero(CLIFOGIAC_DOTOD);
rec.zero(CLIFOGIAC_DOTIN); rec.zero(CLIFOGIAC_DOTIN);
rec.zero(CLIFOGIAC_DOTTM); rec.zero(CLIFOGIAC_DOTTM);
} }
*/
} }
else else
{ {
@ -989,20 +991,43 @@ void update_clifogiac(TRectype & rec, const TRectype & oldrec)
HIDDEN bool rel_reset_clifogiac(const TRelation& rel, void* pJolly) HIDDEN bool rel_reset_clifogiac(const TRelation& rel, void* pJolly)
{ {
TRectype & rec = rel.curr(); const TBalance_params& p = *((TBalance_params *)pJolly);
TBalance_params & p = *((TBalance_params *)pJolly);
TRectype newrec(rec);
newrec.put(CLIFOGIAC_ANNOES, p.codes); TLocalisamfile& cg = rel.lfile();
if (newrec.read(rel.lfile()) != NOERR) 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); newrec.put(CLIFOGIAC_ANNOES, p.codes);
} }
reset_clifogiac(newrec, rec, p.closed); reset_clifogiac(newrec, oldrec, p.closed);
return newrec.write_rewrite(rel.lfile()) == NOERR; 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) bool recalc_mov(const TRelation& rel, void* pJolly)
{ {
TMov_mag & mov_rec = (TMov_mag &) rel.lfile().curr(); 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) const char* catven, const char* codlis)
{ {
TSystemisamfile a(LF_MOVMAG); TSystemisamfile a(LF_MOVMAG);
if (a.open(_excllock) != NOERR) if (a.open(_excllock) != NOERR)
return false; return false;
@ -1032,7 +1056,6 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz,
p.tipov = tipo_valorizz; p.tipov = tipo_valorizz;
TString msg; TString msg;
{ {
// azzera tutte giacenze (ciclo sulle giacenze) // azzera tutte giacenze (ciclo sulle giacenze)
TRelation anamag_rel(LF_ANAMAG); TRelation anamag_rel(LF_ANAMAG);
@ -1045,14 +1068,17 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz,
if (p.codesprec > 0) if (p.codesprec > 0)
{ {
TString16 filter;
filter << CLIFOGIAC_ANNOES << "==" << p.codesprec; // Copia giacenze da anno precedente ad anno corrente
TRelation clifogiac_rel(LF_CLIFOGIAC); 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); msg.format(FR("Ricostruzione saldi esercizio %04d: azzeramento giacenze clienti..."), codes);
c.scan(rel_reset_clifogiac, (void*)&p, msg); 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 // Compattamento giacenze dopo cancellazione
@ -1060,8 +1086,15 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz,
//prefix().close_closeable_isamfiles(); // Altrimenti segnala -69 durante la pack //prefix().close_closeable_isamfiles(); // Altrimenti segnala -69 durante la pack
TSystemisamfile mag(LF_MAG); TSystemisamfile mag(LF_MAG);
mag.pack(true, true); 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) // ricostruisce i saldi (ciclo sui movimenti)
bool ok = true; bool ok = true;