No sistema que usamos aqui na empresa foi criado uma regra de venda onde é definido que se a forma de pagamento do pedido for cartão de credito, determinados produtos serão registrados com o preço de venda diferenciado Ex. o preço do produto é 1,00 mas se for pago com cartão ficaria por 0,90.
Tenho uma tabela com o itens do pedido e seus valores de venda, uma com as formas de pagamento que foram finalizadas nesse pedido e outra com os produtos que fazem parte da regra.
Estou tentando fazer um select que me retorne os pedidos que tiveram algum item que faz parte regra mas que não foram finalizados na forma de pagamento cartão de credito. Obs. posso ter mais de uma forma de pagamento no pedido Ex. cartão de credito e dinheiro.
Fiz um select que faz uma soma dos itens do pedido e uma soma das formas de pagamento que são diferentes de cartão de credito, e compara se o valor é igual, dessa forma o que coincidir a soma é porque não foi finalizado com a forma cartão, até aqui tudo bem, o problema é quando coloco pra verificar se nesse pedido tem algum item que faz parte da regra, se tiver o sistema só soma esses itens, então a soma dos itens vai ficar diferente da soma das formas.
Estou usando esse select.
select a.docto,
a.tot_pedido,
b.tot_pagto,
a.produto
from
(select docto,produto,dtaemissao, sum(vlrtotal) tot_pedido from tb_item group by docto,produto,dtaemissao) a ,
(select docto, sum(vlrtotal) tot_pagto,nroformapagto from Tb_pagto group by docto,nroformapagto) b,
(select produto,regra from tb_regra) c
where
a.docto = b.docto
and a.produto=c.produto
and a.tot_pedido=b.tot_pagto
and b.nroformapagto not in (152,153)
and c.regra=1233
and trunc(a.dtaemissao)='03-jul-2015'
quando executo o select com o tot_pedido=tot_pagto não apresenta resultado, quando coloco <> apresenta um resultado já que esta somando apenas 1 item que faz parte da regra e tem nesse pedido
DOCTO TOT_PEDIDO TOT_PAGTO
93258 2,98 54,7
Então eu acho que teria que fazer as mesmas somas e armazenar o resultado do que fosse igual e depois fazer o filtro do item pra retornar apenas os pedidos que tem o item e não foram finalizados na forma cartão, mas não sei como fazer isso, ou de outra forma.