From bddad2042bb2b1fdf54eec34994d19b46e76fee2 Mon Sep 17 00:00:00 2001 From: augusto Date: Mon, 7 Jul 1997 10:25:09 +0000 Subject: [PATCH] Nuova codifica dei segni di movimento delle causali (per supportare fino a 25 segni) Aggiunta la gestione movimenta solo valori/solo qta git-svn-id: svn://10.65.10.50/trunk@4823 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- mg/mglib02.cpp | 101 ++++++++++++++++++++++++++++--------------------- 1 file changed, 57 insertions(+), 44 deletions(-) diff --git a/mg/mglib02.cpp b/mg/mglib02.cpp index a93a97ad3..5bf3ab20f 100755 --- a/mg/mglib02.cpp +++ b/mg/mglib02.cpp @@ -831,40 +831,47 @@ TCondizione_vendita::TCondizione_vendita(TConfig * ditta, int TCausale_magazzino::sgn(TTipo_saldomag tiposaldo) { + static TString80 segni; + segni=get("S2"); switch (tiposaldo) { case s_giac: - return get_int("I0"); + return atoi(segni.mid(0,2)); case s_acq: - return get_int("I1"); + return atoi(segni.mid(2,2)); case s_ent: - return get_int("I2"); + return atoi(segni.mid(4,2)); case s_ven: - return get_int("I3"); + return atoi(segni.mid(6,2)); case s_usc: - return get_int("I4"); + return atoi(segni.mid(8,2)); case s_ordc: - return get_int("I5"); + return atoi(segni.mid(10,2)); case s_ordf: - return get_int("I6"); + return atoi(segni.mid(12,2)); case s_incl: - return get_int("I7"); + return atoi(segni.mid(14,2)); case s_acl: - return get_int("I8"); + return atoi(segni.mid(16,2)); case s_prodc: - return get_int("I9"); + return atoi(segni.mid(18,2)); case s_prodf: - return get_int("I10"); + return atoi(segni.mid(20,2)); case s_rim: - return get_int("I11"); + return atoi(segni.mid(22,2)); case s_scart: - return get_int("I12"); + return atoi(segni.mid(24,2)); case s_label: - return get_int("I13"); + return atoi(segni.mid(26,2)); default: return 0; } } +bool TCausale_magazzino::is_fiscale() +{ + return (tipomov()=='S' || tipomov()=='C' ); +} + TCausale_magazzino::TCausale_magazzino(const char * codice): TRectype(LF_TABCOM) @@ -949,7 +956,7 @@ int TMov_mag::read(TBaseisamfile& f, word op , word lockop) const int nrows = rows(); - for (int i = 1; i< nrows; i++) + for (int i = 1; i<= nrows; i++) line_deleted(line2key(i), line2data(i)); return res; } @@ -1021,7 +1028,7 @@ int TMov_mag::rewrite(TBaseisamfile& f) const const int nrows = rows(); - for (int i = 1; i < nrows; i++) + for (int i = 1; i <= nrows; i++) ((TMov_mag *)this)->line_inserted(line2key(i), line2data(i)); if ((res=TMultiple_rectype::rewrite(f))==NOERR ) // effettua la variazione dei saldi @@ -1059,15 +1066,15 @@ int TMov_mag::force_update_bal() return res; } -// restituisce +// restituisce il valore dei dati TLine_movmag & TMov_mag::line2data(int nrig) const { static TLine_movmag _rest; TRecord_array & b = body(); - _rest.codcaus= b.row(nrig).get(RMOVMAG_CODCAUS) != " " ? - b.row(nrig).get(RMOVMAG_CODCAUS) - : get(MOVMAG_CODCAUS); + _rest.codcaus= b.row(nrig).get(RMOVMAG_CODCAUS).blank() ? + get(MOVMAG_CODCAUS) + : b.row(nrig).get(RMOVMAG_CODCAUS) ; _rest.um = b.row(nrig).get(RMOVMAG_UM); _rest.quant = b.row(nrig).get_real(RMOVMAG_QUANT); _rest.prezzo= b.row(nrig).get_real(RMOVMAG_PREZZO); @@ -1187,7 +1194,10 @@ int TMov_mag::update_balances() curr_art.read((const char *)key2field(*curr_key,"CODART")); if (curr_art.lock_and_prompt()) { TLine_movmag & line_mov=(TLine_movmag &)lines_to_add[*curr_key]; - curr_art.update_ultcosti(line_mov.prezzo,get_date("DATACOMP")); + TCausale_magazzino & causmag=(TCausale_magazzino &)cache_causali.get(line_mov.codcaus); + + if (causmag.update_ultcos()) + curr_art.update_ultcosti(line_mov.prezzo,get_date("DATACOMP")); // lock gained giac_putkey(mag,get("ANNOES"),*curr_key); if (mag.read()!=NOERR) { @@ -1266,28 +1276,32 @@ int TMov_mag::update_balances(TRectype & magrec, const TLine_movmag &l,int rett_ diff=fc*rett_sign*l.quant; diff_val=rett_sign*l.quant*l.prezzo; - update_balance(magrec,"GIAC",diff*caus.sgn(s_giac)); // 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,"ENT",diff*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,"VALVEN",diff_val*caus.sgn(s_ven)); - update_balance(magrec,"USC",diff*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,"VALORDC",diff_val*caus.sgn(s_ordc)); - update_balance(magrec,"ORDF",diff*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,"VALRIM",diff_val*caus.sgn(s_rim)); - update_balance(magrec,"SCARTI",diff*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,"ACL",diff*caus.sgn(s_acl)); - update_balance(magrec,"PRODCOMP",diff*caus.sgn(s_prodc)); - update_balance(magrec,"PRODFIN",diff*caus.sgn(s_prodf)); - update_balance(magrec,"NLABEL",diff*caus.sgn(s_label)); + if (caus.update_qta()) { + update_balance(magrec,"GIAC",diff*caus.sgn(s_giac)); // update .. + update_balance(magrec,"ACQ",diff*caus.sgn(s_acq)); // update .. + update_balance(magrec,"ENT",diff*caus.sgn(s_ent)); + update_balance(magrec,"VEN",diff*caus.sgn(s_ven)); + update_balance(magrec,"USC",diff*caus.sgn(s_usc)); + update_balance(magrec,"ORDC",diff*caus.sgn(s_ordc)); + update_balance(magrec,"ORDF",diff*caus.sgn(s_ordf)); + update_balance(magrec,"RIM",diff*caus.sgn(s_rim)); + update_balance(magrec,"SCARTI",diff*caus.sgn(s_scart)); + update_balance(magrec,"INCL",diff*caus.sgn(s_incl)); + update_balance(magrec,"ACL",diff*caus.sgn(s_acl)); + update_balance(magrec,"PRODCOMP",diff*caus.sgn(s_prodc)); + update_balance(magrec,"PRODFIN",diff*caus.sgn(s_prodf)); + update_balance(magrec,"NLABEL",diff*caus.sgn(s_label)); + } + if (caus.update_val()) { + update_balance(magrec,"VALACQ",diff_val*caus.sgn(s_acq)); // update .. + update_balance(magrec,"VALENT",diff_val*caus.sgn(s_ent)); + update_balance(magrec,"VALVEN",diff_val*caus.sgn(s_ven)); + update_balance(magrec,"VALUSC",diff_val*caus.sgn(s_usc)); + update_balance(magrec,"VALORDC",diff_val*caus.sgn(s_ordc)); + update_balance(magrec,"VALORDF",diff_val*caus.sgn(s_ordf)); + update_balance(magrec,"VALRIM",diff_val*caus.sgn(s_rim)); + update_balance(magrec,"VALSCARTI",diff_val*caus.sgn(s_scart)); + } return 0; } @@ -1304,7 +1318,6 @@ int TMov_mag::codice_esercizio(TDate &d) return _esercizi.date2esc(d); } - //********************** bool rebuild_balances(TString16 annoes, bool reset_giac) {