Primo debug

Esplosione dei tab


git-svn-id: svn://10.65.10.50/trunk@4708 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
augusto 1997-06-18 15:18:06 +00:00
parent 710569854d
commit d7dd466831

View File

@ -3,9 +3,9 @@
#include "mag.h" #include "mag.h"
#include <mask.h> #include <mask.h>
// libreira per i movimenti // libreria per i movimenti
char * TNome_valorizz[]= { char * Nome_valorizz[]= {
"Ultimo costo", "Media ultimi costi", "Prezzo di listino", "Ultimo costo", "Media ultimi costi", "Prezzo di listino",
"Costo standard", "Costo medio" , "Costo standard", "Costo medio" ,
"FIFO annuale", "LIFO annuale", "FIFO annuale", "LIFO annuale",
@ -112,46 +112,46 @@ const TString & TArticolo::descrizione(const char* lingua) const
void TArticolo::update_ultcosti(real costo,TDate data) void TArticolo::update_ultcosti(real costo,TDate data)
{ {
TDate data1(get_date(ANAMAG_DULTCOS1)); TDate data1(get_date(ANAMAG_DULTCOS1));
if (data>= data1) if (data>= data1)
{ {
real costo1(get_real(ANAMAG_ULTCOS1)); real costo1(get_real(ANAMAG_ULTCOS1));
put(ANAMAG_DULTCOS1,data); put(ANAMAG_DULTCOS1,data);
put(ANAMAG_ULTCOS1,costo); put(ANAMAG_ULTCOS1,costo);
put(ANAMAG_DULTCOS2,data1); put(ANAMAG_DULTCOS2,data1);
put(ANAMAG_ULTCOS2,costo1); put(ANAMAG_ULTCOS2,costo1);
} else { } else {
if (data>= get_date(ANAMAG_DULTCOS2)) if (data>= get_date(ANAMAG_DULTCOS2))
put(ANAMAG_DULTCOS2,data); put(ANAMAG_DULTCOS2,data);
put(ANAMAG_ULTCOS2,costo); put(ANAMAG_ULTCOS2,costo);
} }
} }
bool TArticolo::unlock() bool TArticolo::unlock()
{ {
bool rv; bool rv;
if (*(const char *)_codice) if (*(const char *)_codice)
{ {
TLocalisamfile anag(LF_ANAMAG); TLocalisamfile anag(LF_ANAMAG);
anag.curr()=*this; anag.curr()=*this;
rv=(anag.read(_isequal,_unlock)==NOERR); rv=(anag.read(_isequal,_unlock)==NOERR);
return rv; return rv;
} }
return FALSE; return FALSE;
} }
bool TArticolo::lock_and_prompt() bool TArticolo::lock_and_prompt()
{ {
TString mess; TString mess;
mess << "Il record di anagrafica dell'articolo ''"<< codice() << "'' risulta essere già in uso.\n Interrompo ?"; mess << "Il record di anagrafica dell'articolo ''"<< codice() << "'' risulta essere già in uso.\n Interrompo ?";
TTimed_breakbox bbox((const char *)mess,10); TTimed_breakbox bbox((const char *)mess,10);
do { do {
TLocalisamfile anag(LF_ANAMAG); TLocalisamfile anag(LF_ANAMAG);
anag.curr()=*this; anag.curr()=*this;
if (anag.read(_isequal,_testandlock)==NOERR) if (anag.read(_isequal,_testandlock)==NOERR)
return TRUE; return TRUE;
} while (bbox.run()!=K_ESC); } while (bbox.run()!=K_ESC);
return FALSE; return FALSE;
} }
@ -159,9 +159,9 @@ TArticolo::TArticolo(const char* codice)
: TMultiple_rectype(LF_ANAMAG) : TMultiple_rectype(LF_ANAMAG)
{ {
add_file(LF_UMART,"NRIGA"); add_file(LF_UMART,"NRIGA");
add_file(LF_CODCORR,"NRIGA"); add_file(LF_CODCORR,"NRIGA");
add_file(LF_DESLIN,"NRIGA"); add_file(LF_DESLIN,"NRIGA");
_codice = new TRecfield(*this, ANAMAG_CODART); _codice = new TRecfield(*this, ANAMAG_CODART);
if (codice && *codice) if (codice && *codice)
read(codice); read(codice);
@ -311,7 +311,7 @@ HIDDEN int last_esercizio = -1;
real TArticolo_giacenza::ultimo_costo(const char * annoes) const real TArticolo_giacenza::ultimo_costo(const char * annoes) const
{ {
if (last_esercizio != atoi(annoes)) if (last_esercizio == atoi(annoes))
{ {
const real costo = get_real(ANAMAG_ULTCOS1); const real costo = get_real(ANAMAG_ULTCOS1);
return costo == ZERO ? costo_standard(annoes) : costo; return costo == ZERO ? costo_standard(annoes) : costo;
@ -319,6 +319,7 @@ real TArticolo_giacenza::ultimo_costo(const char * annoes) const
else else
{ {
const int index = find_storico(annoes, annoes); const int index = find_storico(annoes, annoes);
if (index < 0 ) return ZERO;
const real costo = storico(annoes).row(index).get_real(STOMAG_ULTCOS1); const real costo = storico(annoes).row(index).get_real(STOMAG_ULTCOS1);
return costo == ZERO ? costo_standard(annoes) : costo; return costo == ZERO ? costo_standard(annoes) : costo;
} }
@ -326,7 +327,7 @@ real TArticolo_giacenza::ultimo_costo(const char * annoes) const
real TArticolo_giacenza::media_costi(const char * annoes) const real TArticolo_giacenza::media_costi(const char * annoes) const
{ {
if (last_esercizio != atoi(annoes)) if (last_esercizio == atoi(annoes))
{ {
real costo = get_real(ANAMAG_ULTCOS1); real costo = get_real(ANAMAG_ULTCOS1);
@ -336,6 +337,7 @@ real TArticolo_giacenza::media_costi(const char * annoes) const
else else
{ {
const int index = find_storico(annoes, annoes); const int index = find_storico(annoes, annoes);
if (index < 0 ) return ZERO;
const TRectype & rec = storico(annoes).row(index); const TRectype & rec = storico(annoes).row(index);
real costo = rec.get_real(STOMAG_ULTCOS1); real costo = rec.get_real(STOMAG_ULTCOS1);
@ -346,7 +348,7 @@ real TArticolo_giacenza::media_costi(const char * annoes) const
real TArticolo_giacenza::prezzo_listino(const char * annoes, const char * catven, const char * codlist) const real TArticolo_giacenza::prezzo_listino(const char * annoes, const char * catven, const char * codlist) const
{ {
if (last_esercizio != atoi(annoes)) if (last_esercizio == atoi(annoes))
{ {
static TString16 f; static TString16 f;
if (f.empty()) if (f.empty())
@ -356,7 +358,7 @@ real TArticolo_giacenza::prezzo_listino(const char * annoes, const char * catven
else else
{ {
const int index = find_storico(annoes, annoes); const int index = find_storico(annoes, annoes);
if (index < 0 ) return ZERO;
return storico(annoes).row(index).get_real(STOMAG_PRZLIST); return storico(annoes).row(index).get_real(STOMAG_PRZLIST);
} }
} }
@ -364,11 +366,12 @@ real TArticolo_giacenza::prezzo_listino(const char * annoes, const char * catven
real TArticolo_giacenza::costo_standard(const char * annoes) const real TArticolo_giacenza::costo_standard(const char * annoes) const
{ {
if (last_esercizio != atoi(annoes)) if (last_esercizio == atoi(annoes))
return get_real(ANAMAG_COSTSTD); return get_real(ANAMAG_COSTSTD);
else else
{ {
const int index = find_storico(annoes, annoes); const int index = find_storico(annoes, annoes);
if (index < 0 ) return ZERO;
return storico(annoes).row(index).get_real(STOMAG_COSTSTD); return storico(annoes).row(index).get_real(STOMAG_COSTSTD);
} }
} }
@ -389,6 +392,7 @@ real TArticolo_giacenza::costo_medio(const char * annoes, const char * codmag, c
return acq == ZERO ? costo_standard(annoes) : valacq / acq; return acq == ZERO ? costo_standard(annoes) : valacq / acq;
} }
real TArticolo_giacenza::LIFO_annuale(const char * annoes, const char * codmag, const char * livello, real TArticolo_giacenza::LIFO_annuale(const char * annoes, const char * codmag, const char * livello,
bool giacenza_effettiva, bool valorizza_componenti) const bool giacenza_effettiva, bool valorizza_componenti) const
{ {
@ -585,8 +589,8 @@ real TArticolo_giacenza::LIFO_ragionieristico(const char * annoes, const char *
TArticolo_giacenza::TArticolo_giacenza(const char* codice) TArticolo_giacenza::TArticolo_giacenza(const char* codice)
: TArticolo(codice) : TArticolo(codice)
{ {
add_file(LF_MAG,"NRIGA"); add_file(LF_MAG,"NRIGA");
add_file(LF_STOMAG,"NRIGA"); add_file(LF_STOMAG,"NRIGA");
if (last_esercizio < 0 ) if (last_esercizio < 0 )
{ {
TEsercizi_contabili e; TEsercizi_contabili e;
@ -626,18 +630,18 @@ const real CENTO=real(100.0);
bool TCondizione_vendita:: ricerca(const char * codice, const real & qta) bool TCondizione_vendita:: ricerca(const char * codice, const real & qta)
{ {
int tiporic; int tiporic;
switch (_condv.get_char("TIPO")) { switch (_condv.get_char("TIPO")) {
case 'L': case 'L':
tiporic=A_LISTINI; tiporic=A_LISTINI;
break; break;
case 'C': case 'C':
tiporic=A_CONTRATTI; tiporic=A_CONTRATTI;
break; break;
case 'O': case 'O':
tiporic=A_OFFERTE; tiporic=A_OFFERTE;
break; break;
} }
return cerca(tiporic,codice, qta); return cerca(tiporic,codice, qta);
} }
@ -648,8 +652,8 @@ bool TCondizione_vendita::cerca( int tiporicerca, const char * codriga , const r
{ {
_condv.setkey( 1 ); _condv.setkey( 1 );
if (_condv.get("COD").empty()) if (_condv.get("COD").empty())
return FALSE; return FALSE;
switch( tiporicerca ) switch( tiporicerca )
{ {
case A_CONTRATTI: case A_CONTRATTI:
@ -671,7 +675,7 @@ bool TCondizione_vendita::cerca( int tiporicerca, const char * codriga , const r
} }
if( _condv.read( ) == NOERR ) if( _condv.read( ) == NOERR )
{ {
// si posiziona sulla riga // si posiziona sulla riga
const bool gest_scagl = _condv.get_bool("GESTSCAGL"); const bool gest_scagl = _condv.get_bool("GESTSCAGL");
const TString16 seqricrighe( _condv.get( "SEQRIC" ) ); const TString16 seqricrighe( _condv.get( "SEQRIC" ) );
bool found = FALSE; bool found = FALSE;
@ -743,7 +747,7 @@ bool TCondizione_vendita::cerca( int tiporicerca, const char * codriga , const r
} }
_rcondv.read(rec); _rcondv.read(rec);
} }
_prezzo = _rcondv.get_real("PREZZO"); _prezzo = _rcondv.get_real("PREZZO");
return found; return found;
} }
} }
@ -753,32 +757,32 @@ bool TCondizione_vendita::cerca( int tiporicerca, const char * codriga , const r
void TCondizione_vendita::put_condv(const char *tipocv,const char *codicecv,const char *catven,const char *tipocf,const char *codcf) void TCondizione_vendita::put_condv(const char *tipocv,const char *codicecv,const char *catven,const char *tipocf,const char *codcf)
{ {
_condv.put("TIPO",tipocv); _condv.put("TIPO",tipocv);
_condv.put("CATVEN",catven); _condv.put("CATVEN",catven);
_condv.put("TIPOCF",tipocf); _condv.put("TIPOCF",tipocf);
_condv.put("CODCF",codcf); _condv.put("CODCF",codcf);
_condv.put("COD",codicecv); _condv.put("COD",codicecv);
} }
void TCondizione_vendita::put_listino(const char * codlist,const char *catven) void TCondizione_vendita::put_listino(const char * codlist,const char *catven)
{ {
if( !config_ditta().get_bool("GESLISCV", "ve")) if( !config_ditta().get_bool("GESLISCV", "ve"))
put_condv("L",codlist,"","",""); put_condv("L",codlist,"","","");
else else
put_condv("L",codlist,catven,"",""); put_condv("L",codlist,catven,"","");
} }
void TCondizione_vendita::put_contratto(const char * codcontr,const char *tipocf,const char *codcf) void TCondizione_vendita::put_contratto(const char * codcontr,const char *tipocf,const char *codcf)
{ {
put_condv("C",codcontr,"",tipocf,codcf); put_condv("C",codcontr,"",tipocf,codcf);
} }
void TCondizione_vendita::put_offerta(const char * codoff) void TCondizione_vendita::put_offerta(const char * codoff)
{ {
put_condv("C",codoff,"","",""); put_condv("C",codoff,"","","");
} }
TCondizione_vendita::TCondizione_vendita(TConfig * ditta, TCondizione_vendita::TCondizione_vendita(TConfig * ditta,
TLocalisamfile * anamag, TLocalisamfile * umart) TLocalisamfile * anamag, TLocalisamfile * umart)
: _condv(LF_CONDV), _rcondv(LF_RCONDV), : _condv(LF_CONDV), _rcondv(LF_RCONDV),
_sconti( LF_SCONTI ), _sconti( LF_SCONTI ),
_anamag(anamag), _umart(umart), _config_ditta(ditta), _ivarid(FALSE) _anamag(anamag), _umart(umart), _config_ditta(ditta), _ivarid(FALSE)
@ -829,14 +833,14 @@ int TCausale_magazzino::sgn(TTipo_saldomag tiposaldo)
TCausale_magazzino::TCausale_magazzino(const char * codice): TCausale_magazzino::TCausale_magazzino(const char * codice):
TRectype(LF_TAB) TRectype(LF_TAB)
{ {
TTable f("CAU"); TTable f("CAU");
f.put("CODTAB",codice); f.put("CODTAB",codice);
if (f.read() != NOERR) if (f.read() != NOERR)
zero(); zero();
else else
*this=(TCausale_magazzino &)f.curr(); *this=(TCausale_magazzino &)f.curr();
} }
TCausale_magazzino::~TCausale_magazzino() TCausale_magazzino::~TCausale_magazzino()
{ {
@ -871,7 +875,7 @@ TMov_mag::~TMov_mag()
// valuta il valore della chiave per un nuovo record // valuta il valore della chiave per un nuovo record
bool TMov_mag::renum() bool TMov_mag::renum()
{ {
put("NUMREG",get_next_key()); put("NUMREG",get_next_key());
return TRUE; return TRUE;
} }
@ -960,22 +964,22 @@ const char *TMov_mag::get_next_key()
int TMov_mag::force_update_bal() int TMov_mag::force_update_bal()
{ {
int res; int res;
TToken_string l_key; TToken_string l_key;
TLine_movmag l_data; TLine_movmag l_data;
// reset delle strutture per il controlli delle variazioni dei saldi // reset delle strutture per il controlli delle variazioni dei saldi
_codcaus=get("CODCAUS"); _codcaus=get("CODCAUS");
_annoes=get("ANNOES"); _annoes=get("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++) { for (int i=0; i<rows(); i++) {
l_key=line2key(i+1); l_key=line2key(i+1);
l_data=line2data(i+1); l_data=line2data(i+1);
((TMov_mag *)this)->insert_line(l_key,l_data); ((TMov_mag *)this)->insert_line(l_key,l_data);
} }
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
@ -1067,11 +1071,11 @@ bool TMov_mag::lock_anamag(const char *codart)
void TMov_mag::giac_putkey(TLocalisamfile & mag,TString16 annoes,TToken_string curr_key) void TMov_mag::giac_putkey(TLocalisamfile & mag,TString16 annoes,TToken_string curr_key)
{ {
mag.zero(' '); mag.zero(' ');
mag.put("ANNOES",annoes); mag.put("ANNOES",annoes);
mag.put("CODMAG",key2field(curr_key,"CODMAG")); mag.put("CODMAG",key2field(curr_key,"CODMAG"));
mag.put("CODART",key2field(curr_key,"CODART")); mag.put("CODART",key2field(curr_key,"CODART"));
mag.put("LIVELLO",key2field(curr_key,"LIVGIAC")); mag.put("LIVELLO",key2field(curr_key,"LIVGIAC"));
} }
@ -1093,112 +1097,112 @@ int TMov_mag::update_balances() const
keys_to_add.sort(); keys_to_add.sort();
TToken_string * curr_key=(TToken_string *)keys_to_add.first_item(); TToken_string * curr_key=(TToken_string *)keys_to_add.first_item();
while (curr_key) { while (curr_key) {
TArticolo_giacenza articolo(key2field(*curr_key,"CODART")); TArticolo_giacenza articolo(key2field(*curr_key,"CODART"));
if (articolo.lock_and_prompt()) { if (articolo.lock_and_prompt()) {
TLine_movmag & line_mov=(TLine_movmag &)lines_to_add[*curr_key]; TLine_movmag & line_mov=(TLine_movmag &)lines_to_add[*curr_key];
articolo.update_ultcosti(line_mov.prezzo,get_date("DATACOMP")); articolo.update_ultcosti(line_mov.prezzo,get_date("DATACOMP"));
// lock gained // lock gained
giac_putkey(mag,get("ANNOES"),*curr_key); giac_putkey(mag,get("ANNOES"),*curr_key);
if (mag.read()!=NOERR) { if (mag.read()!=NOERR) {
// non trovato: aggiungo // non trovato: aggiungo
giac_putkey(mag,get("ANNOES"),*curr_key); giac_putkey(mag,get("ANNOES"),*curr_key);
mag.put("NRIGA",1+articolo.mag(get("ANNOES")).rows()); mag.put("NRIGA",1+articolo.mag(get("ANNOES")).rows());
mag.write(); mag.write();
} }
// modifica questo record (e lo sblocca) // modifica questo record (e lo sblocca)
update_balances(mag.curr(),line_mov,get("CODCAUS"),+1); update_balances(mag.curr(),line_mov,get("CODCAUS"),+1);
/*// ottimizzazione :(cerca di sfruttare la lettura fatta per un eventuale saldo vecchio) /*// ottimizzazione :(cerca di sfruttare la lettura fatta per un eventuale saldo vecchio)
// ciò causa la modifica dell'oggetto TMov_mag (il metodo non è più const) // ciò causa la modifica dell'oggetto TMov_mag (il metodo non è più const)
if (_annoes == get("ANNOES") if (_annoes == get("ANNOES")
&& lines_to_subtract.is_key(*curr_key)) { && lines_to_subtract.is_key(*curr_key)) {
update_balances(mag.curr(),(TLine_movmag &)lines_to_subtract[*curr_key],_codcaus,-1); update_balances(mag.curr(),(TLine_movmag &)lines_to_subtract[*curr_key],_codcaus,-1);
((TMov_mag *)this)->lines_to_add.remove(*curr_key); ((TMov_mag *)this)->lines_to_add.remove(*curr_key);
((TMov_mag *)this)->lines_to_subtract.remove(*curr_key); ((TMov_mag *)this)->lines_to_subtract.remove(*curr_key);
}*/ }*/
mag.rewrite(); mag.rewrite();
// conclude la TRANSAZIONE prima di sbloccare il record dell'articolo // conclude la TRANSAZIONE prima di sbloccare il record dell'articolo
TToken_string *rem_key=(TToken_string *)keys_to_remove.first_item(); TToken_string *rem_key=(TToken_string *)keys_to_remove.first_item();
while ( rem_key) { while ( rem_key) {
if (key2field(*rem_key,"CODART")==key2field(*curr_key,"CODART")) { if (key2field(*rem_key,"CODART")==key2field(*curr_key,"CODART")) {
giac_putkey(mag,_annoes,*rem_key); giac_putkey(mag,_annoes,*rem_key);
if (mag.read()==NOERR) { if (mag.read()==NOERR) {
update_balances(mag.curr(),(TLine_movmag &)lines_to_subtract[*rem_key],_codcaus,-1); update_balances(mag.curr(),(TLine_movmag &)lines_to_subtract[*rem_key],_codcaus,-1);
mag.rewrite(); mag.rewrite();
} }
keys_to_remove.remove_item(); keys_to_remove.remove_item();
} }
rem_key=(TToken_string *)keys_to_remove.succ_item(); rem_key=(TToken_string *)keys_to_remove.succ_item();
} }
articolo.unlock(); articolo.unlock();
} else { } else {
updated_bal=FALSE; updated_bal=FALSE;
} }
curr_key=(TToken_string *)keys_to_add.succ_item(); curr_key=(TToken_string *)keys_to_add.succ_item();
} }
// togli i saldi vecchi // togli i saldi vecchi
curr_key=(TToken_string *)keys_to_remove.first_item(); curr_key=(TToken_string *)keys_to_remove.first_item();
while (curr_key) { while (curr_key) {
TArticolo articolo(key2field(*curr_key,"CODART")); TArticolo articolo(key2field(*curr_key,"CODART"));
if (articolo.lock_and_prompt()) { if (articolo.lock_and_prompt()) {
giac_putkey(mag,_annoes,*curr_key); giac_putkey(mag,_annoes,*curr_key);
// modifica questo record (e lo sblocca) // modifica questo record (e lo sblocca)
if (mag.read()==NOERR) { if (mag.read()==NOERR) {
update_balances(mag.curr(),(TLine_movmag &)lines_to_subtract[*curr_key],_codcaus,-1); update_balances(mag.curr(),(TLine_movmag &)lines_to_subtract[*curr_key],_codcaus,-1);
mag.rewrite(); mag.rewrite();
} }
articolo.unlock(); articolo.unlock();
} else { } else {
updated_bal=FALSE; updated_bal=FALSE;
} }
curr_key=(TToken_string *)keys_to_remove.succ_item(); curr_key=(TToken_string *)keys_to_remove.succ_item();
} }
if (!updated_bal) { if (!updated_bal) {
// saldi non aggiornati // saldi non aggiornati
warning_box("I saldi di magazzino non sono stati del tutto aggiornati. \nProcedere ad una operazione di ''Ricostruzione saldi''"); warning_box("I saldi di magazzino non sono stati del tutto aggiornati. \nProcedere ad una operazione di ''Ricostruzione saldi''");
} }
return updated_bal; return updated_bal;
} }
// aggiorna i saldi del record corrente // aggiorna i saldi del record corrente
// in base alla causale e alla modifica fatta (con segno + o -) // in base alla causale e alla modifica fatta (con segno + o -)
int TMov_mag::update_balances(TRectype & magrec, const TLine_movmag &l,TString16 codcaus,int rett_sign) const int TMov_mag::update_balances(TRectype & magrec, const TLine_movmag &l,TString16 codcaus,int rett_sign) const
{ {
TCausale_magazzino caus(codcaus); TCausale_magazzino caus(codcaus);
TLocalisamfile umart(LF_UMART); TLocalisamfile umart(LF_UMART);
real diff,diff_val; real diff,diff_val;
umart.setkey(2); umart.setkey(2);
umart.put(UMART_CODART,magrec.get(MAG_CODART)); umart.put(UMART_CODART,magrec.get(MAG_CODART));
umart.put(UMART_UM , l.um); umart.put(UMART_UM , l.um);
umart.read(); umart.read();
real fc=umart.get_real("FC"); real fc=umart.get_real("FC");
diff=fc*rett_sign*l.quant; diff=fc*rett_sign*l.quant;
diff_val=rett_sign*l.quant*l.prezzo; diff_val=rett_sign*l.quant*l.prezzo;
update_balance(magrec,"GIAC",diff*caus.sgn(s_giac)); // update .. update_balance(magrec,"GIAC",diff*caus.sgn(s_giac)); // update ..
update_balance(magrec,"ACQ",diff*caus.sgn(s_acq)); // update .. update_balance(magrec,"ACQ",diff*caus.sgn(s_acq)); // update ..
update_balance(magrec,"VALACQ",diff_val*caus.sgn(s_acq)); // update .. update_balance(magrec,"VALACQ",diff_val*caus.sgn(s_acq)); // update ..
update_balance(magrec,"ENT",diff*caus.sgn(s_ent)); update_balance(magrec,"ENT",diff*caus.sgn(s_ent));
update_balance(magrec,"VALENT",diff_val*caus.sgn(s_ent)); update_balance(magrec,"VALENT",diff_val*caus.sgn(s_ent));
update_balance(magrec,"VEN",diff*caus.sgn(s_ven)); update_balance(magrec,"VEN",diff*caus.sgn(s_ven));
update_balance(magrec,"VALVEN",diff_val*caus.sgn(s_ven)); update_balance(magrec,"VALVEN",diff_val*caus.sgn(s_ven));
update_balance(magrec,"USC",diff*caus.sgn(s_usc)); update_balance(magrec,"USC",diff*caus.sgn(s_usc));
update_balance(magrec,"VALUSC",diff_val*caus.sgn(s_usc)); update_balance(magrec,"VALUSC",diff_val*caus.sgn(s_usc));
update_balance(magrec,"ORDC",diff*caus.sgn(s_ordc)); update_balance(magrec,"ORDC",diff*caus.sgn(s_ordc));
update_balance(magrec,"VALORDC",diff_val*caus.sgn(s_ordc)); update_balance(magrec,"VALORDC",diff_val*caus.sgn(s_ordc));
update_balance(magrec,"ORDF",diff*caus.sgn(s_ordf)); update_balance(magrec,"ORDF",diff*caus.sgn(s_ordf));
update_balance(magrec,"VALORDF",diff_val*caus.sgn(s_ordf)); update_balance(magrec,"VALORDF",diff_val*caus.sgn(s_ordf));
update_balance(magrec,"RIM",diff*caus.sgn(s_rim)); update_balance(magrec,"RIM",diff*caus.sgn(s_rim));
update_balance(magrec,"VALRIM",diff_val*caus.sgn(s_rim)); update_balance(magrec,"VALRIM",diff_val*caus.sgn(s_rim));
update_balance(magrec,"SCARTI",diff*caus.sgn(s_scart)); update_balance(magrec,"SCARTI",diff*caus.sgn(s_scart));
update_balance(magrec,"VALSCARTI",diff_val*caus.sgn(s_scart)); update_balance(magrec,"VALSCARTI",diff_val*caus.sgn(s_scart));
update_balance(magrec,"INCL",diff*caus.sgn(s_incl)); update_balance(magrec,"INCL",diff*caus.sgn(s_incl));
update_balance(magrec,"ACL",diff*caus.sgn(s_acl)); update_balance(magrec,"ACL",diff*caus.sgn(s_acl));
update_balance(magrec,"PRODCOMP",diff*caus.sgn(s_prodc)); update_balance(magrec,"PRODCOMP",diff*caus.sgn(s_prodc));
update_balance(magrec,"PRODFIN",diff*caus.sgn(s_prodf)); update_balance(magrec,"PRODFIN",diff*caus.sgn(s_prodf));
update_balance(magrec,"NLABEL",diff*caus.sgn(s_label)); update_balance(magrec,"NLABEL",diff*caus.sgn(s_label));
return 0; return 0;
} }
@ -1218,66 +1222,66 @@ int TMov_mag::codice_esercizio(TDate &d)
//********************** //**********************
bool rebuild_balances(TString16 annoes, bool reset_giac) bool rebuild_balances(TString16 annoes, bool reset_giac)
{ {
TArray used_files; TArray used_files;
used_files.add(new TLocalisamfile(LF_RMOVMAG),LF_RMOVMAG); used_files.add(new TLocalisamfile(LF_RMOVMAG),LF_RMOVMAG);
used_files.add(new TLocalisamfile(LF_MOVMAG),LF_MOVMAG); used_files.add(new TLocalisamfile(LF_MOVMAG),LF_MOVMAG);
used_files.add(new TTable("CAU"),5); used_files.add(new TTable("CAU"),5);
TMov_mag * m_m= new TMov_mag; // record del movimento di magazzino TMov_mag * m_m= new TMov_mag; // record del movimento di magazzino
// relazione con un solo file (LF_MOVMAG) ma col record Head_Body // relazione con un solo file (LF_MOVMAG) ma col record Head_Body
TRelation rel(LF_MOVMAG); TRelation rel(LF_MOVMAG);
rel.lfile().set_curr(m_m); rel.lfile().set_curr(m_m);
int ok=TRUE; int ok=TRUE;
TLocalisamfile mag(LF_MAG); TLocalisamfile mag(LF_MAG);
if (reset_giac) { if (reset_giac) {
// azzera tutte giacenze (ciclo sulle giacenze) // azzera tutte giacenze (ciclo sulle giacenze)
mag.put("ANNOES",annoes); mag.put("ANNOES",annoes);
mag.read(_isgteq); mag.read(_isgteq);
while (!mag.eof() && annoes==mag.get("ANNOES")) while (!mag.eof() && annoes==mag.get("ANNOES"))
{ {
TString currcode(mag.get("CODART")); TString currcode(mag.get("CODART"));
TArticolo articolo(currcode); TArticolo articolo(currcode);
if (articolo.lock_and_prompt()) if (articolo.lock_and_prompt())
{ {
while (!mag.eof() && currcode==mag.get("CODART")) while (!mag.eof() && currcode==mag.get("CODART"))
{ {
mag.put("ACQ",0);mag.put("VALACQ",0); mag.put("ACQ",0);mag.put("VALACQ",0);
mag.put("ENT",0);mag.put("VALENT",0); mag.put("ENT",0);mag.put("VALENT",0);
mag.put("VEN",0);mag.put("VALVEN",0); mag.put("VEN",0);mag.put("VALVEN",0);
mag.put("USC",0);mag.put("VALUSC",0); mag.put("USC",0);mag.put("VALUSC",0);
mag.put("ORDF",0);mag.put("VALORDF",0); mag.put("ORDF",0);mag.put("VALORDF",0);
mag.put("ORDC",0);mag.put("VALORDC",0); mag.put("ORDC",0);mag.put("VALORDC",0);
mag.put("SCARTI",0);mag.put("VALSCARTI",0); mag.put("SCARTI",0);mag.put("VALSCARTI",0);
mag.put("GIAC",0); mag.put("GIAC",0);
mag.put("PRODCOMP",0); mag.put("PRODCOMP",0);
mag.put("PRODFIN",0); mag.put("PRODFIN",0);
mag.put("INCL",0); mag.put("INCL",0);
mag.put("ACL",0); mag.put("ACL",0);
mag.put("NLABEL",0); mag.put("NLABEL",0);
mag.rewrite(); mag.rewrite();
mag.next(); mag.next();
} }
articolo.unlock(); articolo.unlock();
} else { } else {
ok=FALSE; ok=FALSE;
mag.next(); mag.next();
} }
} }
} }
// ricostruisce i saldi (ciclo sui movimenti) // ricostruisce i saldi (ciclo sui movimenti)
TString filterexpr; TString filterexpr;
filterexpr << LF_MOVMAG << "->ANNOES==" << annoes; filterexpr << LF_MOVMAG << "->ANNOES==" << annoes;
TCursor cur(&rel,filterexpr); // cursore filtrato TCursor cur(&rel,filterexpr); // cursore filtrato
for (int i=0; i<cur.objects(); i++) for (int i=0; i<cur.objects(); i++)
{ {
cur=i; cur=i;
TMov_mag & mov_rec=(TMov_mag &)cur.file().curr(); TMov_mag & mov_rec=(TMov_mag &)cur.file().curr();
if (!mov_rec.force_update_bal()) if (!mov_rec.force_update_bal())
ok=FALSE; ok=FALSE;
} }
return ok; return ok;
} }