Retornar pedidos com itens de uma regra criada.

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
fabiodequeiroz
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Qui, 31 Jan 2013 2:28 pm

Bom dia,
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.

Selecionar tudo

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.
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Olá,
Fiquei um pouco confuso:
1-A tabela de regras ela define o percentual que influi dependendo do tipo de pagamento? Ou é por item?

2- Como é o relacionamento entre as 3 tabelas? Pode ter dados em uma sem ter na outra (para saber necessidade de outter joins), enquanto não realiza o pagamento?

3- Em vez de usar "(select produto,regra from tb_regra)" preferível usar a própria tabela de "tb_regra" diretamente. Assim como as outras acredito poder utilizar apenas um group by, para melhorar o desempenho.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 14 visitantes