SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBPEDIDO00IU FOR TBPEDIDO
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
DECLARE VARIABLE PAGAMENTO_DESCRICAO VARCHAR(100);
BEGIN
    IF(NEW.CLASSIFICACAO <> ' ')THEN
    BEGIN
        NEW.CLASSIFICACAO = TRIM(NEW.CLASSIFICACAO);
    END
    
    NEW.PEDIDO_CLIENTE = COALESCE(NEW.PEDIDO_CLIENTE,'');
    
    IF(INSERTING)THEN
    BEGIN
        --NEW.STATUS_ECOMMERCE = 2;
        
        IF((NEW.AUTORIZACAO_FINANCEIRO = 2 OR NEW.AUTORIZACAO_FINANCEIRO = 0) AND (NEW.AUTORIZACAO_SUPERVISOR = 2 OR NEW.AUTORIZACAO_SUPERVISOR = 0))THEN
        BEGIN
            --NEW.STATUS_ECOMMERCE = 3;
            EXECUTE PROCEDURE SPI_INTEGRACAO_API('TBPEDIDO_STATUS',NEW.PEDIDO,'A');
        END

        PAGAMENTO_DESCRICAO = '';
        IF(NEW.PAGAMENTO_FORMA IS NOT NULL)THEN
        BEGIN
           PAGAMENTO_DESCRICAO = COALESCE((SELECT FIRST 1 B.DESCRICAO FROM TBPAGAMENTO_FORMA B WHERE B.CODIGO = NEW.PAGAMENTO_FORMA),'');
        END

        IF(NEW.ECOMMERCE > 0 AND PAGAMENTO_DESCRICAO = '')THEN
        BEGIN
           NEW.SITUACAO               = 0;
           NEW.AUTORIZACAO_FINANCEIRO = 1;

           INSERT INTO TBPEDIDO_APROVACAO (PEDIDO_ID, USUARIO_ID, TIPO, STATUS, MOTIVO)
                VALUES(NEW.PEDIDO, FN_CURRENT_USER_ID(), 2, 4, 'PEDIDO IMPORTADO DO E-COMMERCE SEM FORMA DE PAGAMENTO REGISTRADA, CONFIRMA????O PELO SETOR FINANCEIRO EXIGIDA.');

           EXECUTE PROCEDURE SP_NOTIFICAR_PEDIDO(NEW.PEDIDO, 2, 1, '<P><U>MOTIVO(S) DE PEND??NCIA:</U><LI>PEDIDO IMPORTADO DO E-COMMERCE SEM FORMA DE PAGAMENTO REGISTRADA, CONFIRMA????O PELO SETOR FINANCEIRO EXIGIDA. </LI></P>');
        END
    END

    IF(UPDATING)THEN
    BEGIN
        IF(NEW.VINCULO_ID > 0)THEN
        BEGIN
           IF(OLD.ESTABELECIMENTO_CODIGO IS DISTINCT FROM NEW.ESTABELECIMENTO_CODIGO)THEN
           BEGIN
              EXCEPTION "..." ' PEDIDO ESTA VINCULADO!<BR> TROCA DE ESTABELECIMENTO CANCELADA.';
           END

           IF(OLD.CLIENTE_CODIGO IS DISTINCT FROM NEW.CLIENTE_CODIGO)THEN
           BEGIN
              EXCEPTION "..." ' PEDIDO ESTA VINCULADO!<BR> TROCA DE CLIENTE CANCELADA.';
           END

           IF(OLD.REPRESENTANTE_CODIGO IS DISTINCT FROM NEW.REPRESENTANTE_CODIGO)THEN
           BEGIN
              EXCEPTION "..." ' PEDIDO ESTA VINCULADO!<BR> TROCA DE REPRESENTANTE CANCELADA.';
           END

           IF(OLD.CLASSIFICACAO IS DISTINCT FROM NEW.CLASSIFICACAO)THEN
           BEGIN
              EXCEPTION "..." ' PEDIDO ESTA VINCULADO!<BR> TROCA DE PERFIL CANCELADA.';
           END
        END
    END

    IF(COALESCE(NEW.PRECO_NF_CF_ID,0) <= 0)THEN
    BEGIN
       NEW.PRECO_NF_CF_ID = COALESCE((SELECT FIRST 1 SBU.PRECO_NF_CF_ID FROM TBCLIENTE_SUBTIPO SBU WHERE SBU.ID = NEW.CLIENTE_SUB_TIPO_ID),0);
    END

    --IF(UPDATING AND NEW.STATUS_ECOMMERCE IS DISTINCT FROM OLD.STATUS_ECOMMERCE)THEN
    --BEGIN
    --    EXECUTE PROCEDURE SPI_INTEGRACAO_API('TBPEDIDO_STATUS',NEW.PEDIDO,'A');
    --END
END
^

SET TERM ; ^

