Pular para o conteúdo principal

Calcula Juros para Produtos em Promoção

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Faturamento → Opção 2 (label "Calcula Juros para Produtos em Promoção") Tabela: PARMFATUR.ST_CALCULAJUROPROM Valor padrão: S (Sim) Visível somente quando: ST_JUROVENDA = 'T' (Tabela de Preço)

Define se o juro da condição de pagamento deve ser embutido no preço de itens que estejam em promoção. Só tem efeito quando o parâmetro global ST_JUROVENDA está configurado como "T" (Tabela de Preço) — nos demais cenários de juro (S, N, M) este parâmetro é ignorado.

Telas impactadas​

MóduloCódigoDescrição
Parâmetros FaturamentoMFA001Única tela que cadastra/edita o parâmetro. Campo só aparece quando ST_JUROVENDA = 'T'

Nenhum outro módulo Delphi lê este parâmetro diretamente — o consumo acontece exclusivamente via procedure RETORNA_PRECOITEM, que é chamada por toda a cadeia de faturamento (pedidos, notas, orçamentos, bonificação, etc.).

Procedures impactadas​

Procedure / ArquivoDescrição
RETORNA_PRECOITEM (Scripts/RETORNA_PRECOITEM.sql)Única procedure que consulta ST_CALCULAJUROPROM. Quando ST_JUROVENDA = 'T', item em promoção (O_ST_PROMOCAO = '1') e ST_CALCULAJUROPROM = 'N', força V_ST_CALCULAJURO = 'N', bloqueando o acréscimo de juro sobre o preço promocional.

Campos envolvidos​

CampoTabelaDescrição
ST_CALCULAJUROPROMPARMFATURO próprio parâmetro (char 1): S / N
ST_JUROVENDAPARMFATURParâmetro mestre. Este só é avaliado quando ST_JUROVENDA = 'T'
O_ST_PROMOCAO(saída de RETORNA_PRECOITEM)'1' quando o preço final veio de uma tabela/promoção ativa — único cenário em que este parâmetro atua
V_ST_CALCULAJURO(variável interna de RETORNA_PRECOITEM)Flag local que controla se o juro será aplicado ao preço. Pode ser forçada para 'N' por este parâmetro.

Opções disponíveis​

S - Sim (valor padrão)​

O que fazDetalhe
Aplica juro em itens em promoção?Sim. O preço promocional recebe o acréscimo do juro da condição de pagamento normalmente, igual a um item fora de promoção
Fluxo em RETORNA_PRECOITEMA condição da linha 213 (V_ST_CALCULAJUROPROM = 'N') não é satisfeita → V_ST_CALCULAJURO permanece 'S' → o ramo seguinte aplica CONDPAGTO.PC_TAXAJUROS sobre o preço
Comportamento comercialPromoção + prazo = cliente paga o desconto promocional e ainda o juro da condição de pagamento embutido no preço

Simulação passo a passo​

  1. MFA001 → ST_JUROVENDA = 'T' (Tabela de Preço) → ST_CALCULAJUROPROM = 'Sim'
  2. Salve (F6)
  3. Cadastre uma promoção para um item (preço promocional R$ 90,00 vs. preço de tabela R$ 100,00)
  4. Configure uma condição de pagamento parcelada com PC_TAXAJUROS = 5,0
  5. Abra um pedido de venda, adicione o item e selecione essa condpagto
  6. RETORNA_PRECOITEM devolve O_VL_PRECO = 90,00, O_ST_PROMOCAO = '1'
  7. Como ST_CALCULAJUROPROM = 'S', o fluxo aplica o juro → preço final ≈ R$ 94,50

Resultado esperado: O item em promoção é vendido pelo preço promocional acrescido do juro da condição de pagamento.


N - Não​

O que fazDetalhe
Aplica juro em itens em promoção?Não. Item em promoção é vendido pelo preço promocional "limpo", sem juro
Fluxo em RETORNA_PRECOITEMLinha 213: IF ((V_ST_JUROVENDA = 'T') AND (O_ST_PROMOCAO = '1') AND (V_ST_CALCULAJUROPROM = 'N')) THEN V_ST_CALCULAJURO = 'N'; → o ramo de aplicação de juro (linha 228 em diante) é pulado para esse item
Itens fora de promoçãoContinuam recebendo o juro normalmente — este parâmetro afeta somente itens em promoção
Comportamento comercialO desconto promocional é integralmente preservado no preço final, independentemente de ser venda à vista ou a prazo

Simulação passo a passo​

  1. MFA001 → ST_JUROVENDA = 'T' → ST_CALCULAJUROPROM = 'Não'
  2. Salve (F6)
  3. Usando o mesmo cenário acima (promoção R$ 90,00, condpagto parcelada com juro 5%)
  4. Abra o pedido e selecione a condpagto
  5. RETORNA_PRECOITEM detecta O_ST_PROMOCAO = '1' + V_ST_CALCULAJUROPROM = 'N' → força V_ST_CALCULAJURO = 'N'
  6. Preço final do item = R$ 90,00 (sem juro acrescido)
  7. Para outro item sem promoção no mesmo pedido → o juro da condpagto continua sendo aplicado normalmente

Resultado esperado: Preço promocional é mantido intacto. O juro da venda a prazo fica "perdido" para itens promocionados — uma política comum para não anular o apelo da promoção.


Quando o parâmetro é ignorado​

O campo cmbST_CALCULAJUROPROM é ocultado no MFA001 sempre que ST_JUROVENDA ≠ 'T' (UMFA001.pas:2540-2549). O valor continua armazenado em banco, mas:

ST_JUROVENDAST_CALCULAJUROPROM é considerado?
T (Tabela de Preço)Sim — único cenário de uso real
S (Parcela)Não — juro vai para VL_JUROPARCELA, preço do item não é alterado
N (Não Calcula)Não — não há juro sendo aplicado
M (Prazo Médio)Não — a condição da linha 213 exige ST_JUROVENDA = 'T'

Interação com Outros Parâmetros​

ParâmetroEfeito
ST_JUROVENDAPré-requisito. Só tem efeito quando igual a 'T'. Define a fonte do juro (CONDPAGTO.PC_TAXAJUROS) aplicada sobre o preço
TABPRECO.ST_CALCULAJUROS (TFA006)Filtro por tabela de preço. Se a tabela do item tem ST_CALCULAJUROS = 'N', o juro já é desligado antes mesmo da checagem de promoção
PESSOA.ST_CALCULAJUROFlag do cliente — controla se o cliente recebe juro. 'N' já desliga o juro, independente de promoção
CONDPAGTO.PC_TAXAJUROSTaxa aplicada ao preço. Se = 0, não há juro para "esconder" ou "mostrar" na promoção

Tabela Comparativa Resumida​

OpçãoItem em promoção recebe juro?Item fora de promoçãoQuando se aplica
SSimRecebe juro normalmenteST_JUROVENDA = 'T'
NNãoRecebe juro normalmenteST_JUROVENDA = 'T'

Referências no Código Fonte​

Delphi — Tela de configuração (MFA001)​

ArquivoLinhaDescrição
source/MFA001/UMFA001.dfm4048-4061Label lblCalcJurosProm com Caption "Calcula Juros para Produtos em Promoção"
source/MFA001/UMFA001.dfm4825-4850cmbST_CALCULAJUROPROM: TwwDBComboBox com DataField = 'ST_CALCULAJUROPROM' e Items Sim=S / Não=N
source/MFA001/UMFA001.pas559-560Declaração do combo e do label
source/MFA001/UMFA001.pas2538-2550cmbST_JUROVENDAChange — exibe combo e label quando valor é 'T', oculta nos demais
source/MFA001/UdmMFA001.pas285Declaração do TField tabPARMFATURST_CALCULAJUROPROM: TStringField
source/MFA001/UdmMFA001.pas574AfterInsert: valor padrão 'S' ao criar novo registro PARMFATUR
source/MFA001/UdmMFA001.dfm296 / 1985-1987 / 2618 / 2878 / 3176Mapping do field no dataset + comandos SQL (SELECT, INSERT, UPDATE) gerados pelo dbExpress

SQL — Stored Procedures​

ArquivoLinhaDescrição
Scripts/RETORNA_PRECOITEM.sql33Declaração declare variable V_ST_CALCULAJUROPROM DOM_CHAR1;
Scripts/RETORNA_PRECOITEM.sql86-90SELECT P.ST_CALCULAJUROPROM, P.QT_CASASDECIMAISPRECOVENDA FROM PARMFATUR ... INTO :V_ST_CALCULAJUROPROM, :V_qt_casasdecimais;
Scripts/RETORNA_PRECOITEM.sql213-214IF ((V_ST_JUROVENDA = 'T') AND (O_ST_PROMOCAO = '1') AND (V_ST_CALCULAJUROPROM = 'N')) THEN V_ST_CALCULAJURO = 'N'; — regra central que bloqueia o juro sobre o preço promocional