Atualizando Estoque com vários status

Delphi

Firebird

02/12/2016

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

Curtidas 0

Melhor post

Osmar Filho

Osmar Filho

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.
GOSTEI 1

Mais Respostas

Hermeson Gonçalves

Hermeson Gonçalves

02/12/2016

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?
GOSTEI 0
Osmar Filho

Osmar Filho

02/12/2016

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;
GOSTEI 1
POSTAR