SET TERM ^ ;

CREATE INDEX ITBPDV_CONF_TROCA_ITEM_06I
ON TBPDV_CONFERENCIA_TROCA_ITEM (PRE_PEDIDO_ITEM_ORIGEM)^

CREATE OR ALTER TRIGGER TBPDV_CONFERENCIA_ITEM_B01D FOR TBPDV_CONFERENCIA_ITEM
ACTIVE BEFORE DELETE POSITION 1
AS
DECLARE VARIABLE ITEM_DEVOLUCAO_ID INTEGER;
BEGIN
  IF(OLD.ID > 0) THEN
  BEGIN
    -- VALIDACAO PARA STATUS DA CONFERENCIA
    IF(OLD.SITUACAO = 3) THEN
    BEGIN
         EXCEPTION "..." 'CONFERENCIA JA VINCULADA EM UM CUPOM FISCAL. EXCLUSÃO CANCELADA.';
    END

    IF(OLD.SITUACAO = 4) THEN
    BEGIN
       EXCEPTION "..." 'ITEM SEQ.'||FN_LPAD(OLD.SEQUENCIA,3,0)||' ENCERRADO. EXCLUSÃO CANCELADA';
    END

    :ITEM_DEVOLUCAO_ID = COALESCE((SELECT FIRST 1 D.ID FROM TBPDV_CONFERENCIA_TROCA_ITEM D WHERE D.PRE_PEDIDO_ITEM_ORIGEM = OLD.ID),0);
    IF(ITEM_DEVOLUCAO_ID > 0)THEN
    BEGIN
       EXCEPTION "..." 'ITEM SEQ.'||FN_LPAD(OLD.SEQUENCIA,3,0)||' POSSUI TROCA VINCULADA. EXCLUSÃO CANCELADA';
    END

    EXECUTE PROCEDURE SPU_CONFERENCIA_ESTOQUE(OLD.PDV_CONFERENCIA_ID, OLD.ID, 'D');
  END
END^

^ SET TERM ; ^