diff --git a/ve/ve2300.cpp b/ve/ve2300.cpp index 9b03dc15a..1ae370536 100755 --- a/ve/ve2300.cpp +++ b/ve/ve2300.cpp @@ -1,74 +1,12 @@ #include #include #include - +#include "velib01.h" #include "ve2300.h" #include "veconf.h" #define MAX_REAL "9999999999.99999" //mmmhh.. -// Le 4 seguenti funzioni saranno da mettere in velib01 - -real lordo2netto(real& lordo, const TString& codiva, bool is_valuta = FALSE); -real netto2lordo(const real& netto, const TString& codiva, bool is_valuta = FALSE); -real lordo2netto(real& lordo, const real& iva, bool is_valuta = FALSE); -real netto2lordo(const real& netto, const real& iva, bool is_valuta = FALSE); - -real lordo2netto(real& lordo, const TString& codiva, bool is_valuta) -{ - TTable tabiva("%IVA"); - real aliquota = 0.0; - - tabiva.put("CODTAB", codiva); - if (tabiva.read() == NOERR) aliquota = tabiva.get_real("R0"); - - return lordo2netto(lordo,aliquota,is_valuta); -} - -real netto2lordo(const real& netto, const TString& codiva, bool is_valuta) -{ - TTable tabiva("%IVA"); - real aliquota = 0.0; - - tabiva.put("CODTAB", codiva); - if (tabiva.read() == NOERR) aliquota = tabiva.get_real("R0"); - - return netto2lordo(netto,aliquota,is_valuta); -} - -real lordo2netto(real& lordo, const real& iva, bool is_valuta) -{ - real netto; - real imposta = 0.0; - real imposta_rec = 0.0; - if (!iva.is_zero()) - { - imposta = (lordo * iva) / (iva + 100.0); // Calcola l'imposta... - imposta.ceil(is_valuta ? 3 : 0); - } - netto = lordo - imposta; // Questo e' l'importo netto - imposta_rec = (netto * iva) / 100.0; // Ricalcola l'imposta con il nuovo imponibile - imposta_rec.ceil(is_valuta ? 3 : 0); - if (imposta != imposta_rec) // In questo caso corregge l'importo lordo - lordo = netto + imposta_rec; - return netto; -} - -real netto2lordo(const real& netto, const real& iva, bool is_valuta) -{ - real lordo; - real imposta = 0.0; - if (!iva.is_zero()) - { - imposta = (netto * iva) / 100.0; // Calcola l'imposta - imposta.ceil(is_valuta ? 3 : 0); - } - lordo = imposta + netto; // prezzo lordo - return lordo; -} - -// Queste no! - static void key_hide(TMask & m, short id, int key = 1) { ((TEditable_field &)m.field(id)).reset_key(key); @@ -320,8 +258,9 @@ bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) { _msk->show(F_R_PREZZO_LORDO, !app()._is_valuta && imp_lordi); _msk->show(F_R_PREZZO_LORDO_VAL, app()._is_valuta && imp_lordi); if (_gest_um) _um= condv.get_bool("GESTUM"); // legge lo stato di abilitazione della gestione delle unità di misura + _gest_sca &= condv.get_bool("GESTSCAGL"); hide_and_show_codriga(); // lancia la funzione che si occupa di abilitare/disabilitare il campo "unità di misura" - if (_gest_sca && condv.get_bool("GESTSCAGL")) { + if (_gest_sca) { if (_msk->query_mode()) key_enable(*_msk, F_R_NSCAGL); // abilita il campo "numero scaglione" _msk->enable(F_R_QLIM); // abilita il campo "quantità limite scaglione" @@ -567,26 +506,12 @@ int TRighe_condizioni_vendita::rewrite(const TMask &m) { void TRighe_condizioni_vendita::renumber_sca(const TRectype& r) { TRectype from(r); - TRectype to(r); - TLocalisamfile rcondv(LF_RCONDV); - int sca = 1; - from.put("NSCAGL",sca); // parte dal primo (Se ci sono gli scaglioni questo deve esserci) - to.put("NSCAGL",9); // condizione limite... - rcondv.curr() = from; - for (rcondv.read(_isgteq);rcondv.good() && rcondv.curr() <= to;rcondv.next()) // se non c'e' nessun scaglione, non rinumera niente + from.zero("NSCAGL"); + TRecord_array rec_arr(from,"NSCAGL"); + if (rec_arr.read(from) == NOERR) { - if (rcondv.get_int("NSCAGL") != sca) - { - rcondv.put("NSCAGL",sca); - rcondv.rewrite(); - } - sca++; - } - if (sca > 1) - { - rcondv.curr() = from; - rcondv.put("NSCAGL",sca-1); - rcondv.remove(); + rec_arr.pack(); + rec_arr.rewrite(); } } bool TRighe_condizioni_vendita::remove()