From 5080a0bbd814230dcd444e4c8f52170394c8d6e8 Mon Sep 17 00:00:00 2001 From: angelo Date: Fri, 9 Aug 1996 08:50:18 +0000 Subject: [PATCH] Aggiunte le funzioni di calcolo prezzo netto/lordo. git-svn-id: svn://10.65.10.50/trunk@3354 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/velib01.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ ve/velib01.h | 5 +++++ 2 files changed, 62 insertions(+) diff --git a/ve/velib01.cpp b/ve/velib01.cpp index 6da973ce5..8d04b95cf 100755 --- a/ve/velib01.cpp +++ b/ve/velib01.cpp @@ -7,6 +7,63 @@ #include "velib01.h" +/////////////////////////////////////////////////////////// +// Funzioni per il calcolo dei prezzi netti/lordi +/////////////////////////////////////////////////////////// + +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; +} + /////////////////////////////////////////////////////////// // Tipo documento /////////////////////////////////////////////////////////// diff --git a/ve/velib01.h b/ve/velib01.h index 6fb10ef38..cb1c0dcdd 100755 --- a/ve/velib01.h +++ b/ve/velib01.h @@ -5,6 +5,11 @@ #include #endif +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); + class TMask; class TTipo_documento : public TObject