Divida ao implementar stored procedure em controle de estoque

Firebird

31/01/2011

Colegas,
criei a stored procedure abaixo, na opção inserting eu sei que esta certo, mas na opção updating
eu tenho minhas duvidas, esta correto se eu implementar assim no meu controle de estoque?
Obrigado pela ajuda!!

SET TERM ^ ;
CREATE TRIGGER TR_TESTE_ESTOQUE FOR NF_ENTRADA
ACTIVE AFTER INSERT OR UPDATE POSITION 0
AS
BEGIN
IF (INSERTING) THEN
BEGIN
UPDATE PRODUTO SET QTDE_ESTOQUE = (QTDE_ESTOQUE + NEW.QTDE_ENTRADA) WHERE ID_PRODUTO = NEW.ID_PRODUTO;
END

IF (updating) THEN
BEGIN
UPDATE PRODUTO
SET QTDE_ESTOQUE = (QTDE_ESTOQUE - NEW.QTDE_ENTRADA)
WHERE ID_PRODUTO = NEW.ID_PRODUTO;
END

END^
SET TERM ; ^
Nilo Souza

Nilo Souza

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

31/01/2011

atualização de nota de entrada? confesso que nunca vi....

de qualquer forma você precisa eliminar o valor anterior e somar o novo valor.

IF (updating) THEN
BEGIN
UPDATE PRODUTO
SET QTDE_ESTOQUE = (QTDE_ESTOQUE - OLD.QTDE_ENTRADA + NEW.QTDE_ENTRADA)
WHERE ID_PRODUTO = NEW.ID_PRODUTO;
END
GOSTEI 0
Nilo Souza

Nilo Souza

31/01/2011

Não é isso, dou entrada na nota fiscal (nota de entrada) e ela atualiza o meu estoque, se eu atualizar o valor ai acontece o que vc corrigiu. Bem sou iniciante, mas se tiver alguma instrução será muito bem aceita.
Um grande abraço
GOSTEI 0
Nilo Souza

Nilo Souza

31/01/2011

atualização de nota de entrada? confesso que nunca vi....

de qualquer forma você precisa eliminar o valor anterior e somar o novo valor.

IF (updating) THEN
BEGIN
UPDATE PRODUTO
SET QTDE_ESTOQUE = (QTDE_ESTOQUE - OLD.QTDE_ENTRADA + NEW.QTDE_ENTRADA)
WHERE ID_PRODUTO = NEW.ID_PRODUTO;
END


É new.ID_PRODUTO mesmo? Pq o produto ja esta na tabela, apenas irei alterar o campo quantidade. Fiquei em duvida.
GOSTEI 0
POSTAR