Pular para o conteúdo principal

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_REPROCESSATABPRECO Tipo: 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​

TelaEfeito
MOF001 — Manutenção de Ordem de ServiçoAo 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 OficinaAo 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 OSNa 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​

TabelaCampoTipoObservação
PARMOFICINAST_REPROCESSATABPRECOCHAR(1)Flag de configuração (S/A/N) — esta documentação
ORDEMSERVITEMCD_TABPRECOINTEGERCódigo da tabela de preço do item da OS — recalculado quando reprocessamento é disparado
ORCAMENTOITEMCD_TABPRECOINTEGERCódigo da tabela de preço do item do orçamento — recalculado quando reprocessamento é disparado
VL_UNITARIO—NUMERICValor 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 fazDetalhe
GatilhoTroca de CD_CONDPAGTO na OS/Orcamento (também DT_VENCIMENTO / VL_ENTRADA em MOF001)
Comportamento em UIExibe diálogo perguntando se deseja reprocessar os preços (mensagem C-1679)
Se usuário confirmaPercorre todos os itens e recalcula CD_TABPRECO + VL_UNITARIO conforme a nova condição
Se usuário cancelaApenas troca a condição; preços dos itens permanecem inalterados

Simulação passo a passo​

  1. Acesse OFI001 → aba Ordem 2.
  2. No campo Reprocessa tab. ao Alterar a Cond. Pagto, selecione "Sim (Pergunta)".
  3. Salve o registro.
  4. Abra ou crie uma Ordem de Serviço em MOF001.
  5. Adicione dois ou três itens (produtos/serviços) que possuam tabela de preço vinculada.
  6. No campo Condição de Pagamento da OS, altere para uma condição diferente da atual (ex.: de "À Vista" para "30 Dias").
  7. Sistema exibe o diálogo: "Deseja Reprocessar os Preços dos Produtos?".
  8. Clique em "Sim" → Sistema percorre todos os itens, busca a tabela de preço adequada à nova condição e recalcula CD_TABPRECO e VL_UNITARIO de cada item.
  9. 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 fazDetalhe
GatilhoMesmo da opção S (troca de CD_CONDPAGTO, etc.)
Comportamento em UINão exibe diálogo — reprocessa silenciosamente
ReprocessamentoPercorre todos os itens e recalcula CD_TABPRECO + VL_UNITARIO automaticamente
MOF008Reprocessa via tabORDEMSERVICOST_REPROCESSATABPRECO quando valor = 'A'

Simulação passo a passo​

  1. Acesse OFI001 → aba Ordem 2.
  2. No campo Reprocessa tab. ao Alterar a Cond. Pagto, selecione "Sim (Automático)".
  3. Salve o registro.
  4. Abra ou crie uma Ordem de Serviço em MOF001.
  5. Adicione dois ou três itens com uma condição de pagamento inicial.
  6. Altere a condição de pagamento para outra opção.
  7. Sistema não pergunta nada — recalcula automaticamente CD_TABPRECO e VL_UNITARIO de todos os itens.
  8. 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 procedimento ReprocessaValorOS.


N — Não (Não Reprocessa)​

O que fazDetalhe
Gatilho—
Comportamento em UIMudança de condição de pagamento não afeta os preços dos itens
ReprocessamentoNunca ocorre — o bloco de reprocessamento é ignorado

Simulação passo a passo​

  1. Acesse OFI001 → aba Ordem 2.
  2. No campo Reprocessa tab. ao Alterar a Cond. Pagto, selecione "Não".
  3. Salve o registro.
  4. Abra ou crie uma Ordem de Serviço em MOF001.
  5. Adicione dois ou três itens com uma condição de pagamento inicial.
  6. Altere a condição de pagamento para outra opção.
  7. Sistema não pergunta nada e não reprocessa.
  8. 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 evento AfterInsert e DEFAULT '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:

  1. O item possui CD_TABPRECO preenchido (itens sem tabela de preço são ignorados).
  2. O item não está cancelado.
  3. 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çãoDescriçãoPergunta ao trocar condição?Reprocessa preços?Padrão?
SSim (Pergunta)Sim (mensagem C-1679)Se usuário confirmarNão
AAutomáticoNãoSempre (silencioso)Não
NNãoNãoNuncaSim

Procedures impactadas​

Rotinas Delphi com referência direta ao campo PARMOFICINA​

RotinaArquivoDescrição
Busca_Parametrossource/MOF001/UdmMOF001.pasCarrega ST_REPROCESSATABPRECO via SELECT em ParmOficina para uso nas validações de MOF001
TdmMOF001.tabORDEMSERVICOCD_CONDPAGTOValidatesource/MOF001/UdmMOF001.pasVerifica ParmOficina.Values['ST_REPROCESSATABPRECO'] para decidir se reprocessa preços ao trocar condição de pagamento na OS
Busca_Parametrossource/MOF005/UdmMOF005.pasCarrega ST_REPROCESSATABPRECO via SELECT para uso nas validações de MOF005
TdmMOF005.tabORCAMENTOAfterInsertsource/MOF005/UdmMOF005.pasCopia o valor de iST_REPROCESSATABPRECO para variável local stCondPagtoAux ao inserir novo orçamento
TdmMOF005.tabORCAMENTOCD_CONDPAGTOValidatesource/MOF005/UdmMOF005.pasVerifica ParmOficina.Values['ST_REPROCESSATABPRECO'] para decidir se reprocessa preços ao trocar condição no orçamento
TfrmMOF008.btnAtualizarClicksource/MOF008/UMOF008.pasInclui PO.ST_REPROCESSATABPRECO no SELECT de consulta/atualização de OS
TdmMOF008.ReprocessaValorOSsource/MOF008/UdmMOF008.pasVerifica 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/ViewArquivo
PARCELA_FINANC_MNF017Scripts/PARCELA_FINANC_MNF017.sql
PARCELA_FINANCIAMENTOScripts/PARCELA_FINANCIAMENTO.sql
REABRE_OSScripts/REABRE_OS.sql
RETORNA_MOTIVOBLOQUEIOScripts/RETORNA_MOTIVOBLOQUEIO.sql
RETORNA_PRECOITEMScripts/RETORNA_PRECOITEM.sql
VIEW_DOCUMENTOSBLOQUEADOSScripts/VIEW_DOCUMENTOSBLOQUEADOS.sql
VIEW_ROF004Scripts/VIEW_ROF004.sql
VIEW_ROF004BScripts/VIEW_ROF004B.sql
VIEW_ROF004B_V2Scripts/VIEW_ROF004B_V2.sql
VIEW_ROF008Scripts/VIEW_ROF008.sql