ALTER TABLE TBCASO_STATUS
    ADD DESC_ABREVIADA VARCHAR(10) CHARACTER SET UTF8 DEFAULT '' COLLATE UTF8;

COMMENT ON COLUMN TBCASO_STATUS.DESC_ABREVIADA IS
'descrição abreviada utilizada na exibição da tabela';

/*****************************************************/
/*****************************************************/

DROP TRIGGER TBCASO_STATUS_BI;


SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_status_b01u for tbcaso_status
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

HISTORICO = '';

    IF(OLD.DESCRICAO <> NEW.DESCRICAO)THEN
    BEGIN
       HISTORICO = HISTORICO||' DESC:'||OLD.DESCRICAO||'->'||NEW.DESCRICAO;
    END

    IF(OLD.DESC_ABREVIADA <> NEW.DESC_ABREVIADA)THEN
    BEGIN
       HISTORICO = HISTORICO||' DESC.ABREV:'||OLD.DESC_ABREVIADA||'->'||NEW.DESC_ABREVIADA;
    END

    IF(OLD.TIPO <> NEW.TIPO)THEN
    BEGIN
       HISTORICO = HISTORICO||' TIPO:'||OLD.TIPO||'->'||NEW.TIPO;
    END

    IF(OLD.ABERTO <> NEW.ABERTO)THEN
    BEGIN
       HISTORICO = HISTORICO||' ABERTO:'||OLD.ABERTO||'->'||NEW.ABERTO;
    END

    IF(OLD.FECHADO <> NEW.FECHADO)THEN
    BEGIN
       HISTORICO = HISTORICO||' FECHADO:'||OLD.FECHADO||'->'||NEW.FECHADO;
    END

    IF(OLD.COR <> NEW.COR)THEN
    BEGIN
       HISTORICO = HISTORICO||' COR:'||OLD.COR||'->'||NEW.COR;
    END

    IF(OLD.ATENDIDO <> NEW.ATENDIDO)THEN
    BEGIN
       HISTORICO = HISTORICO||' ATENDIDO:'||OLD.ATENDIDO||'->'||NEW.ATENDIDO;
    END

IF(HISTORICO <> '') THEN
   BEGIN
     HISTORICO = 'STATUS:'|| FN_LPAD(NEW.ID,4,0)||' - '||NEW.DESCRICAO ||' ALTERADO'||HISTORICO;
     EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', NEW.PAINEL_ID,FN_ELIPSES(:HISTORICO,500));
   END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE trigger ttbcaso_status_b01iu for tbcaso_status
active before insert or update position 0
AS
DECLARE VARIABLE REG_ABERTO INTEGER;
DECLARE VARIABLE REG_FECHADO INTEGER;
DECLARE VARIABLE REG_ATENDIMENTO INTEGER;
BEGIN

    IF (NEW.ABERTO = 1) THEN
    BEGIN
        :REG_ABERTO      = COALESCE((SELECT FIRST 1 A.ID FROM TBCASO_STATUS A WHERE A.ABERTO = 1 AND A.PAINEL_ID = NEW.PAINEL_ID AND A.ID <> OLD.ID), 0);
    
        IF (COALESCE(:REG_ABERTO, 0) > 0) THEN
        BEGIN
            EXCEPTION "..." 'STATUS: '||FN_LPAD(:REG_ABERTO, 4, '0')||' JA DEFINIDO COMO PADRAO DE ABERTURA!';
        END
    END

    IF (NEW.FECHADO = 1) THEN
    BEGIN
        :REG_FECHADO     = COALESCE((SELECT FIRST 1 A.ID FROM TBCASO_STATUS A WHERE A.FECHADO = 1 AND A.PAINEL_ID = NEW.PAINEL_ID AND A.ID <> OLD.ID), 0);

        IF (COALESCE(:REG_FECHADO, 0) > 0) THEN
        BEGIN
            EXCEPTION "..." 'STATUS: '||FN_LPAD(:REG_FECHADO, 4, '0')||' JA DEFINIDO COMO PADRAO DE FECHAMENTO!';
        END
    END

    IF (NEW.ATENDIDO = 1) THEN
    BEGIN
        :REG_ATENDIMENTO = COALESCE((SELECT FIRST 1 A.ID FROM TBCASO_STATUS A WHERE A.ATENDIDO = 1 AND A.PAINEL_ID = NEW.PAINEL_ID AND A.ID <> OLD.ID), 0);

        IF (COALESCE(:REG_ATENDIMENTO, 0) > 0) THEN
        BEGIN
            EXCEPTION "..." 'STATUS: '||FN_LPAD(:REG_ATENDIMENTO, 4, '0')||' JA DEFINIDO COMO PADRAO DE ATENDIMENTO!';
        END
    END
END
^

SET TERM ; ^

/*****************************************************/
/*****************************************************/

CREATE TABLE TBCASO_MOTIVO_ENVOLVIDOS (
    ID INTEGER NOT NULL,
    PAINEL_ID INTEGER,
	MOTIVO_ID INTEGER,
    USUARIO_ID INTEGER);

ALTER TABLE TBCASO_MOTIVO_ENVOLVIDOS
ADD CONSTRAINT PK_TBCASO_MOTIVO_ENVOLVIDOS
PRIMARY KEY (ID);


CREATE SEQUENCE GTBCASO_MOTIVO_ENVOLVIDOS;

CREATE INDEX ITBCASO_MOTIVO_ENVOLVIDOS_03
ON TBCASO_MOTIVO_ENVOLVIDOS (USUARIO_ID);

CREATE INDEX ITBCASO_MOTIVO_ENVOLVIDOS_02
ON TBCASO_MOTIVO_ENVOLVIDOS (MOTIVO_ID);

CREATE INDEX ITBCASO_MOTIVO_ENVOLVIDOS_01
ON TBCASO_MOTIVO_ENVOLVIDOS (PAINEL_ID);


SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_motivo_envolvidos_b01i for tbcaso_motivo_envolvidos
active before insert position 0
AS
BEGIN
    IF (COALESCE(NEW.ID, 0) = 0) THEN
        NEW.ID = GEN_ID(GTBCASO_MOTIVO_ENVOLVIDOS, 1);
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_motivo_envolvidos_b02i for tbcaso_motivo_envolvidos
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE NEW_USUARIO VARCHAR(500);
DECLARE VARIABLE NEW_MOTIVO VARCHAR(500);
BEGIN

    HISTORICO = '';

    NEW_MOTIVO  = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 4, '0')||' - '||A.DESCRICAO FROM TBCASO_MOTIVO A WHERE A.ID = NEW.MOTIVO_ID), '');
    NEW_USUARIO = COALESCE((SELECT FIRST 1 FN_LPAD(B.USUARIO_ID, 4, '0')||' - '||B2.USUARIO FROM TBCASO_USUARIOS B INNER JOIN TBUSUARIO B2 ON B2.CODIGO = B.USUARIO_ID WHERE B.USUARIO_ID = NEW.USUARIO_ID), '');

    IF (NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' USUARIO: '||NEW_USUARIO||' VINCULADO AO MOTIVO: '||NEW_MOTIVO||'';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', NEW.PAINEL_ID, FN_ELIPSE(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_motivo_envolvidos_b01u for tbcaso_motivo_envolvidos
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OLD_MOTIVO VARCHAR(500);
DECLARE VARIABLE NEW_MOTIVO VARCHAR(500);
DECLARE VARIABLE OLD_USUARIO VARCHAR(500);
DECLARE VARIABLE NEW_USUARIO VARCHAR(500);
BEGIN

    HISTORICO = '';

    OLD_MOTIVO  = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 4, '0')||' - '||A.DESCRICAO FROM TBCASO_MOTIVO A WHERE A.ID = OLD.MOTIVO_ID), '');
    NEW_MOTIVO  = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 4, '0')||' - '||A.DESCRICAO FROM TBCASO_MOTIVO A WHERE A.ID = NEW.MOTIVO_ID), '');
    OLD_USUARIO = COALESCE((SELECT FIRST 1 FN_LPAD(B.USUARIO_ID, 4, '0')||' - '||B2.USUARIO FROM TBCASO_USUARIOS B INNER JOIN TBUSUARIO B2 ON B2.CODIGO = B.USUARIO_ID WHERE B.USUARIO_ID = OLD.USUARIO_ID), '');
    NEW_USUARIO = COALESCE((SELECT FIRST 1 FN_LPAD(B.USUARIO_ID, 4, '0')||' - '||B2.USUARIO FROM TBCASO_USUARIOS B INNER JOIN TBUSUARIO B2 ON B2.CODIGO = B.USUARIO_ID WHERE B.USUARIO_ID = NEW.USUARIO_ID), '');

    IF (OLD.MOTIVO_ID <> NEW.MOTIVO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' MOTIVO:'||OLD_MOTIVO||'->'||NEW_MOTIVO;
    END

    IF (OLD.USUARIO_ID <> NEW.USUARIO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' USUARIO:'||OLD_USUARIO||'->'||NEW_USUARIO;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'USUARIO: '||NEW_USUARIO||' DO MOTIVO: '||NEW_MOTIVO||' ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', OLD.PAINEL_ID, FN_ELIPSE(HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_motivo_envolvidos_b01d for tbcaso_motivo_envolvidos
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OLD_USUARIO VARCHAR(500);
DECLARE VARIABLE OLD_MOTIVO VARCHAR(500);
BEGIN

    HISTORICO = '';

    OLD_MOTIVO  = COALESCE((SELECT FIRST 1 FN_LPAD(A.ID, 4, '0')||' - '||A.DESCRICAO FROM TBCASO_MOTIVO A WHERE A.ID = OLD.MOTIVO_ID), '');
    OLD_USUARIO = COALESCE((SELECT FIRST 1 FN_LPAD(B.USUARIO_ID, 4, '0')||' - '||B2.USUARIO FROM TBCASO_USUARIOS B INNER JOIN TBUSUARIO B2 ON B2.CODIGO = B.USUARIO_ID WHERE B.USUARIO_ID = OLD.USUARIO_ID), '');

    IF (OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' USUARIO: '||OLD_USUARIO||' DESVICULADO AO MOTIVO: '||OLD_MOTIVO||'';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', OLD.PAINEL_ID, FN_ELIPSE(HISTORICO, 500));
    END
END
^

SET TERM ; ^



SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_motivo_b02d for tbcaso_motivo
active before delete position 1
AS
BEGIN
   IF(OLD.ID > 0) THEN
   BEGIN
      DELETE FROM TBCASO_TIPO A WHERE A.MOTIVO_ID = OLD.ID;
      DELETE FROM TBCASO_MOTIVO_ENVOLVIDOS B WHERE B.MOTIVO_ID = OLD.ID AND B.PAINEL_ID = OLD.PAINEL_ID;
   END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_usuarios_b02d for tbcaso_usuarios
active before delete position 1
AS
BEGIN
   IF(OLD.ID > 0)THEN
   BEGIN
      DELETE FROM TBCASO_MOTIVO_ENVOLVIDOS A WHERE A.PAINEL_ID = OLD.PAINEL_ID AND A.USUARIO_ID = OLD.USUARIO_ID;
   END
END
^

SET TERM ; ^

/*****************************************************/
/*****************************************************/

ALTER TABLE TBCASO_VISUALIZACAO_CAMPO
    ADD COR VARCHAR(10) CHARACTER SET UTF8 DEFAULT '' COLLATE UTF8;

COMMENT ON COLUMN TBCASO_VISUALIZACAO_CAMPO.COR IS
'cor da coluna na tabela';


SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_visualizacao_campo_b01u for tbcaso_visualizacao_campo
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

HISTORICO = '';

    IF(OLD.CAMPO_ID <> NEW.CAMPO_ID)THEN
    BEGIN
       HISTORICO = HISTORICO||' CAMPO:'||OLD.CAMPO_ID||'->'||NEW.CAMPO_ID;
    END

    IF(OLD.VISIVEL <> NEW.VISIVEL)THEN
    BEGIN
       HISTORICO = HISTORICO||' VISIVEL:'||OLD.VISIVEL||'->'||NEW.VISIVEL;
    END 

    IF(OLD.ORDEM <> NEW.ORDEM)THEN
    BEGIN
       HISTORICO = HISTORICO||' ORDEM:'||OLD.ORDEM||'->'||NEW.ORDEM;
    END

    IF(OLD.CAMPO <> NEW.CAMPO)THEN
    BEGIN
       HISTORICO = HISTORICO||' CAMPO TAB:'||OLD.CAMPO||'->'||NEW.CAMPO;
    END

    IF(OLD.COR <> NEW.COR)THEN
    BEGIN
       HISTORICO = HISTORICO||' COR TAB:'||OLD.COR||'->'||NEW.COR;
    END

IF(HISTORICO <> '') THEN
   BEGIN
     HISTORICO = 'VISUAL:'||FN_LPAD(NEW.ID,4,0)||' ALTERADA'||HISTORICO;
     EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', NEW.PAINEL_ID,FN_ELIPSES(:HISTORICO,500));
   END
END
^

SET TERM ; ^

/*****************************************************/
/*****************************************************/
/*****************************************************/

ALTER TABLE TBCASO_PAINEL_CONF
    ADD TAM_PX_CAMPO INTEGER;

COMMENT ON COLUMN TBCASO_PAINEL_CONF.TAM_PX_CAMPO IS
'tamanho em px do campo, quando TAMANHO = 4';


SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_painel_conf_b01u for tbcaso_painel_conf
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

HISTORICO = '';

    IF(OLD.ORDEM <> NEW.ORDEM)THEN
    BEGIN
       HISTORICO = HISTORICO||' ORDEM:'||OLD.ORDEM||'->'||NEW.ORDEM;
    END

    IF(OLD.DESCRICAO <> NEW.DESCRICAO)THEN
    BEGIN
       HISTORICO = HISTORICO||' DESC:'||OLD.DESCRICAO||'->'||NEW.DESCRICAO;
    END

    IF(OLD.TIPO <> NEW.TIPO)THEN
    BEGIN
       HISTORICO = HISTORICO||' TIPO:'||OLD.TIPO||'->'||NEW.TIPO;
    END

    IF(OLD.STATUS <> NEW.STATUS)THEN
    BEGIN
       HISTORICO = HISTORICO||' STATUS:'||OLD.STATUS||'->'||NEW.STATUS;
    END

    IF(OLD."DEFAULT" <> NEW."DEFAULT")THEN
    BEGIN
       HISTORICO = HISTORICO||' DEFAULT:'||OLD."DEFAULT"||'->'||NEW."DEFAULT";
    END

    IF(OLD."MIN" <> NEW."MIN")THEN
    BEGIN
       HISTORICO = HISTORICO||' MIN:'||OLD."MIN"||'->'||NEW."MIN";
    END

    IF(OLD."MAX" <> NEW."MAX")THEN
    BEGIN
       HISTORICO = HISTORICO||' MAX:'||OLD."MAX"||'->'||NEW."MAX";
    END

    IF(OLD.TAMANHO <> NEW.TAMANHO)THEN
    BEGIN
       HISTORICO = HISTORICO||' TAMANHO:'||OLD.TAMANHO||'->'||NEW.TAMANHO;
    END

    IF(OLD.TAM_PX_CAMPO <> NEW.TAM_PX_CAMPO)THEN
    BEGIN
       HISTORICO = HISTORICO||' TAM PX:'||OLD.TAM_PX_CAMPO||'->'||NEW.TAM_PX_CAMPO;
    END

    IF(OLD.REQUERED <> NEW.REQUERED)THEN
    BEGIN
       HISTORICO = HISTORICO||' REQ:'||OLD.REQUERED||'->'||NEW.REQUERED;
    END

    IF(OLD.VINCULO <> NEW.VINCULO)THEN
    BEGIN
       HISTORICO = HISTORICO||' VINCULO:'||OLD.VINCULO||'->'||NEW.VINCULO;
    END

    IF(OLD.STEP <> NEW.STEP)THEN
    BEGIN
       HISTORICO = HISTORICO||' STEP:'||OLD.STEP||'->'||NEW.STEP;
    END

    IF(OLD.GRUPO_ID <> NEW.GRUPO_ID)THEN
    BEGIN
       HISTORICO = HISTORICO||' AGRUP:'||OLD.GRUPO_ID||'->'||NEW.GRUPO_ID;
    END

    IF(OLD.VAR_NOME <> NEW.VAR_NOME)THEN
    BEGIN
       HISTORICO = HISTORICO||' VARIAVEL:'||OLD.VAR_NOME||'->'||NEW.VAR_NOME;
    END

    IF(OLD.CAMPO_GRAVAR <> NEW.CAMPO_GRAVAR)THEN
    BEGIN
       HISTORICO = HISTORICO||' GRAVAR:'||OLD.CAMPO_GRAVAR||'->'||NEW.CAMPO_GRAVAR;
    END

    IF(OLD.CAMPO_VISUALIZAR <> NEW.CAMPO_VISUALIZAR)THEN
    BEGIN
       HISTORICO = HISTORICO||' VISUALIZAR:'||OLD.CAMPO_VISUALIZAR||'->'||NEW.CAMPO_VISUALIZAR;
    END

    IF(OLD.AUTOLOAD <> NEW.AUTOLOAD)THEN
    BEGIN
       HISTORICO = HISTORICO||' AUTOLOAD:'||OLD.AUTOLOAD||'->'||NEW.AUTOLOAD;
    END

IF(HISTORICO <> '') THEN
   BEGIN
     HISTORICO = 'PAINEL:'|| FN_LPAD(NEW.ID,4,0)||' - '||NEW.DESCRICAO ||' ALTERADO'||HISTORICO;
     EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', NEW.PAINEL_ID,FN_ELIPSES(:HISTORICO,500));
   END
END
^

SET TERM ; ^

/*****************************************************/
/*****************************************************/
/*****************************************************/

ALTER TABLE TBCASO_CAMPOS_AGRUPAMENTO
    ADD COR VARCHAR(10) CHARACTER SET UTF8 DEFAULT '#337ab7' COLLATE UTF8,
	ADD OBSERVACAO VARCHAR(500) CHARACTER SET UTF8 DEFAULT '' COLLATE UTF8;

COMMENT ON COLUMN TBCASO_CAMPOS_AGRUPAMENTO.COR IS
'cor da janela do agrupamento';

COMMENT ON COLUMN TBCASO_CAMPOS_AGRUPAMENTO.OBSERVACAO IS
'observacao de ajuda para preenchimento dos campos';


SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_campos_agrupamento_b01u for tbcaso_campos_agrupamento
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
BEGIN

	HISTORICO = '';

    IF (OLD.DESCRICAO <> NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DESC:'||OLD.DESCRICAO||'->'||NEW.DESCRICAO;
    END

    IF (OLD.COR <> NEW.COR) THEN
    BEGIN
        HISTORICO = HISTORICO||' COR:'||OLD.COR||'->'||NEW.COR;
    END

    IF (OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' OBSERVACAO ALTERADA!';
    END

    IF(HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'AGRUP:'|| FN_LPAD(NEW.ID, 4, '0')||' - '||NEW.DESCRICAO ||' ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', NEW.PAINEL_ID, FN_ELIPSE(:HISTORICO, 500));
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_campos_agrupamento_b02u for tbcaso_campos_agrupamento
active before update position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
BEGIN
    
    HISTORICO = '';

    IF (OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||FN_ELIPSE(OLD.OBSERVACAO, 200)||'->'||FN_ELIPSE(NEW.OBSERVACAO, 200);
    END

    IF(HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'OBSERVACAO ALTERADA:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL', NEW.PAINEL_ID, FN_ELIPSE(:HISTORICO,500));
    END
END
^

SET TERM ; ^

/************************************************************************/
/************************************************************************/

SET TERM ^ ;

create or alter procedure SPU_ENVOLVIDOS_CASOS_MOTIVOS (
    IPAINEL_ID integer not null,
    IMOTIVO_ID integer = 0)
as
declare variable M_ID integer;
declare variable M_PAINEL_ID integer;
declare variable CASO_ID integer;
declare variable ENVOLV_USUARIO_ID integer;
BEGIN

    IF (FN_IS_EMPTY(:IMOTIVO_ID) = '' OR COALESCE(:IMOTIVO_ID, 0) = 0) THEN
    BEGIN
        :IMOTIVO_ID = 0;
    END


    FOR
        SELECT
            M.ID,
            M.PAINEL_ID

        FROM TBCASO_MOTIVO M
        WHERE M.PAINEL_ID = :IPAINEL_ID
        AND M.STATUS = 1

        AND IIF(:IMOTIVO_ID = 0, (true = true), (M.ID = :IMOTIVO_ID))

    INTO
        :M_ID,
        :M_PAINEL_ID

    DO
    BEGIN

        FOR
            SELECT
                R.ID

            FROM TBCASO_REGISTRO R
            WHERE R.PAINEL_ID = :M_PAINEL_ID
            AND R.MOTIVO_ID = :M_ID
            AND R.FECHADO = 0

        INTO
            :CASO_ID

        DO
        BEGIN

            FOR
                SELECT
                    ME.USUARIO_ID
    
                FROM TBCASO_MOTIVO_ENVOLVIDOS ME
                INNER JOIN TBUSUARIO U ON U.CODIGO = ME.USUARIO_ID
                WHERE ME.PAINEL_ID = :M_PAINEL_ID
                AND ME.MOTIVO_ID = :M_ID
    
            INTO
                :ENVOLV_USUARIO_ID
    
            DO
            BEGIN
    
                UPDATE OR INSERT INTO TBCASO_ENVOLVIDOS (PAINEL_ID, CASO_ID, USUARIO_ID)
                    VALUES (:M_PAINEL_ID, :CASO_ID, :ENVOLV_USUARIO_ID)
                    MATCHING (PAINEL_ID, CASO_ID, USUARIO_ID);
    
            END
        END
    END
END
^

SET TERM ; ^

