Pular para o conteúdo principal

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

TelaMóduloEfeito
MOF001Ordem de ServiçoConsulta iST_JUROVENDAOFI ao gerar pedido e ao ratear taxa de condição de pagamento
MOF005Ordem de Serviço (venda direta)Mesma lógica via PARCELA_FINANCIAMENTO e PARCELA_FINANC_MNF017
Parcelamento (jParcelamento)Tela de parcelasConsulta ST_JUROVENDAOFI para definir TipoCalculoJuros

Campos envolvidos​

CampoTabelaDescrição
ST_JUROVENDAOFIPARMOFICINATipo de cálculo de juro na venda de oficina
VL_JUROITEMPEDIDOValor do juro rateado por item do pedido
PC_JUROResultado de PARCELA_FINANCIAMENTOPercentual de juro da parcela
TP_JUROResultado de PARCELA_FINANCIAMENTOTipo de juro
O_VL_TAXACONDICAOResultado de PARCELA_FINANCIAMENTOValor da taxa sobre a condição de pagamento
ST_CALCULAJUROResultado de RETORNA_PRECOITEMIndica se deve calcular juro no preço

Opções disponíveis​

S — Parcelamento (Juros sobre o Parcelamento)​

O que fazDetalhe
EditávelCombobox na aba "Ordem 2"
ExigeCondição de pagamento com ST_CONDPAGTO = 'V' e ST_TAXADESTINO = 'D' para efeito de rateio
RestriçãoSó 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​

  1. Acesse OFI001 → aba Ordem 2 → campo Cálculo de Juro.
  2. Selecione S — Parcelamento.
  3. Salve os parâmetros.
  4. Abra uma Ordem de Serviço em MOF001 com condição de pagamento à vista que possua taxa configurada como despesa adicional.
  5. Gere o pedido a partir da OS.
  6. Observe que o campo VL_JURO de 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) e ST_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 fazDetalhe
EditávelCombobox na aba "Ordem 2"
ExigeGeração de pedido a partir de OS com serviços/itens
RestriçãoZera 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​

  1. Acesse OFI001 → aba Ordem 2 → campo Cálculo de Juro.
  2. Selecione D — Parcelamento com Despesa.
  3. Salve os parâmetros.
  4. Abra uma Ordem de Serviço em MOF001 com itens e serviços cadastrados.
  5. Clique em Gerar Pedido (botão de pedido).
  6. Observe que o sistema calcula o total considerando despesas, mas grava VL_JURO = 0,00 em 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_JURO dos 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 fazDetalhe
EditávelCombobox na aba "Ordem 2"
ExigeSem exigência específica identificada
RestriçãoJuros 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​

  1. Acesse OFI001 → aba Ordem 2 → campo Cálculo de Juro.
  2. Selecione T — Tabela de Preço.
  3. Salve os parâmetros.
  4. Gere parcelas para uma OS em MOF001/MOF005.
  5. Observe que os juros não são calculados nas parcelas (PC_JURO e TP_JURO retornam 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 fazDetalhe
EditávelCombobox na aba "Ordem 2"
Valor padrãoSim — atribuído automaticamente ao inserir novo registro
RestriçãoJuros 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​

  1. Acesse OFI001 → aba Ordem 2 → campo Cálculo de Juro.
  2. Confirme que o valor selecionado é N — Não Calcula (padrão).
  3. Salve os parâmetros.
  4. Gere parcelas para uma OS em MOF001/MOF005.
  5. 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 (via tabPARMOFICINAAfterInsert em UdmOFI001.pas).


Tabela Comparativa Resumida​

OpçãoDescriçãoJuros no ParcelamentoVL_JURO nos ItensST_CALCULAJURO (RETORNA_PRECOITEM)
SParcelamentoMantidos (PC_JURO/TP_JURO preservados)Rateado proporcionalmente'S'
DParcelamento com DespesaMantidos (PC_JURO/TP_JURO preservados)Zerado (0,00)Não alterado
TTabela de PreçoAnulados (NULL)Sem impacto diretoNão alterado
NNão CalculaAnulados (NULL)Sem impacto diretoNão alterado

Regra Geral​

O parâmetro atua em dois pontos distintos do fluxo:

  1. Geração de Pedido (MOF001): Ao gerar pedido a partir de OS, consulta iST_JUROVENDAOFI para decidir se inclui despesas no cálculo do total (D) ou rateia a taxa nos itens (S). Para D, zera VL_JURO; para S, rateia proporcionalmente.

  2. Cálculo de Parcelas (SQL): As procedures PARCELA_FINANCIAMENTO, PARCELA_FINANC_MNF017 e RETORNA_PRECOITEM consultam ST_JUROVENDAOFI para 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​

RotinaArquivoComportamento
TdmMOF001.RateiaTaxaCondPagtosource/MOF001/UdmMOF001.pasSe = 'S', limpa VL_JURO e rateia taxa proporcionalmente nos itens
TfrmMOF001.btnPedidoClicksource/MOF001/UMOF001.pasSe = 'D', inclui despesas de serviço/itens OS no total; ao gravar, zera VL_JURO
TdmOFI001.tabPARMOFICINAAfterInsertsource/OFI001/UdmOFI001.pasDefine valor padrão 'N' ao inserir novo registro
TfrmParcelaPedido.Gera_Parcelassource/jParcelamento/UParcelaPedido.pasConsulta ST_JUROVENDAOFI para definir TipoCalculoJuros
Busca_Parametrossource/MOF001/UdmMOF001.pasCarrega iST_JUROVENDAOFI junto com outros parâmetros de oficina

Referências SQL diretas ao campo​

Procedure/ViewArquivoComportamento
PARCELA_FINANCIAMENTOScripts/PARCELA_FINANCIAMENTO.sqlSe valor não for 'D' nem 'S', anula PC_JURO e TP_JURO
PARCELA_FINANC_MNF017Scripts/PARCELA_FINANC_MNF017.sqlMesma lógica de PARCELA_FINANCIAMENTO
RETORNA_PRECOITEMScripts/RETORNA_PRECOITEM.sqlSe = '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.