SET TERM ^ ;

CREATE trigger ttbpdv_conferencia_mov_b09i for tbpdv_conferencia_movimentacao
active before insert position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (NEW.SITUACAO = 1) THEN
    BEGIN
        HISTORICO = HISTORICO||'ABERTURA DE MOVIMENTACAO '||FN_LPAD(NEW.ID, 4, '0')||' REALIZADA';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPDV_CONFERENCIA', NEW.PRE_PEDIDO_ID, HISTORICO);
    END
    
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE trigger ttbpdv_conferencia_mov_b09u for tbpdv_conferencia_movimentacao
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.SITUACAO <> NEW.SITUACAO AND NEW.SITUACAO = 2) THEN
    BEGIN
        HISTORICO = HISTORICO||'FECHAMENTO DE MOVIMENTACAO '||FN_LPAD(NEW.ID, 4, '0')||' REALIZADO';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPDV_CONFERENCIA', NEW.PRE_PEDIDO_ID, HISTORICO);
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger tbpdv_conferencia_b01d for tbpdv_conferencia
active before delete position 1
AS
DECLARE VARIABLE VINCULO_ID INTEGER;
BEGIN
  IF(OLD.ID > 0) THEN
  BEGIN
        DELETE FROM TBPDV_CONFERENCIA_ITEM T WHERE T.PDV_CONFERENCIA_ID = OLD.ID;

        DELETE FROM TBPDV_CONFERENCIA_MOVIMENTACAO T WHERE T.PRE_PEDIDO_ID = OLD.ID;

        UPDATE TBPDV_DEVOLUCAO_TROCA   TR SET TR.PRE_PEDIDO_ID = 0 WHERE TR.PRE_PEDIDO_ID = OLD.ID;

        UPDATE TBPDV_CONFERENCIA_TROCA TR SET TR.PRE_PEDIDO_ID = 0 WHERE TR.PRE_PEDIDO_ID = OLD.ID;

        IF (OLD.CODIGO_PED > 0) THEN
        BEGIN
        
            :VINCULO_ID = COALESCE((SELECT FIRST 1 A.ID FROM TBCATALOGO_PRODUTO_VINCULO A WHERE A.CODIGO_PED = OLD.CODIGO_PED AND A.PDV_CONFERENCIA_ID = OLD.ID), 0);

            IF (:VINCULO_ID > 0) THEN
            BEGIN
                DELETE FROM TBCATALOGO_PRODUTO_VINCULO WHERE ID = :VINCULO_ID;
            END

        END
  END
END
^

SET TERM ; ^

