Clipper On Line • Ver Tópico - Contas à Receber e Relacionamento com Tabela Filha

Contas à Receber e Relacionamento com Tabela Filha

Discussão sobre SQL

Moderador: Moderadores

 

Contas à Receber e Relacionamento com Tabela Filha

Mensagempor NiltonGM » 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.
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
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 227
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 150 vezes
Mens.Curtidas: 4 vezes

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

Mensagempor hazael » 04 Out 2018 10:23

Já tentou assim?

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;
Harbour | GTWVT | MingW | Visual Studio Code
Avatar de usuário

hazael
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 414
Data de registro: 27 Nov 2016 12:59
Curtiu: 5 vezes
Mens.Curtidas: 26 vezes

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

Mensagempor NiltonGM » 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.
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 227
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 150 vezes
Mens.Curtidas: 4 vezes

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

Mensagempor hazael » 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.
Harbour | GTWVT | MingW | Visual Studio Code
Avatar de usuário

hazael
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 414
Data de registro: 27 Nov 2016 12:59
Curtiu: 5 vezes
Mens.Curtidas: 26 vezes

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

Mensagempor NiltonGM » 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.
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 227
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 150 vezes
Mens.Curtidas: 4 vezes

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

Mensagempor NiltonGM » 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.
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 227
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 150 vezes
Mens.Curtidas: 4 vezes

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

Mensagempor JoséQuintas » 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.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9710
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 609 vezes

CONTAS À RECEBER E RELACIONAMENTO COM TABELA FILHA

Mensagempor NiltonGM » 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.
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 227
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 150 vezes
Mens.Curtidas: 4 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro