Imprime linha de resumo e totais da declaração simplificada.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Tue, 7 Jul 2015 23:36:27 +0000 (23:36 +0000)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Tue, 7 Jul 2015 23:36:27 +0000 (23:36 +0000)
Os campos ainda precisam ser preenchidos com os reais valores.

As duas linhas para a declaração completa ainda não estão implementadas,
são apenas duas funções a serem preenchidas.

gera.c

diff --git a/gera.c b/gera.c
index 202a078..68ebd7e 100644 (file)
--- a/gera.c
+++ b/gera.c
@@ -184,6 +184,121 @@ static void gera_contribuinte(struct declaracao *dec, FILE *f)
        fprintf(f, "\r\n");
 }
 
+static void gera_simples(struct declaracao *dec, FILE *f)
+{
+       fprintf(f, "17");
+       fprintf(f, "%s", dec->cpf); /* CPF: 11 dígitos */
+       fprintf(f, "%013lld", 0); /* TODO: carnê leão */
+       fprintf(f, "%013lld", 0); /* TODO: lucros e dividendos */
+       fprintf(f, "%013lld", 0); /* TODO: isentos */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos tributação exclusiva */
+       fprintf(f, "%013lld", 0); /* TODO: 13o. */
+       fprintf(f, "%013lld", 0); /* TODO: retido na fonte */
+       fprintf(f, "%013lld", 0); /* TODO: 13o. dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: lucros dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: isentos dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: exclusivos dependentes */
+       fprintf(f, "%-13.13s", ""); /* FILLER */
+       fprintf(f, "%-13.13s", ""); /* FILLER */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos PF */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos PF dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos PF exterior */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos PF ext. depend. */
+       fprintf(f, "%013lld", 0); /* TODO: carnê-leão PF? */
+       fprintf(f, "%013lld", 0); /* TODO: carnê-leão dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: dedução dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: previdência */
+       fprintf(f, "%013lld", 0); /* TODO: previdência dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: pensão */
+       fprintf(f, "%013lld", 0); /* TODO: pensão dependentes*/
+       fprintf(f, "%013lld", 0); /* TODO: imposto pago exterior */
+       fprintf(f, "%013lld", 0); /* TODO: imposto devido sem rendimento exterior */
+       fprintf(f, "%013lld", 0); /* TODO: limite imposto pago exterior */
+       fprintf(f, "%-10.10s", "0000000000"); /* FIXME: controle */
+       fprintf(f, "\r\n");
+}
+
+static void gera_totais_simples(struct declaracao *dec, FILE *f)
+{
+       fprintf(f, "18");
+       fprintf(f, "%s", dec->cpf); /* CPF: 11 dígitos */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos tributáveis */
+       fprintf(f, "%013lld", 0); /* TODO: desconto simplificado */
+       fprintf(f, "%013lld", 0); /* TODO: base cálculo */
+       fprintf(f, "%013lld", 0); /* TODO: imposto devido */
+       fprintf(f, "%013lld", 0); /* TODO: imposto retido */
+       fprintf(f, "%013lld", 0); /* TODO: imposto complementar */
+       fprintf(f, "%013lld", 0); /* TODO: carnê-leão */
+       fprintf(f, "%013lld", 0); /* TODO: imposto retido Lei 11.033 */
+       fprintf(f, "%013lld", 0); /* TODO: imposto restituir */
+       fprintf(f, "%013lld", 0); /* TODO: imposto pagar */
+       fprintf(f, "%d", 0); /* TODO: quotas */
+       fprintf(f, "%013lld", 0); /* TODO: valor quota */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos isentos */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos tributação exclusiva */
+       fprintf(f, "%013lld", 0); /* TODO: conjuge */
+       fprintf(f, "%013lld", 0); /* TODO: rendimento PJ dependente */
+       fprintf(f, "%013lld", 0); /* TODO: imposto retido dependente */
+       fprintf(f, "%013lld", 0); /* TODO: imposto ganhos de capital */
+       fprintf(f, "%013lld", 0); /* TODO: rendimento tributável PJ titular */
+       fprintf(f, "%013lld", 0); /* TODO: total rural */
+       fprintf(f, "%013lld", 0); /* TODO: imposto retido titular */
+       fprintf(f, "%013lld", 0); /* TODO: total bens ano anterior */
+       fprintf(f, "%013lld", 0); /* TODO: total bens ano base */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos isentos titular */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos isentos dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: tributação exclusiva titular */
+       fprintf(f, "%013lld", 0); /* TODO: tributação exclusiva dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: total não tributável */
+       fprintf(f, "%013lld", 0); /* TODO: total dívidas ano anterior */
+       fprintf(f, "%013lld", 0); /* TODO: total dívidas ano base */
+       fprintf(f, "%013lld", 0); /* TODO: retido fonte Lei 11.033*/
+       fprintf(f, "%013lld", 0); /* TODO: isentos e não tributáveis */
+       fprintf(f, "%013lld", 0); /* TODO: tributação exclusiva */
+       fprintf(f, "%013lld", 0); /* TODO: ganhos líquidos renda variável */
+       fprintf(f, "%013lld", 0); /* TODO: parcela isenta ganhos capital */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos PF exterior titular */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos PF exterior dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: doações campanha */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos PF exigibilidade suspensa titular */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos PF exigibilidade suspensa dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: depósitos judiciais exigibilidade suspensa titular */
+       fprintf(f, "%013lld", 0); /* TODO: depósitos judiciais exigibilidade suspensa dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos RRA titular */
+       fprintf(f, "%013lld", 0); /* TODO: IRF RRA titular */
+       fprintf(f, "%013lld", 0); /* TODO: imposto RRA titular */
+       fprintf(f, "%013lld", 0); /* TODO: rendimentos RRA dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: IRF RRA dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: imposto RRA dependentes */
+       fprintf(f, "%013lld", 0); /* TODO: imposto devido */
+       fprintf(f, "%013lld", 0); /* TODO: imposto diferido ganho capital */
+       fprintf(f, "%013lld", 0); /* TODO: imposto devido ganho capital */
+       fprintf(f, "%013lld", 0); /* TODO: imposto ganho líquido renda variável */
+       fprintf(f, "%013lld", 0); /* TODO: imposto devido ganho capital moeda estrangeira */
+       fprintf(f, "%013lld", 0); /* TODO: imposto pago exterior*/
+       fprintf(f, "%-10.10s", "0000000000"); /* FIXME: controle */
+       fprintf(f, "\r\n");
+}
+
+static void gera_completa(struct declaracao *dec, FILE *f)
+{
+       fprintf(f, "19");
+       fprintf(f, "%s", dec->cpf); /* CPF: 11 dígitos */
+       fprintf(f, "%-14.14s", ""); /* TODO: CNPJ maior */
+       /* FIXME: completar campos */
+       fprintf(f, "%-10.10s", "0000000000"); /* FIXME: controle */
+       fprintf(f, "\r\n");
+}
+
+static void gera_totais_completa(struct declaracao *dec, FILE *f)
+{
+       fprintf(f, "20");
+       fprintf(f, "%s", dec->cpf); /* CPF: 11 dígitos */
+       /* FIXME: completar campos */
+       fprintf(f, "%-10.10s", "0000000000"); /* FIXME: controle */
+       fprintf(f, "\r\n");
+}
+
 static int gera(struct declaracao *dec, char *filename)
 {
        FILE *f;
@@ -192,6 +307,13 @@ static int gera(struct declaracao *dec, char *filename)
                return -errno;
        gera_header(dec, f);
        gera_contribuinte(dec, f);
+       if (dec->tipo == COMPLETA) {
+               gera_completa(dec, f);
+               gera_totais_completa(dec, f);
+       } else {
+               gera_simples(dec, f);
+               gera_totais_simples(dec, f);
+       }
        fclose(f);
        return 0;
 }