Patch level : 2.0 564

Files correlati     : sv2.exe
Ricompilazione Demo : [ ]
Commento            :

Errore gia' segnalato in SV


git-svn-id: svn://10.65.10.50/trunk@11416 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2003-09-12 14:56:49 +00:00
parent dcacf87142
commit b6cd17add9
2 changed files with 31 additions and 18 deletions

View File

@ -425,7 +425,7 @@ class TRiga_documento : public TAuto_variable_rectype // velib02
static TAssoc_array _spese; static TAssoc_array _spese;
static TAssoc_array _ive; static TAssoc_array _ive;
static TCache_articoli * _articoli; static TCache_articoli * _articoli;
bool _iva_calc; static int _iva_calc_mode;
protected: protected:
// @cmember Setta il contenuto del campo <p fieldname> (non tipizzata) // @cmember Setta il contenuto del campo <p fieldname> (non tipizzata)
@ -498,7 +498,8 @@ public:
real sconto() const { return importo(FALSE,FALSE) - importo(TRUE,FALSE); } real sconto() const { return importo(FALSE,FALSE) - importo(TRUE,FALSE); }
real iva(int ndec) const; real iva(int ndec) const;
real imponibile(bool lordo = FALSE) const; real imponibile(bool lordo = FALSE) const;
real imponibile_omaggio() const; real imponibile_omaggio(int iva_calc_mode = 1) const;
real iva_omaggio(int ndec, int iva_calc_mode = 1) const;
real imposta(bool round = TRUE) const; real imposta(bool round = TRUE) const;
real provvigione(int ndec = AUTO_DECIMALS) const; real provvigione(int ndec = AUTO_DECIMALS) const;

View File

@ -166,15 +166,18 @@ TAssoc_array TRiga_documento::_spese;
TAssoc_array TRiga_documento::_ive; TAssoc_array TRiga_documento::_ive;
TCache_articoli * TRiga_documento::_articoli = NULL; TCache_articoli * TRiga_documento::_articoli = NULL;
// 0=ignora IVA; 1=consedera iva solo se c'e' addebito; 2=considera sempre IVA
int TRiga_documento::_iva_calc_mode = 0;
TRiga_documento::TRiga_documento(TDocumento* doc, const char * tipo) TRiga_documento::TRiga_documento(TDocumento* doc, const char * tipo)
: TAuto_variable_rectype(LF_RIGHEDOC), _doc(doc), _iva_calc(FALSE) : TAuto_variable_rectype(LF_RIGHEDOC), _doc(doc)
{ {
if (tipo) if (tipo)
set_tipo(tipo); set_tipo(tipo);
} }
TRiga_documento::TRiga_documento(const TRiga_documento & row) TRiga_documento::TRiga_documento(const TRiga_documento & row)
: TAuto_variable_rectype(LF_RIGHEDOC), _doc(NULL), _iva_calc(FALSE) : TAuto_variable_rectype(LF_RIGHEDOC), _doc(NULL)
{ {
copy(row); copy(row);
@ -182,7 +185,7 @@ TRiga_documento::TRiga_documento(const TRiga_documento & row)
TRiga_documento::TRiga_documento(const TRiga_documento& rec, TDocumento* doc, TRiga_documento::TRiga_documento(const TRiga_documento& rec, TDocumento* doc,
const char * tipo) const char * tipo)
: TAuto_variable_rectype(rec), _doc(doc), _iva_calc(FALSE) : TAuto_variable_rectype(rec), _doc(doc)
{ {
if (tipo) if (tipo)
set_tipo(tipo); set_tipo(tipo);
@ -484,7 +487,7 @@ real TRiga_documento::importo(bool scontato, bool lordo, int ndec) const
} }
break; break;
case RIGA_OMAGGI: case RIGA_OMAGGI:
if (_iva_calc && get_bool("ADDIVA")) if (_iva_calc_mode > 1 || (_iva_calc_mode == 1 && get_bool("ADDIVA")))
c = _qtaprezzo; c = _qtaprezzo;
default: default:
break; break;
@ -528,21 +531,30 @@ real TRiga_documento::importo(bool scontato, bool lordo, int ndec) const
} }
real TRiga_documento::iva(int ndec) const real TRiga_documento::iva(int ndec) const
{
real zanicchi;
if (!is_sconto())
{ {
if (ndec == AUTO_DECIMALS) if (ndec == AUTO_DECIMALS)
ndec = doc().decimals(); ndec = doc().decimals();
zanicchi = is_omaggio() ? iva_omaggio(ndec) : iva().imposta(imponibile(), ndec);
((TRiga_documento *) this)->_iva_calc = TRUE; }
const real zanicchi = is_sconto() ? ZERO : iva().imposta(imponibile(), ndec);
((TRiga_documento *) this)->_iva_calc = FALSE;
return zanicchi; return zanicchi;
} }
real TRiga_documento::imponibile_omaggio() const real TRiga_documento::iva_omaggio(int ndec, int tipo_iva_calc) const
{ {
((TRiga_documento *) this)->_iva_calc = TRUE; if (ndec == AUTO_DECIMALS)
ndec = doc().decimals();
const real zanicchi = iva().imposta(imponibile_omaggio(tipo_iva_calc), ndec);
return zanicchi;
}
real TRiga_documento::imponibile_omaggio(int tipo_iva_calc) const
{
_iva_calc_mode = tipo_iva_calc;
const real imp = imponibile(); const real imp = imponibile();
((TRiga_documento *) this)->_iva_calc = FALSE; _iva_calc_mode = 0;
return imp; return imp;
} }
@ -552,7 +564,7 @@ real TRiga_documento::imponibile(bool lordo) const
if (field.not_empty()) if (field.not_empty())
{ {
real r; real r;
if (is_omaggio() && _iva_calc) if (is_omaggio() && _iva_calc_mode > 0)
{ {
TDocumento_variable_field * f = (TDocumento_variable_field *) variable_field(field); TDocumento_variable_field * f = (TDocumento_variable_field *) variable_field(field);
CHECKS(f, "Field UNKNOWN : ", field); CHECKS(f, "Field UNKNOWN : ", field);