SET TERM ^ ;
CREATE OR ALTER PROCEDURE SPC_CASO_GRUPO_CLIENTES (
    EMPRESA_GRUPO_ID INTEGER,
    PAINEL_ID INTEGER,
    REPRESENTANTE_ID INTEGER = 0)
RETURNS (
    CASO_ID INTEGER,
    MOTIVO VARCHAR(1000),
    TIPO VARCHAR(1000),
    TIPO_DE_ORIGEM VARCHAR(1000),
    RESPONSAVEL VARCHAR(1000),
    STATUS VARCHAR(1000),
    PEDIDO VARCHAR(1000),
    FAT_PARCIAL VARCHAR(1000),
    IMPROCEDENTE VARCHAR(1000),
    ORIGEM_DO_CASO VARCHAR(1000),
    PRIORIDADE VARCHAR(1000),
    ASSUNTO VARCHAR(1000),
    DESCRICAO VARCHAR(8000),
    COMENTARIOS VARCHAR(8000),
    RETORNO_PCP VARCHAR(400),
    QUANTIDADE INTEGER,
    NOTA_FISCAL VARCHAR(100),
    MODELO VARCHAR(100),
    COR VARCHAR(100),
    TAMANHO VARCHAR(1000),
    NOME_DA_CONTA VARCHAR(1000),
    DATA_ABERTURA TIMESTAMP)
AS
DECLARE VARIABLE REGISTRO_ID INTEGER;
DECLARE VARIABLE V_TIPO INTEGER;
DECLARE VARIABLE VALOR VARCHAR(8000);
DECLARE VARIABLE CAMPO_ID INTEGER;
BEGIN

  FOR
    SELECT
        R.REGISTRO_ID,
        CR.DATAHORA_REGISTRO
    FROM TBCASO_REGISTRO_DETALHE R, TBCASO_REGISTRO CR, TBEMPRESA_GRUPO_CONTAS GP, TBCLIENTE CLI2
    WHERE R.CAMPO_ID = 20
    AND GP.EMPRESA_ID       = CLI2.CODIGO
    AND IIF(:REPRESENTANTE_ID > 0,CLI2.REPRESENTANTE_CODIGO = :REPRESENTANTE_ID, TRUE) = TRUE
    AND GP.EMPRESA_GRUPO_ID = :EMPRESA_GRUPO_ID
    AND R.VALOR = TRIM(GP.EMPRESA_ID)
    AND R.PAINEL_ID = :PAINEL_ID
    AND CR.ID = R.REGISTRO_ID
  INTO
    :REGISTRO_ID,
    :DATA_ABERTURA
  DO BEGIN
     CASO_ID = REGISTRO_ID;
     FOR
       SELECT
           TIPO,
           VALOR,
           ROW_NUMBER() OVER() AS CAMPO_ID
       FROM CASO_DETALHE(:PAINEL_ID, :REGISTRO_ID)
     INTO
        :V_TIPO,
        :VALOR,
        :CAMPO_ID
     DO BEGIN

         IF(CAMPO_ID = 01)THEN BEGIN :MOTIVO          = FN_ELIPSES(:VALOR,1000); END
         IF(CAMPO_ID = 02)THEN BEGIN :TIPO            = FN_ELIPSES(:VALOR,1000); END
         IF(CAMPO_ID = 03)THEN BEGIN :TIPO_DE_ORIGEM  = FN_ELIPSES(:VALOR,1000); END
         IF(CAMPO_ID = 04)THEN BEGIN :RESPONSAVEL     = FN_ELIPSES(:VALOR,1000); END
         IF(CAMPO_ID = 05)THEN BEGIN :STATUS          = FN_ELIPSES(:VALOR,1000); END
         IF(CAMPO_ID = 06)THEN BEGIN :PEDIDO          = FN_ELIPSES(:VALOR,1000); END
         IF(CAMPO_ID = 07)THEN BEGIN :FAT_PARCIAL     = FN_ELIPSES(:VALOR,1000); END
         IF(CAMPO_ID = 08)THEN BEGIN :IMPROCEDENTE    = FN_ELIPSES(:VALOR,1000); END
         IF(CAMPO_ID = 09)THEN BEGIN :ORIGEM_DO_CASO  = FN_ELIPSES(:VALOR,1000); END
         IF(CAMPO_ID = 10)THEN BEGIN :PRIORIDADE      = FN_ELIPSES(:VALOR,1000); END
         IF(CAMPO_ID = 11)THEN BEGIN :ASSUNTO         = FN_ELIPSES(:VALOR,1000); END
         IF(CAMPO_ID = 12)THEN BEGIN :DESCRICAO       = :VALOR; END
         IF(CAMPO_ID = 13)THEN BEGIN :COMENTARIOS     = :VALOR; END
         IF(CAMPO_ID = 14)THEN BEGIN :RETORNO_PCP     = :VALOR; END
         IF(CAMPO_ID = 15)THEN BEGIN :QUANTIDADE      = :VALOR; END
         IF(CAMPO_ID = 16)THEN BEGIN :NOTA_FISCAL     = :VALOR; END
         IF(CAMPO_ID = 17)THEN BEGIN :MODELO          = :VALOR; END
         IF(CAMPO_ID = 18)THEN BEGIN :COR             = :VALOR; END
         IF(CAMPO_ID = 19)THEN BEGIN :TAMANHO         = FN_ELIPSES(:VALOR,1000); END
         IF(CAMPO_ID = 20)THEN BEGIN :NOME_DA_CONTA   = FN_ELIPSES(:VALOR,1000); SUSPEND; END

     END
  END

END
^ SET TERM ; ^