Para afarias
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
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
Curtidas 0
Respostas
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+
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