segunda-feira, setembro 25, 2006

Minha cria!

Se programar fosse uma arte, essa seria minha obra prima:

CREATE TRIGGER "TRIGGER_UPD_PEDIDO_CONFIRMADO" FOR "PEDIDO_INTERNO"
ACTIVE AFTER UPDATE POSITION 0
as
declare variable mPROCOD Numeric(9,0);
declare variable mUNICOD Numeric(8,0);
declare variable mmQTD Numeric(7,2);
declare variable mPROCOD_TESTE Numeric(9,0);
declare variable mESTOQUEMINIMO Numeric(9,2);
declare variable mVALOR Numeric(9,2);
declare variable mCUSTO Numeric(9,2);
begin
if ((New.PEDSITUACAO <> Old.PEDSITUACAO) and (New.PEDSITUACAO = 'C')) then
begin
for select PROCOD, UNICOD, IPIQUANTIDADE
from ITENS_PI
where PEDCOD = New.PEDCOD
into :mPROCOD, :mUNICOD, :mQTD
do
begin
update ESTOQUE set ESTOQUE = ESTOQUE - :mQTD
where
FILCOD=New.FILCOD and
PROCOD=:mPROCOD and
UNICOD=:mUNICOD;


select PROCOD from ESTOQUE
where
FILCOD=New.FIL_FILCOD and
PROCOD=:mPROCOD and
UNICOD=:mUNICOD
into :mPROCOD_TESTE;
if (mPROCOD_TESTE is null) then
begin
select ESTOQUEMINIMO, VALOR, CUSTO
from ESTOQUE
where
FILCOD = New.FILCOD AND
PROCOD = :mPROCOD AND
UNICOD = :mUNICOD
into :mESTOQUEMINIMO, :mVALOR, :mCUSTO;
insert into ESTOQUE (FILCOD, PROCOD, UNICOD, ESTOQUE,
ESTOQUEMINIMO, VALOR, CUSTO) values
(New.FIL_FILCOD, :mPROCOD, :mUNICOD, :mQTD,
:mESTOQUEMINIMO, :mVALOR, :mCUSTO);
end
else
begin
update ESTOQUE set ESTOQUE = ESTOQUE + :mQTD
where FILCOD=New.FIL_FILCOD and PROCOD=:mPROCOD and UNICOD=:mUNICOD;
end
end
end
end
^

Nenhum comentário: