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 intervaloHRFIM: hora de fim do intervaloIDTRAN: identifica o tipo do intervalo cadastrado0– Carga1– 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:
- Consulta a tabela
TMVSTRANSMISSOESno banco Cloud. - Verifica se há algum intervalo relacionado ao tipo de operação (Carga/Descarga) que se aplique ao horário atual.
- Se não existir restrição aplicável, a ação é permitida.
- 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
TMVSTRANSMISSOESpara 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:
- Identificar a query exata executada pelo SSM para o vendedor.
- Copiar a query.
- Executá-la diretamente no banco Cloud para validar se está retornando algum limite de horário.