ST_REPROCESSATABPRECO — Reprocessar Tabela de Preços ao Alterar Condição de Pagamento
Tela de configuração: OFI001 — Parâmetros de Oficina Localização: Aba Ordem 2 Componente:
cmbST_REPROCESSATABPRECO(ComboBox) Rótulo: "Reprocessa tab. ao Alterar a Cond. Pagto" Tabela / Campo:PARMOFICINA.ST_REPROCESSATABPRECOTipo:CHAR(1),NOT NULL, padrão'N'
Resumo
Define se, ao alterar a condição de pagamento (ou data de vencimento / valor de entrada em determinados módulos) de uma Ordem de Serviço ou Orçamento de Oficina, o sistema deve recalcular os preços dos itens com base na tabela de preço adequada à nova condição.
'S'(Sim — Pergunta): exibe um diálogo perguntando se o usuário deseja reprocessar.'A'(Automático): reprocessa silenciosamente, sem perguntar.'N'(Não): não reprocessa; os preços permanecem inalterados.
⚠️ Homônimo: Existe um parâmetro com o mesmo nome na tabela
PARMFATUR, configurado em MFA001 — Parâmetros de Faturamento. Os módulos de faturamento (MPD002, MNF002, etc.) leem a versão PARMFATUR; os módulos de oficina (MOF001, MOF005, MOF008) leem a versão PARMOFICINA (esta). Os dois podem ter valores diferentes simultaneamente — alterar um não afeta o outro.
Telas impactadas
| Tela | Efeito |
|---|---|
| MOF001 — Manutenção de Ordem de Serviço | Ao trocar CD_CONDPAGTO na OS, o sistema verifica o parâmetro via ParmOficina.Values['ST_REPROCESSATABPRECO'] e reprocessa (S/A) ou mantém (N) os preços dos itens. |
| MOF005 — Orçamento de Oficina | Ao trocar CD_CONDPAGTO ou CD_FORMAPAGTO no orçamento, o sistema verifica o parâmetro via ParmOficina.Values['ST_REPROCESSATABPRECO'] e reprocessa (S/A) ou mantém (N) os preços. |
| MOF008 — Liberação / Consulta de OS | Na atualização/consulta, o sistema lê PO.ST_REPROCESSATABPRECO (PARMOFICINA) via query e, quando o valor é 'A', reprocessa automaticamente os valores da OS. |
Campos envolvidos
| Tabela | Campo | Tipo | Observação |
|---|---|---|---|
| PARMOFICINA | ST_REPROCESSATABPRECO | CHAR(1) | Flag de configuração (S/A/N) — esta documentação |
| ORDEMSERVITEM | CD_TABPRECO | INTEGER | Código da tabela de preço do item da OS — recalculado quando reprocessamento é disparado |
| ORCAMENTOITEM | CD_TABPRECO | INTEGER | Código da tabela de preço do item do orçamento — recalculado quando reprocessamento é disparado |
| VL_UNITARIO | — | NUMERIC | Valor unitário do item — atualizado a partir da nova tabela de preço |
Opções disponíveis
S — Sim (Pergunta ao Usuário)
| O que faz | Detalhe |
|---|---|
| Gatilho | Troca de CD_CONDPAGTO na OS/Orcamento (também DT_VENCIMENTO / VL_ENTRADA em MOF001) |
| Comportamento em UI | Exibe diálogo perguntando se deseja reprocessar os preços (mensagem C-1679) |
| Se usuário confirma | Percorre todos os itens e recalcula CD_TABPRECO + VL_UNITARIO conforme a nova condição |
| Se usuário cancela | Apenas troca a condição; preços dos itens permanecem inalterados |
Simulação passo a passo
- Acesse OFI001 → aba Ordem 2.
- No campo Reprocessa tab. ao Alterar a Cond. Pagto, selecione "Sim (Pergunta)".
- Salve o registro.
- Abra ou crie uma Ordem de Serviço em MOF001.
- Adicione dois ou três itens (produtos/serviços) que possuam tabela de preço vinculada.
- No campo Condição de Pagamento da OS, altere para uma condição diferente da atual (ex.: de "À Vista" para "30 Dias").
- Sistema exibe o diálogo: "Deseja Reprocessar os Preços dos Produtos?".
- Clique em "Sim" → Sistema percorre todos os itens, busca a tabela de preço adequada à nova condição e recalcula
CD_TABPRECOeVL_UNITARIOde cada item. - Clique em "Não" → Condição é trocada, mas os preços dos itens permanecem os da tabela original.
Resultado esperado: O usuário decide, a cada troca de condição de pagamento, se deseja reaplicar a tabela de preço ou manter os valores atuais.
A — Automático (Sem Perguntar)
| O que faz | Detalhe |
|---|---|
| Gatilho | Mesmo da opção S (troca de CD_CONDPAGTO, etc.) |
| Comportamento em UI | Não exibe diálogo — reprocessa silenciosamente |
| Reprocessamento | Percorre todos os itens e recalcula CD_TABPRECO + VL_UNITARIO automaticamente |
| MOF008 | Reprocessa via tabORDEMSERVICOST_REPROCESSATABPRECO quando valor = 'A' |
Simulação passo a passo
- Acesse OFI001 → aba Ordem 2.
- No campo Reprocessa tab. ao Alterar a Cond. Pagto, selecione "Sim (Automático)".
- Salve o registro.
- Abra ou crie uma Ordem de Serviço em MOF001.
- Adicione dois ou três itens com uma condição de pagamento inicial.
- Altere a condição de pagamento para outra opção.
- Sistema não pergunta nada — recalcula automaticamente
CD_TABPRECOeVL_UNITARIOde todos os itens. - Os novos preços aparecem diretamente nos itens, sem intervenção do usuário.
Resultado esperado: Ao trocar a condição de pagamento, a tabela de preço é sempre reaplicada automaticamente. O usuário vê os preços atualizados imediatamente após a troca.
Importante: Em MOF008, apenas a opção
'A'dispara o reprocessamento automático. A opção'S'não gera prompt nesta tela — apenas'A'é tratado no procedimentoReprocessaValorOS.
N — Não (Não Reprocessa)
| O que faz | Detalhe |
|---|---|
| Gatilho | — |
| Comportamento em UI | Mudança de condição de pagamento não afeta os preços dos itens |
| Reprocessamento | Nunca ocorre — o bloco de reprocessamento é ignorado |
Simulação passo a passo
- Acesse OFI001 → aba Ordem 2.
- No campo Reprocessa tab. ao Alterar a Cond. Pagto, selecione "Não".
- Salve o registro.
- Abra ou crie uma Ordem de Serviço em MOF001.
- Adicione dois ou três itens com uma condição de pagamento inicial.
- Altere a condição de pagamento para outra opção.
- Sistema não pergunta nada e não reprocessa.
- Os preços dos itens continuam com os valores anteriores.
Resultado esperado: O usuário tem total controle manual sobre os preços. A tabela de preço original é preservada e cabe ao usuário ajustar manualmente, se desejar.
Este é o valor padrão ao criar um novo registro de parâmetros (
tabPARMOFICINAST_REPROCESSATABPRECO.AsString := 'N'no eventoAfterInserteDEFAULT 'N'no DDL do banco).
Observação Importante: Dead Code em MOF001
No módulo MOF001, a rotina Busca_Parametros (linha ~707 de UdmMOF001.pas) carrega uma variável local iST_REPROCESSATABPRECO a partir de PARMFATUR. Porém, essa variável não é utilizada em nenhum outro ponto do módulo — é código morto (dead code). A decisão real de reprocessar em MOF001 (validação tabORDEMSERVICOCD_CONDPAGTOValidate, linha ~1401) consulta ParmOficina.Values['ST_REPROCESSATABPRECO'], ou seja, o valor de PARMOFICINA (este parâmetro).
Portanto, a configuração feita em OFI001 é a que efetivamente governa o comportamento de reprocessamento em MOF001, MOF005 e MOF008.
Observação Importante: Campo Distinto ST_REPROCTABPRECOCFE
A tabela PARMOFICINA contém um campo adicional chamado ST_REPROCTABPRECOCFE (padrão 'N'), que controla o reprocessamento especificamente para Cupom Fiscal Eletrônico (CFE). Este é um parâmetro distinto de ST_REPROCESSATABPRECO e não deve ser confundido.
Regra Geral: Item Reprocessado
Para que um item seja reprocessado ao trocar a condição de pagamento, as seguintes condições devem ser atendidas:
- O item possui
CD_TABPRECOpreenchido (itens sem tabela de preço são ignorados). - O item não está cancelado.
- A procedure de busca de tabela de preço retorna uma tabela válida para o par (empresa, condição, tipo pessoa, vendedor, região, estado, pessoa, item).
Tabela Comparativa Resumida
| Opção | Descrição | Pergunta ao trocar condição? | Reprocessa preços? | Padrão? |
|---|---|---|---|---|
| S | Sim (Pergunta) | Sim (mensagem C-1679) | Se usuário confirmar | Não |
| A | Automático | Não | Sempre (silencioso) | Não |
| N | Não | Não | Nunca | Sim |
Procedures impactadas
Rotinas Delphi com referência direta ao campo PARMOFICINA
| Rotina | Arquivo | Descrição |
|---|---|---|
Busca_Parametros | source/MOF001/UdmMOF001.pas | Carrega ST_REPROCESSATABPRECO via SELECT em ParmOficina para uso nas validações de MOF001 |
TdmMOF001.tabORDEMSERVICOCD_CONDPAGTOValidate | source/MOF001/UdmMOF001.pas | Verifica ParmOficina.Values['ST_REPROCESSATABPRECO'] para decidir se reprocessa preços ao trocar condição de pagamento na OS |
Busca_Parametros | source/MOF005/UdmMOF005.pas | Carrega ST_REPROCESSATABPRECO via SELECT para uso nas validações de MOF005 |
TdmMOF005.tabORCAMENTOAfterInsert | source/MOF005/UdmMOF005.pas | Copia o valor de iST_REPROCESSATABPRECO para variável local stCondPagtoAux ao inserir novo orçamento |
TdmMOF005.tabORCAMENTOCD_CONDPAGTOValidate | source/MOF005/UdmMOF005.pas | Verifica ParmOficina.Values['ST_REPROCESSATABPRECO'] para decidir se reprocessa preços ao trocar condição no orçamento |
TfrmMOF008.btnAtualizarClick | source/MOF008/UMOF008.pas | Inclui PO.ST_REPROCESSATABPRECO no SELECT de consulta/atualização de OS |
TdmMOF008.ReprocessaValorOS | source/MOF008/UdmMOF008.pas | Verifica tabORDEMSERVICOST_REPROCESSATABPRECO.AsString = 'A' para reprocessar automaticamente na liberação/consulta |
Referências SQL diretas ao campo
Não foram encontradas referências diretas a PARMOFICINA.ST_REPROCESSATABPRECO em scripts SQL (Scripts/). O script VERIFICA_BLOQUEIO.sql referencia a versão PARMFATUR (PARMFATUR.ST_REPROCESSATABPRECO), não a versão PARMOFICINA.
Candidatas por uso da tabela (sem referência direta ao campo)
As procedures/views abaixo fazem JOIN com PARMOFICINA mas não citam o campo ST_REPROCESSATABPRECO diretamente. Não há impacto funcional direto confirmado:
| Procedure/View | Arquivo |
|---|---|
PARCELA_FINANC_MNF017 | Scripts/PARCELA_FINANC_MNF017.sql |
PARCELA_FINANCIAMENTO | Scripts/PARCELA_FINANCIAMENTO.sql |
REABRE_OS | Scripts/REABRE_OS.sql |
RETORNA_MOTIVOBLOQUEIO | Scripts/RETORNA_MOTIVOBLOQUEIO.sql |
RETORNA_PRECOITEM | Scripts/RETORNA_PRECOITEM.sql |
VIEW_DOCUMENTOSBLOQUEADOS | Scripts/VIEW_DOCUMENTOSBLOQUEADOS.sql |
VIEW_ROF004 | Scripts/VIEW_ROF004.sql |
VIEW_ROF004B | Scripts/VIEW_ROF004B.sql |
VIEW_ROF004B_V2 | Scripts/VIEW_ROF004B_V2.sql |
VIEW_ROF008 | Scripts/VIEW_ROF008.sql |