Levantamento de Estoque
A instrução SQL abaixo me traz os produtos cujo saldo de estoque (P.ATUAL) seja positivo na [b:bb48834fe1]data atual[/b:bb48834fe1]:
SELECT P.CODIGO, P.DESCRICAO, P.ATUAL,
SUM(ME.QUANTIDADE*(CASE WHEN ME.OPERACAO = ´E´ THEN 1 END)) AS ENTRADAS,
SUM(ME.QUANTIDADE*(CASE WHEN ME.OPERACAO = ´S´ THEN 1 END)) AS SAIDAS
FROM PRODUTOS P
LEFT JOIN MOVIESTOQUE ME ON (ME.PRODUTO = P.CODIGO AND ME.DATA >:VDataPosicao AND P.ATUAL > 0)
GROUP BY
P.CODIGO, P.DESCRICAO, P.ATUAL
Pergunto: como eu poderia fazer para que fossem listados apenas os produtos cujo estoque (P.ATUAL) seja maior que zero em [b:bb48834fe1]VDataPosicao[/b:bb48834fe1]?
Obrigado
SELECT P.CODIGO, P.DESCRICAO, P.ATUAL,
SUM(ME.QUANTIDADE*(CASE WHEN ME.OPERACAO = ´E´ THEN 1 END)) AS ENTRADAS,
SUM(ME.QUANTIDADE*(CASE WHEN ME.OPERACAO = ´S´ THEN 1 END)) AS SAIDAS
FROM PRODUTOS P
LEFT JOIN MOVIESTOQUE ME ON (ME.PRODUTO = P.CODIGO AND ME.DATA >:VDataPosicao AND P.ATUAL > 0)
GROUP BY
P.CODIGO, P.DESCRICAO, P.ATUAL
Pergunto: como eu poderia fazer para que fossem listados apenas os produtos cujo estoque (P.ATUAL) seja maior que zero em [b:bb48834fe1]VDataPosicao[/b:bb48834fe1]?
Obrigado
Valdirdill
Curtidas 0
Respostas
Emerson Nascimento
07/04/2006
tente com essa SP:
CREATE PROCEDURE SP_KARDEX ( DATAPOSICAO DATE, REFERENCIAENTRADA VARCHAR(40)) RETURNS ( REFERENCIA VARCHAR(40), DESCRICAO VARCHAR(40), UNIDADE VARCHAR(3), MARCA VARCHAR(30), DATA DATE, SALDOANTERIOR NUMERIC(18,2), ENTRADAS NUMERIC(18,2), SAIDAS NUMERIC(18,2), SALDOATUAL NUMERIC(18,2)) AS begin data = dataposicao; -- se não for passada uma referência de produto, -- traz todos os produtos if (referenciaentrada is null) then referenciaentrada = ´¬´; -- seleciona os produtos for select referencia, descricao, unidade, marca, atual from produtos where referencia like :referenciaentrada into :referencia, :descricao, :unidade, :marca, :saldoatual do begin -- soma as entradas e saídas do produto no período ANTERIOR à data informada select sum(case when operacao = ´E´ then coalesce(QUANTIDADE,0) else 0 end), sum(case when operacao = ´S´ then coalesce(QUANTIDADE,0) else 0 end) from MoviEstoque where produto = :referencia and data <= :dataposicao into :entradas, :saidas; saldoanterior = entradas - saidas; if (saldoanterior > 0) then begin -- soma as entradas e saídas do produto no período POSTERIOR ao informado select sum(case when operacao = ´E´ then coalesce(QUANTIDADE,0) else 0 end), sum(case when operacao = ´S´ then coalesce(QUANTIDADE,0) else 0 end) from MoviEstoque where produto = :referencia and data > :dataposicao into :entradas, :saidas; suspend; end end end
GOSTEI 0
Valdirdill
07/04/2006
tente com essa SP:
CREATE PROCEDURE SP_KARDEX ( DATAPOSICAO DATE, REFERENCIAENTRADA VARCHAR(40)) RETURNS ( REFERENCIA VARCHAR(40), DESCRICAO VARCHAR(40), UNIDADE VARCHAR(3), MARCA VARCHAR(30), DATA DATE, SALDOANTERIOR NUMERIC(18,2), ENTRADAS NUMERIC(18,2), SAIDAS NUMERIC(18,2), SALDOATUAL NUMERIC(18,2)) AS begin data = dataposicao; -- se não for passada uma referência de produto, -- traz todos os produtos if (referenciaentrada is null) then referenciaentrada = ´¬´; -- seleciona os produtos for select referencia, descricao, unidade, marca, atual from produtos where referencia like :referenciaentrada into :referencia, :descricao, :unidade, :marca, :saldoatual do begin -- soma as entradas e saídas do produto no período ANTERIOR à data informada select sum(case when operacao = ´E´ then coalesce(QUANTIDADE,0) else 0 end), sum(case when operacao = ´S´ then coalesce(QUANTIDADE,0) else 0 end) from MoviEstoque where produto = :referencia and data <= :dataposicao into :entradas, :saidas; saldoanterior = entradas - saidas; if (saldoanterior > 0) then begin -- soma as entradas e saídas do produto no período POSTERIOR ao informado select sum(case when operacao = ´E´ then coalesce(QUANTIDADE,0) else 0 end), sum(case when operacao = ´S´ then coalesce(QUANTIDADE,0) else 0 end) from MoviEstoque where produto = :referencia and data > :dataposicao into :entradas, :saidas; suspend; end end end
Na hora de criar a procedure dá o erro ´token unknow - lini 29, char 8 ?.´
A linha 29 é:´into :referencia, :descricao, :unidade, :marca, :saldoatual do´
Utilizo o IBExper para criar a SP.
O que pode ser esse erro?
Obrigado.
GOSTEI 0