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

View File

@ -475,33 +475,46 @@ void TDocumento::iva_esente(TString& codiva_es) const
}
}
real TDocumento::bolli(real & imp, int ndec, TTipo_importo t) const
{
real tot_bolli;
static TArray sca_bolli;
static TArray imp_bolli;
static real bolli_es;
static real impmin_bolli;
static int nscagl;
real TDocumento::imponibile_bolli_esenti() const
{
real imponibile_esente;
if (get_bool("ADDBOLLI"))
FOR_EACH_SELF_PHYSICAL_RDOC(r, riga)
{
if (sca_bolli.objptr(0) == NULL)
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 tot_bolli;
if (get_bool(DOC_ADDBOLLI))
{
const real bolli_es = ini_get_real(CONFIG_STUDIO, "ve", "BOLLIES");
TArray sca_bolli;
TArray imp_bolli;
int nscagl;
for (nscagl = 0; nscagl < 7; nscagl++)
{
TConfig conf(CONFIG_STUDIO, "ve");
const real s = ini_get_real(CONFIG_STUDIO, "ve", "SPBOSCA", "", nscagl + 1);
const real i = ini_get_real(CONFIG_STUDIO, "ve", "SPBOIMP", "", nscagl + 1);
bolli_es = (real) conf.get("BOLLIES", "ve");
impmin_bolli = (real) conf.get("IMPMINBOLLI", "ve");
for (nscagl = 0; nscagl < 7; nscagl++)
{
real s(conf.get("SPBOSCA", "ve", nscagl + 1));
real i(conf.get("SPBOIMP", "ve", nscagl + 1));
if (s == ZERO && i == ZERO)
break;
sca_bolli.add(s, nscagl);
imp_bolli.add(i, nscagl);
}
if (s == ZERO && i == ZERO)
break;
sca_bolli.add(s, nscagl);
imp_bolli.add(i, nscagl);
}
if (ndec == AUTO_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 imp_spese = sp_orig + tot_bolli - iva_bolli;
const real imponibile = importo - imposte - imp_spese;
tot_bolli = ZERO;
real imponibile_esente;
for (int r = physical_rows(); r > 0; r--)
{
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)
if (bolli_esenti_dovuti())
tot_bolli = bolli_es;
else
tot_bolli = ZERO;
pag.set_total(imponibile, imposte, imp_spese);
pag.set_rate_auto();