SET TERM ^ ;
CREATE OR ALTER procedure SPC_CASO_CLIENTES (
    CLIENTE_ID integer,
    PAINEL_ID integer)
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
    where r.campo_id = 20
    and r.valor = trim(:CLIENTE_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 ; ^