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ódulo | Código | Descrição |
|---|
| Parâmetros Faturamento | MFA001 | Ú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 / Arquivo | Descriçã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
| Campo | Tabela | Descrição |
|---|
ST_CALCULAJUROPROM | PARMFATUR | O próprio parâmetro (char 1): S / N |
ST_JUROVENDA | PARMFATUR | Parâ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 faz | Detalhe |
|---|
| 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_PRECOITEM | A 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 comercial | Promoçã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
- MFA001 →
ST_JUROVENDA = 'T' (Tabela de Preço) → ST_CALCULAJUROPROM = 'Sim'
- Salve (F6)
- Cadastre uma promoção para um item (preço promocional
R$ 90,00 vs. preço de tabela R$ 100,00)
- Configure uma condição de pagamento parcelada com
PC_TAXAJUROS = 5,0
- Abra um pedido de venda, adicione o item e selecione essa condpagto
RETORNA_PRECOITEM devolve O_VL_PRECO = 90,00, O_ST_PROMOCAO = '1'
- 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 faz | Detalhe |
|---|
| Aplica juro em itens em promoção? | Não. Item em promoção é vendido pelo preço promocional "limpo", sem juro |
Fluxo em RETORNA_PRECOITEM | Linha 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ção | Continuam recebendo o juro normalmente — este parâmetro afeta somente itens em promoção |
| Comportamento comercial | O desconto promocional é integralmente preservado no preço final, independentemente de ser venda à vista ou a prazo |
Simulação passo a passo
- MFA001 →
ST_JUROVENDA = 'T' → ST_CALCULAJUROPROM = 'Não'
- Salve (F6)
- Usando o mesmo cenário acima (promoção
R$ 90,00, condpagto parcelada com juro 5%)
- Abra o pedido e selecione a condpagto
RETORNA_PRECOITEM detecta O_ST_PROMOCAO = '1' + V_ST_CALCULAJUROPROM = 'N' → força V_ST_CALCULAJURO = 'N'
- Preço final do item =
R$ 90,00 (sem juro acrescido)
- 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_JUROVENDA | ST_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' |
| Parâmetro | Efeito |
|---|
ST_JUROVENDA | Pré-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_CALCULAJURO | Flag do cliente — controla se o cliente recebe juro. 'N' já desliga o juro, independente de promoção |
CONDPAGTO.PC_TAXAJUROS | Taxa aplicada ao preço. Se = 0, não há juro para "esconder" ou "mostrar" na promoção |
Tabela Comparativa Resumida
| Opção | Item em promoção recebe juro? | Item fora de promoção | Quando se aplica |
|---|
| S | Sim | Recebe juro normalmente | ST_JUROVENDA = 'T' |
| N | Não | Recebe juro normalmente | ST_JUROVENDA = 'T' |
Referências no Código Fonte
Delphi — Tela de configuração (MFA001)
| Arquivo | Linha | Descrição |
|---|
source/MFA001/UMFA001.dfm | 4048-4061 | Label lblCalcJurosProm com Caption "Calcula Juros para Produtos em Promoção" |
source/MFA001/UMFA001.dfm | 4825-4850 | cmbST_CALCULAJUROPROM: TwwDBComboBox com DataField = 'ST_CALCULAJUROPROM' e Items Sim=S / Não=N |
source/MFA001/UMFA001.pas | 559-560 | Declaração do combo e do label |
source/MFA001/UMFA001.pas | 2538-2550 | cmbST_JUROVENDAChange — exibe combo e label quando valor é 'T', oculta nos demais |
source/MFA001/UdmMFA001.pas | 285 | Declaração do TField tabPARMFATURST_CALCULAJUROPROM: TStringField |
source/MFA001/UdmMFA001.pas | 574 | AfterInsert: valor padrão 'S' ao criar novo registro PARMFATUR |
source/MFA001/UdmMFA001.dfm | 296 / 1985-1987 / 2618 / 2878 / 3176 | Mapping do field no dataset + comandos SQL (SELECT, INSERT, UPDATE) gerados pelo dbExpress |
SQL — Stored Procedures
| Arquivo | Linha | Descrição |
|---|
Scripts/RETORNA_PRECOITEM.sql | 33 | Declaração declare variable V_ST_CALCULAJUROPROM DOM_CHAR1; |
Scripts/RETORNA_PRECOITEM.sql | 86-90 | SELECT P.ST_CALCULAJUROPROM, P.QT_CASASDECIMAISPRECOVENDA FROM PARMFATUR ... INTO :V_ST_CALCULAJUROPROM, :V_qt_casasdecimais; |
Scripts/RETORNA_PRECOITEM.sql | 213-214 | IF ((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 |