Clipper On Line • Ver Tópico - Contas à Receber e Relacionamento com Tabela Filha
Mudar para estilo Clássico
Discussão sobre SQL
Postar uma resposta

Contas à Receber e Relacionamento com Tabela Filha

04 Out 2018 10:16

Amigos,
Estou quebrando a cabeça para conseguir um SELECT com JOIN que me traga informações de itens, para entender, segue abaixo imagem das tabelas relacionadas:

contasreceber.png


A baixa da fatura se dá na própria tabela "receber", cada linha é uma parcela baixada, pode ser 1 a n parcelas (linhas com id_pai). Nesta parcela temos a conta de movimento que recebeu este recebimento.
A tabela "receber_itens" é uma tabelha filha relacionada com a tabela "receber", ela contém os itens que compõe o faturamento, pode ser a venda de produtos, serviços ou outros recebimentos (coluna "tipo_item"), nela também temos a coluna id_centrocusto relacionada a tabela "centrodecustos" para sabermos no fechamento do mês no fluxo de caixa de onde está vindo mais o dinheiro, se é de vendas de produtos, serviços, etc.

Nessa normalização de tabelas, estou impossibilitado de enxergar por mês o valor por centro de custo, já que o valor do recebimento das parcelas é a somatória dos itens, o recebido pode ser apenas um parte da venda dos itens, e a data de recebimento está na tabela pai.
Conto com a experiência de vocês me ajudando talvez em até mudar a estrutura...
Com esse SELECT consigo ver as parcelas e os itens, mas ele repete é claro, a linha de parcelas para cada item.
Código:
SELECT t1.id,
       t1.id_pai,
       t1.id_conta_mov,
       t1.recebido_valor,
       t1.recebido_em,
       t2.id_plano_contas,
       t2.valor_item,
       t2.tipo_item
FROM receber t1
LEFT JOIN receber_itens t2 ON t2.id_receber = t1.id


Grato à quem puder me dar uma luz

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

04 Out 2018 10:23

Já tentou assim?

Código:
SELECT id,
       id_pai,
       id_conta_mov,
       recebido_valor,
       recebido_em,
       id_plano_contas,
       valor_item,
       tipo_item
FROM receber
LEFT JOIN receber_itens ON receber_itens.id_receber = receber.id;

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

04 Out 2018 10:29

receber.png


Oi Hazael,

Não estou com problema de sintaxe, a sua instrução é a mesma, só trocou o apelido das tabelas e nesse caso eu teria um erro de ambiguidade pois a coluna id é á mesma em ambas tabelas, mesmo que não estou mencionando o id da segunda no SELECT... de qualquer forma ambas não me traz o valor recebido por centro de custo.

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

04 Out 2018 10:43

Você está usando SQL Server 2012?
De onde conseguiu essa imagem com as tabelas? Gostei que tem as cores para tornar mais claro.

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

04 Out 2018 10:50

Estou usando MySQL com Harbour HMG 3.4.4, quanto a imagem, é só ilustrativa, eu fiz no Excel não só para ilustrar aqui como para pensar melhor como relacionar isso... Antigamente eu usava o ErWin para modelar (UML) tabelas, hoje não uso mais UML, vou direto no Banco de Dados digitando SQL.

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

04 Out 2018 11:07

No meu fraco entendimento, cheguei a conclusão que não há como saber quando foi pago o item já que o valor da parcela baixada pode ser diferente da somatória dos valores do item, pois posso receber parcialmente uma parcela e gerar uma nova parcela da diferença da baixada, devo adotar um critério, assumo que os valores dos itens são contabilizados na data da última liquidação de parcela, ou gerar uma fatura para item individualmente, aí a coisa vai pegar pro lado do usuário. Estou num beco sem saída.... Aguardo alguma ideia nos nobres colegas.

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

04 Out 2018 13:12

Não entendi nada de como são gravadas as informações.
Se tem vários pagamentos, cada pagamento deveria ter uma data, e o SELECT deveria usar essa data, se for pra mostrar movimentação de um período.
E a baixa final seria a data do último pagamento, que poderia ou não estar também no registro principal.

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

04 Out 2018 17:29

Oi Zeh, Beleza?
Você não entendeu porque o problema não é as parcelas, elas em data de baixa. Tentarei explicar mais simples aqui em baixo, também consegui a solução (acho eu) rs.
Fatura 1 total faturado R$ 80,00 com 2 parcelas:
Parcela 1 R$ 40,00 pago em: 10/08/2018
Parcela 2 R$ 40,00 pago em: 10/09/2018

Itens que compôs o faturamento:
Item 1 R$ 30,00 centro de custo x (plano de contas)
Item 2 R$ 50,00 centro de custo y (plano de contas)

Mês 8 entrou R$ 40,00
Mês 9 entrou R$ 40,00

Problema: Quanto entrou para cada centro de custo (plano de contas)?
Solução que encontrei: Na baixa da parcela, ao lançar na tabela "creditos", coloco o valor do item correspondente ao seu percentual relativo à parcela recebida, veja abaixo:
creditos
id | conta_mov | id_centro_custo | data_credito | valor_creditado
01 | 1 (Conta de movimento pra onde entrou o dim-dim) | x | 10/08/2018 | R$ 15.00 (parcela paga(40.) / total fatura(80.) * 100) = 50% [50% do valor do item x(30.) = 15 reais]
02 | 1 | y | 10/08/2018 | R$ 25,00
... mes 9 a mesma coisa...

Dessa forma eu tenho creditado 15 + 25 que é igual ao valor da parcela de 40 reais, só que por item.
Assim no fluxo de caixa será mostrado quanto realmente entrou para o centro de custo x e y os valores respectivos naquele mês.
Não sei se é a melhor forma, mas é bem o que esperava conseguir.
Postar uma resposta