summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>2018-04-30 17:37:40 -0300
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>2018-09-15 16:46:50 -0300
commit982bc1996e2c3cf9e29ad7b75901c69e27db4769 (patch)
tree9dcc54d804de3b7630b1d87440ae4ecddfe5b6d5
parenta99b09340e6b9c46268dfe2685d6997dd751212e (diff)
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.
-rw-r--r--lib/gera.c11
1 files changed, 9 insertions, 2 deletions
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);