ST_DESCONTOPRODUCAO - Permitir Desconto Para Produto em Promoção
Tela de configuração: OFI001 - Parâmetros da Oficina Localização: Aba "Ordem 1" Tabela:
PARMOFICINA.ST_DESCONTOPRODUCAOTipo: Checkbox (S/N) Valor padrão:S(Marcado — permite desconto)
Descrição
Controla se produtos/serviços que possuem preço promocional vigente na tabela de preço (ITEMTABPRECODATA com DT_INICIAL <= CURRENT_DATE e DT_FINAL >= CURRENT_DATE) podem receber desconto e ter seus valores editados na Ordem de Serviço.
- Marcado (
S): os campos de valor e desconto ficam editáveis normalmente, mesmo que o item esteja em promoção. - Desmarcado (
N): ao selecionar um item que exista na tabela de preço vigente, os camposVL_UNITARIO,VL_TOTALeVL_DESCONTO(Serviços/Peças) ouVL_UNITARIOeVL_TOTAL(Itens de Consumo) ficam bloqueados (read-only).
Telas impactadas
| Tela | Efeito |
|---|---|
| MOF001 — Ordem de Serviço (Cadastro) | Bloqueia/desbloqueia campos de valor e desconto nos grids de Serviço e Item de Consumo |
| MOF002 — Ordem de Serviço (Consulta) | Mesmo comportamento ao aplicar percentual de desconto |
| MOF005 — Orçamento de Oficina | Mesmo comportamento nos grids de Serviço e Item |
Campos envolvidos
| Tabela | Campos afetados |
|---|---|
ORDEMSERVITEM | VL_UNITARIO, VL_TOTAL, VL_DESCONTO |
SERVICOITEM | VL_UNITARIO, VL_TOTAL, VL_DESCONTO |
ITEMCONSUMO | VL_UNITARIO, VL_TOTAL |
O sistema consulta a tabela ITEMTABPRECODATA para verificar se o item possui preço promocional vigente.
Opções disponíveis
S - Marcado (Permitir Desconto em Promoção)
| O que faz | Detalhe |
|---|---|
| Campos de valor/desconto | Editáveis normalmente, mesmo para itens em promoção |
| Tabela de preço vigente | Desconsiderada para fins de bloqueio |
Simulação passo a passo
- Acesse OFI001 → aba Ordem 1.
- Certifique-se de que o checkbox "Permitir Desconto Para Produto em Promoção" esteja marcado.
- Salve o parâmetro.
- Abra uma Ordem de Serviço em MOF001.
- Adicione um serviço/produto que tenha preço promocional vigente na tabela de preço.
- Clique no campo
VL_UNITARIOouVL_DESCONTOdo item.
Resultado esperado: Os campos VL_UNITARIO, VL_TOTAL e VL_DESCONTO ficam editáveis. O usuário pode alterar valores e aplicar descontos livremente.
N - Desmarcado (Bloquear Desconto em Promoção)
| O que faz | Detalhe |
|---|---|
| Campos de valor/desconto | Bloqueados (read-only) quando o item estiver em promoção vigente |
| Tabela de preço vigente | Verificada via ITEMTABPRECODATA; se o item existir com vigência atual, campos são travados |
| Itens sem promoção | Campos ficam editáveis normalmente |
Simulação passo a passo
- Acesse OFI001 → aba Ordem 1.
- Desmarque o checkbox "Permitir Desconto Para Produto em Promoção".
- Salve o parâmetro.
- Abra uma Ordem de Serviço em MOF001.
- Adicione um serviço/produto que tenha preço promocional vigente na tabela de preço (
ITEMTABPRECODATA). - Observe os campos
VL_UNITARIO,VL_TOTALeVL_DESCONTOdo item inserido. - Tente alterar o valor unitário ou aplicar um desconto.
Resultado esperado: Os campos VL_UNITARIO, VL_TOTAL e VL_DESCONTO ficam bloqueados (read-only). O sistema impede a edição de valores e descontos para itens com preço promocional vigente.
- Agora adicione um item que não esteja na tabela de preço vigente.
Resultado esperado: Os campos ficam editáveis normalmente, permitindo alteração de valores e aplicação de desconto.
Excecao / Importante: O bloqueio é aplicado em tempo real ao selecionar/navegar pelo item (eventos
AfterScrolleValidate). A mesma regra vale para operações de aplicar percentual de desconto — ao aplicar desconto viaPC_DESCONTOSERVouPC_DESCONTOPECA, o sistema filtra itens em promoção e os exclui do cálculo em massa quando o parâmetro está desmarcado.
Regra Geral de Autorização
Sem impacto direto identificado no codigo. Não há controle de autorizador vinculado a este parâmetro.
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Linha | Contexto |
|---|---|---|---|
TdmMOF001.tabORDEMSERVITEMAfterScroll | source/MOF001/UdmMOF001.pas | 2321 | Ao navegar no grid de serviços — bloqueia/desbloqueia VL_UNITARIO, VL_TOTAL, VL_DESCONTO |
TdmMOF001.tabORDEMSERVITEMCD_SERVICOValidate | source/MOF001/UdmMOF001.pas | 2729 | Ao validar código do serviço — mesma lógica de bloqueio |
TdmMOF001.tabSERVICOITEMCD_ITEMValidate | source/MOF001/UdmMOF001.pas | 3031 | Ao validar item de serviço — mesma lógica |
TdmMOF001.tabSERVICOITEMAfterScroll | source/MOF001/UdmMOF001.pas | 3593 | Ao navegar no grid de itens de serviço |
TdmMOF001.tabORDEMSERVICOPC_DESCONTOSERVValidate | source/MOF001/UdmMOF001.pas | 4860 | Ao aplicar % desconto em serviços — filtra itens em promoção |
TdmMOF001.tabORDEMSERVICOPC_DESCONTOPECAValidate | source/MOF001/UdmMOF001.pas | 4900 | Ao aplicar % desconto em peças — filtra itens em promoção |
TdmMOF001.tabITEMCONSUMOAfterScroll | source/MOF001/UdmMOF001.pas | 5051 | Ao navegar no grid de itens de consumo |
TdmMOF001.tabITEMCONSUMOCD_ITEMValidate | source/MOF001/UdmMOF001.pas | 5424 | Ao validar item de consumo |
TdmMOF002.tabORDEMSERVITEMAfterScroll | source/MOF002/UdmMOF002.pas | 708 | MOF002 — navegação no grid de serviços |
TdmMOF002.tabORDEMSERVITEMCD_SERVICOValidate | source/MOF002/UdmMOF002.pas | 862 | MOF002 — validação de serviço |
TdmMOF002.tabSERVICOITEMCD_ITEMValidate | source/MOF002/UdmMOF002.pas | 1037 | MOF002 — validação de item |
TdmMOF002.tabSERVICOITEMAfterScroll | source/MOF002/UdmMOF002.pas | 1479 | MOF002 — navegação no grid de itens |
TdmMOF005.tabITEMCD_ITEMValidate | source/MOF005/UdmMOF005.pas | 825 | MOF005 — validação de item no orçamento |
TdmMOF005.tabITEMAfterScroll | source/MOF005/UdmMOF005.pas | 1026 | MOF005 — navegação no grid de itens |
TdmMOF005.tabSERVICOAfterScroll | source/MOF005/UdmMOF005.pas | 1358 | MOF005 — navegação no grid de serviços |
TdmMOF005.tabSERVICOCD_ITEMValidate | source/MOF005/UdmMOF005.pas | 1816 | MOF005 — validação de serviço no orçamento |
TdmOFI001.tabPARMOFICINAAfterInsert | source/OFI001/UdmOFI001.pas | 367 | Valor padrão S ao inserir novo registro |
Referências SQL diretas ao campo
Não foram encontradas referências diretas ao campo ST_DESCONTOPRODUCAO em procedures/views SQL. O campo é consultado exclusivamente via código Delphi através de ParmOficina.Values['ST_DESCONTOPRODUCAO'].
Candidatas por uso da tabela (sem referência direta ao campo)
Procedures/views que acessam a tabela PARMOFICINA mas não citam o campo ST_DESCONTOPRODUCAO — sem impacto funcional direto identificado:
| 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 |
VERIFICA_BLOQUEIO | Scripts/VERIFICA_BLOQUEIO.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 |
Tabela Comparativa Resumida
| Valor | Checkbox | Valor/Desconto em item em promoção | Itens sem promoção | Aplicação de % desconto em massa |
|---|---|---|---|---|
S | Marcado | Editável | Editável | Aplica a todos os itens |
N | Desmarcado | Bloqueado (read-only) | Editável | Exclui itens em promoção do cálculo |