GARANTIR DESCONTO

Fórum Atualizando Estoque com vários status #572037

02/12/2016

0

Pessoal, preciso de ajuda, para desenvolver essa lógica. Eu tenho que atualizar um estoque que o produto pode está em 4 estados, mas o pedidos tb pode está em estados. Por exemplo:
Tabela Pedido com uma subtabela dos produtos relacionados, o pedido pode está como aguardanando, assinado, caminhao e entrega, só que dependendo do estado do pedido, a tabela produto tem 4 estados tb, disponivel, teste, rota, sistema. então aí vai a bomba: se eu entrar com um pedido novo, ele vai para sistema a quantidade de produtos do pedido, se eu alterar para rota, os produtos vão para rota... então, como eu faço para chamar uma trigger dentro de outra, porque existem mais validações, esse aqui é apenas um deles mais básico, que praticamente é chamar uma trigger dentro da outra... ou é procedure... alguém tem uma luz??? Delphi seattle e firebird 2.5. valew
Hermeson Gonçalves

Hermeson Gonçalves

Responder

Post mais votado

04/12/2016

Bom dia Hermeson.
No seu caso eu construiria uma procedure que seria chamada pela trigger.
Assim, você pode chamar várias procedures dentro de uma mesma trigger.

Osmar Filho

Osmar Filho
Responder

Gostei + 1

Mais Posts

04/12/2016

Hermeson Gonçalves

mas o problema é esse? tem como criar um while dentro da procedure, para ele atualizar todos os itens com o mesmo código? por exemplo, toda vez que alterar o status do pedido de aguardando para rota, ai ele buscar no banco de dados os itens ddaquele pedido, vai tirar do total disponivel para alocado? pq eu vou mexer na tabela pedidos, mas ele vai fazer a alteração na tabela subpedidos. deu para entender?
Responder

Gostei + 0

04/12/2016

Osmar Filho

Bom,
Você pode varrer os itens do pedido com uso de cursor.
No caso do Firebird, use o comando FOR SELECT

for select
<lista de campos>
from <tabela>
where <condicao>
into <lista de variáveis que receberão os campos>
do
begin
// SEU CÓDIGO AQUI

end

As variáveis devem declaradas e qdo usar no código deve ser precedida de dois pontos.
Ex.:

DECLARE VARIABLE dTOTAL DOUBLE;
:dTOTAL = 0;
Responder

Gostei + 1

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

Aceitar