Calcula e imprime se declaração é obrigatória.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Sat, 25 Jul 2015 20:34:56 +0000 (17:34 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Sat, 25 Jul 2015 20:34:56 +0000 (17:34 -0300)
Existem vários critérios e o único observado no momento é o montante de
rendimentos tributáveis.

base.c
calcula.c
declaracao.h
gera.c

diff --git a/base.c b/base.c
index 52d8c31..0dfe02a 100644 (file)
--- a/base.c
+++ b/base.c
@@ -34,6 +34,8 @@ static int run_resumo(struct declaracao *dec, char **args, int argc)
 {
        if (dec->retifica)
                printf("retificadora\n");
+       if (dec->obrigatoria)
+               printf("obrigatoria\n");
        printf("pago: %lld.%02d\n", dec->pago / 100, dec->pago % 100);
        printf("retido: %lld.%02d\n", dec->retido / 100, dec->retido % 100);
        printf("devido: %lld.%02d\n", dec->devido / 100, dec->devido % 100);
index a8accc3..80f6c6d 100644 (file)
--- a/calcula.c
+++ b/calcula.c
@@ -73,6 +73,8 @@ static struct taxtable table2015[] = {
 
 static const long long simples2015 = 1588089;
 
+static const long long obrigatoriedade2015 = 2681655;
+
 static long long imposto(struct taxtable *tt, long long tr)
 {
        int i;
@@ -117,6 +119,8 @@ int calcula(struct declaracao *dec)
                return -EINVAL;
        }
        total_rendimento(dec);
+       if (dec->totalrendimento > obrigatoriedade2015)
+               dec->obrigatoria = 1;
        i_simples = imposto_simples(dec);
        i_completa = imposto_completa(dec);
        total_pago(dec);
index 834e4cc..47d8db9 100644 (file)
@@ -39,6 +39,7 @@ struct declaracao {
        long long devido;
        long long pagar;
        long long restituicao;
+       int obrigatoria;
        int tipo;
        char *recibo;
        char *retifica;
diff --git a/gera.c b/gera.c
index 32d9ea9..9129148 100644 (file)
--- a/gera.c
+++ b/gera.c
@@ -52,7 +52,7 @@ static void gera_header(struct declaracao *dec, FILE *f)
        fprintf(f, "%-10.10s", ""); /* TODO: última declaração transmitida (pode ser vazio?) */
        fprintf(f, "%04d", dec->contribuinte.cd_municipio);
        fprintf(f, "           "); /* TODO: CPF conjuge */
-       fprintf(f, "0"); /* TODO: obrigatoria entrega */
+       fprintf(f, "%d", dec->obrigatoria); /* TODO: obrigatoria entrega */
        fprintf(f, "%013lld", dec->devido); /* imposto devido, carne-leao, complementar dos dependentes */
        fprintf(f, "%-10.10s", dec->recibo ?: ""); /* recibo ex. anterior */
        fprintf(f, "2"); /* TODO: indicador seguranca */