Pular para o conteúdo principal

Controle de Transmissões

Este documento descreve o funcionamento técnico do módulo Controle de Transmissões, utilizado para limitar os horários em que o vendedor pode executar Carga e Descarga no SSM, com base em intervalos configurados no Station Web e validados por consultas ao banco Cloud.

Visão geral

O controle de transmissões funciona a partir de:

  • Intervalos de horário cadastrados no Station Web (horário inicial e final).
  • Persistência desses intervalos no banco Cloud, na tabela TMVSTRANSMISSOES.
  • Validação no SSM, por meio dos comandos:
    • HC (Carga)
    • HD (Descarga)

Quando o usuário tenta executar uma carga/descarga, o SSM roda o comando correspondente e verifica se existe algum intervalo que limite a ação no horário atual. Caso exista, o SSM exibe um alerta e bloqueia a execução.

Estrutura de dados

Os horários configurados no Station Web são armazenados na tabela TMVSTRANSMISSOES do banco Cloud, utilizando os campos:

  • HRINI: hora de início do intervalo
  • HRFIM: hora de fim do intervalo
  • IDTRAN: identifica o tipo do intervalo cadastrado
    • 0 – Carga
    • 1 – Descarga

⚠️ Atenção

A validação de horários só funcionará como limitador se o parâmetro global IDVDTR estiver diferente de Não (0).
Para habilitar o funcionamento, o parâmetro deve estar em 1.

Funcionamento no SSM

Comandos utilizados

No SSM, o módulo opera com base nos comandos:

  • HC: comando disparado quando o botão de Carga é acionado.
  • HD: comando disparado quando o botão de Descarga é acionado.

Esses comandos ficam no Script de Carga. Ao acionar carga/descarga, o SSM executa a query do comando correspondente para verificar se existe bloqueio para o horário atual.

Comportamento ao executar Carga/Descarga

Ao rodar o comando (HC ou HD), o SSM:

  1. Consulta a tabela TMVSTRANSMISSOES no banco Cloud.
  2. Verifica se há algum intervalo relacionado ao tipo de operação (Carga/Descarga) que se aplique ao horário atual.
  3. Se não existir restrição aplicável, a ação é permitida.
  4. Se existir restrição aplicável, o SSM bloqueia a ação e apresenta um alerta ao usuário.

Queries executadas

Os comandos HC e HD são queries SQL que consultam a tabela TMVSTRANSMISSOES. O retorno da query determina se o horário está permitido.

Query HC
SELECT HRINI,
HRFIM,
IDTRAN
FROM (
SELECT '' AS HRINI,
'' AS HRFIM,
'' AS IDTRAN,
'1' AS CASO -- Horário permitido, retorna linha vazia para o SSM
FROM (
SELECT TR1.HRINI AS HRINI,
TR1.HRFIM AS HRFIM,
TR1.IDTRAN AS IDTRAN
FROM TMVSTRANSMISSOES TR1
WHERE TR1.IDTRAN = '0'
AND CAST(TO_CHAR(CAST('<Data/Hora atual(YY-MM-dd - HH-MM-SS)>' AS TIMESTAMP), 'HH24:MI:SS') AS TIME) >= CAST(TR1.HRINI AS TIME)
AND CAST(TO_CHAR(CAST('<Data/Hora atual(YY-MM-dd - HH-MM-SS)>' AS TIMESTAMP), 'HH24:MI:SS') AS TIME) <= CAST(TR1.HRFIM AS TIME)
LIMIT 1
) T1
UNION
SELECT TR2.HRINI AS HRINI,
TR2.HRFIM AS HRFIM,
TR2.IDTRAN AS IDTRAN,
'2' AS CASO -- Horário NÃO permitido, retorna o próximo horário de início, se houver
FROM TMVSTRANSMISSOES TR2
WHERE TR2.IDTRAN = '0'
AND CAST(TO_CHAR(CAST('<Data/Hora atual(YY-MM-dd - HH-MM-SS)>' AS TIMESTAMP), 'HH24:MI:SS') AS TIME) < CAST(TR2.HRINI AS TIME)
UNION
SELECT T3.HRINI AS HRINI,
T3.HRFIM AS HRFIM,
T3.IDTRAN AS IDTRAN,
'3' AS CASO -- Horário NÃO permitido, retorna o primeiro horário de início
FROM (
SELECT TR3.HRINI AS HRINI,
TR3.HRFIM AS HRFIM,
TR3.IDTRAN AS IDTRAN
FROM TMVSTRANSMISSOES TR3
WHERE TR3.IDTRAN = '0'
ORDER BY TR3.HRINI ASC
) T3
) AS TR_FINAL
ORDER BY CASO ASC
LIMIT 1;
Query HD
SELECT HRINI,
HRFIM,
IDTRAN
FROM (
SELECT '' AS HRINI,
'' AS HRFIM,
'' AS IDTRAN,
'1' AS CASO -- Horário permitido, retorna linha vazia para o SSM
FROM (
SELECT TR1.HRINI AS HRINI,
TR1.HRFIM AS HRFIM,
TR1.IDTRAN AS IDTRAN
FROM TMVSTRANSMISSOES TR1
WHERE TR1.IDTRAN = '1'
AND CAST(TO_CHAR(CAST('<Data/Hora atual(YY-MM-dd - HH-MM-SS)>' AS TIMESTAMP), 'HH24:MI:SS') AS TIME) >= CAST(TR1.HRINI AS TIME)
AND CAST(TO_CHAR(CAST('<Data/Hora atual(YY-MM-dd - HH-MM-SS)>' AS TIMESTAMP), 'HH24:MI:SS') AS TIME) <= CAST(TR1.HRFIM AS TIME)
LIMIT 1
) T1
UNION
SELECT TR2.HRINI AS HRINI,
TR2.HRFIM AS HRFIM,
TR2.IDTRAN AS IDTRAN,
'2' AS CASO -- Horário NÃO permitido, retorna o próximo horário de início, se houver
FROM TMVSTRANSMISSOES TR2
WHERE TR2.IDTRAN = '1'
AND CAST(TO_CHAR(CAST('<Data/Hora atual(YY-MM-dd - HH-MM-SS)>' AS TIMESTAMP), 'HH24:MI:SS') AS TIME) < CAST(TR2.HRINI AS TIME)
UNION
SELECT T3.HRINI AS HRINI,
T3.HRFIM AS HRFIM,
T3.IDTRAN AS IDTRAN,
'3' AS CASO -- Horário NÃO permitido, retorna o primeiro horário de início
FROM (
SELECT TR3.HRINI AS HRINI,
TR3.HRFIM AS HRFIM,
TR3.IDTRAN AS IDTRAN
FROM TMVSTRANSMISSOES TR3
WHERE TR3.IDTRAN = '1'
ORDER BY TR3.HRINI ASC
) T3
) AS TR_FINAL
ORDER BY CASO ASC
LIMIT 1;

Interpretação do retorno das queries

A lógica de retorno usa o campo CASO para selecionar o resultado mais adequado:

  • CASO = 1: horário permitido (retorna linha vazia para o SSM).
  • CASO = 2: horário não permitido (retorna o próximo horário de início, se houver).
  • CASO = 3: horário não permitido (retorna o primeiro horário de início, usado como fallback).

⚠️ Atenção

Só haverá retorno efetivo (indicando limite/bloqueio) quando existir intervalo válido configurado na TMVSTRANSMISSOES para o tipo de transmissão (Carga/Descarga) avaliado.

Logs

Os logs relacionados à execução desses comandos ficam na Lambda:

  • /aws/lambda/sfv-mobile-lambda-update-commands-prod-us-east-2-main

Nos logs é possível:

  1. Identificar a query exata executada pelo SSM para o vendedor.
  2. Copiar a query.
  3. Executá-la diretamente no banco Cloud para validar se está retornando algum limite de horário.

Material de apoio

57046_1_RRM_SFV_validarHoraServidor