Array
(
)

plano de contas

Fernando
   - 30 jan 2006

bom dia amigos,

preciso montar um plano de contas e gostaria de saber se alguem ja fez algum, pq a maior dificuldade que encontro sao reunir os valores das contas pai tipo


valor total 100.00 que esta distribuidora nas seguintes contas

1----------100,00

1.1............. 20,00

1.1.1.......... 5,00
1.1.2.......... 15,00

1.2----------50,00

1.3----------30,00

1.3.1.............10,00
1.3.2.............15,00
1.3.3.............. 5,00

pq tenho que somar e jogar os valores nas contas cabeças(pai)


Aroldo Zanela
   - 30 jan 2006

Colega,

É só agrupar pela substring.


Fernando
   - 06 fev 2006

como faria esse agrupamento


Aroldo Zanela
   - 06 fev 2006

Colega,

Existem diversas formas de resolver. Desde o agrupamento na instrução SQL ou no próprio relatório. Qual é o banco de dados e qual gerador de relatórios está utilizando?


Fernando
   - 06 fev 2006

so usando firebird e meus relatorio faço tudo na mão usando rdprint


Aroldo Zanela
   - 06 fev 2006

Colega,

Por favor, coloque a estrutura das tabelas (DDL) para que possamos elaborar um exemplo prático.


Biohazard
   - 06 fev 2006

cara eu tenho um programa de contabilidade prontinho. Se você quiser eu te passo... foi feito com o Firebir 1.5, dbexpress. Assim, ele não tá completo, mas dá para o que você quer


Fernando
   - 06 fev 2006

Cadastro das Contas
Conta Varchar(4)
descricao varchar(30)


Movimentação
Conta Varchar(4)
Valor Numeric(9,3)

1----------100,00
1.1............. 20,00
1.1.1.......... 5,00
1.1.2.......... 15,00

1.2----------50,00
1.2.1----------50,00

1.3----------30,00
1.3.1.............10,00
1.3.2.............15,00
1.3.3.............. 5,00


primeiro cadastro as contas , depois faço a movimentação
so lanço as contas filhas tipo 1.1.1 ou 1.1.2, 1.1.3 e nunca as contas cabeças


Aroldo Zanela
   - 06 fev 2006

Colega,

#Código


SELECT
CAST(SUBSTRING(CONTA FROM 1 FOR 1) AS CHAR(4)) AS CONTA,
SUM(VALOR) AS VALOR
FROM
MOVIMENTACAO
GROUP BY
SUBSTRING(CONTA FROM 1 FOR 1)
UNION ALL
SELECT
CAST(SUBSTRING(CONTA FROM 1 FOR 2) AS CHAR(4)) AS CONTA,
SUM(VALOR) AS VALOR
FROM
MOVIMENTACAO
GROUP BY
SUBSTRING(CONTA FROM 1 FOR 2)
UNION ALL
SELECT
CONTA AS CHAR(4) AS CONTA,
VALOR
FROM
MOVIMENTACAO
ORDER BY
CONTA



Fernando
   - 06 fev 2006

SELECT CAST(SUBSTRING(plano_contas.Codigo FROM 1 FOR 1) AS CHAR(5)) AS CONTA,
SUM(mov_caixa.dinheiro) AS VALOR
FROM mov_Caixa
inner join conta on (conta.codigo=mov_caixa.conta)
inner join plano_contas on (plano_contas.conta = conta.codigo)
GROUP BY SUBSTRING(plano_contas.Codigo FROM 1 FOR 1)

UNION ALL

SELECT CAST(SUBSTRING(plano_contas.Codigo FROM 1 FOR 3) AS CHAR(5)) AS CONTA,
SUM(mov_caixa.dinheiro) AS VALOR
FROM mov_caixa
inner join conta on (conta.codigo=mov_caixa.conta)
inner join plano_contas on (plano_contas.conta = conta.codigo)
GROUP BY SUBSTRING(plano_contas.codigo FROM 1 FOR 3)

UNION ALL

SELECT CAST(SUBSTRING(plano_contas.Codigo FROM 1 FOR 5) AS CHAR(5)) AS CONTA,
SUM(mov_caixa.dinheiro) AS VALOR
FROM mov_caixa
inner join conta on (conta.codigo=mov_caixa.conta)
inner join plano_contas on (plano_contas.conta = conta.codigo)
GROUP BY SUBSTRING(plano_contas.codigo FROM 1 FOR 5)


dessa forma funcionou normal, so que ficou com um problema
as contas cabeças ele mostra 3 vezes, pq possui 3 sql
como faria para resolver esse problema
as contas sao gravadas ja com as mascaras
1
1.1.1
1.1.2
1.1.3
2
2.1
2.1.1
2.1.2
valeu


Aroldo Zanela
   - 06 fev 2006

Colega,

Por favor, faça um teste sem as associações (joins). Se necessário, crie uma view para simplicar o relacionamento.