TP_PRECOSERVICO - Parâmetro de Preço de Serviço
Tela de configuração: OFI001 - Parâmetros de Oficina
Localização: Parâmetros → Aba Parâmetros
Tabela:PARMOFICINA.TP_PRECOSERVICO
Tipo:CHAR(1)
Valor padrão:T(Tabela de Preço)
Descrição Geral
Define como o sistema determina o preço de serviços em Ordens de Serviço e Orçamentos. Controla se o preço é obtido de uma tabela de preço padrão ou por plataforma de veículo específica.
Telas impactadas
| Tela | Descrição | Impacto |
|---|---|---|
| MOF001 | Ordem de Serviço | Determina fonte do preço de serviço ao adicionar itens |
| MOF005 | Orçamento | Mesma lógica de precificação de serviços |
| MOF006 | Consulta de Veículos | Carrega parâmetro para validações |
| MOF008 | Reprocessamento de Tabela de Preço | Considera tipo de preço ao reprocessar |
| jPesquisa (ListaPeca) | Pesquisa de Itens | Filtra busca de serviços conforme tipo |
Campos envolvidos
| Tabela | Campo | Tipo | Descrição |
|---|---|---|---|
| PARMOFICINA | TP_PRECOSERVICO | CHAR(1) | Tipo de precificação de serviço |
| SERVICOPLATAFORMA | (tabela completa) | - | Preços por plataforma (usado quando = 'P') |
| TABPRECOITEM | (tabela completa) | - | Tabela de preço padrão (usado quando = 'T') |
Opções disponíveis
T - Tabela de Preço
Utiliza a tabela de preço padrão do sistema para definir o preço dos serviços.
| O que faz | Detalhe |
|---|---|
| Editável | Preço do serviço pode ser alterado se ST_ALTERAPRECO = 'S' |
| Fonte do preço | Tabela de preço vinculada ao serviço (TABPRECOITEM) |
| Bloqueio | Se ST_ALTERAPRECO = 'N', o preço fica bloqueado |
Simulação passo a passo
- Acesse OFI001 → aba Parâmetros
- No campo "Preço do Serviço por", selecione "Tabela de Preço"
- Salve a configuração
- Acesse MOF001 (Ordem de Serviço) e abra uma OS
- Adicione um serviço ao item da OS
- O sistema buscará automaticamente o preço da tabela de preço vinculada ao serviço
- Se
ST_ALTERAPRECO = 'N', o campo VL_SERVICO ficará bloqueado para edição
Resultado esperado: O preço do serviço é preenchido conforme a tabela de preço padrão do serviço cadastrado. Usuários sem permissão de alteração não conseguem modificar o valor.
Exceção / Importante: Quando
ST_ALTERAPRECO = 'S'ou o usuário possui perfil de autorizador, o preço pode ser alterado manualmente mesmo com este parâmetro.
P - Plataforma de Veículo
Utiliza preços específicos por plataforma de veículo, permitindo precificação diferenciada conforme o modelo/plataforma do veículo atendido.
| O que faz | Detalhe |
|---|---|
| Editável | Preço é buscado da tabela SERVICOPLATAFORMA |
| Fonte do preço | Tabela SERVICOPLATAFORMA (preço por plataforma) |
| Restrição | Serviço deve ter preço cadastrado para a plataforma do veículo |
Simulação passo a passo
- Acesse OFI001 → aba Parâmetros
- No campo "Preço do Serviço por", selecione "Plataforma de Veículo"
- Salve a configuração
- Acesse MOF001 (Ordem de Serviço) e abra uma OS informando um veículo
- Adicione um serviço ao item da OS
- O sistema buscará o preço na tabela SERVICOPLATAFORMA usando a plataforma do veículo da OS
- O campo VL_SERVICO será preenchido com o valor da plataforma
Resultado esperado: O preço do serviço varia conforme a plataforma do veículo vinculado à OS. Se o serviço não possuir preço para aquela plataforma, o sistema pode solicitar cadastro ou bloquear a inclusão.
Exceção / Importante: A tabela
SERVICOPLATAFORMAdeve estar previamente cadastrada com os preços por plataforma. Em MOF005 (Orçamento), a lógica é a mesma: o preço é buscado por plataforma do veículo informado.
Regra Geral de Autorização
O parâmetro TP_PRECOSERVICO interage com outros controles de permissão:
ST_ALTERAPRECO: Quando'N'eTP_PRECOSERVICO = 'T', o preço fica totalmente bloqueadoST_AUTORIZADOR: Quando'N'eTP_PRECOSERVICO = 'T', reforça o bloqueio de preçoTP_PRECOSERVICO = 'P': Independente deST_ALTERAPRECO, o preço vem da plataforma (mas pode ser editável conforme configuração)
Tabela Comparativa Resumida
| Aspecto | T (Tabela de Preço) | P (Plataforma de Veículo) |
|---|---|---|
| Fonte do preço | TABPRECOITEM | SERVICOPLATAFORMA |
| Varia por veículo | Não | Sim (por plataforma) |
| Exige cadastro prévio | Tabela de preço padrão | Preços por plataforma |
| Interação com ST_ALTERAPRECO | Respeita bloqueio | Menos restritivo |
| Uso típico | Oficinas com preço único | Oficinas multi-plataforma |
Procedures impactadas
Rotinas Delphi com referência direta ao parâmetro
| Rotina | Arquivo | Linha | Evidência |
|---|---|---|---|
Busca_Parametros | UdmMOF001.pas | 666 | SELECT TP_ORDEMSERVICO, TP_PRECOSERVICO... |
TdmMOF001.tabORDEMSERVITEMCD_SERVICOValidate | UdmMOF001.pas | 2510 | if (iTP_PRECOSERVICO = 'P') then |
TdmMOF001.tabORDEMSERVITEMQT_SERVICOValidate | UdmMOF001.pas | 3920 | if (dmMOF001.iTP_PRECOSERVICO = 'T') then |
TdmMOF001.tabORDEMSERVITEMBeforePost | UdmMOF001.pas | 2172 | if (dmMOF001.iST_ALTERAPRECO = 'N') and (dmMOF001.iTP_PRECOSERVICO <> 'P') |
TdmMOF001.tabORDEMSERVICOCD_CONDPAGTOValidate | UdmMOF001.pas | 1451 | if (dmMOF001.iTP_PRECOSERVICO = 'P') then |
VerificaValidadeOrcamento | UMOF005.pas | 429 | if (dmMOF005.iTP_PRECOSERVICO = 'T') then |
TfrmMOF005.gridSERVICOKeyDown | UMOF005.pas | 1375 | if (dmMOF005.iTP_PRECOSERVICO <> 'P') |
TfrmMOF005.recalculaValores | UMOF005.pas | 2785 | if (dmMOF005.iTP_PRECOSERVICO = 'T') |
TdmMOF005.tabSERVICOBeforePost | UdmMOF005.pas | 1427 | if (iTP_PRECOSERVICO = 'T') |
TdmMOF005.tabSERVICOCD_ITEMValidate | UdmMOF005.pas | 1687 | if (dmMOF005.iTP_PRECOSERVICO = 'T') |
TdmMOF008.ReprocessaServicos | UdmMOF008.pas | 654 | if (tabORDEMSERVICOTP_PRECOSERVICO.AsString = 'P') |
TfrmListaPeca.btnProcurarClick | UListaPeca.pas | 244 | if (ParmOficina.Values['TP_PRECOSERVICO'] <> 'P') |
TdmOFI001.tabPARMOFICINAAfterInsert | UdmOFI001.pas | 378 | tabPARMOFICINATP_PRECOSERVICO.AsString := 'T' |
Referências SQL diretas ao campo
Não foram encontradas referências diretas ao campo TP_PRECOSERVICO em scripts SQL na pasta Scripts/. O campo é consultado apenas via código Delphi.
Candidatas por uso da tabela (PARMOFICINA)
Estas procedures/views fazem JOIN com a tabela PARMOFICINA, mas não citam o campo TP_PRECOSERVICO diretamente. O impacto funcional depende de validação específica:
| Procedure/View | Arquivo | Observação |
|---|---|---|
RETORNA_PRECOITEM | Scripts/RETORNA_PRECOITEM.sql | Pode ter lógica indireta de preço |
REABRE_OS | Scripts/REABRE_OS.sql | Reabertura de OS |
VIEW_ROF004 | Scripts/VIEW_ROF004.sql | Relatório de OS |
VIEW_ROF004B | Scripts/VIEW_ROF004B.sql | Relatório de OS (variante) |
VIEW_ROF008 | Scripts/VIEW_ROF008.sql | Relatório de OS |
VERIFICA_BLOQUEIO | Scripts/VERIFICA_BLOQUEIO.sql | Verificação de bloqueios |
VIEW_DOCUMENTOSBLOQUEADOS | Scripts/VIEW_DOCUMENTOSBLOQUEADOS.sql | Documentos bloqueados |
Nota: As candidatas acima usam PARMOFICINA para outros campos (ex:
TP_ORDEMSERVICO,ST_BLOQUEIO). Não há evidência de uso direto deTP_PRECOSERVICOem SQL puro.