[ANO(2016)] = 227508,
[ANO(2017)] = 227508,
[ANO(2018)] = 227508,
+ [ANO(2019)] = 227508,
+ [ANO(2020)] = 227508,
+ [ANO(2021)] = 227508,
};
static const long long instrucao[ANO(MAX_ANOS)] = {
[ANO(2016)] = 356150,
[ANO(2017)] = 356150,
[ANO(2018)] = 356150,
+ [ANO(2019)] = 356150,
+ [ANO(2020)] = 356150,
+ [ANO(2021)] = 356150,
};
long long deducao_dependente(struct declaracao *dec)
[ANO(2016)] = table2016,
[ANO(2017)] = table2017,
[ANO(2018)] = table2017,
+ [ANO(2019)] = table2017,
+ [ANO(2020)] = table2017,
+ [ANO(2021)] = table2017,
};
static const long long simples[ANO(MAX_ANOS)] = {
[ANO(2016)] = 1675434,
[ANO(2017)] = 1675434,
[ANO(2018)] = 1675434,
+ [ANO(2019)] = 1675434,
+ [ANO(2020)] = 1675434,
+ [ANO(2021)] = 1675434,
};
static const long long obrigatoriedade[ANO(MAX_ANOS)] = {
[ANO(2016)] = 2812391,
[ANO(2017)] = 2855970, /* De acordo com IN 1671/2016 */
[ANO(2018)] = 2855970,
+ [ANO(2019)] = 2855970,
+ [ANO(2020)] = 2855970,
+ [ANO(2021)] = 2855970,
};
static long long imposto(struct taxtable *tt, long long tr, int verbose)
int calcula(struct declaracao *dec)
{
long long i_simples, i_completa;
+ long long isentos;
if (!ANO_VALIDO(dec->ano)) {
dec_set_error(dec, "Ano %d não suportado.", dec->ano);
return -EINVAL;
}
dec->obrigatoria += 1;
}
+ isentos = totais_get(dec, "ISENTOS") + totais_get(dec, "EXCLUSIVOS");
+ if (isentos > 4000000) {
+ if (dec->verbose) {
+ printf("Declaracao obrigatoria pois rendimentos "
+ "isentos e exclusivos maior que minimo para "
+ "declaracao: " FMT_R" > "FMT_R"\n",
+ R(isentos), R(4000000));
+ }
+ dec->obrigatoria += 2;
+ }
if (totais_get(dec, "BENS") > 30000000) {
if (dec->verbose) {
printf("Declaracao obrigatoria pois bens e direitos e"