Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2686 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

minha Procedure:

 

begin
   if ( :OPE = 'V_N') then
      begin
        for
         select
            T.codprod,
            T.qtdprod,
            p.kitstau
          from
            tab_item T
          left join tab_vend TS on (TS.codvend = t.codvend)
          left join tab_prod P on (P.codprod = t.codprod)
          where
            T.codvend =:codvend
        into
         :codprod, :qtdprod, :kit

        do
         begin
         if (KIT = 'N' ) then
           begin
             update tab_prod  set ESTPRODE = (ESTPRODE - :qtdprod)
             where codprod =:codprod;
           end
         else
           begin
             for
               select
                 i.intkite,
                 i.qtdikit
               from
                 tab_ikit i
               where
                 i.codprod =:codprod
            into
              :codprod1, :qtdprod1

            do
             update tab_prod  set ESTPRODE = (ESTPRODE -    (:qtdprod1 * :qtdprod ))
             where codprod =:codprod1;
             update tab_prod  set ESTPRODE = (ESTPRODE - :qtdprod)
             where codprod =:codprod;


           end

           end
      end
 

disparo quando ele salva a venda.. mas se abrir ele reabre o estoque

9 horas atrás, Marcelo Calvi Belanga disse:

@dreamsoft_PR depende muito de como seu aplicativo deve e quando baixar o estoque. Como o @Sérgio Assunção disse, é uma tarefa simples.

No meu caso faço através de trigger somente quando a venda é confirmada.

Como está essa sua SP? E quando você dispara ela?

e como vc usar essa triger em caso dele editar a venda e mudar os produtos ou deletar 

  • Membros Pro
Postado

Como eu disse anteriormente, disparo a TRIGGER somente na confirmação da minha venda. No INSERT ou UPDATE, verifico o estado de um campo chamado CONFIRMADO, na tabela MASTER e disparo essa TRIGGER através dele. Algo mais ou menos assim:

--SE A COMPRA ESTA SENDO CONFIRMADA
  if ((OLD.CONFIRMADO='False') AND (NEW.CONFIRMADO='True')) then
  begin
    FOR SELECT CODIGOPRODUTO, QUANTIDADE FROM COMPRAITENS
    WHERE COMPRAITENS.NUMEROCOMPRA=NEW.NUMEROCOMPRA
    INTO :CODPRO, :QTDE DO
    begin
      UPDATE PRODUTOS SET PRODUTOS.QUANTIDADE = COALESCE(PRODUTOS.QUANTIDADE,0) + COALESCE(:QTDE,0)
      WHERE CODIGOPRODUTO = :CODPRO;

.......continua.

Varia muito da necessidade de cada ERP...

  • Obrigado 1
Postado

humm.. certo digamos que ira cancelar ou mudar os itens depois que confirmou a venda.. vc usa a triger em modo update ? e como vc diferencia se esta sendo modificada para mais ou menos nos itens da venda(em caso de edição  ou cancelamento)

  • Membros Pro
Postado

Sim, minha TRIGGER é INSERT ou UPDATE.

Esse pequeno exemplo seria de entrada "COMPRA", para VENDA é só fazer ao contrário...

Se a compra é cancelada concorda que o campo CONFIRMADO muda de True para False? Como eu disse, existem várias formas e momentos de mexer no estoque.

Então, algo parecido com isso

 

....continua

--SE A COMPRA ESTA SENDO CANCELADA
  if ((OLD.CONFIRMADO='True') AND (NEW.CONFIRMADO='False')) then
  begin
    FOR SELECT CODIGOPRODUTO, QUANTIDADE FROM COMPRAITENS
    WHERE COMPRAITENS.NUMEROCOMPRA=NEW.NUMEROCOMPRA
    INTO :CODPRO, :QTDE DO
    begin
      UPDATE PRODUTOS SET PRODUTOS.QUANTIDADE = COALESCE(PRODUTOS.QUANTIDADE,0) - COALESCE(:QTDE,0)
      WHERE CODIGOPRODUTO = :CODPRO;

...continua

 

  • Obrigado 1
  • 4 semanas depois ...
Postado

Estoque realmente é algo muito importante para qualquer empresa, minha sugestão seria controlar o seu estoque via fixa kardex. Pois ela possui um dinâmica de histórico, isso facilita o acompanhamento do item que está sendo movimentado. Outra vantagem é o calculo do custo médio que pode ser feito na mesma fixa, alem de compor os livro fiscais exigido pelo fisco sendo esse o livro modelo 3.

 

Exemplo de uma fixa kardex.

fichaEstoque_devPcPlast.jpg

  • Este tópico foi criado há 2686 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...