Boa tarde,
Eu tenho as seguintes tabelas no banco de dados:
PlanoContas
-Conta String
-CodRed int
-Desc String
-Tipo String
Lancamento
-idLancamento serial
-idContaCredito String
-idContaDebito String
-valor double
Eu preciso criar um relatório que mostre a conta do plano de contas, sua descrição, total debitado, total creditado e saldo.
A estrutura do meu plano de contas é a seguinte:
1 digito - sintética
3 digitos - sintética
5 digitos - sintética
7 digitos - sintética
12 digitos - analítica
Um exemplo básico:
1 - ATIVO
101 - ATIVO CIRCULANTE
10101 - DISPONIBILIDADE
1010101 - CAIXA GERAL
101010100001 - CAIXA
Sendo assim, os valores da conta 1 (ativo) é a soma de todas as contas que tem três digitos começando com 1.
os valores da conta 101 é a soma de todas as contas que tem cinco digitos começando com 101.
os valores da conta 10101 é a soma de todas as contas que tem sete digitos começando com 10101…
[e assim sucessivamente]
Sendo assim, devo varrer essa estrutura para conseguir montar o relatório, fazendo alguns selects básicos nas contas analíticas, por exemplo
select sum(valor) from lancamento where idContaCredito = ?
select sum(valor) from lancamento where idContaDebito = ?
--saldo é só subtrair um pelo outro
Estava pensando em fazer isso usando uma função no banco de dados, porém com recursividade… Ou seria melhor fazer isso via código [temos que levar em conta que se for via código pode travar o sistema caso haja muitos lançamentos] ?
Alguém tem alguma ideia de qual a melhor maneira de fazer isso?
Obrigado


