X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=lib%2Fgera.c;h=212ca95d0dfc775a3f58cb2620fc0a1a112c488d;hb=168fac475fcd8b8dbdc1836ebfb6ffe739dba6b0;hp=56950edf0e51e5202b1b9fbc79550c6dd0cd9ee8;hpb=0b22977d12118a82204491be403fed3c49c4bfd7;p=cascardo%2Fdeclara.git diff --git a/lib/gera.c b/lib/gera.c index 56950ed..212ca95 100644 --- a/lib/gera.c +++ b/lib/gera.c @@ -251,8 +251,8 @@ static void gera_simples(struct declaracao *dec, FILE *f) 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 */ - /* rendimentos isentos */ - fprintf(f, "%013lld", totais_get(dec, "ISENTOS")); + /* rendimentos isentos titular */ + fprintf(f, "%013lld", totais_get(dec, "ISENTOSTIT")); /* rendimentos tributação exclusiva, exceto décimo terceiro */ fprintf(f, "%013lld", totais_get(dec, "EXCLUSIVOS_SEM_13o")); /* 13o. */ @@ -260,8 +260,8 @@ static void gera_simples(struct declaracao *dec, FILE *f) fprintf(f, "%013lld", 0); /* TODO: retido na fonte (Lei 11.033) */ 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, "%013lld", totais_get(dec, "ISENTOSDEP")); /* isentos dependentes */ + fprintf(f, "%013lld", totais_get(dec, "EXCLUSIVOSDEP")); /* exclusivos dependentes */ fprintf(f, "%-13.13s", ""); /* FILLER */ fprintf(f, "%-13.13s", ""); /* FILLER */ fprintf(f, "%013lld", 0); /* TODO: rendimentos PF */ @@ -270,7 +270,7 @@ static void gera_simples(struct declaracao *dec, FILE *f) 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", totais_get(dec, "DEPENDENTES")); /* TODO: dedução dependentes */ + fprintf(f, "%013lld", totais_get(dec, "DEPENDENTES")); /* dedução dependentes */ fprintf(f, "%013lld", 0); /* TODO: previdência RRA */ fprintf(f, "%013lld", 0); /* TODO: previdência RRA dependentes */ fprintf(f, "%013lld", 0); /* TODO: pensão RRA */ @@ -314,9 +314,9 @@ static void gera_totais_simples(struct declaracao *dec, FILE *f) fprintf(f, "%013lld", totais_get(dec, "BENSANTERIOR")); /* total bens ano anterior */ fprintf(f, "%013lld", totais_get(dec, "BENS")); /* total bens ano base */ fprintf(f, "%013lld", totais_get(dec, "ISENTOSTIT")); /* rendimentos isentos titular */ - fprintf(f, "%013lld", 0); /* TODO: rendimentos isentos dependentes */ - fprintf(f, "%013lld", totais_get(dec, "EXCLUSIVOSTIT")); /* TODO: tributação exclusiva titular */ - fprintf(f, "%013lld", 0); /* TODO: tributação exclusiva dependentes */ + fprintf(f, "%013lld", totais_get(dec, "ISENTOSDEP")); /* rendimentos isentos dependentes */ + fprintf(f, "%013lld", totais_get(dec, "EXCLUSIVOSTIT")); /* tributação exclusiva titular */ + fprintf(f, "%013lld", totais_get(dec, "EXCLUSIVOSDEP")); /* 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 */ @@ -445,9 +445,9 @@ static void gera_totais_completa(struct declaracao *dec, FILE *f) fprintf(f, "%013lld", 0); /* TODO: imposto moeda estrangeira */ fprintf(f, "%013lld", 0); /* TODO: imposto ganhos capital moeda */ fprintf(f, "%013lld", totais_get(dec, "ISENTOSTIT")); /* rendimentos isentos titular */ - fprintf(f, "%013lld", 0); /* TODO: rendimentos isentos dependentes */ + fprintf(f, "%013lld", totais_get(dec, "ISENTOSDEP")); /* rendimentos isentos dependentes */ fprintf(f, "%013lld", totais_get(dec, "EXCLUSIVOSTIT")); /* TODO: tributação exclusiva titular */ - fprintf(f, "%013lld", 0); /* TODO: tributação exclusiva dependentes */ + fprintf(f, "%013lld", totais_get(dec, "EXCLUSIVOSDEP")); /* tributação exclusiva 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 */ @@ -485,7 +485,7 @@ static void gera_isentos(struct declaracao *dec, FILE *f) fprintf(f, "%013lld", 0); /* TODO: pensão por invalidez */ fprintf(f, "%013lld", totais_get(dec, "POUPANCA")); fprintf(f, "%013lld", 0); /* TODO: sócio ou titular de empresa */ - fprintf(f, "%013lld", 0); /* TODO: herança, transferências patrimoniais */ + fprintf(f, "%013lld", totais_get(dec, "DOACOES")); /* herança, transferências patrimoniais */ fprintf(f, "%013lld", 0); /* TODO: outros rendimentos isentos */ fprintf(f, "%-60.60s", ""); /* FILLER1 */ fprintf(f, "%-13.13s", ""); /* FILLER2 */ @@ -655,7 +655,7 @@ static void gera_pagamento(struct declaracao *dec, FILE *f) fprintf(f, "26"); fprintf(f, "%s", dec->cpf); fprintf(f, "%02d", p->codigo); - fprintf(f, "%05d", 0); /* TODO: chave dependente */ + fprintf(f, "%05d", p->dependente); fprintf(f, "%-14.14s", p->cnpj); fprintf(f, "%-60.60s", p->nome); fprintf(f, "%-11.11s", ""); /* TODO: NIT */ @@ -666,8 +666,8 @@ static void gera_pagamento(struct declaracao *dec, FILE *f) fprintf(f, "%013lld", 0); } fprintf(f, "%d", strlen(p->cnpj) == 11 ? 1 : 2); - /* Titular (T), Dependente (D), Alimentando (A), FIXME */ - fprintf(f, "T"); + /* Titular (T), Dependente (D), Alimentando (A), FIXME Alimentando */ + fprintf(f, "%c", p->dependente ? 'D' : 'T'); } static void gera_isento(struct declaracao *dec, FILE *f, int codigo) @@ -675,13 +675,20 @@ static void gera_isento(struct declaracao *dec, FILE *f, int codigo) struct isento *i; i = isento_get(dec, codigo, dec->linhas[codigo]); fprintf(f, "%02d", codigo); - fprintf(f, "%-11.11s", dec->cpf); /* Titular, TODO: dependente */ + fprintf(f, "%-11.11s", dec->cpf); /* Titular */ fprintf(f, "%05d", dec->linhas[codigo] + 1); /* Chave */ - fprintf(f, "%c", 'T'); /* FIXME: dependente */ + /* Titular (T), Dependente (D), Alimentando (A), FIXME Alimentando */ + fprintf(f, "%c", i->dependente ? 'D' : 'T'); fprintf(f, "%-14.14s", i->cnpj); fprintf(f, "%-60.60s", i->nome); fprintf(f, "%013lld", i->valor); - fprintf(f, "%-11.11s", dec->cpf); + if (i->dependente) { + struct dependente *d; + d = list_get(dec->dependentes, i->dependente - 1); + fprintf(f, "%-11.11s", d ? d->cpf : ""); + } else { + fprintf(f, "%-11.11s", dec->cpf); + } } static void gera_doacao(struct declaracao *dec, FILE *f)