Correzioni varie alle funzioni di movimenti di magazzino

git-svn-id: svn://10.65.10.50/trunk@4767 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1997-06-27 09:19:02 +00:00
parent 71ededdbc9
commit 8c639919bd

View File

@ -847,14 +847,11 @@ TCausale_magazzino::TCausale_magazzino(const char * codice):
TRectype(LF_TABCOM) TRectype(LF_TABCOM)
{ {
TTable f("%CAU"); TTable f("%CAU");
f.put("CODTAB",codice);
if (f.read() != NOERR) settab("CAU");
put("CODTAB", codice);
if (TRectype::read(f) != NOERR)
zero(); zero();
else
*this=(TCausale_magazzino &)f.curr();
}
TCausale_magazzino::~TCausale_magazzino()
{
} }
// movimenti // movimenti
@ -898,9 +895,6 @@ void TMov_mag::set_body_key(TRectype & rowrec)
int TMov_mag::read(TBaseisamfile& f, word op , word lockop) int TMov_mag::read(TBaseisamfile& f, word op , word lockop)
{ {
TToken_string l_key;
TLine_movmag l_data;
int res=TMultiple_rectype::read(f,op,lockop); int res=TMultiple_rectype::read(f,op,lockop);
// reset delle strutture per il controlli delle variazioni dei saldi // reset delle strutture per il controlli delle variazioni dei saldi
@ -908,11 +902,11 @@ int TMov_mag::read(TBaseisamfile& f, word op , word lockop)
_annoes=get("ANNOES"); _annoes=get("ANNOES");
lines_to_add.destroy(); lines_to_add.destroy();
lines_to_subtract.destroy(); lines_to_subtract.destroy();
for (int i=0; i<rows(); i++) {
l_key=line2key(i+1); const int nrows = rows();
l_data=line2data(i+1);
line_deleted(l_key,l_data); for (int i = 1; i< nrows; i++)
} line_deleted(line2key(i), line2data(i));
return res; return res;
} }
@ -930,22 +924,30 @@ void TMov_mag::add_automatiche()
{ {
for (int r = rows(); r > 0; r--) for (int r = rows(); r > 0; r--)
{ {
TString16 codcaus(body()[r].get(RMOVMAG_CODCAUS)); TRecord_array & b = body();
if (codcaus.blank()) TRectype & row = b[r];
codcaus=get(RMOVMAG_CODCAUS); TString16 codcaus(row.get(RMOVMAG_CODCAUS));
if (codcaus.empty())
codcaus=get(MOVMAG_CODCAUS);
TCausale_magazzino cau(codcaus); TCausale_magazzino cau(codcaus);
if (*cau.get_collegata()!='\0') codcaus=cau.caus_collegata();
if (codcaus.not_empty())
{ {
// deve esserci una riga collegata // deve esserci una riga collegata
if (r < rows()-1 && body()[r+1].get(RMOVMAG_TIPORIGA)[0] != riga_automatica) if (!b.exist(r + 1) || b[r + 1].get_char(RMOVMAG_TIPORIGA) != riga_automatica)
{ {
// manca, la inserisco // manca, la inserisco
TRectype linea_auto(body()[r]); TRectype * linea_auto = new TRectype(row);
const char * codmag = codmag_rauto(r);
if (codmag_rauto(r)!=NULL) linea_auto.put(RMOVMAG_CODMAG,codmag_rauto(r)); if (codmag != NULL)
if (prezzo_rauto(r)!=NULL) linea_auto.put(RMOVMAG_PREZZO,prezzo_rauto(r)); linea_auto->put(RMOVMAG_CODMAG, codmag);
linea_auto.put(RMOVMAG_NRIG,r+1); const char * prezzo = prezzo_rauto(r);
body().insert_row(&linea_auto); if (prezzo != NULL)
linea_auto->put(RMOVMAG_PREZZO, prezzo);
linea_auto->put(RMOVMAG_NRIG, r+1);
linea_auto->put(RMOVMAG_TIPORIGA, (char) riga_automatica);
linea_auto->put(RMOVMAG_CODCAUS, codcaus);
b.insert_row(linea_auto);
} }
} }
} // ciclo righe } // ciclo righe
@ -955,14 +957,12 @@ int TMov_mag::write(TBaseisamfile& f) const
{ {
int res; int res;
((TMov_mag *)this)->add_automatiche(); ((TMov_mag *)this)->add_automatiche();
TToken_string l_key;
TLine_movmag l_data;
// memorizza le variazioni // memorizza le variazioni
for (int i=0; i<rows(); i++) {
l_key=line2key(i+1); const int nrows = rows();
l_data=line2data(i+1);
((TMov_mag *)this)->line_inserted(l_key,l_data); for (int i = 1; i <= nrows; i++)
} ((TMov_mag *)this)->line_inserted(line2key(i), line2data(i));
if ((res=TMultiple_rectype::write(f))==NOERR ) if ((res=TMultiple_rectype::write(f))==NOERR )
// effettua la variazione dei saldi // effettua la variazione dei saldi
res=((TMov_mag *)this)->update_balances(); res=((TMov_mag *)this)->update_balances();
@ -973,14 +973,12 @@ int TMov_mag::rewrite(TBaseisamfile& f) const
{ {
int res; int res;
((TMov_mag *)this)->add_automatiche(); ((TMov_mag *)this)->add_automatiche();
TToken_string l_key;
TLine_movmag l_data;
// memorizza le variazioni // memorizza le variazioni
for (int i=0; i<rows(); i++) {
l_key=line2key(i+1); const int nrows = rows();
l_data=line2data(i+1);
((TMov_mag *)this)->line_inserted(l_key,l_data); for (int i = 1; i < nrows; i++)
} ((TMov_mag *)this)->line_inserted(line2key(i), line2data(i));
if ((res=TMultiple_rectype::rewrite(f))==NOERR ) if ((res=TMultiple_rectype::rewrite(f))==NOERR )
// effettua la variazione dei saldi // effettua la variazione dei saldi
res=((TMov_mag *)this)->update_balances(); res=((TMov_mag *)this)->update_balances();
@ -1010,35 +1008,40 @@ int TMov_mag::force_update_bal()
_annoes=get(MOVMAG_ANNOES); _annoes=get(MOVMAG_ANNOES);
lines_to_add.destroy(); lines_to_add.destroy();
lines_to_subtract.destroy(); lines_to_subtract.destroy();
// memorizza le variazioni // memorizza le variazioni
for (int i=0; i<rows(); i++) { const int nrows = rows();
l_key=line2key(i+1);
l_data=line2data(i+1); for (int i= 1; i <= nrows; i++)
line_inserted(l_key,l_data); line_inserted(line2key(i), line2data(i));
}
res=update_balances(); res=update_balances();
return res; return res;
} }
TLine_movmag TMov_mag::line2data(int numriga) const TLine_movmag & TMov_mag::line2data(int numriga) const
{ {
TLine_movmag rest; static TLine_movmag _rest;
rest.um =(const char *)body().row(numriga).get("UM"); TRecord_array & b = body();
rest.quant =(const char *)body().row(numriga).get("QUANT");
rest.prezzo=(const char *)body().row(numriga).get("PREZZO"); _rest.um = b.row(numriga).get("UM");
return rest; _rest.quant = b.row(numriga).get_real("QUANT");
_rest.prezzo= b.row(numriga).get_real("PREZZO");
return _rest;
} }
TToken_string TMov_mag::line2key(int numriga) const TToken_string & TMov_mag::line2key(int numriga) const
{ {
TToken_string key; static TToken_string _key;
TRecord_array & b = body();
TString16 nr; TString16 nr;
nr << numriga; nr << numriga;
key.add(body().row(numriga).get("CODART")); _key.cut(0);
key.add(body().row(numriga).get("CODMAG")); _key.add(b.row(numriga).get(RMOVMAG_CODART));
key.add(body().row(numriga).get("LIVGIAC")); _key.add(b.row(numriga).get(RMOVMAG_CODMAG));
key.add(nr); _key.add(b.row(numriga).get(RMOVMAG_LIVGIAC));
return key; _key.add(nr);
return _key;
} }
TString TMov_mag::key2field(TToken_string &key,const char *fieldname) TString TMov_mag::key2field(TToken_string &key,const char *fieldname)