Para afarias

Firebird

26/08/2004

AQUI AGORA ESTA A STORED PROCEDURE . COM 90¬

A PROCEDURE ESTA ME RETORNANDO REALMENTE TODOS OS PRODUTOS QUE TIVERAM MOVIMENTACAO DIARIA, MAS SO ESTA ME RETORNANDO O VALOR DOS PEDIDOS DIGITADOS.

OU SEJA SE TEVE NOTAS IMPRESSAS OU PRODUCAO, ESTA RETORNANDO 0. PQ COLOQUEI PARA RETORNAR 0 SENAO FICA NULL

JA TESTEI OS SELECT PELO SQL EDITOR E FUNCIONA LEGAL, MAS DEVE ESTA ACONTECENDO ALGUM DESVIO QUE NAO PASSA NESTES OUTROS FOR

COMO QUE EU POSSO VERIFICAR (TEM ALGUMA ESPECIE DE DEBUG PELO IBEXPERT) OU COMO FAZER PARA ARRUMAR ESTA SP..


OBRIGADAO


CREATE PROCEDURE PROC_ESTOQUEDIARIO
RETURNS (
PRODUTO INTEGER,
NOME VARCHAR(35),
NOME2 VARCHAR(35),
NOME3 VARCHAR(35),
SALDO NUMERIC(12,4),
PRODUCAO NUMERIC(12,4),
VENDAS NUMERIC(12,4),
SAIDAS NUMERIC(12,4))
AS
begin

FOR /* VERIFICA OS PRODUTOS COM MOVIMENTACAO DIARIA */
Select PRODUTOS.ID_PRODUTO, PRODUTOS.NOME, PRODUTOS.NOME2, PRODUTOS.NOME3, PRODUTOS.SALDO
From Itens_Ped Inner Join Pedidos On Itens_Ped.pedido = Pedidos.id_pedido
Inner JOIN Produtos On Produtos.Id_Produto = Itens_Ped.Produto
Where Pedidos.Emissao = CURRENT_DATE
and Pedidos.tipo not in(2,6)
GROUP By PRODUTOS.ID_PRODUTO, PRODUTOS.NOME, PRODUTOS.NOME2, PRODUTOS.NOME3, PRODUTOS.SALDO

UNION ALL

Select PRODUTOS.ID_PRODUTO, PRODUTOS.NOME, PRODUTOS.NOME2, PRODUTOS.NOME3, PRODUTOS.SALDO
From (Itens_PedFaturar Inner Join Ped_Faturar on Ped_Faturar.pedido = Itens_PedFaturar.pedido
and Ped_Faturar.numero = itens_pedfaturar.numero)
Inner Join Produtos On Produtos.Id_Produto = Itens_PedFaturar.Produto
Where Ped_Faturar.Emissao = CURRENT_DATE
GROUP By PRODUTOS.ID_PRODUTO, PRODUTOS.NOME, PRODUTOS.NOME2, PRODUTOS.NOME3, PRODUTOS.SALDO

ORDER BY 1
INTO :PRODUTO, :NOME, :NOME2, :NOME3, :SALDO
DO


BEGIN

SAIDAS = 0;
VENDAS = 0;
PRODUCAO = 0;

/* QUANTIDADE DE PRODUTOS DIGITADOS */
FOR
Select sUM(Itens_Ped.QUANTIDADE)
From Itens_Ped
Inner Join Pedidos On Itens_Ped.pedido = Pedidos.id_pedido
WHERE (PEDIDOS.situacao = 0 and PEDIDOS.controle =1) or (PEDIDOS.situacao < 2 and Pedidos.Controle = 0)
AND Pedidos.Emissao = CURRENT_DATE
and Pedidos.tipo not in(2,6)
GROUP BY ITENS_PED.PRODUTO
HAVING ITENS_PED.PRODUTO = :PRODUTO
UNION ALL

Select Sum(Itens_PedFaturar.QUANTIDADE)
From (Itens_PedFaturar Inner Join Ped_Faturar on Ped_Faturar.pedido = Itens_PedFaturar.pedido
and Ped_Faturar.numero = itens_pedfaturar.numero)
WHERE (Ped_Faturar.SITUACAO = 0 AND Ped_faturar.controle=1) or (Ped_Faturar.SITUACAO < 2 and Ped_Faturar.Controle = 0)
AND Ped_Faturar.Emissao = CURRENT_DATE
GROUP BY ITENS_PEDFATURAR.PRODUTO
HAVING ITENS_PEDFATURAR.PRODUTO = :PRODUTO

INTO :VENDAS
DO

/* QUANTIDADE DE PRODUTOS COM NOTAS EMITIDAS */
FOR
Select sUM(Itens_Ped.QUANTIDADE)
From Itens_Ped
Inner Join Pedidos On Itens_Ped.pedido = Pedidos.id_pedido
WHERE (PEDIDOS.situacao = 1 and PEDIDOS.controle = 1) or (PEDIDOS.situacao > 1 and Pedidos.Controle = 0)
AND Pedidos.Emissao = CURRENT_DATE
and Pedidos.tipo not in(2,6)
GROUP BY ITENS_PED.PRODUTO
HAVING ITENS_PED.PRODUTO = :PRODUTO
UNION ALL

Select Sum(Itens_PedFaturar.QUANTIDADE)
From (Itens_PedFaturar Inner Join Ped_Faturar on Ped_Faturar.pedido = Itens_PedFaturar.pedido
and Ped_Faturar.numero = itens_pedfaturar.numero)
WHERE (Ped_Faturar.SITUACAO = 1 AND Ped_faturar.controle=1) or (Ped_Faturar.SITUACAO > 1 and Ped_Faturar.Controle = 0)
AND Ped_Faturar.Emissao = CURRENT_DATE
GROUP BY ITENS_PEDFATURAR.PRODUTO
HAVING ITENS_PEDFATURAR.PRODUTO = :PRODUTO

INTO :SAIDAS
DO

/*PRODUCAO DIARIA POR PRODUTO */
FOR
Select PRODUCAO.QUANTIDADE FROM PRODUCAO
WHERE PRODUCAO.PRODUTO = :PRODUTO
AND PRODUCAO.DATA = CURRENT_DATE

INTO :PRODUCAO
DO

BEGIN END

SUSPEND;
END
end


Bruno_solucao

Bruno_solucao

Curtidas 0

Respostas

Afarias

Afarias

26/08/2004

Desculpe Bruno, mas de acordo com as regras de conduta vc não deve:

1- enviar mensagens com títulos q não descrevem o problema (ou endereçadas a um usuário -- neste caso use as mensagens privadas)

2- continuar um outro tópico criando um novo -- sugiro q responda o tópico original!


Obrigado.

T+


GOSTEI 0
POSTAR