Pular para o conteúdo principal

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_ORDEMSERVICO Valor 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ção PARMFATUR.ST_ORDEMSERVICO, que define o modelo/tipo de medição da Ordem de Serviço.

Telas impactadas​

MóduloCódigoDescrição
Parâmetros de FaturamentoMFA001Tela única que lê e grava o parâmetro diretamente (controla visibilidade de ST_OBRIGATECNICO)
Aplicação de Serviços / OS MetalMPD005Tela 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​

CampoTabelaDescrição
ST_ORDEMSERVICOPARMFATURDefine o modelo de medição da OS (H/K/O)
ST_OBRIGATECNICOPARMFATURSub-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_KILOMETRAGEMORDEMSERVICOQuilometragem registrada na OS (relevante para o modo K)
ORDEMSERVHORA.CD_PESSOAORDEMSERVHORATécnico/mecânico das horas trabalhadas (validação depende de ST_OBRIGATECNICO)

Opções disponíveis​

O componente é um TwwDBComboBox com Style = csDropDownList (somente seleção; sem digitação livre). As três opções abaixo são exatamente as strings definidas em UMFA001.dfm (linhas 8477-8480):

  • Horas Trabalhadas → H
  • Controle de KM → K
  • Controle de Horímetro → O

H - Horas Trabalhadas​

O que fazDetalhe
Modelo de mediçãoOS baseada em horas trabalhadas por técnico/mecânico
Sub-parâmetro ST_OBRIGATECNICOVisível e editável em MFA001 (label "Horas Trabalhadas Obrigatório [MPD005]")
Efeito colateral em MFA001lblObrigaTecnico.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 MPD005Se 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​

  1. Vá em MFA001 → aba Parâmetros de Pedidos/Ordem de Serviço → combo Modelo Ordem Serviço (cmbST_ORDEMSERVICO)
  2. Selecione Horas Trabalhadas
  3. Imediatamente após a seleção, o label "Horas Trabalhadas Obrigatório [MPD005]" e o combo cmbST_Obrigatecnico ficam visíveis (cmbST_ORDEMSERVICOChange, UMFA001.pas:2517-2530)
  4. Defina ST_OBRIGATECNICO = 'S' (Sim) se desejar exigir técnico nas Horas Trabalhadas
  5. Salve os parâmetros (F6)
  6. Abra a tela MPD005 (Aplicação/OS)
  7. Ao gravar um registro na aba Horas Trabalhadas (tabORDEMSERVHORA), se o CD_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 fazDetalhe
Modelo de mediçãoOS baseada em quilometragem do veículo (campo ORDEMSERVICO.NR_KILOMETRAGEM)
Sub-parâmetro ST_OBRIGATECNICOInvisível em MFA001 e forçado a N ao salvar (UMFA001.pas:1052-1056)
Efeito colateral em MFA001cmbST_Obrigatecnico.Value := 'N', lblObrigaTecnico.Visible := False, cmbST_Obrigatecnico.Visible := False
Efeito em MPD005A aba de Horas Trabalhadas deixa de exigir técnico (validação iST_OBRIGATECNICO = 'S' não dispara)

Simulação passo a passo​

  1. Vá em MFA001 → combo Modelo Ordem Serviço
  2. Selecione Controle de KM
  3. Imediatamente após a seleção, o label "Horas Trabalhadas Obrigatório [MPD005]" e o combo cmbST_Obrigatecnico ficam ocultos e ST_OBRIGATECNICO é redefinido para N (UMFA001.pas:2524-2528)
  4. Salve os parâmetros (F6)
  5. Ao salvar, o AfterPost do tabPARMFATUR ainda força ST_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 fazDetalhe
Modelo de mediçãoOS baseada em horímetro (contador de horas do equipamento/máquina)
Sub-parâmetro ST_OBRIGATECNICOInvisível em MFA001 e forçado a N ao salvar (UMFA001.pas:1052-1056)
Efeito colateral em MFA001Mesmo comportamento da opção K — o sub-parâmetro é ocultado e zerado
Efeito em MPD005A aba de Horas Trabalhadas deixa de exigir técnico

Simulação passo a passo​

  1. Vá em MFA001 → combo Modelo Ordem Serviço
  2. Selecione Controle de Horímetro
  3. O comportamento do OnChange é idêntico ao da opção K: oculta label/combo de ST_OBRIGATECNICO e zera o valor para N
  4. 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çãoDescriçãoVisual: Obriga Técnico?ST_OBRIGATECNICO após salvarObs.
HHoras TrabalhadasVisível (editável)Mantém o valor selecionado pelo usuário (S/N)Único modo que permite exigir técnico em MPD005
KControle de KMOcultoForçado para NFoco em NR_KILOMETRAGEM
OControle de HorímetroOcultoForçado para NFoco 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âmetro ST_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 de ST_ORDEMSERVICO nessa pasta referem-se ao status da OS (tabela ORDEMSERVICO), 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)​

ArquivoLinha(s)Descrição
source/MFA001/UMFA001.dfm8458-8486Definiçã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.dfm7790-7803Label lbl39 com Caption = 'Modelo Ordem Serviço' (label visível do parâmetro)
source/MFA001/UMFA001.dfm8248-8260Label lblObrigaTecnico com Caption = 'Horas Trabalhadas Obrigatório [MPD005]'
source/MFA001/UMFA001.pas305Declaração cmbST_ORDEMSERVICO: TwwDBComboBox
source/MFA001/UMFA001.pas830Assinatura de cmbST_ORDEMSERVICOChange
source/MFA001/UMFA001.pas1052-1056Regra do AfterPost: força ST_OBRIGATECNICO = 'N' quando ST_ORDEMSERVICO <> 'H'
source/MFA001/UMFA001.pas2517-2530Handler cmbST_ORDEMSERVICOChange: controla visibilidade de lblObrigaTecnico/cmbST_Obrigatecnico
source/MFA001/UMFA001.pas2532-2536PageParmChange: reaplica o handler ao entrar na aba de OS
source/MFA001/UdmMFA001.pas107Declaração do TStringField tabPARMFATURST_ORDEMSERVICO
source/MFA001/UdmMFA001.pas463Valor padrão no AfterInsert: tabPARMFATURST_ORDEMSERVICO.AsString := 'H'
source/MFA001/UdmMFA001.dfm119, 994-997, 2498, 2720, 2999SELECT, field metadata, INSERT e UPDATE do registro de PARMFATUR

Telas que persistem/replicam o campo (sem lógica)​

ArquivoLinha(s)Descrição
source/RCA006/UdmRCA006.dfm3061, 3125, 3215, 3326SELECT/INSERT/UPDATE completo de PARMFATUR (replicação de parâmetros entre empresas)
source/CPD009/UdmCPD009.dfm312, 376, 466, 577SELECT/INSERT/UPDATE completo de PARMFATUR

Tela MPD005 (consumidora via ST_OBRIGATECNICO)​

ArquivoLinha(s)Descrição
source/MPD005/UdmMPD005.pas247Declaração da variável iST_OBRIGATECNICO: string
source/MPD005/UdmMPD005.pas376-405SELECT de PARMFATUR que carrega ST_OBRIGATECNICO em dmMPD005.iST_OBRIGATECNICO
source/MPD005/UdmMPD005.pas1870-1876Validação: se iST_OBRIGATECNICO = 'S' e CD_PESSOA do técnico está vazio, direciona foco para a aba pagORDEMSERVITEM
source/MPD005/UMPD005.pas1838-1850Validaçã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.