Totaliza outros pagamentos.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Sat, 12 Mar 2016 20:29:03 +0000 (17:29 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Sat, 12 Mar 2016 20:48:28 +0000 (17:48 -0300)
A declaração completa exige outros totais de pagamentos, como pagamentos
médicos e de previdência. Soma tais totais em uma função própria, dada
sua nova complexidade.

lib/pagamento.c

index 051a7e6..9f91d14 100644 (file)
 #include "util.h"
 #include "totais.h"
 
+static int pagamento_totais_update(struct declaracao *dec, struct pagamento *pagamento)
+{
+       int r;
+       r = totais_add(dec, "PAGAMENTOS", pagamento->pagamento);
+       r += totais_add(dec, "PAGAMENTOSTIT", pagamento->pagamento);
+       r += totais_add(dec, "REEMBOLSOS", pagamento->reembolso);
+       r += totais_add(dec, "REEMBOLSOSTIT", pagamento->reembolso);
+       switch (pagamento->codigo) {
+       case 10:
+       case 21:
+       case 26:
+               r += totais_add(dec, "MEDICAS", pagamento->pagamento - pagamento->reembolso);
+               break;
+       case 36:
+               r += totais_add(dec, "PREVIDENCIA", pagamento->pagamento - pagamento->reembolso);
+               break;
+       }
+       return r;
+}
+
 void pagamento_free(void *pointer)
 {
        struct pagamento *pagamento = pointer;
@@ -86,10 +106,7 @@ static int run_pagamento(struct declaracao *dec, char **args, int argc)
                pagamento_free(pagamento);
                return r;
        }
-       r = totais_add(dec, "PAGAMENTOS", pagamento->pagamento);
-       r += totais_add(dec, "PAGAMENTOSTIT", pagamento->pagamento);
-       r += totais_add(dec, "REEMBOLSOS", pagamento->reembolso);
-       r += totais_add(dec, "REEMBOLSOSTIT", pagamento->reembolso);
+       r = pagamento_totais_update(dec, pagamento);
        if (r) {
                pagamento_free(pagamento);
                return r;