From: Thadeu Lima de Souza Cascardo Date: Mon, 30 Apr 2018 20:37:40 +0000 (-0300) Subject: Se total de rendimentos é zero, não gera linha. X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fdeclara.git;a=commitdiff_plain;h=982bc1996e2c3cf9e29ad7b75901c69e27db4769 Se total de rendimentos é zero, não gera linha. Ao gerar a linha de um tipo de rendimento, se o seu total é zero, a linha não deve ser gerada. --- diff --git a/lib/gera.c b/lib/gera.c index a07319d..5bc6075 100644 --- a/lib/gera.c +++ b/lib/gera.c @@ -556,10 +556,13 @@ static void gera_isentos(struct declaracao *dec, FILE *f) static void gera_isentos2(struct declaracao *dec, FILE *f, int codigo, char *nome) { + long long total = totais_get(dec, nome); + if (total == 0) + return; fprintf(f, "23"); fprintf(f, "%-11.11s", dec->cpf); fprintf(f, "%04d", codigo); - fprintf(f, "%013lld", totais_get(dec, nome)); /* TODO: retistuição imposto anos anteriores */ + fprintf(f, "%013lld", total); } static void gera_23_poupanca(struct declaracao *dec, FILE *f) @@ -985,8 +988,12 @@ static int wrap(gera_linha fn, struct declaracao *dec, struct list *l) return -errno; } fn(dec, m); - dec->linhas[0]++; fflush(m); + if (bsize == 0) { + fclose(m); + return 0; + } + dec->linhas[0]++; /* Calcula CRC32 para campo de controle dos registros. */ c = crc32(c, buf, bsize);