SET TERM ^ ;

CREATE OR ALTER PROCEDURE SETORES_REALIZADOS_HISTORICO (
    CODIGOVEICULO DM_INTEIRO,
    DATA_INI DM_DATAHORA)
RETURNS (
    CODIGO TYPE OF COLUMN RASTREAMENTO_HISTORICO.CODIGO,
    DATAHORA TYPE OF COLUMN RASTREAMENTO_HISTORICO.DATAHORA,
    DATAHORA_GMT TYPE OF COLUMN RASTREAMENTO_HISTORICO.DATAHORA_GMT,
    LATITUDE TYPE OF COLUMN RASTREAMENTO_HISTORICO.LATITUDE,
    LONGITUDE TYPE OF COLUMN RASTREAMENTO_HISTORICO.LONGITUDE,
    VELOCIDADE TYPE OF COLUMN RASTREAMENTO_HISTORICO.VELOCIDADE,
    HODOMETRO TYPE OF COLUMN RASTREAMENTO_HISTORICO.HODOMETRO,
    HODOMETRO_SOBRA TYPE OF COLUMN RASTREAMENTO_HISTORICO.HODOMETRO_SOBRA,
    INFOSETOR CHAR(1),
    TRENA TYPE OF COLUMN RASTREAMENTO_HISTORICO.TRENA,
    ABERTURA_PORTA TYPE OF COLUMN RASTREAMENTO_HISTORICO.ABERTURA_PORTA,
    FECHAMENTO_PORTA TYPE OF COLUMN RASTREAMENTO_HISTORICO.FECHAMENTO_PORTA,
    EM_COLETA DM_LOGICO,
    SEQUENCIAL_CONTROLE_VEICULO TYPE OF COLUMN RASTREAMENTO_HISTORICO.SEQUENCIAL_CONTROLE_VEICULO)
AS
BEGIN
  FOR WITH HISTORICOS
    AS (SELECT CODIGO
             , DATAHORA
             ,
               CASE
                 WHEN DATAHORA_GMT IS NULL THEN DATEADD(3 HOUR TO DATAHORA)
                 ELSE DATAHORA_GMT
               END DATAHORA_GMT,
               LATITUDE
             , LONGITUDE
             , VELOCIDADE
             , HODOMETRO
             , HODOMETRO_SOBRA
             ,
               CASE
                 WHEN TRENA IS NULL THEN -1
                 ELSE TRENA
               END TRENA,
               ABERTURA_PORTA
             , FECHAMENTO_PORTA
             , SEQUENCIAL_CONTROLE_VEICULO
          FROM RASTREAMENTO_HISTORICO R
          WHERE CODIGOVEICULO = :CODIGOVEICULO
            AND DATAHORA_GMT > :DATA_INI
          ORDER BY 3
          ROWS 1500)
    SELECT H.CODIGO
         , H.DATAHORA
         , H.DATAHORA_GMT
         , H.LATITUDE
         , H.LONGITUDE
         , H.VELOCIDADE
         , H.HODOMETRO
         , H.HODOMETRO_SOBRA
         , 'H' INFOSETOR
         , H.TRENA
         , H.ABERTURA_PORTA
         , H.FECHAMENTO_PORTA
         ,
           CASE
             WHEN RHI.VALOR = 1 THEN 'T'
             ELSE 'F'
           END EMCOLETA
         , SEQUENCIAL_CONTROLE_VEICULO
      FROM HISTORICOS H
      LEFT JOIN RASTREAMENTO_HISTORICO_INFO RHI ON RHI.CODIGOHISTORICO = H.CODIGO AND RHI.IDENTIFICADOR = '46'
      ORDER BY 3, 9
      INTO :CODIGO,
           :DATAHORA,
           :DATAHORA_GMT,
           :LATITUDE,
           :LONGITUDE,
           :VELOCIDADE,
           :HODOMETRO,
           :HODOMETRO_SOBRA,
           :INFOSETOR,
           :TRENA,
           :ABERTURA_PORTA,
           :FECHAMENTO_PORTA,
           :EM_COLETA,
           :SEQUENCIAL_CONTROLE_VEICULO 
  DO
  BEGIN
    SUSPEND;
  END

END^

SET TERM ; ^

COMMENT ON PROCEDURE SETORES_REALIZADOS_HISTORICO IS '
08.02.2021 - Procedure retorna o histórico com a informação de coleta para o serviço de 
           integração de histórico com status de mobile para o novo serviço 
           de queima de pacman
           
02.03.2021 - adicionado o campo de controle de pacote de envio de histórico';
