diff --git a/mg/mg1100.cpp b/mg/mg1100.cpp index 31776d5d0..1ef34c633 100755 --- a/mg/mg1100.cpp +++ b/mg/mg1100.cpp @@ -18,12 +18,14 @@ // maschera dell'applicazione "Gestione interattiva movimenti di magazzino" // class TMask_movmag: public TMask { + static TRecord_cache cache_causali; TMov_mag * mov_mag; - TMag_livelli * livelli_giac; // oggetto gestione livelli di giacenza + TCodgiac_livelli * livelli_giac; // oggetto gestione livelli di giacenza TString price_codart; real price_quant; bool price_proposed; real proposed_price(TString codart, real quant); + bool update_rigamov (int r, const char * old_codcaus); static bool notify_righe(TSheet_field & fld_righe, int item, KEY k); // notify delle righe di sheet @@ -34,14 +36,16 @@ class TMask_movmag: public TMask { static void sheetrighe_put(TSheet_field &fld_righe, int item); static void sheetrighe_get(TSheet_field &fld_righe, int item); public: - TMask_movmag(TMag_livelli *l_m,TMov_mag * m_m); + TMask_movmag(TCodgiac_livelli *l_m,TMov_mag * m_m); virtual ~TMask_movmag(); }; +TRecord_cache TMask_movmag::cache_causali("%CAU"); + // costruttore della maschera anagrafica di magazzino //TMask_movmag::TMask_movmag() : -TMask_movmag::TMask_movmag(TMag_livelli *l_m,TMov_mag * m_m) +TMask_movmag::TMask_movmag(TCodgiac_livelli *l_m,TMov_mag * m_m) : TMask("mg1100") { // oggetti dell'applicazione @@ -222,9 +226,9 @@ bool TMask_movmag::update_rigamov (int r, const char * old_codcaus) TString16 new_codcaus(ss.cell(r,ss.cid2index(F_CAUSRIG))); if (new_codcaus.blank()) new_codcaus=get(F_CODCAUS); - TCausale_magazzino oldcau(old_codcaus); - TCausale_magazzino cau(new_codcaus); - if (*cau.get_collegata()!='\0') + TCausale_magazzino &oldcau=(TCausale_magazzino &)cache_causali.get(old_codcaus); + TCausale_magazzino &cau =(TCausale_magazzino &)cache_causali.get(new_codcaus); + if (*cau.caus_collegata()!='\0') { // deve esserci una riga collegata TString16 codmag,coddep; @@ -242,13 +246,13 @@ bool TMask_movmag::update_rigamov (int r, const char * old_codcaus) ss.row(r+1).add(prezzo.string(),ss.cid2index(F_PREZZO)); ss.row(r+1).add(codmag,ss.cid2index(F_CODMAG)); ss.row(r+1).add(coddep,ss.cid2index(F_CODDEP)); - ss.row(r+1).add(cau.get_collegata(),ss.cid2index(F_CAUSRIG)); + ss.row(r+1).add(cau.caus_collegata(),ss.cid2index(F_CAUSRIG)); ss.row(r+1).add(TString(1,riga_automatica),ss.cid2index(F_AUTOMATICA)); ss.check_row(r+1); ss.force_update(r+1); return TRUE; } else - if (*oldcau.get_collegata()!='\0') + if (*oldcau.caus_collegata()!='\0') { // scollega la vecchia riga ss.destroy(r + 1); @@ -264,7 +268,7 @@ real TMask_movmag::proposed_price(TString codart, TLocalisamfile anamag(LF_ANAMAG); anamag.put("CODART",codart); anamag.read(); - switch (cau.get_tipoprz()) { + switch (cau.tipoprz()) { // prezzo case 'P': { TLocalisamfile umart(LF_UMART); @@ -295,10 +299,10 @@ bool TMask_movmag::handle_codcaus(TMask_field &fld, KEY k) TSheet_field & ss=(TSheet_field & )m.field(F_RIGHE); bool added_some; + // aggiorna le righe che dipendono dalla causale movimento for (int i=0; i< ss.items(); i++) { if (*ss.cell(i,ss.cid2index(F_CAUSRIG)) ==' ') - // la riga dipende dalla causale movimento added_some &=(m.update_rigamov(i,old_codcaus)); } if (added_some) @@ -334,7 +338,7 @@ bool TMask_movmag::handle_datacomp(TMask_field &fld, KEY k) class TApp_movmag: public TRelation_application { TArray used_files; TMask_movmag *_msk; // maschera principale - TMag_livelli * _livelli_giac;// oggetto handler per i livelli di giacenza + TCodgiac_livelli * _livelli_giac;// oggetto handler per i livelli di giacenza TRelation * _rel; // relazione contenente il file movimenti virtual bool user_create(); @@ -365,7 +369,7 @@ bool TApp_movmag::user_create() m_m->enable_autoload(LF_RMOVMAG); // gestione giacenza a livelli - _livelli_giac= new TMag_livelli("FCG"); + _livelli_giac= new TCodgiac_livelli; // maschera specifica con gli handler dei movimenti _msk= new TMask_movmag(_livelli_giac,m_m); // relazione con un solo file (LF_MOVMAG) ma col record Head_Body