ST_REPETESERVICO — Permite Repetir Serviços
Tela de configuração: OFI001 — Parâmetros da Oficina
Localização: Aba Ordem 1, campo chkST_REPETESERVICO
Tabela / Campo: PARMOFICINA.ST_REPETESERVICO
Tipo: CHAR(1) · Valor padrão: S (Sim)
Rótulo na tela: Permite Repetir Serviços [MOF001]
Telas impactadas
| Tela | Efeito |
|---|
| MOF001 — Ordem de Serviço | Ao informar o código de um serviço no item da OS, o sistema consulta PARMOFICINA.ST_REPETESERVICO. Se o valor for N, verifica se aquele serviço já existe na mesma OS e bloqueia a inclusão duplicada. |
Campos envolvidos
| Tabela | Campo | Função |
|---|
PARMOFICINA | ST_REPETESERVICO | Flag que controla a regra de duplicidade de serviços na OS |
ORDEMSERVITEM | CD_SERVICO | Campo consultado para detectar serviço já incluído na mesma OS |
Opções disponíveis
S — Permite repetir serviços (padrão)
| O que faz | Detalhe |
|---|
| Comportamento | O mesmo serviço pode ser incluído diversas vezes em uma mesma Ordem de Serviço. O sistema não verifica duplicidade. |
| Edição | Checkbox desmarcado = libera repetição |
| Valor padrão | S (configurado no evento AfterInsert do dataset tabPARMOFICINA) |
Simulação passo a passo
- Acesse OFI001 (Parâmetros da Oficina) → aba Ordem 1.
- Certifique-se de que o checkbox Permite Repetir Serviços esteja desmarcado (valor
S no banco).
- Salve os parâmetros, se necessário.
- Abra ou crie uma Ordem de Serviço em MOF001.
- Inclua um serviço (ex.: código
101 — Alinhamento) no primeiro item da OS.
- Avance para o próximo item e informe o mesmo código
101 novamente.
- O sistema aceita a inclusão sem mensagem de erro.
Resultado esperado: O serviço é incluído novamente na OS, gerando dois itens distintos com o mesmo código de serviço.
N — Bloqueia repetição de serviços
| O que faz | Detalhe |
|---|
| Comportamento | Ao incluir um serviço na OS, o sistema consulta ORDEMSERVITEM para verificar se o mesmo CD_SERVICO já existe naquela OS. Se existir, exibe alerta e impede a inclusão. |
| Edição | Checkbox marcado = bloqueia repetição |
| Regra SQL | SELECT CD_SERVICO FROM ORDEMSERVITEM WHERE CD_EMPRESA = :empresa AND NR_ORDEMSERVICO = :os AND CD_SERVICO = :servico — se retornar resultado, bloqueia. |
Simulação passo a passo
- Acesse OFI001 (Parâmetros da Oficina) → aba Ordem 1.
- Marque o checkbox Permite Repetir Serviços (valor
N no banco).
- Salve os parâmetros.
- Abra ou crie uma Ordem de Serviço em MOF001.
- Inclua um serviço (ex.: código
101 — Alinhamento) no primeiro item da OS.
- Avance para o próximo item e informe o mesmo código
101 novamente.
- O sistema exibe a mensagem: "Este Serviço já foi Informado na Ordem de Serviço!" e impede a inclusão.
Resultado esperado: O item não é criado. O foco permanece no campo CD_SERVICO para que o usuário informe um serviço diferente.
Excecao / Importante: A verificação de duplicidade ocorre somente na validação do campo CD_SERVICO (evento Validate em TdmMOF001.tabORDEMSERVITEMCD_SERVICOValidate). Se um serviço for copiado ou importado por outro mecanismo que não passe por essa validação, a regra pode não ser aplicada.
Tabela comparativa resumida
| Valor | Checkbox | Permite serviço repetido? | Validação em MOF001 |
|---|
S | Desmarcado | Sim — sem restrição | Nenhuma verificação de duplicidade |
N | Marcado | Não — bloqueia duplicata | Consulta ORDEMSERVITEM e exibe alerta |
Procedures impactadas
| Rotina | Arquivo | Linha | Evidência |
|---|
TdmMOF001.tabORDEMSERVITEMCD_SERVICOValidate | source/MOF001/UdmMOF001.pas | 2485 | if ( ParmOficina.Values['ST_REPETESERVICO'] = 'N' ) then |
TdmOFI001.tabPARMOFICINAAfterInsert | source/OFI001/UdmOFI001.pas | 364 | tabPARMOFICINAST_REPETESERVICO.AsString := 'S'; |
chkST_REPETESERVICOMouseMove | source/OFI001/UOFI001.pas | 749 | Evento de tooltip do checkbox |
Referências SQL diretas ao campo em Scripts/
Não foi encontrada referência direta ao campo ST_REPETESERVICO em procedures ou views SQL em Scripts/. As rotinas SQL listadas abaixo utilizam a tabela PARMOFICINA mas não citam o campo ST_REPETESERVICO:
| Procedure/View | Arquivo | Uso da tabela |
|---|
PARCELA_FINANC_MNF017 | Scripts/PARCELA_FINANC_MNF017.sql | JOIN em PARMOFICINA |
PARCELA_FINANCIAMENTO | Scripts/PARCELA_FINANCIAMENTO.sql | JOIN em PARMOFICINA |
REABRE_OS | Scripts/REABRE_OS.sql | SELECT em PARMOFICINA |
RETORNA_MOTIVOBLOQUEIO | Scripts/RETORNA_MOTIVOBLOQUEIO.sql | SELECT em PARMOFICINA |
RETORNA_PRECOITEM | Scripts/RETORNA_PRECOITEM.sql | SELECT em PARMOFICINA |
VERIFICA_BLOQUEIO | Scripts/VERIFICA_BLOQUEIO.sql | SELECT em PARMOFICINA |
VIEW_DOCUMENTOSBLOQUEADOS | Scripts/VIEW_DOCUMENTOSBLOQUEADOS.sql | JOIN em PARMOFICINA |
VIEW_ROF004 | Scripts/VIEW_ROF004.sql | SELECT em PARMOFICINA |
VIEW_ROF004B | Scripts/VIEW_ROF004B.sql | JOIN em PARMOFICINA |
VIEW_ROF004B_V2 | Scripts/VIEW_ROF004B_V2.sql | JOIN em PARMOFICINA |
VIEW_ROF008 | Scripts/VIEW_ROF008.sql | SELECT em PARMOFICINA |
Nota: A regra de negócio deste parâmetro é aplicada inteiramente na camada Delphi (evento Validate em MOF001), sem necessidade de lógica SQL adicional.