Fórum Trigger de Baixa de Estoque #40339

25/11/2003

0

Tenho o seguinte trigger que dá baixa no estoque durante minha venda em um PDV.

CREATE TRIGGER "Baixa_estoque" FOR "VDPDVITEM" 
ACTIVE AFTER INSERT POSITION 0
AS
begin
update CDPRODUTOS
 set
   estoatu = estoatu - new.qtde
 where codbarra = new.codbarra;
end  


Porem se estou vendendo no PDV e abro o cadastro no Retaguarda, mando alterar um produto que esteja sendo vendido dá erro de DeadLock.

Gostaria de mudar esse trigger.
Gostaria de ao dar um post na minha tabela de venda eles varesse a tabela item dando baixa no estoque.

Minhas tabelas.

[color=darkblue:d8baded4a2][b:d8baded4a2]VDAPDV[/b:d8baded4a2]
CODPDV
...[/color:d8baded4a2]
[color=green:d8baded4a2][b:d8baded4a2]
VDPDVITEM[/b:d8baded4a2]
CODPDV (ligação com a tabela VDAPDV)
QTDE
...[/color:d8baded4a2]

Não sei como fazer isso =T
poderia ser storeprocedure???
Não dá pra mim utilizar a opção CachedUpdate pois uso uma Query q soma a venda ... uso os componentes ibdatase+ibdatabase+ibtransactions
Valeuuuuu
:cry:


Fer

Fer

Responder

Posts

25/11/2003

Afarias

Para evitar os deadlocks mantenha as transações curtas.

Uma idéia seria manter a venda em ´memória´ (usando midas ou sei lá) e postar a venda (os items) apenas quando terminado!

Outra forma seria postar/commitar item a item ... neste caso, se a venda/item for cancelado, vc tem q ter um procedimento para isso.

Também mantenha as transações de alteração do cadastro de produtos curtas. dando um commit ou commitRetaing o mais breve possível após um Post.


T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar