ST_JUROVENDAOFI — Cálculo de Juro na Venda de Oficina
Tela de configuração: OFI001 — Parâmetros de Oficina Localização: Aba "Ordem 2" → campo "Cálculo de Juro" Tabela:
PARMOFICINA.ST_JUROVENDAOFITipo:CHAR(1)Valor padrão:N(Não Calcula)
Define como os juros de parcelamento são calculados e aplicados nos pedidos de venda originados de Ordens de Serviço (MOF001/MOF005). O valor é consultado tanto em rotinas Delphi quanto em procedures SQL para determinar se os juros devem ser mantidos, rateados nos itens ou zerados.
Telas impactadas
| Tela | Módulo | Efeito |
|---|---|---|
| MOF001 | Ordem de Serviço | Consulta iST_JUROVENDAOFI ao gerar pedido e ao ratear taxa de condição de pagamento |
| MOF005 | Ordem de Serviço (venda direta) | Mesma lógica via PARCELA_FINANCIAMENTO e PARCELA_FINANC_MNF017 |
| Parcelamento (jParcelamento) | Tela de parcelas | Consulta ST_JUROVENDAOFI para definir TipoCalculoJuros |
Campos envolvidos
| Campo | Tabela | Descrição |
|---|---|---|
ST_JUROVENDAOFI | PARMOFICINA | Tipo de cálculo de juro na venda de oficina |
VL_JURO | ITEMPEDIDO | Valor do juro rateado por item do pedido |
PC_JURO | Resultado de PARCELA_FINANCIAMENTO | Percentual de juro da parcela |
TP_JURO | Resultado de PARCELA_FINANCIAMENTO | Tipo de juro |
O_VL_TAXACONDICAO | Resultado de PARCELA_FINANCIAMENTO | Valor da taxa sobre a condição de pagamento |
ST_CALCULAJURO | Resultado de RETORNA_PRECOITEM | Indica se deve calcular juro no preço |
Opções disponíveis
S — Parcelamento (Juros sobre o Parcelamento)
| O que faz | Detalhe |
|---|---|
| Editável | Combobox na aba "Ordem 2" |
| Exige | Condição de pagamento com ST_CONDPAGTO = 'V' e ST_TAXADESTINO = 'D' para efeito de rateio |
| Restrição | Só rateia se houver taxa calculada (vlTotalTaxa > 0) |
Quando ativado, o sistema rateia a taxa da condição de pagamento proporcionalmente nos itens do pedido via campo VL_JURO. Antes do rateio, limpa todos os valores de VL_JURO existentes. Nos scripts SQL (PARCELA_FINANCIAMENTO, PARCELA_FINANC_MNF017), mantém PC_JURO e TP_JURO (juros não anulados). Em RETORNA_PRECOITEM, marca ST_CALCULAJURO = 'S'.
Simulação passo a passo
- Acesse OFI001 → aba Ordem 2 → campo Cálculo de Juro.
- Selecione S — Parcelamento.
- Salve os parâmetros.
- Abra uma Ordem de Serviço em MOF001 com condição de pagamento à vista que possua taxa configurada como despesa adicional.
- Gere o pedido a partir da OS.
- Observe que o campo
VL_JUROde cada item do pedido recebe o valor proporcional da taxa, distribuído conforme o valor total de cada item.
Resultado esperado: Os juros da condição de pagamento são distribuídos proporcionalmente entre os itens do pedido através do campo VL_JURO. O valor da taxa é calculado via PARCELA_FINANCIAMENTO e rateado proporcionalmente ao VL_TOTAL de cada item.
Excecao / Importante: O rateio só ocorre quando a condição de pagamento tem
ST_CONDPAGTO = 'V'(à vista) eST_TAXADESTINO = 'D'(despesa adicional). Condições de pagamento com outras configurações não geram rateio de taxa nos itens.
D — Parcelamento com Despesa
| O que faz | Detalhe |
|---|---|
| Editável | Combobox na aba "Ordem 2" |
| Exige | Geração de pedido a partir de OS com serviços/itens |
| Restrição | Zera VL_JURO e iVl_TotalJuro ao gravar itens |
Quando ativado, ao gerar pedido a partir da OS, o sistema inclui o valor das despesas de serviço e itens de OS no cálculo do total para fins de proporcionalidade. Porém, ao gravar o juro nos itens, zera tanto VL_JURO quanto iVl_TotalJuro (efeito: juros são incorporados ao preço, não exibidos como linha separada). Nos scripts SQL, mantém PC_JURO e TP_JURO (juros não anulados na parcela).
Simulação passo a passo
- Acesse OFI001 → aba Ordem 2 → campo Cálculo de Juro.
- Selecione D — Parcelamento com Despesa.
- Salve os parâmetros.
- Abra uma Ordem de Serviço em MOF001 com itens e serviços cadastrados.
- Clique em Gerar Pedido (botão de pedido).
- Observe que o sistema calcula o total considerando despesas, mas grava
VL_JURO = 0,00em todos os itens do pedido.
Resultado esperado: O juro é zerado nos itens do pedido (VL_JURO = 0,00), mas os valores de parcela e prazo médio nos scripts de financiamento mantêm os juros calculados (PC_JURO e TP_JURO preservados). O efeito prático é que o custo do juro está embutido no preço, sem destaque separado.
Excecao / Importante: A diferença para a opção S é que em D o
VL_JUROdos itens é sempre zerado, enquanto em S ele recebe o valor rateado. Ambas mantêm os juros nos cálculos de parcela.
T — Tabela de Preço
| O que faz | Detalhe |
|---|---|
| Editável | Combobox na aba "Ordem 2" |
| Exige | Sem exigência específica identificada |
| Restrição | Juros anulados nos scripts SQL |
Quando ativado, os scripts PARCELA_FINANCIAMENTO e PARCELA_FINANC_MNF017 avaliam que o valor não é 'D' nem 'S', resultando em PC_JURO = NULL e TP_JURO = NULL (juros anulados). Em RETORNA_PRECOITEM, não marca ST_CALCULAJURO. A lógica específica de uso de tabela de preço para juros não possui detalhamento adicional no código fonte analisado.
Simulação passo a passo
- Acesse OFI001 → aba Ordem 2 → campo Cálculo de Juro.
- Selecione T — Tabela de Preço.
- Salve os parâmetros.
- Gere parcelas para uma OS em MOF001/MOF005.
- Observe que os juros não são calculados nas parcelas (
PC_JUROeTP_JUROretornam nulos).
Resultado esperado: Juros anulados nos cálculos de parcelamento. Os valores de PC_JURO e TP_JURO são definidos como nulos pelos scripts de financiamento.
Excecao / Importante: Sem impacto direto identificável no código além da anulação de juros nos scripts SQL. A funcionalidade específica de "Tabela de Preço" para juros pode depender de configurações adicionais não mapeadas nesta análise.
N — Não Calcula
| O que faz | Detalhe |
|---|---|
| Editável | Combobox na aba "Ordem 2" |
| Valor padrão | Sim — atribuído automaticamente ao inserir novo registro |
| Restrição | Juros anulados nos scripts SQL |
Quando ativado (valor padrão), o sistema não calcula juros sobre o parcelamento. Nos scripts PARCELA_FINANCIAMENTO e PARCELA_FINANC_MNF017, o valor não é 'D' nem 'S', resultando em PC_JURO = NULL e TP_JURO = NULL. Em RETORNA_PRECOITEM, não marca ST_CALCULAJURO.
Simulação passo a passo
- Acesse OFI001 → aba Ordem 2 → campo Cálculo de Juro.
- Confirme que o valor selecionado é N — Não Calcula (padrão).
- Salve os parâmetros.
- Gere parcelas para uma OS em MOF001/MOF005.
- Observe que nenhum juro é aplicado nas parcelas.
Resultado esperado: Nenhum juro é calculado ou aplicado sobre o parcelamento. PC_JURO e TP_JURO retornam nulos dos scripts de financiamento.
Excecao / Importante: Este é o valor padrão atribuído automaticamente ao criar um novo registro de
PARMOFICINA(viatabPARMOFICINAAfterInsertemUdmOFI001.pas).
Tabela Comparativa Resumida
| Opção | Descrição | Juros no Parcelamento | VL_JURO nos Itens | ST_CALCULAJURO (RETORNA_PRECOITEM) |
|---|---|---|---|---|
| S | Parcelamento | Mantidos (PC_JURO/TP_JURO preservados) | Rateado proporcionalmente | 'S' |
| D | Parcelamento com Despesa | Mantidos (PC_JURO/TP_JURO preservados) | Zerado (0,00) | Não alterado |
| T | Tabela de Preço | Anulados (NULL) | Sem impacto direto | Não alterado |
| N | Não Calcula | Anulados (NULL) | Sem impacto direto | Não alterado |
Regra Geral
O parâmetro atua em dois pontos distintos do fluxo:
-
Geração de Pedido (MOF001): Ao gerar pedido a partir de OS, consulta
iST_JUROVENDAOFIpara decidir se inclui despesas no cálculo do total (D) ou rateia a taxa nos itens (S). Para D, zeraVL_JURO; para S, rateia proporcionalmente. -
Cálculo de Parcelas (SQL): As procedures
PARCELA_FINANCIAMENTO,PARCELA_FINANC_MNF017eRETORNA_PRECOITEMconsultamST_JUROVENDAOFIpara determinar se os juros devem ser mantidos (S ou D) ou anulados (qualquer outro valor). O módulo é identificado pela sessão corrente (SESSAO.CD_MODULO='MOF001'ou'MOF005').
Quando o módulo não é oficina (ex: faturamento via MFA001), o sistema consulta PARMFATUR.ST_JUROVENDA em vez de PARMOFICINA.ST_JUROVENDAOFI.
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Comportamento |
|---|---|---|
TdmMOF001.RateiaTaxaCondPagto | source/MOF001/UdmMOF001.pas | Se = 'S', limpa VL_JURO e rateia taxa proporcionalmente nos itens |
TfrmMOF001.btnPedidoClick | source/MOF001/UMOF001.pas | Se = 'D', inclui despesas de serviço/itens OS no total; ao gravar, zera VL_JURO |
TdmOFI001.tabPARMOFICINAAfterInsert | source/OFI001/UdmOFI001.pas | Define valor padrão 'N' ao inserir novo registro |
TfrmParcelaPedido.Gera_Parcelas | source/jParcelamento/UParcelaPedido.pas | Consulta ST_JUROVENDAOFI para definir TipoCalculoJuros |
Busca_Parametros | source/MOF001/UdmMOF001.pas | Carrega iST_JUROVENDAOFI junto com outros parâmetros de oficina |
Referências SQL diretas ao campo
| Procedure/View | Arquivo | Comportamento |
|---|---|---|
PARCELA_FINANCIAMENTO | Scripts/PARCELA_FINANCIAMENTO.sql | Se valor não for 'D' nem 'S', anula PC_JURO e TP_JURO |
PARCELA_FINANC_MNF017 | Scripts/PARCELA_FINANC_MNF017.sql | Mesma lógica de PARCELA_FINANCIAMENTO |
RETORNA_PRECOITEM | Scripts/RETORNA_PRECOITEM.sql | Se = 'S', marca ST_CALCULAJURO = 'S' |
Candidatas por uso da tabela (sem referência direta ao campo)
As seguintes procedures/views consultam a tabela PARMOFICINA mas não referenciam ST_JUROVENDAOFI diretamente: REABRE_OS, RETORNA_MOTIVOBLOQUEIO, VERIFICA_BLOQUEIO, VIEW_DOCUMENTOSBLOQUEADOS, VIEW_ROF004, VIEW_ROF004_OFXMM, VIEW_ROF004B, VIEW_ROF004B_V2, VIEW_ROF008.