SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPDV_CONFERENCIA_B02U FOR TBPDV_CONFERENCIA
ACTIVE BEFORE UPDATE POSITION 2
AS
DECLARE VARIABLE COLABORADOR_PADRAO INTEGER;
DECLARE VARIABLE GRUPO_CLIENTE_OLD INTEGER;
DECLARE VARIABLE GRUPO_CLIENTE_NEW INTEGER;
BEGIN   
    IF(OLD.ESTABELECIMENTO_ID IS DISTINCT FROM NEW.ESTABELECIMENTO_ID
    OR OLD.PDV_ID IS DISTINCT FROM NEW.PDV_ID
    OR OLD.CLIENTE_ID IS DISTINCT FROM NEW.CLIENTE_ID
    OR OLD.TABELA_PRECO_ID IS DISTINCT FROM NEW.TABELA_PRECO_ID
    OR OLD.LOCALIZACAO_ID IS DISTINCT FROM NEW.LOCALIZACAO_ID
    OR OLD.REPRESENTANTE_ID IS DISTINCT FROM NEW.REPRESENTANTE_ID
    OR OLD.CORRETOR_ID IS DISTINCT FROM NEW.CORRETOR_ID
    OR OLD.VENDEDOR_ID IS DISTINCT FROM NEW.VENDEDOR_ID
    OR OLD.COLABORADOR_ID IS DISTINCT FROM NEW.COLABORADOR_ID
    ) THEN
    BEGIN
        NEW.VERSAO_ALTERACAO = NEW.VERSAO_ALTERACAO + 1;
    END

    :COLABORADOR_PADRAO = COALESCE(FN_PARAMETRO('SISTEMA.COLABORADOR_PADRAO_PDV'),0);
    
    :GRUPO_CLIENTE_OLD  = COALESCE((SELECT FIRST 1 CONTA.EMPRESA_GRUPO_ID FROM TBEMPRESA_GRUPO_CONTAS CONTA WHERE CONTA.EMPRESA_ID = OLD.CLIENTE_ID),0);
    :GRUPO_CLIENTE_NEW  = COALESCE((SELECT FIRST 1 CONTA.EMPRESA_GRUPO_ID FROM TBEMPRESA_GRUPO_CONTAS CONTA WHERE CONTA.EMPRESA_ID = NEW.CLIENTE_ID),0);

    IF(OLD.CLIENTE_ID IS DISTINCT FROM NEW.CLIENTE_ID AND NEW.CLIENTE_ID <> :COLABORADOR_PADRAO
    AND (:GRUPO_CLIENTE_OLD <> :GRUPO_CLIENTE_NEW OR :GRUPO_CLIENTE_OLD = 0 AND :GRUPO_CLIENTE_NEW = 0)) THEN
    BEGIN
        UPDATE TBPDV_DEVOLUCAO_TROCA   TROCA SET TROCA.PRE_PEDIDO_ID = 0 WHERE TROCA.PRE_PEDIDO_ID = OLD.ID;

        UPDATE TBPDV_CONFERENCIA_TROCA TROCA SET TROCA.PRE_PEDIDO_ID = 0 WHERE TROCA.PRE_PEDIDO_ID = OLD.ID;
    END

    IF(OLD.COLABORADOR_ID IS DISTINCT FROM NEW.COLABORADOR_ID) THEN
    BEGIN
        UPDATE TBPDV_DEVOLUCAO_TROCA   TROCA SET TROCA.PRE_PEDIDO_ID = 0 WHERE TROCA.PRE_PEDIDO_ID = OLD.ID;

        UPDATE TBPDV_CONFERENCIA_TROCA TROCA SET TROCA.PRE_PEDIDO_ID = 0 WHERE TROCA.PRE_PEDIDO_ID = OLD.ID;
    END

END
^

SET TERM ; ^

