Patch level : 12.0 1230
Files correlati : ve0.exe ve1.exe ve5.exe ve6.exe lv2.exe lv3.exe Commento : Nuova gestione dei bolli esenti
This commit is contained in:
parent
a4d69d7754
commit
b6a2fa1021
@ -199,6 +199,13 @@ FIELD IMPMINBOLLI
|
|||||||
PICTURE "."
|
PICTURE "."
|
||||||
END
|
END
|
||||||
|
|
||||||
|
DATE F_DATANEWBOLLI
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Data inizio nuovi bolli esenti "
|
||||||
|
FIELD DATANEWBOLLI
|
||||||
|
PICTURE "."
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Automatismi" 1 1 60 14
|
PAGE "Automatismi" 1 1 60 14
|
||||||
|
@ -172,6 +172,7 @@
|
|||||||
#define F_MAXADD 145
|
#define F_MAXADD 145
|
||||||
#define F_IMPMINEFF 146
|
#define F_IMPMINEFF 146
|
||||||
#define F_SEPARA_ESENZ 147
|
#define F_SEPARA_ESENZ 147
|
||||||
|
#define F_DATANEWBOLLI 148
|
||||||
|
|
||||||
// Campi per ve0200g.uml
|
// Campi per ve0200g.uml
|
||||||
#define F_EXPLODEDB 101
|
#define F_EXPLODEDB 101
|
||||||
|
@ -874,7 +874,7 @@ public:
|
|||||||
long renum_ndoc(long numdoc = 0);
|
long renum_ndoc(long numdoc = 0);
|
||||||
virtual bool renum() { return renum_ndoc() > 0;}
|
virtual bool renum() { return renum_ndoc() > 0;}
|
||||||
const TString& codiva_spese() const ;
|
const TString& codiva_spese() const ;
|
||||||
const TString& codiva_bolli() const ;
|
const TString& codiva_bolli();
|
||||||
|
|
||||||
TCodgiac_livelli& livelli() const ;
|
TCodgiac_livelli& livelli() const ;
|
||||||
void dirty_fields();
|
void dirty_fields();
|
||||||
@ -982,8 +982,12 @@ public:
|
|||||||
real spese_incasso(real &imp, int ndec, TTipo_importo netto = _lordo) const ;
|
real spese_incasso(real &imp, int ndec, TTipo_importo netto = _lordo) const ;
|
||||||
real imponibile_bolli_esenti() const;
|
real imponibile_bolli_esenti() const;
|
||||||
bool bolli_esenti_dovuti() const;
|
bool bolli_esenti_dovuti() const;
|
||||||
real bolli(real & imp, int ndec, TTipo_importo netto = _lordo) const ;
|
const TDate data_nuovo_calcolo_esenti() const;
|
||||||
|
bool nuovo_calcolo_esenti() const;
|
||||||
|
const char * codiva_bolli_esenti();
|
||||||
|
real bolli_esenti(int ndec, TTipo_importo netto = _lordo);
|
||||||
|
real bolli_incasso(real & imp, int ndec, TTipo_importo netto = _lordo);
|
||||||
|
real bolli(real & imp, int ndec, TTipo_importo netto = _lordo) { return bolli_esenti(ndec, netto) + bolli_incasso(imp, ndec, netto); }
|
||||||
real imponibile(bool spese = false, int ndec = AUTO_DECIMALS) const;
|
real imponibile(bool spese = false, int ndec = AUTO_DECIMALS) const;
|
||||||
real imposta(bool spese = false, int ndec = AUTO_DECIMALS) const;
|
real imposta(bool spese = false, int ndec = AUTO_DECIMALS) const;
|
||||||
real totale_doc() const;
|
real totale_doc() const;
|
||||||
|
@ -234,6 +234,7 @@ TString4 TDocumento::_codiva_spese;
|
|||||||
TString4 TDocumento::_codiva_bolli;
|
TString4 TDocumento::_codiva_bolli;
|
||||||
short TDocumento::_has_mag = 3;
|
short TDocumento::_has_mag = 3;
|
||||||
short TDocumento::_has_provv = 3;
|
short TDocumento::_has_provv = 3;
|
||||||
|
|
||||||
#ifdef LIVE_STATISTICS
|
#ifdef LIVE_STATISTICS
|
||||||
short TDocumento::_has_stat_ven = 3;
|
short TDocumento::_has_stat_ven = 3;
|
||||||
#endif
|
#endif
|
||||||
@ -316,8 +317,11 @@ TDocumento::~TDocumento()
|
|||||||
const TString& TDocumento::codiva_spese() const
|
const TString& TDocumento::codiva_spese() const
|
||||||
{ ((TDocumento *)this)->test_firm(); return _codiva_spese;}
|
{ ((TDocumento *)this)->test_firm(); return _codiva_spese;}
|
||||||
|
|
||||||
const TString& TDocumento::codiva_bolli() const
|
const TString& TDocumento::codiva_bolli()
|
||||||
{ ((TDocumento *)this)->test_firm(); return _codiva_bolli;}
|
{
|
||||||
|
test_firm();
|
||||||
|
return _codiva_bolli;
|
||||||
|
}
|
||||||
|
|
||||||
void TDocumento::check_modules()
|
void TDocumento::check_modules()
|
||||||
{
|
{
|
||||||
@ -484,13 +488,78 @@ bool TDocumento::bolli_esenti_dovuti() const
|
|||||||
return imponibile_esente > ZERO && impmin_bolli > ZERO && imponibile_esente >= impmin_bolli;
|
return imponibile_esente > ZERO && impmin_bolli > ZERO && imponibile_esente >= impmin_bolli;
|
||||||
}
|
}
|
||||||
|
|
||||||
real TDocumento::bolli(real & imp, int ndec, TTipo_importo t) const
|
const TDate TDocumento::data_nuovo_calcolo_esenti() const
|
||||||
|
{
|
||||||
|
TDate d = ini_get_date(CONFIG_STUDIO, "ve", "DATANEWBOLLI");
|
||||||
|
|
||||||
|
if (!d.ok())
|
||||||
|
d = eotime;
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDocumento::nuovo_calcolo_esenti() const
|
||||||
|
{
|
||||||
|
const TDate data_nuovo_calcolo = data_nuovo_calcolo_esenti();
|
||||||
|
|
||||||
|
return data_nuovo_calcolo && data_nuovo_calcolo <= get_date(DOC_DATADOC);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * TDocumento::codiva_bolli_esenti()
|
||||||
|
{
|
||||||
|
TString & cod = get_tmp_string();
|
||||||
|
|
||||||
|
if (nuovo_calcolo_esenti())
|
||||||
|
{
|
||||||
|
TAssoc_array& table = ((TDocumento*)this)->tabella_iva();
|
||||||
|
real imponibile_max = ZERO;
|
||||||
|
|
||||||
|
table.restart();
|
||||||
|
for (TRiepilogo_iva* riga = (TRiepilogo_iva*)table.get(); riga != NULL; riga = (TRiepilogo_iva*)table.get())
|
||||||
|
{
|
||||||
|
const TCodiceIVA & codiva = riga->cod_iva();
|
||||||
|
|
||||||
|
if (codiva.tipo().not_empty() && codiva.tipo() != REVERSE_CHARGE && !codiva.escluso_esenti())
|
||||||
|
{
|
||||||
|
if (riga->imponibile() > imponibile_max)
|
||||||
|
{
|
||||||
|
cod = codiva.codice();
|
||||||
|
imponibile_max = riga->imponibile();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
cod = ini_get_string(CONFIG_DITTA, "ve", "SPBOCODIVA");
|
||||||
|
return cod;
|
||||||
|
}
|
||||||
|
|
||||||
|
real TDocumento::bolli_esenti(int ndec, TTipo_importo t)
|
||||||
|
{
|
||||||
|
real tot_bolli;
|
||||||
|
|
||||||
|
if (get_bool(DOC_ADDBOLLI) && bolli_esenti_dovuti())
|
||||||
|
{
|
||||||
|
const real bolli_es = ini_get_real(CONFIG_STUDIO, "ve", "BOLLIES");
|
||||||
|
|
||||||
|
tot_bolli = bolli_es;
|
||||||
|
|
||||||
|
real iva_bolli = TRiga_documento::iva(codiva_bolli_esenti()).imposta(tot_bolli, ndec);
|
||||||
|
|
||||||
|
if (t == _lordo)
|
||||||
|
tot_bolli += iva_bolli;
|
||||||
|
else
|
||||||
|
if (t == _imposta)
|
||||||
|
tot_bolli = iva_bolli;
|
||||||
|
}
|
||||||
|
return tot_bolli;
|
||||||
|
}
|
||||||
|
|
||||||
|
real TDocumento::bolli_incasso(real & imp, int ndec, TTipo_importo t)
|
||||||
{
|
{
|
||||||
real tot_bolli;
|
real tot_bolli;
|
||||||
|
|
||||||
if (get_bool(DOC_ADDBOLLI))
|
if (get_bool(DOC_ADDBOLLI))
|
||||||
{
|
{
|
||||||
const real bolli_es = ini_get_real(CONFIG_STUDIO, "ve", "BOLLIES");
|
|
||||||
TArray sca_bolli;
|
TArray sca_bolli;
|
||||||
TArray imp_bolli;
|
TArray imp_bolli;
|
||||||
int nscagl;
|
int nscagl;
|
||||||
@ -529,14 +598,11 @@ real TDocumento::bolli(real & imp, int ndec, TTipo_importo t) const
|
|||||||
for (int j = 0; j < 5 && tot_bolli+iva_bolli != old_bolli; j++)
|
for (int j = 0; j < 5 && tot_bolli+iva_bolli != old_bolli; j++)
|
||||||
{
|
{
|
||||||
old_bolli = tot_bolli + iva_bolli;
|
old_bolli = tot_bolli + iva_bolli;
|
||||||
|
|
||||||
const real imposte = imp_orig + iva_bolli;
|
const real imposte = imp_orig + iva_bolli;
|
||||||
const real imp_spese = sp_orig + tot_bolli - iva_bolli;
|
const real imp_spese = sp_orig + tot_bolli - iva_bolli;
|
||||||
const real imponibile = importo - imposte - imp_spese;
|
const real imponibile = importo - imposte - imp_spese;
|
||||||
|
|
||||||
if (bolli_esenti_dovuti())
|
|
||||||
tot_bolli = bolli_es;
|
|
||||||
else
|
|
||||||
tot_bolli = ZERO;
|
|
||||||
pag.set_total(imponibile, imposte, imp_spese);
|
pag.set_total(imponibile, imposte, imp_spese);
|
||||||
pag.set_rate_auto();
|
pag.set_rate_auto();
|
||||||
|
|
||||||
@ -2500,13 +2566,15 @@ void TDocumento::update_tabella_iva(bool solo_imponibili)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val = bolli(real(tot_doc - rit), ALL_DECIMALS, doc_al_lordo ? _lordo : _netto);
|
val = bolli_incasso(real(tot_doc - rit), ALL_DECIMALS, doc_al_lordo ? _lordo : _netto);
|
||||||
if (val != ZERO)
|
if (val != ZERO)
|
||||||
{
|
{
|
||||||
const TString& codiva = codiva_bolli();
|
const TString& codiva = codiva_bolli();
|
||||||
|
|
||||||
if (codiva.full())
|
if (codiva.full())
|
||||||
{
|
{
|
||||||
TRiepilogo_iva* ri = (TRiepilogo_iva*)table.objptr(codiva);
|
TRiepilogo_iva* ri = (TRiepilogo_iva*)table.objptr(codiva);
|
||||||
|
|
||||||
if (ri == NULL)
|
if (ri == NULL)
|
||||||
{
|
{
|
||||||
ri = new TRiepilogo_iva(TCodiceIVA(codiva));
|
ri = new TRiepilogo_iva(TCodiceIVA(codiva));
|
||||||
@ -2514,13 +2582,36 @@ void TDocumento::update_tabella_iva(bool solo_imponibili)
|
|||||||
}
|
}
|
||||||
if (!doc_al_lordo)
|
if (!doc_al_lordo)
|
||||||
{
|
{
|
||||||
real valiva = bolli(real(tot_doc - rit), ALL_DECIMALS, _imposta);
|
real valiva = bolli_incasso(real(tot_doc - rit), ALL_DECIMALS, _imposta);
|
||||||
ri->iva_spese() += valiva;
|
ri->iva_spese() += valiva;
|
||||||
tot_doc += valiva;
|
tot_doc += valiva;
|
||||||
}
|
}
|
||||||
ri->imp_spese() += val;
|
ri->imp_spese() += val;
|
||||||
}
|
}
|
||||||
|
tot_doc += val;
|
||||||
|
val = bolli_esenti(ALL_DECIMALS, doc_al_lordo ? _lordo : _netto);
|
||||||
|
if (val != ZERO)
|
||||||
|
{
|
||||||
|
const TString& codiva = codiva_bolli_esenti();
|
||||||
|
|
||||||
|
if (codiva.full())
|
||||||
|
{
|
||||||
|
TRiepilogo_iva* ri = (TRiepilogo_iva*)table.objptr(codiva);
|
||||||
|
|
||||||
|
if (ri == NULL)
|
||||||
|
{
|
||||||
|
ri = new TRiepilogo_iva(TCodiceIVA(codiva));
|
||||||
|
table.add(codiva, ri);
|
||||||
|
}
|
||||||
|
if (!doc_al_lordo)
|
||||||
|
{
|
||||||
|
real valiva = bolli_esenti(ALL_DECIMALS, _imposta);
|
||||||
|
ri->iva_spese() += valiva;
|
||||||
|
tot_doc += valiva;
|
||||||
|
}
|
||||||
|
ri->imp_spese() += val;
|
||||||
|
}
|
||||||
|
}
|
||||||
tot_doc += val;
|
tot_doc += val;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2586,7 +2677,7 @@ real TDocumento::totale_doc() const
|
|||||||
if (!lordo)
|
if (!lordo)
|
||||||
r += imposta();
|
r += imposta();
|
||||||
r += spese_incasso(real(r - ritenute()), ndec);
|
r += spese_incasso(real(r - ritenute()), ndec);
|
||||||
r += bolli(real(r - ritenute()), ndec);
|
r += ((TDocumento *) this)->bolli(real(r - ritenute()), ndec);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
r = get_real(field);
|
r = get_real(field);
|
||||||
|
@ -704,7 +704,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
|
|||||||
if (_doc)
|
if (_doc)
|
||||||
{
|
{
|
||||||
r += _doc->spese_incasso(real(r - _doc->ritenute()), ndec);
|
r += _doc->spese_incasso(real(r - _doc->ritenute()), ndec);
|
||||||
r = _doc->bolli(real(r - _doc->ritenute()), ndec, netto ? _netto : _lordo);
|
r = ((TDocumento *)_doc)->bolli(real(r - _doc->ritenute()), ndec, netto ? _netto : _lordo);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
r = ZERO;
|
r = ZERO;
|
||||||
@ -723,7 +723,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
|
|||||||
{
|
{
|
||||||
real r1 = _doc->spese_incasso(real(r - _doc->ritenute()), ndec);
|
real r1 = _doc->spese_incasso(real(r - _doc->ritenute()), ndec);
|
||||||
r += r1;
|
r += r1;
|
||||||
r1 += _doc->bolli(real(r - _doc->ritenute()), ndec);
|
r1 += ((TDocumento *)_doc)->bolli(real(r - _doc->ritenute()), ndec);
|
||||||
r = r1;
|
r = r1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -455,12 +455,16 @@ protected:
|
|||||||
void split_sp_amount(const real & amount, int decimals) const;
|
void split_sp_amount(const real & amount, int decimals) const;
|
||||||
// Funzione per ricercare il conto di costo/ricavo
|
// Funzione per ricercare il conto di costo/ricavo
|
||||||
error_type search_costo_ricavo(TBill& conto, const TRiga_documento& r, real & amount_to_split, const real & valore);
|
error_type search_costo_ricavo(TBill& conto, const TRiga_documento& r, real & amount_to_split, const real & valore);
|
||||||
|
// Funzione per ricercare il conto dei bolli_esenti
|
||||||
|
void conto_bolli_esenti(TBill & bill, TDocumento& d);
|
||||||
// Funzione per ricercare il conto di costo/ricavo materiali
|
// Funzione per ricercare il conto di costo/ricavo materiali
|
||||||
error_type search_costo_ricavo_mat(TBill&, const TRiga_documento&);
|
error_type search_costo_ricavo_mat(TBill&, const TRiga_documento&);
|
||||||
// Funzione per aggiungere la riga iva al TAssoc_array _righe_iva
|
// Funzione per aggiungere la riga iva al TAssoc_array _righe_iva
|
||||||
// error_type add_iva_row(const TBill&, const TRiga_documento&, const int ndec, const real p = 1.0);
|
// error_type add_iva_row(const TBill&, const TRiga_documento&, const int ndec, const real p = 1.0);
|
||||||
// Funzione atomica per aggiungere le righe di spese d'incasso e bolli al TAssoc_array _righe_iva
|
// Funzione atomica per aggiungere le righe di spese d'incasso e bolli al TAssoc_array _righe_iva
|
||||||
void calculate_spese(const real&, real&, int, bool, const TString &, const TDocumento & );
|
void calculate_spese(const real& spese, real& sp_iva, int ndec, bool is_incasso, const TString& codiva_es, const TDocumento & doc);
|
||||||
|
// Funzione atomica per aggiungere le righe di bolli esenti al TAssoc_array _righe_iva
|
||||||
|
void calculate_spese_esenti(const real& spese, real& sp_iva, int ndec, const TDocumento & doc);
|
||||||
// Funzione per aggiungere le righe di spese d'incasso e bolli al TAssoc_array _righe_iva (chiama calculate_spese())
|
// Funzione per aggiungere le righe di spese d'incasso e bolli al TAssoc_array _righe_iva (chiama calculate_spese())
|
||||||
error_type add_spese_inbo(TDocumento&, const int);
|
error_type add_spese_inbo(TDocumento&, const int);
|
||||||
// Aggiorna le righe di sconto importo o percentuale
|
// Aggiorna le righe di sconto importo o percentuale
|
||||||
|
@ -1920,6 +1920,58 @@ error_type TContabilizzazione::search_costo_ricavo(TBill& conto, const TRiga_doc
|
|||||||
return _error;
|
return _error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TContabilizzazione::conto_bolli_esenti(TBill & bill, TDocumento& d)
|
||||||
|
{
|
||||||
|
int gr;
|
||||||
|
int co;
|
||||||
|
long so;
|
||||||
|
int nrow = 0;
|
||||||
|
|
||||||
|
bill.set();
|
||||||
|
if (d.nuovo_calcolo_esenti())
|
||||||
|
{
|
||||||
|
const TString & cod = d.codiva_bolli_esenti();
|
||||||
|
real imponibile_max = ZERO;
|
||||||
|
|
||||||
|
FOR_EACH_RDOC(d, i, pr)
|
||||||
|
{
|
||||||
|
TRiga_documento & r = *pr;
|
||||||
|
|
||||||
|
if (cod == r.iva().codice())
|
||||||
|
{
|
||||||
|
if (r.imponibile() >= imponibile_max)
|
||||||
|
{
|
||||||
|
imponibile_max = r.imponibile();
|
||||||
|
nrow = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nrow > 0)
|
||||||
|
{
|
||||||
|
TRiga_documento & r = d[nrow];
|
||||||
|
real dummy, dummy1;
|
||||||
|
|
||||||
|
search_costo_ricavo(bill, r, dummy, dummy1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!bill.ok())
|
||||||
|
{
|
||||||
|
if (_caus->reg().tipo_registro() == acquisto)
|
||||||
|
{
|
||||||
|
gr = ini_get_int(CONFIG_DITTA, "ve", "SPBOCODCONA", 0, 1);
|
||||||
|
co = ini_get_int(CONFIG_DITTA, "ve", "SPBOCODCONA", 0, 2);
|
||||||
|
so = ini_get_long(CONFIG_DITTA, "ve", "SPBOCODCONA", 0L, 3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gr = ini_get_int(CONFIG_DITTA, "ve", "SPBOCODCONV", 0, 1);
|
||||||
|
co = ini_get_int(CONFIG_DITTA, "ve", "SPBOCODCONV", 0, 2);
|
||||||
|
so = ini_get_long(CONFIG_DITTA, "ve", "SPBOCODCONV", 0L, 3);
|
||||||
|
}
|
||||||
|
bill.set(gr, co, so);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
error_type TContabilizzazione::search_costo_ricavo_mat(TBill& conto, const TRiga_documento& r)
|
error_type TContabilizzazione::search_costo_ricavo_mat(TBill& conto, const TRiga_documento& r)
|
||||||
{
|
{
|
||||||
const char t = r.tipo().tipo();
|
const char t = r.tipo().tipo();
|
||||||
@ -1961,9 +2013,41 @@ void TContabilizzazione::calculate_spese(const real& spese, real& sp_iva, int nd
|
|||||||
const bool is_cli = doc.get_char(DOC_TIPOCF) != 'F';
|
const bool is_cli = doc.get_char(DOC_TIPOCF) != 'F';
|
||||||
const TBill& zio = is_incasso ? (is_cli ? _spin_billv : _spin_billa) : (is_cli ? _spbo_billv : _spbo_billa);
|
const TBill& zio = is_incasso ? (is_cli ? _spin_billv : _spin_billa) : (is_cli ? _spbo_billv : _spbo_billa);
|
||||||
|
|
||||||
|
if (zio.ok())
|
||||||
|
{
|
||||||
|
TRiga_documento r((TDocumento *)&doc, "02"); // il tipo riga 02 spese a valore
|
||||||
|
|
||||||
|
r.put(RDOC_QTA, UNO);
|
||||||
|
r.put(RDOC_PREZZO, spese);
|
||||||
|
r.put(RDOC_CODIVA, codiva_es);
|
||||||
|
_righe_iva->add(r, zio, ndec);
|
||||||
|
sp_iva = r.imposta(false);
|
||||||
|
sp_iva.round(ndec);
|
||||||
|
if (doc.tipo().calcolo_lordo()) // Si ricorda che calcolo_lordo() e fattura_commerciale sono esclusivi.
|
||||||
|
{
|
||||||
|
// Totalizza per ogni codice iva il lordo
|
||||||
|
|
||||||
|
if (!_totali_lordi.is_key(codiva_es))
|
||||||
|
_totali_lordi.add(codiva_es, new real);
|
||||||
|
real& rl = (real&)_totali_lordi[codiva_es];
|
||||||
|
rl += spese + sp_iva;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_error = spinbo_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TContabilizzazione::calculate_spese_esenti(const real& spese, real& sp_iva, int ndec, const TDocumento & doc)
|
||||||
|
{
|
||||||
|
const bool is_cli = doc.get_char(DOC_TIPOCF) != 'F';
|
||||||
|
TBill zio;
|
||||||
|
const TString8 codiva_es = ((TDocumento &)doc).codiva_bolli_esenti();
|
||||||
|
|
||||||
|
conto_bolli_esenti(zio, ((TDocumento &)doc));
|
||||||
if (zio.ok())
|
if (zio.ok())
|
||||||
{
|
{
|
||||||
TRiga_documento r((TDocumento *) &doc, "02"); // il tipo riga 02 spese a valore
|
TRiga_documento r((TDocumento *) &doc, "02"); // il tipo riga 02 spese a valore
|
||||||
|
|
||||||
r.put(RDOC_QTA, UNO);
|
r.put(RDOC_QTA, UNO);
|
||||||
r.put(RDOC_PREZZO, spese);
|
r.put(RDOC_PREZZO, spese);
|
||||||
r.put(RDOC_CODIVA, codiva_es);
|
r.put(RDOC_CODIVA, codiva_es);
|
||||||
@ -1995,20 +2079,24 @@ error_type TContabilizzazione::add_spese_inbo(TDocumento& doc, const int ndec)
|
|||||||
if (!sp_incasso.is_zero())
|
if (!sp_incasso.is_zero())
|
||||||
{
|
{
|
||||||
TString4 codiva_es; doc.iva_esente(codiva_es);
|
TString4 codiva_es; doc.iva_esente(codiva_es);
|
||||||
calculate_spese(sp_incasso,iva_sp_incasso,ndec,true,codiva_es.full() ? codiva_es : doc.codiva_spese(), doc);
|
calculate_spese(sp_incasso, iva_sp_incasso, ndec, true, codiva_es.full() ? codiva_es : doc.codiva_spese(), doc);
|
||||||
}
|
}
|
||||||
|
|
||||||
const real rit = doc.ritenute();
|
const real rit = doc.ritenute();
|
||||||
tot_netto += sp_incasso + iva_sp_incasso - rit;
|
tot_netto += sp_incasso + iva_sp_incasso - rit;
|
||||||
|
|
||||||
// Aggiunge le spese bolli
|
// Aggiunge le spese bolli incasso
|
||||||
real sp_bolli = doc.bolli(tot_netto, ndec, _netto);
|
real sp_bolli_incasso = doc.bolli_incasso(tot_netto, ndec, _netto);
|
||||||
if (!sp_bolli.is_zero())
|
|
||||||
{
|
|
||||||
real iva_sp_bolli;
|
real iva_sp_bolli;
|
||||||
calculate_spese(sp_bolli, iva_sp_bolli, ndec, false, doc.codiva_bolli(), doc);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (!sp_bolli_incasso.is_zero())
|
||||||
|
calculate_spese(sp_bolli_incasso, iva_sp_bolli, ndec, false, doc.codiva_bolli(), doc);
|
||||||
|
|
||||||
|
// Aggiunge le spese bolli
|
||||||
|
real sp_bolli_esenti = doc.bolli_esenti(ndec, _netto);
|
||||||
|
|
||||||
|
if (!sp_bolli_esenti.is_zero())
|
||||||
|
calculate_spese_esenti(sp_bolli_esenti, iva_sp_bolli, ndec, doc);
|
||||||
return _error;
|
return _error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user