Problemas com While em Procedure
Olá galera, boa tarde.
Bom estou com alguns probleminhas aqui e gostaria de saber a opiniões de vocês.
Estou fazendo o controle de saída de produtos do estoque, porém tenho tbm que controlar Lotes.
Exemplo: Na entrada de materiais/produtos, tenho Lotes por Produtos, e na hora de realizar a saída dos mesmos,
preciso abater do lote mais antigo e se faltar produtos para abater tenho que selecionar o segundo LOTE mais
antigo e abater a quantidade dele.
Estou desenvolvendo a procedure, porém estou com dificuldades na hora de verificar se falta quantidade para ser abatia, e se houver pegar o segundo lote mais antigo e abater-lhe a quantidade.
Aqui esta a procedure:
ALTER PROCEDURE [dbo].[sPAbaterLote]
(
@IDPRODUTO INT,
@QTD DECIMAL(15,2)
)
AS
BEGIN
DECLARE @DATA INT;
DECLARE @QUANTIDADE DECIMAL(15,2);
DECLARE @DATAPROX DATETIME;
DECLARE @VALORTOTAL DECIMAL(15,2);
--exec @DATAPROX = SPObterProxDataLotes;
SET @DATA = (SELECT TOP 1 tbE.ID_ENTRADA
FROM tb_Entradas as tbE
WHERE tbE.DATA_ENTRADA = (SELECT MIN(tbE2.DATA_ENTRADA) FROM tb_Entradas as tbE2));
SET @QUANTIDADE = (SELECT
QUANTIDADE
FROM tb_Items_Entrada
WHERE ID_ENTRADA = @DATA);
SET @QUANTIDADE = @QUANTIDADE - @QTD;
IF(@QUANTIDADE != 0)
BEGIN
SELECT
QUANTIDADE
FROM tb_Items_Entrada
WHERE ID_ENTRADA = @DATA
END
ATUALIZEI A PROCEDURE..
ALTER PROCEDURE [dbo].[sPAbaterLote]
(
@IDPRODUTO INT,
@QTD DECIMAL(15,2)
)
AS
BEGIN
DECLARE @ID_ENTRADA INT;
DECLARE @QUANTIDADE DECIMAL(15,2);
DECLARE @DATAPROX DATETIME;
DECLARE @VALORTOTAL DECIMAL(15,2);
DECLARE @ID_LOTE INT;
--exec @DATAPROX = SPObterProxDataLotes;
SET @ID_ENTRADA = (SELECT TOP 1 tbE.ID_ENTRADA
FROM tb_Entradas as tbE
WHERE tbE.DATA_ENTRADA = (SELECT MIN(tbE2.DATA_ENTRADA) FROM tb_Entradas as tbE2));
SET @QUANTIDADE = (SELECT
QUANTIDADE
FROM tb_Items_Entrada
WHERE ID_ENTRADA = @ID_ENTRADA);
SET @ID_LOTE = (SELECT
ID_LOTE
FROM tb_Items_Entrada
WHERE ID_ENTRADA = @ID_ENTRADA);
IF(@QUANTIDADE > @QTD)
BEGIN
SET @QUANTIDADE = @QUANTIDADE - @QTD;
IF(@QUANTIDADE != 0)
BEGIN
UPDATE
tb_Items_Entrada
SET
QUANTIDADE = @QUANTIDADE
WHERE
ID_ENTRADA = @ID_ENTRADA
AND ID_ITEM = @IDPRODUTO
AND ID_LOTE = @ID_LOTE
ENDDiscussão (6)
Carregando comentários...