Estesa tabella IVA con i dati degli sconti

git-svn-id: svn://10.65.10.50/trunk@5147 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1997-09-01 14:32:34 +00:00
parent 0502d1c87a
commit bd0a2884f7
2 changed files with 28 additions and 4 deletions

View File

@ -359,6 +359,7 @@ public:
bool is_spese() const { return tipo().tipo() == 'S';}
bool is_prestazione() const { return tipo().tipo() == 'P';}
bool is_sconto() const {return tipo().tipo() == 'C';}
bool is_sconto_perc() const { return get(RDOC_SCONTO).not_empty();}
bool is_omaggio() const { return tipo().tipo() == 'O';}
bool is_descrizione() const { return tipo().tipo() == 'D';}
bool is_articolo() const;
@ -421,6 +422,9 @@ class TRiepilogo_iva : public TObject
real _imp_spese;
real _iva;
real _iva_spese;
real _sconto_perc;
real _sconto_imp;
real _iva_sconto;
byte _tipo;
protected:
@ -434,6 +438,9 @@ public:
real & imp_spese() { return _imp_spese;};
real & iva() { return _iva;};
real & iva_spese() { return _iva_spese;};
real & iva_sconto() { return _iva_sconto;};
real & sconto_perc() { return _sconto_perc; }
real & sconto_imp () { return _sconto_imp; }
const TIVA & cod_iva() const { return _codiva;}
byte tipo(){ return _tipo;}// Tipo (Vedi opzioni per la selzione di filtro nella validate())
TRiepilogo_iva& operator = (const TRiepilogo_iva & a) {return copy(a);}

View File

@ -1102,6 +1102,7 @@ void TDocumento::update_tabella_iva()
real tot_doc;
real tot_sconti;
real tot_sconti_perc;
for (int i = items; i > 0; i--)
{
@ -1110,7 +1111,11 @@ void TDocumento::update_tabella_iva()
tot_doc += imponibile;
if (r.is_sconto())
tot_sconti += imponibile;
{
tot_sconti += imponibile;
if (r.is_sconto_perc())
tot_sconti_perc += imponibile;
}
else
if (!r.is_descrizione())
{
@ -1133,6 +1138,8 @@ void TDocumento::update_tabella_iva()
if (tot_sconti != ZERO)
{
TGeneric_distrib d(tot_sconti);
real tot_sconti_imp = tot_sconti - tot_sconti_perc;
const int ndec = in_valuta() ? 3 : 0;
table.restart();
for (TRiepilogo_iva * ri = (TRiepilogo_iva *) table.get(); ri != NULL;
@ -1146,13 +1153,23 @@ void TDocumento::update_tabella_iva()
const char * codiva = ri->cod_iva().codice();
const real i(d.get());
real & imponibile = ri->imp();
imponibile += i;
real & iva = ri->iva();
const real imposta(::iva(i, TIVA(codiva), ALL_DECIMALS));
TGeneric_distrib s(i);
s.add(tot_sconti_imp);
s.add(tot_sconti_perc);
ri->sconto_imp() = s.get();
ri->sconto_perc() = s.get();
real & iva = ri->iva();
const TIVA & ci = row(1).iva(codiva);
const real imposta(::iva(i, ci, ALL_DECIMALS));
iva += imposta;
ri->iva_sconto() = ::iva(i, ci, ndec);
tot_doc += imposta;
}
}