SET TERM ^ ;

CREATE trigger tbestoque_transacao_item_b05iu for tbestoque_transacao_item
active before insert or update position 5
AS
DECLARE VARIABLE EXIGE_PECA INTEGER;
DECLARE VARIABLE DESC_PRODUTO VARCHAR(200);
BEGIN

    IF(INSERTING OR (UPDATING AND NEW.PRODUTO_CODIGO <> OLD.PRODUTO_CODIGO)) THEN
    BEGIN
        :EXIGE_PECA = COALESCE((SELECT FIRST 1 F.EXIGE_PECA FROM TBPRODUTO P, TBFAMILIA F WHERE P.FAMILIA_ALTERNATIVA = F.CODIGO AND P.CODIGO = NEW.PRODUTO_CODIGO), 0);
    
        IF(COALESCE(:EXIGE_PECA, 0) = 1 AND COALESCE(NEW.REVISAO_CONTROLE, 0) = 0) THEN
        BEGIN
            :DESC_PRODUTO = COALESCE((SELECT FIRST 1 FN_LPAD(K.CODIGO, 7, '0')||' - '||K.DESCRICAO FROM TBPRODUTO K WHERE K.CODIGO = NEW.PRODUTO_CODIGO), '');
    
            EXCEPTION "..."'NAO E POSSIVEL REALIZAR A TRANSACAO DE ESTOQUE PARA O PRODUTO '||:DESC_PRODUTO||', POIS ELE EXIGE PECA VINCULADA';
        END
    END
    
END
^

SET TERM ; ^

COMMENT ON TRIGGER TBESTOQUE_TRANSACAO_ITEM_B05IU IS 'VALIDACAO PARA PRODUTOS COM PECAS VINCULADAS';

