From 28758bdce393fac0a8366a1d51b9947321c86b10 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Sat, 12 Mar 2016 17:22:58 -0300 Subject: [PATCH] =?utf8?q?Nova=20fun=C3=A7=C3=A3o=20para=20ordena=C3=A7?= =?utf8?q?=C3=A3o=20de=20pagamentos=20m=C3=A9dicos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Como pagamentos médicos podem utilizar mais de um código de pagamento, uma nova função foi necessária. --- lib/gera.c | 4 ++-- lib/pagamento.c | 27 +++++++++++++++++++++++++++ lib/pagamento.h | 1 + 3 files changed, 30 insertions(+), 2 deletions(-) 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 -- 2.20.1