Utiliza contexto na declaração ao gerar rendimentos.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Mon, 30 Apr 2018 20:35:13 +0000 (17:35 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Mon, 30 Apr 2018 20:35:13 +0000 (17:35 -0300)
O número de linhas é utilizado para obter o rendimento cuja linha será gerada.
No entanto, com o novo formato de 2018, este método não funciona sempre.

A utilização de um ponteiro de uso temporário na declaração resolve o problema,
e é menos sujeito a erros.

lib/declaracao.h
lib/gera.c

index 1ffd86e..0dc2c17 100644 (file)
@@ -64,6 +64,7 @@ struct declaracao {
        unsigned long rhash;
        int verbose;
        char *error;
+       void *ctx;
 };
 
 struct declaracao * declaracao_new(int ano);
index c0f565c..a07319d 100644 (file)
@@ -787,7 +787,7 @@ static void gera_isento2(struct declaracao *dec, FILE *f, int codigo,
                        int subcodigo, int codigoreal)
 {
        struct isento *i;
-       i = isento_get(dec, codigo, dec->linhas[codigo]);
+       i = dec->ctx;
        fprintf(f, "%02d", codigoreal);
        fprintf(f, "%-11.11s", dec->cpf); /* Titular */
        /* Titular (T), Dependente (D), Alimentando (A), FIXME Alimentando */
@@ -1100,6 +1100,7 @@ static int gera(struct declaracao *dec, char *filename)
                isento = isento_get(dec, codigo, i); \
                if (!isento) \
                        break; \
+               dec->ctx = isento; \
                W(fn); \
        }
        if (dec->ano <= 2017) {