Calculo de Comissão

Firebird

08/10/2012

Olá Pessoal!

Estou tentando fazer um calculo de comissões sobre vendas de funcionários em determinado período:

Tenho as tabelas:

Funcionario: Cod_Func, NomeFunc, Comissao
Venda: Cod_Venda, DataV, Total,
Prod_Venda: Cod_Venda, Produto, Quant, Unit, Total

Fiz da seguinte forma:

select P.PRODUTO, sum(P.QUANT) as QUANTD, SUm(P.TOTALPROD) as TOTAL, Sum(P.TotalProd*F.Comissao) as Comissao from PRODVENDA P,FUNCIONARIO F where P.COD_VENDA in (select cod_venda from VENDA WHERE DATAV>=:datini and DATAV<=:datfim and Cod_Func=:codigo) group by P.PRODUTO

Porém desta forma não está calculando a comissao e os campos de soma de quantidade e valor total estão valores bem acima do real.

Alguem pode me ajudar a corrigir isso?
Daniel Pessoa

Daniel Pessoa

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

08/10/2012

Não vi na venda uma referência à tabela de funcionários, o que deveria existir. Considerando que a venda possui essa chave estrangeira, experimente usar inner join, da seguinte forma:
select P.PRODUTO, sum(P.QUANT) as QUANTD, SUm(P.TOTALPROD) as TOTAL, Sum(P.TotalProd*F.Comissao) as Comissao
from PRODVENDA P
inner join VENDA V on P.Cod_Venda = V.Cod_Venda
inner join FUNCIONARIO F on V.Cod_Func = F.Cod_Func
where V.DataV between : datini AND :datfim and Cod_Func : codigo
group by P.PRODUTO


Postei o código nesse link, para melhor visualização: [url]http://pastebin.com/TgPYy5FH[/url]
GOSTEI 0
POSTAR