diff --git a/mg/mglib02.cpp b/mg/mglib02.cpp index 70e55022c..4234ae81e 100755 --- a/mg/mglib02.cpp +++ b/mg/mglib02.cpp @@ -1,7 +1,11 @@ +// oggetto TArticolo, multirecord dell'articolo di anagrafica magazzino +// oggetto TArticolo_giacenza, multirecord dell'articolo di magazzino +// oggetto TMov_Mag , multirecord del moviemnto di magazzino +// funzione di ricostruzione saldi #include "mglib.h" #include "anamag.h" #include "mag.h" -#include +#include "movmag.h" // libreria per i movimenti @@ -907,12 +911,11 @@ int TMov_mag::read(TBaseisamfile& f, word op , word lockop) for (int i=0; i0; r--) + { + TString16 codcaus(body()[r].get(RMOVMAG_CODCAUS)); + if (codcaus.blank()) + codcaus=get(RMOVMAG_CODCAUS); + TCausale_magazzino cau(codcaus); + if (*cau.get_collegata()!='\0') + { + // deve esserci una riga collegata + if (r < rows()-1 && body()[r+1].get(RMOVMAG_TIPORIGA)[0] != riga_automatica) + { + // manca, la inserisco + TRectype linea_auto(body()[r]); + + if (codmag_rauto(r)!=NULL) linea_auto.put(RMOVMAG_CODMAG,codmag_rauto(r)); + if (prezzo_rauto(r)!=NULL) linea_auto.put(RMOVMAG_PREZZO,prezzo_rauto(r)); + linea_auto.put(RMOVMAG_NRIG,r+1); + body().insert_row(&linea_auto); + } + } + } // ciclo righe +} + int TMov_mag::write(TBaseisamfile& f) const { int res; + ((TMov_mag *)this)->add_automatiche(); TToken_string l_key; TLine_movmag l_data; // memorizza le variazioni for (int i=0; iinsert_line(l_key,l_data); + ((TMov_mag *)this)->line_inserted(l_key,l_data); } if ((res=TMultiple_rectype::write(f))==NOERR ) // effettua la variazione dei saldi @@ -942,13 +972,14 @@ int TMov_mag::write(TBaseisamfile& f) const int TMov_mag::rewrite(TBaseisamfile& f) const { int res; + ((TMov_mag *)this)->add_automatiche(); TToken_string l_key; TLine_movmag l_data; // memorizza le variazioni for (int i=0; iinsert_line(l_key,l_data); + ((TMov_mag *)this)->line_inserted(l_key,l_data); } if ((res=TMultiple_rectype::rewrite(f))==NOERR ) // effettua la variazione dei saldi @@ -960,7 +991,7 @@ const char *TMov_mag::get_next_key() { TLocalisamfile f(LF_MOVMAG); f.last(); - int a=atoi(f.get("NUMREG"))+1; + int a=atoi(f.get(MOVMAG_NUMREG))+1; return _nextcod.format("%d",a); } @@ -975,15 +1006,15 @@ int TMov_mag::force_update_bal() TLine_movmag l_data; // reset delle strutture per il controlli delle variazioni dei saldi - _codcaus=get("CODCAUS"); - _annoes=get("ANNOES"); + _codcaus=get(MOVMAG_CODCAUS); + _annoes=get(MOVMAG_ANNOES); lines_to_add.destroy(); lines_to_subtract.destroy(); // memorizza le variazioni for (int i=0; i