Patch level : 12.0 1038

Files correlati     : fp0.exe fp0100a.msk
Commento :
Corretto campo mancante nello sheet note dei parametri
Corretta la gestione bolli virtuali
This commit is contained in:
Alessandro Bonazzi 2021-03-05 12:29:22 +01:00
parent 1dece341ca
commit 364cbbd1eb
2 changed files with 43 additions and 36 deletions

View File

@ -978,6 +978,8 @@ public:
void iva_esente(TString & codiva_es) const; void iva_esente(TString & codiva_es) const;
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;
bool bolli_esenti_dovuti() const;
real bolli(real & imp, int ndec, TTipo_importo netto = _lordo) const ; real bolli(real & imp, int ndec, TTipo_importo netto = _lordo) const ;
real imponibile(bool spese = false, int ndec = AUTO_DECIMALS) const; real imponibile(bool spese = false, int ndec = AUTO_DECIMALS) const;

View File

@ -475,34 +475,47 @@ void TDocumento::iva_esente(TString& codiva_es) const
} }
} }
real TDocumento::imponibile_bolli_esenti() const
{
real imponibile_esente;
FOR_EACH_SELF_PHYSICAL_RDOC(r, riga)
{
const TCodiceIVA codiva(riga->get(RDOC_CODIVA));
if (codiva.tipo().not_empty() && !codiva.escluso_esenti())
imponibile_esente += abs(riga->imponibile());
}
return imponibile_esente;
}
bool TDocumento::bolli_esenti_dovuti() const
{
const real impmin_bolli = ini_get_real(CONFIG_STUDIO, "ve", "IMPMINBOLLI");
return imponibile_bolli_esenti() >= impmin_bolli;
}
real TDocumento::bolli(real & imp, int ndec, TTipo_importo t) const real TDocumento::bolli(real & imp, int ndec, TTipo_importo t) const
{ {
real tot_bolli; real tot_bolli;
static TArray sca_bolli;
static TArray imp_bolli;
static real bolli_es;
static real impmin_bolli;
static int nscagl;
if (get_bool("ADDBOLLI")) if (get_bool(DOC_ADDBOLLI))
{ {
if (sca_bolli.objptr(0) == NULL) const real bolli_es = ini_get_real(CONFIG_STUDIO, "ve", "BOLLIES");
{ TArray sca_bolli;
TConfig conf(CONFIG_STUDIO, "ve"); TArray imp_bolli;
int nscagl;
bolli_es = (real) conf.get("BOLLIES", "ve");
impmin_bolli = (real) conf.get("IMPMINBOLLI", "ve");
for (nscagl = 0; nscagl < 7; nscagl++) for (nscagl = 0; nscagl < 7; nscagl++)
{ {
real s(conf.get("SPBOSCA", "ve", nscagl + 1)); const real s = ini_get_real(CONFIG_STUDIO, "ve", "SPBOSCA", "", nscagl + 1);
real i(conf.get("SPBOIMP", "ve", nscagl + 1)); const real i = ini_get_real(CONFIG_STUDIO, "ve", "SPBOIMP", "", nscagl + 1);
if (s == ZERO && i == ZERO) if (s == ZERO && i == ZERO)
break; break;
sca_bolli.add(s, nscagl); sca_bolli.add(s, nscagl);
imp_bolli.add(i, nscagl); imp_bolli.add(i, nscagl);
} }
}
if (ndec == AUTO_DECIMALS) if (ndec == AUTO_DECIMALS)
ndec = decimals(); ndec = decimals();
@ -530,19 +543,11 @@ real TDocumento::bolli(real & imp, int ndec, TTipo_importo t) const
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;
tot_bolli = ZERO;
real imponibile_esente;
for (int r = physical_rows(); r > 0; r--) if (bolli_esenti_dovuti())
{
const TRiga_documento& riga = ((TDocumento*)this)->row(r);
const TCodiceIVA codiva(riga.get(RDOC_CODIVA));
if (codiva.tipo().not_empty() && !codiva.escluso_esenti())
imponibile_esente += abs(riga.imponibile());
}
if (imponibile_esente >= impmin_bolli)
tot_bolli = bolli_es; 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();