Aggiunte le funzioni di calcolo prezzo netto/lordo.

git-svn-id: svn://10.65.10.50/trunk@3354 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1996-08-09 08:50:18 +00:00
parent 1029c6ef35
commit 5080a0bbd8
2 changed files with 62 additions and 0 deletions

View File

@ -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
///////////////////////////////////////////////////////////

View File

@ -5,6 +5,11 @@
#include <relation.h>
#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