QT_MAXPROVAS - Quantidade máxima de provas (experimentações) por horário nas locações
Tela: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Locações → GroupBox Parâmetros de Locações → campo Qtde Máxima de Provas por Horário (label
lblemUMFA001.dfm:10731-10743comCaption = 'Qtde Máxima de Provas por Horário', posicionado emLeft=44, Top=167; o editedtQT_MAXPROVASemUMFA001.dfm:10980-10999,Left=221, Top=163). Tabela:PARMFATUR.QT_MAXPROVASTipo: Numérico inteiro (quantidade de provas por janela de horário).DOM_INTEGERno DDL (docs/schema/tables/PARMFATUR.sql:173);TIntegerFieldno client (UdmMFA001.pas:224). OTDBEditnão possui máscara, formatação adicional nemHint; alinhamento doTFieldétaCenter(UdmMFA001.dfm:1638). Valor padrão:NULL— otabPARMFATURAfterInsertemUdmMFA001.pas:434-...não atribui valor inicial aQT_MAXPROVAS. O registro de parâmetros nasce sem limite configurado. Validação (MFA001): Não háOnValidatenotabPARMFATURQT_MAXPROVAS(UdmMFA001.dfm:1637-1641não expõeOnValidate). Qualquer inteiro — positivo, zero ou negativo — é aceito na tela de parâmetros.
O que o parâmetro faz
QT_MAXPROVAS foi projetado para armazenar a quantidade máxima de provas (experimentações de locação) que podem ser agendadas para o mesmo horário, funcionando em conjunto com o campo vizinho HR_INTERVALOAGEND (intervalo mínimo entre agendamentos) dentro do módulo de Locações do ERP.
No contexto do JunsoftERP, "prova" refere-se ao ato do cliente experimentar o item em locação (por exemplo, pneus de recapagem, produtos com regime de locação/teste disponibilizados na aba Locações). O parâmetro seria usado como limitador de capacidade: "a agenda só aceita N provas simultâneas em cada janela de horário".
:::warning Parâmetro configurado mas não consumido no código-fonte atual
A busca em todo o source/ e Scripts/ do JunsoftERP V2 não encontra nenhum consumidor de QT_MAXPROVAS fora da própria MFA001. Apenas os 4 arquivos da MFA001 referenciam o campo (SELECT/INSERT/UPDATE do PARMFATUR e declaração do TIntegerField). Nenhuma stored procedure em Scripts/ usa o campo. Nenhum módulo de locação, agendamento ou pedidos o lê.
Ou seja: o parâmetro pode ser preenchido em MFA001 e é persistido em PARMFATUR, mas nenhuma regra do ERP hoje reage ao valor. Trata-se de um campo reservado/planejado para funcionalidade futura de controle de agendamento de provas nas locações, ou de legado cujo consumidor foi removido.
:::
Telas impactadas
| Módulo | Código | Papel |
|---|---|---|
| Parâmetros de Faturamento | MFA001 | Produtora (única). Cadastra/edita o valor no campo edtQT_MAXPROVAS (aba Locações → GroupBox Parâmetros de Locações, UMFA001.dfm:10980) e o persiste via SELECT/INSERT/UPDATE de PARMFATUR em UdmMFA001.dfm (linhas 239, 2581, 2819, 3119). |
Nenhuma tela consumidora foi encontrada no código-fonte atual (source/). O grep QT_MAXPROVAS retorna apenas arquivos do próprio MFA001.
Procedures impactadas
Nenhuma stored procedure em Scripts/ referencia QT_MAXPROVAS (grep em D:/Desenvolvimento/JunsoftERP_V2/Scripts/ retornou zero matches).
Campos envolvidos
| Campo | Tabela | Papel |
|---|---|---|
QT_MAXPROVAS | PARMFATUR | Quantidade máxima de provas por horário (este parâmetro) |
HR_INTERVALOAGEND | PARMFATUR | Intervalo mínimo entre agendamentos — campo vizinho na mesma GroupBox, compõe o mesmo conjunto semântico de "agendamento de provas de locação" |
CD_TABLOCACAOLOC / CD_TROCASAILOC / CD_TROCAENTLOC | PARMFATUR | Demais parâmetros do grupo Locações (tabela de preços e movimentações contábeis de troca) |
Comportamento / Regra
Valor = NULL (padrão após inserção)
| Aspecto | Comportamento |
|---|---|
| Preenchimento em MFA001 | Campo nasce vazio no AfterInsert (não há default no UdmMFA001.pas:434). |
| Efeito funcional | Nenhum — não há leitor do campo no código-fonte atual. O valor nulo é apenas persistido em PARMFATUR.QT_MAXPROVAS. |
Resultado esperado: o ERP opera normalmente. Como nenhum módulo consulta QT_MAXPROVAS, a ausência do valor não restringe nem libera nada no fluxo atual de locações/agendamentos.
Valor = 0
| Aspecto | Comportamento |
|---|---|
| Validação em MFA001 | Aceito (não há OnValidate). |
| Efeito funcional | Nenhum — campo persistido como 0 mas não consumido. |
Resultado esperado: o ERP armazena PARMFATUR.QT_MAXPROVAS = 0 e prossegue normalmente. Se/quando uma rotina futura passar a consumir este parâmetro com a semântica sugerida pelo label ("máximo de provas por horário"), o valor 0 provavelmente significaria "nenhuma prova permitida por horário" (interpretação típica de tetos numéricos) — mas isso depende da implementação que for agregada no futuro.
Valor > 0 (ex.: 3)
Simulação passo a passo
Pré-requisitos do cenário:
PARMFATUR.QT_MAXPROVAS = 3(definido em MFA001 → Parâmetros → Locações).PARMFATUR.HR_INTERVALOAGEND = 00:30:00(intervalo mínimo de 30 minutos entre agendamentos, no mesmo GroupBox).- Empresa opera aluguel/locação de itens que incluem agendamento de "prova" (experimentação pelo cliente).
-
Em MFA001 → aba Parâmetros → sub-aba Locações → GroupBox Parâmetros de Locações → informe
Qtde Máxima de Provas por Horário = 3. Salve (F6). -
O valor é persistido via UPDATE em
PARMFATUR(UdmMFA001.dfm:2819 — 'QT_MAXPROVAS = :QT_MAXPROVAS'):UPDATE PARMFATUR SET QT_MAXPROVAS = 3, ... WHERE CD_EMPRESA = :CD_EMPRESA -
Nenhum módulo Delphi lê o valor. Ao abrir qualquer outra tela (incluindo as telas de locação, pedidos, agendamentos), o valor
3armazenado não produz nenhum efeito observável no comportamento atual do ERP. -
Efeito esperado caso a funcionalidade seja implementada no futuro (baseado na semântica do label "Qtde Máxima de Provas por Horário"):
- Na tela de agendamento de prova de locação, o sistema contaria quantas provas já estão agendadas para a janela de horário (definida por
HR_INTERVALOAGEND). ComCount < 3, aceitaria o novo agendamento; comCount >= 3, bloquearia com mensagem do tipo"Limite de N provas por horário atingido. Escolha outra janela.". - Essa lógica não está presente no código atual — é apenas a leitura semântica do par
QT_MAXPROVAS+HR_INTERVALOAGEND.
- Na tela de agendamento de prova de locação, o sistema contaria quantas provas já estão agendadas para a janela de horário (definida por
Resultado esperado hoje: o valor é apenas armazenado. Nenhum efeito de negócio é produzido até que um consumidor seja implementado.
:::info Campo reservado / placeholder
Configurar QT_MAXPROVAS na MFA001 não altera o comportamento do ERP na versão atual do código. Se você está tentando limitar provas/experimentações por horário e esperava que este parâmetro funcionasse, abra um chamado — a funcionalidade consumidora ainda não foi implementada (ou foi removida em algum momento da história do código).
:::
:::warning Sem validação de valor negativo em MFA001
Diferente de NR_ACESSOLIMITE e outros campos numéricos, QT_MAXPROVAS não possui OnValidate em UdmMFA001.pas. Valores negativos e zero são aceitos silenciosamente. Como o campo não é consumido, a ausência de validação não produz impacto prático — mas caso um consumidor seja implementado no futuro, a validação deveria ser adicionada em paralelo.
:::
Interações com outros parâmetros
HR_INTERVALOAGEND(PARMFATUR, mesmo GroupBox em MFA001) — define a janela de tempo sobre a qualQT_MAXPROVASseria aplicado. Os dois campos compõem semanticamente o par "capacidade (quantidade) × cadência (intervalo)" do agendamento de provas de locação. Hoje, tambémHR_INTERVALOAGENDnão é consultado por nenhum outro módulo encontrado nosource/.CD_TABLOCACAOLOC— tabela de preço usada nas locações; define quanto custa a locação/prova, mas não interage com o limite quantitativo deQT_MAXPROVAS.
Referências no Código Fonte
Delphi — MFA001 (cadastro do parâmetro — único local)
| Arquivo | Linhas | Papel |
|---|---|---|
source/MFA001/UMFA001.dfm | 10731-10743 | TLabel lbl com Caption = 'Qtde Máxima de Provas por Horário' (label do campo) |
source/MFA001/UMFA001.dfm | 10980-10999 | TDBEdit edtQT_MAXPROVAS com DataField = 'QT_MAXPROVAS', DataSource = dmMFA001.dsPARMFATUR, dentro de pagPARMAMETROS → PageParm → pagLocacao → GroupBox5 (Parâmetros de Locações) |
source/MFA001/UMFA001.pas | 338 | Declaração edtQT_MAXPROVAS: TDBEdit |
source/MFA001/UdmMFA001.pas | 224 | Declaração tabPARMFATURQT_MAXPROVAS: TIntegerField |
source/MFA001/UdmMFA001.pas | 434-... | tabPARMFATURAfterInsert não atribui default ao campo (nasce NULL) |
source/MFA001/UdmMFA001.dfm | 239 | SELECT de PARMFATUR inclui PARMFATUR.QT_MAXPROVAS |
source/MFA001/UdmMFA001.dfm | 1637-1641 | Definição do TIntegerField tabPARMFATURQT_MAXPROVAS (sem OnValidate) |
source/MFA001/UdmMFA001.dfm | 2581 | INSERT em PARMFATUR inclui :QT_MAXPROVAS |
source/MFA001/UdmMFA001.dfm | 2819 | UPDATE em PARMFATUR inclui QT_MAXPROVAS = :QT_MAXPROVAS |
source/MFA001/UdmMFA001.dfm | 3119 | SELECT alternativo (segundo dataset) de PARMFATUR inclui PARMFATUR.QT_MAXPROVAS |
Delphi — Consumidores
Nenhum encontrado. O grep QT_MAXPROVAS em todo o D:/Desenvolvimento/JunsoftERP_V2/source/ retornou matches apenas nos 4 arquivos da MFA001.
DDL
docs/schema/tables/PARMFATUR.sql:173—QT_MAXPROVAS DOM_INTEGER,(semNOT NULL, semDEFAULT→ permiteNULL).
SQL — Procedures
Nenhuma stored procedure em Scripts/ referencia QT_MAXPROVAS (grep em D:/Desenvolvimento/JunsoftERP_V2/Scripts/ retornou zero matches). O parâmetro não participa de nenhuma regra no banco de dados.