-- Para os que ainda estão em aberto, pegar o dispositivo que abriu o setor

EXECUTE BLOCK
AS
DECLARE VARIABLE CODIGO INTEGER;
DECLARE VARIABLE CODIGO_DISPOSITIVO INTEGER;
DECLARE VARIABLE CODIGO_MOBILE INTEGER;
BEGIN

  FOR
    SELECT DISTINCT SR.CODIGO
                  , TR.CODIGODISPOSITIVO
                  , TR.CODIGODISPOSITIVO_MOBILE
      FROM SETORES_REALIZADOS SR
      INNER JOIN TABELAS_REPOSITORIO TR ON SR.CODIGOVEICULO = TR.CODIGOVEICULO AND SR.CONTROLE = TR.SESSAO AND SR.DATAHORA_INICIO = TR.DATAHORA
      WHERE SR.DATAHORA_FIM IS NULL
        AND SR.CODIGODISPOSITIVOAPONTAMENTO IS NULL
      ORDER BY SR.CODIGOVEICULO, SR.CODIGOSETOR, TR.CODIGODISPOSITIVO_MOBILE NULLS LAST
      INTO :CODIGO,
           :CODIGO_DISPOSITIVO,
           :CODIGO_MOBILE
  DO
  BEGIN
    UPDATE SETORES_REALIZADOS SR
      SET SR.CODIGODISPOSITIVOAPONTAMENTO = COALESCE(:CODIGO_MOBILE, :CODIGO_DISPOSITIVO)
      WHERE SR.CODIGO = :CODIGO;
  END
END; 
