From: Thadeu Lima de Souza Cascardo Date: Sat, 12 Mar 2016 20:22:58 +0000 (-0300) Subject: Nova função para ordenação de pagamentos médicos. X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fdeclara.git;a=commitdiff_plain;h=28758bdce393fac0a8366a1d51b9947321c86b10 Nova função para ordenação de pagamentos médicos. Como pagamentos médicos podem utilizar mais de um código de pagamento, uma nova função foi necessária. --- diff --git a/lib/gera.c b/lib/gera.c index c3bfd89..eac97ea 100644 --- a/lib/gera.c +++ b/lib/gera.c @@ -105,9 +105,9 @@ static void gera_header(struct declaracao *dec, FILE *f) fprintf(f, "%-11.11s", ""); /* CPF Dependente 6 */ fprintf(f, "%-8.8s", ""); /* DN Dependente 6 */ /* medico maior, TODO: outros códigos */ - fprintf(f, "%-14.14s", pagamento_cnpj_ordenado(dec, 26, 0)); + fprintf(f, "%-14.14s", medico_cnpj_ordenado(dec, 0)); /* medico maior 2, TODO: outros códigos */ - fprintf(f, "%-14.14s", pagamento_cnpj_ordenado(dec, 26, 1)); + fprintf(f, "%-14.14s", medico_cnpj_ordenado(dec, 1)); fprintf(f, "%-11.11s", ""); /* CPF pensao */ fprintf(f, "%-11.11s", ""); /* CPF inventariante */ fprintf(f, "%-40.40s", dec->contribuinte.municipio); diff --git a/lib/pagamento.c b/lib/pagamento.c index 92ff7ba..051a7e6 100644 --- a/lib/pagamento.c +++ b/lib/pagamento.c @@ -130,3 +130,30 @@ char * pagamento_cnpj_ordenado(struct declaracao *dec, int codigo, int n) return ""; return pagamento->cnpj; } + +static int pagamento_medico(int codigo) +{ + switch (codigo) { + case 10: + case 21: + case 26: + return 1; + default: + return 0; + } + return 0; +} + +char * medico_cnpj_ordenado(struct declaracao *dec, int n) +{ + struct pagamento *pagamento; + int i; + int j = 0; + for (i = 0; (pagamento = list_get(dec->pagamentos, i)); i++) { + if (pagamento_medico(pagamento->codigo) && j++ == n) + break; + } + if (!pagamento) + return ""; + return pagamento->cnpj; +} diff --git a/lib/pagamento.h b/lib/pagamento.h index 235daca..a6d1f59 100644 --- a/lib/pagamento.h +++ b/lib/pagamento.h @@ -36,5 +36,6 @@ void pagamento_free(void *pointer); int pagamento_cmd_init(void); char * pagamento_cnpj_ordenado(struct declaracao *dec, int codigo, int n); +char * medico_cnpj_ordenado(struct declaracao *dec, int n); #endif