Parâmetro de Modelo de Ordem de Serviço
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Pedidos / O.S. → Opção 1 → "Modelo Ordem Serviço" Tabela:
PARMFATUR.ST_ORDEMSERVICOValor padrão:H(Horas Trabalhadas)
Atenção: Este parâmetro é homônimo do campo
ORDEMSERVICO.ST_ORDEMSERVICO, que guarda a situação da OS (A=Aberta, F=Fechada, B=Bloqueada, C=Cancelada, P=Pendente). Nesta documentação, o foco é exclusivamente o parâmetro de configuraçãoPARMFATUR.ST_ORDEMSERVICO, que define o modelo/tipo de medição da Ordem de Serviço.
Telas impactadas
| Módulo | Código | Descrição |
|---|---|---|
| Parâmetros de Faturamento | MFA001 | Tela única que lê e grava o parâmetro diretamente (controla visibilidade de ST_OBRIGATECNICO) |
| Aplicação de Serviços / OS Metal | MPD005 | Tela indicada como impactada no rótulo de apoio [MPD005] em MFA001 (consome ST_OBRIGATECNICO, que por sua vez só pode ser habilitado quando ST_ORDEMSERVICO = 'H') |
Campos envolvidos
| Campo | Tabela | Descrição |
|---|---|---|
ST_ORDEMSERVICO | PARMFATUR | Define o modelo de medição da OS (H/K/O) |
ST_OBRIGATECNICO | PARMFATUR | Sub-parâmetro dependente: só é visível/editável quando ST_ORDEMSERVICO = 'H'; obriga o técnico/mecânico na aba de Horas Trabalhadas da OS (MPD005) |
NR_KILOMETRAGEM | ORDEMSERVICO | Quilometragem registrada na OS (relevante para o modo K) |
ORDEMSERVHORA.CD_PESSOA | ORDEMSERVHORA | Técnico/mecânico das horas trabalhadas (validação depende de ST_OBRIGATECNICO) |
Opções disponíveis
O componente é um
TwwDBComboBoxcomStyle = csDropDownList(somente seleção; sem digitação livre). As três opções abaixo são exatamente as strings definidas emUMFA001.dfm(linhas 8477-8480):
Horas Trabalhadas→HControle de KM→KControle de Horímetro→O
H - Horas Trabalhadas
| O que faz | Detalhe |
|---|---|
| Modelo de medição | OS baseada em horas trabalhadas por técnico/mecânico |
Sub-parâmetro ST_OBRIGATECNICO | Visível e editável em MFA001 (label "Horas Trabalhadas Obrigatório [MPD005]") |
| Efeito colateral em MFA001 | lblObrigaTecnico.Visible := True e cmbST_Obrigatecnico.Visible := True |
| Gravação (AfterPost) | Só permite manter ST_OBRIGATECNICO com valor diferente de N quando ST_ORDEMSERVICO = 'H' (ver UMFA001.pas:1052-1056) |
| Efeito em MPD005 | Se o administrador também habilitar ST_OBRIGATECNICO = 'S', a aba de Horas Trabalhadas passa a exigir um técnico em cada registro (UdmMPD005.pas:1870 e UMPD005.pas:1838) |
Simulação passo a passo
- Vá em MFA001 → aba Parâmetros de Pedidos/Ordem de Serviço → combo Modelo Ordem Serviço (
cmbST_ORDEMSERVICO) - Selecione
Horas Trabalhadas - Imediatamente após a seleção, o label "Horas Trabalhadas Obrigatório [MPD005]" e o combo
cmbST_Obrigatecnicoficam visíveis (cmbST_ORDEMSERVICOChange,UMFA001.pas:2517-2530) - Defina
ST_OBRIGATECNICO = 'S'(Sim) se desejar exigir técnico nas Horas Trabalhadas - Salve os parâmetros (F6)
- Abra a tela MPD005 (Aplicação/OS)
- Ao gravar um registro na aba Horas Trabalhadas (
tabORDEMSERVHORA), se oCD_PESSOA(técnico) estiver em branco, o sistema direciona o foco para a aba e impede o salvamento (UdmMPD005.pas:1870-1876,UMPD005.pas:1838)
Resultado esperado: A OS passa a operar no modelo de horas trabalhadas. O administrador ganha o controle adicional de obrigar (ou não) o informe do técnico em cada apropriação de horas.
Este é o valor padrão atribuído em
TdmMFA001.tabPARMFATURAfterInsert(UdmMFA001.pas:463).
K - Controle de KM
| O que faz | Detalhe |
|---|---|
| Modelo de medição | OS baseada em quilometragem do veículo (campo ORDEMSERVICO.NR_KILOMETRAGEM) |
Sub-parâmetro ST_OBRIGATECNICO | Invisível em MFA001 e forçado a N ao salvar (UMFA001.pas:1052-1056) |
| Efeito colateral em MFA001 | cmbST_Obrigatecnico.Value := 'N', lblObrigaTecnico.Visible := False, cmbST_Obrigatecnico.Visible := False |
| Efeito em MPD005 | A aba de Horas Trabalhadas deixa de exigir técnico (validação iST_OBRIGATECNICO = 'S' não dispara) |
Simulação passo a passo
- Vá em MFA001 → combo Modelo Ordem Serviço
- Selecione
Controle de KM - Imediatamente após a seleção, o label
"Horas Trabalhadas Obrigatório [MPD005]"e o combocmbST_Obrigatecnicoficam ocultos eST_OBRIGATECNICOé redefinido paraN(UMFA001.pas:2524-2528) - Salve os parâmetros (F6)
- Ao salvar, o
AfterPostdotabPARMFATURainda forçaST_OBRIGATECNICO = 'N'para garantir consistência (UMFA001.pas:1052-1056)
Resultado esperado: A OS passa a operar no modelo de KM; a configuração de "obrigar técnico" fica desligada e escondida, pois não se aplica a este modelo.
O - Controle de Horímetro
| O que faz | Detalhe |
|---|---|
| Modelo de medição | OS baseada em horímetro (contador de horas do equipamento/máquina) |
Sub-parâmetro ST_OBRIGATECNICO | Invisível em MFA001 e forçado a N ao salvar (UMFA001.pas:1052-1056) |
| Efeito colateral em MFA001 | Mesmo comportamento da opção K — o sub-parâmetro é ocultado e zerado |
| Efeito em MPD005 | A aba de Horas Trabalhadas deixa de exigir técnico |
Simulação passo a passo
- Vá em MFA001 → combo Modelo Ordem Serviço
- Selecione
Controle de Horímetro - O comportamento do OnChange é idêntico ao da opção
K: oculta label/combo deST_OBRIGATECNICOe zera o valor paraN - Salve os parâmetros (F6)
Resultado esperado: A OS passa a operar no modelo de horímetro; o controle de obrigatoriedade de técnico fica indisponível na interface.
Regra do AfterPost de MFA001
Ao salvar a configuração de parâmetros, o TfrmMFA001.tabPARMFATURAfterPost (UMFA001.pas:1052-1056) executa a regra:
if (dmMFA001.tabPARMFATURST_ORDEMSERVICO.AsString <> 'H') then
begin
dmMFA001.tabPARMFATUR.Edit;
dmMFA001.tabPARMFATURST_OBRIGATECNICO.AsString := 'N';
end;
Ou seja, independente do que estiver em ST_OBRIGATECNICO no momento do salvamento, se o Modelo Ordem Serviço não for H (Horas Trabalhadas), o sistema força ST_OBRIGATECNICO = 'N' antes de gravar.
Regra do OnChange do ComboBox
O cmbST_ORDEMSERVICOChange (UMFA001.pas:2517-2530) controla em tempo real a visibilidade e o valor do sub-parâmetro enquanto o usuário manipula a tela:
procedure TfrmMFA001.cmbST_ORDEMSERVICOChange(Sender: TObject);
begin
if (cmbST_ORDEMSERVICO.Value = 'H') then
begin
lblObrigaTecnico.Visible := True;
cmbST_Obrigatecnico.Visible := True;
end
else
begin
cmbST_Obrigatecnico.Value := 'N';
lblObrigaTecnico.Visible := False;
cmbST_Obrigatecnico.Visible := False;
end;
end;
Adicionalmente, ao trocar para a aba de Parâmetros de Pedidos/OS (PageParm.ActivePageIndex = 2), o handler é chamado novamente para refletir o estado atual (UMFA001.pas:2532-2536).
Tabela Comparativa Resumida
| Opção | Descrição | Visual: Obriga Técnico? | ST_OBRIGATECNICO após salvar | Obs. |
|---|---|---|---|---|
| H | Horas Trabalhadas | Visível (editável) | Mantém o valor selecionado pelo usuário (S/N) | Único modo que permite exigir técnico em MPD005 |
| K | Controle de KM | Oculto | Forçado para N | Foco em NR_KILOMETRAGEM |
| O | Controle de Horímetro | Oculto | Forçado para N | Foco no contador de horímetro do equipamento |
Observações Importantes
- Dentro do escopo Delphi, o único consumidor direto do valor de
PARMFATUR.ST_ORDEMSERVICOé a própria tela MFA001, que o utiliza para habilitar/desabilitar o sub-parâmetroST_OBRIGATECNICO. - As telas RCA006 e CPD009 contêm referências ao campo, mas apenas em SQLs de leitura/replicação do registro completo de
PARMFATUR(backup/espelho), não em lógica de negócio. - Não há referências ao parâmetro em stored procedures ou views do diretório
Scripts/— todas as ocorrências deST_ORDEMSERVICOnessa pasta referem-se ao status da OS (tabelaORDEMSERVICO), não ao parâmetro de configuração. - O efeito prático do parâmetro na operação da OS hoje é indireto: ele habilita (ou não) a possibilidade de usar
ST_OBRIGATECNICO, que é lido por MPD005 para validar a aba de Horas Trabalhadas.
Referências no Código Fonte
Tela MFA001 (configuração)
| Arquivo | Linha(s) | Descrição |
|---|---|---|
source/MFA001/UMFA001.dfm | 8458-8486 | Definição do cmbST_ORDEMSERVICO: TwwDBComboBox com DataField = 'ST_ORDEMSERVICO' e Items.Strings = ('Horas Trabalhadas'#9'H', 'Controle de KM'#9'K', 'Controle de Horímetro'#9'O') |
source/MFA001/UMFA001.dfm | 7790-7803 | Label lbl39 com Caption = 'Modelo Ordem Serviço' (label visível do parâmetro) |
source/MFA001/UMFA001.dfm | 8248-8260 | Label lblObrigaTecnico com Caption = 'Horas Trabalhadas Obrigatório [MPD005]' |
source/MFA001/UMFA001.pas | 305 | Declaração cmbST_ORDEMSERVICO: TwwDBComboBox |
source/MFA001/UMFA001.pas | 830 | Assinatura de cmbST_ORDEMSERVICOChange |
source/MFA001/UMFA001.pas | 1052-1056 | Regra do AfterPost: força ST_OBRIGATECNICO = 'N' quando ST_ORDEMSERVICO <> 'H' |
source/MFA001/UMFA001.pas | 2517-2530 | Handler cmbST_ORDEMSERVICOChange: controla visibilidade de lblObrigaTecnico/cmbST_Obrigatecnico |
source/MFA001/UMFA001.pas | 2532-2536 | PageParmChange: reaplica o handler ao entrar na aba de OS |
source/MFA001/UdmMFA001.pas | 107 | Declaração do TStringField tabPARMFATURST_ORDEMSERVICO |
source/MFA001/UdmMFA001.pas | 463 | Valor padrão no AfterInsert: tabPARMFATURST_ORDEMSERVICO.AsString := 'H' |
source/MFA001/UdmMFA001.dfm | 119, 994-997, 2498, 2720, 2999 | SELECT, field metadata, INSERT e UPDATE do registro de PARMFATUR |
Telas que persistem/replicam o campo (sem lógica)
| Arquivo | Linha(s) | Descrição |
|---|---|---|
source/RCA006/UdmRCA006.dfm | 3061, 3125, 3215, 3326 | SELECT/INSERT/UPDATE completo de PARMFATUR (replicação de parâmetros entre empresas) |
source/CPD009/UdmCPD009.dfm | 312, 376, 466, 577 | SELECT/INSERT/UPDATE completo de PARMFATUR |
Tela MPD005 (consumidora via ST_OBRIGATECNICO)
| Arquivo | Linha(s) | Descrição |
|---|---|---|
source/MPD005/UdmMPD005.pas | 247 | Declaração da variável iST_OBRIGATECNICO: string |
source/MPD005/UdmMPD005.pas | 376-405 | SELECT de PARMFATUR que carrega ST_OBRIGATECNICO em dmMPD005.iST_OBRIGATECNICO |
source/MPD005/UdmMPD005.pas | 1870-1876 | Validação: se iST_OBRIGATECNICO = 'S' e CD_PESSOA do técnico está vazio, direciona foco para a aba pagORDEMSERVITEM |
source/MPD005/UMPD005.pas | 1838-1850 | Validação equivalente ao salvar o conjunto de horas trabalhadas da OS |
Observação sobre homônimos
Todas as ocorrências de ST_ORDEMSERVICO em diretórios como MOF001, MOF002-MOF008, MPD017, MPD026, MPD045, MPD088, MPD097, ROF001-ROF010, RPD007-RPD038, TRA001, LOS*, REQ009, CPD003, CPD011, CPD013, CPD014, CEQ018 e nos Scripts/*.sql referem-se ao campo ORDEMSERVICO.ST_ORDEMSERVICO (situação da OS: A, B, C, F, P) e não ao parâmetro PARMFATUR.ST_ORDEMSERVICO documentado aqui.