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(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^

CREATE OR ALTER trigger ttbpedido_b2d for tbpedido
active before delete position 2
AS
BEGIN
    IF ( COALESCE(OLD.REMESSA_ID,0) > 0 ) THEN
    BEGIN
        EXCEPTION "..." 'ESTE PEDIDO ESTA BLOQUEADO PARA EXCLUSAO POIS JA POSSUI REMESSA GERADA PARA ELE. REMESSA: ' || COALESCE((SELECT FIRST 1 R.REMESSA FROM VWREMESSA R WHERE R.REMESSA_ID = OLD.REMESSA_ID),'');
    END   

    IF(COALESCE(OLD.vinculo_id, 0) > 0)THEN
    BEGIN
       EXCEPTION "..." ' PEDIDO ESTA VINCULADO!<BR> EXCLUSAO CANCELADA.';
    END
END^
SET TERM ; ^