ST_FECHAMENTOTROCA - Modelo de Fechamento de Troca (MNF026)
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Notas Fiscais → Parâmetros de Notas → "Modelo de Fechamento de Troca (MNF026)" Tabela:
PARMFATUR.ST_FECHAMENTOTROCAValor padrão:S(Operação Separada - Entrada/Saída)
Define como o módulo de Troca de Nota Fiscal (MNF026) encerra financeiramente o processo de troca quando há diferença entre a nota devolvida (origem) e a nova nota (troca). O parâmetro decide se o sistema gera dois lançamentos independentes (entrada e saída integrais) ou um único lançamento líquido contendo apenas a diferença.
Telas impactadas
| Módulo | Código | Descrição |
|---|---|---|
| Troca de Notas | MNF026 | Processamento de troca com devolução e nova nota |
| Parâmetros Faturamento | MFA001 | Cadastro do valor do parâmetro |
Campos envolvidos
| Campo | Descrição |
|---|---|
NOTA.CD_EMPRESA / NR_LANCAMENTO / CD_SERIE / TP_NOTA | Identificação das notas envolvidas na troca (origem, devolução, nova nota) |
NOTA.ST_CONDPAGTO | Status da condição de pagamento (V=à vista, P=parcelado, D=diferença) |
NOTA.CD_CONDPAGTO | Condição de pagamento utilizada na operação |
NOTA.VL_NOTAFISCAL | Valor fiscal total da nota |
FILTRO.T_VL_DIFERENCA | Diferença calculada entre nota de troca e notas devolvidas |
FILTRO.VL_DESCONTODIF | Desconto aplicado sobre a diferença |
CONTAS.VL_SALDO / ST_CONTAS / CD_TIPOCONTA | Contas financeiras utilizadas em compensações |
TIPOCONTA.TP_TIPOCONTA | Tipo da conta (CP, AC, CC, HP) para compensação |
CONDPAGTO.ST_CONDPAGTO | Status da condição (D = diferença, V = à vista) |
Opções disponíveis
S - Operação Separada (Entrada/Saída)
| O que faz | Detalhe |
|---|---|
| Modelo | Gera dois lançamentos independentes: nota(s) de devolução (entrada) + nova nota (saída) pelos valores integrais |
| Condição de pagamento | Usa a condição original da nota de troca (tabNOTACD_CONDPAGTO / tabNOTADT_VENCIMENTO) |
| Financeiro | Para cada devolução com condição parcelada (ST_CONDPAGTO='P') e que gera contas, abre a tela MostraParcela para montagem das parcelas da devolução |
| Compensação | Se ST_COMPENSACAOFINANC='S' e a nota não é à vista, chama MostraCompensacao quando o cliente possui saldo em contas do tipo CP ou AC com saldo positivo |
| Relatório de liquidação | Não imprime relatório de liquidação (apenas as notas individuais via Imprime_Nota) |
| Botão de compensação | Botão "Compensar", campos de desconto e totais compensados ficam ocultos |
Simulação passo a passo
- Em MFA001 → Parâmetros → Ambos → Opção 1 → ST_FECHAMENTOTROCA = "Operação Separada (Entrada/Saída)"
- Salve os parâmetros (F6)
- Abra o MNF026 e selecione uma nota de origem (nota anterior emitida ao cliente)
- Informe os itens que o cliente está devolvendo → sistema gera nota(s) de devolução de entrada pelo valor total dos itens devolvidos
- Informe os novos itens que o cliente está levando → sistema gera a nova nota de saída pelo valor total dos novos itens
- Confirme o processo
- Se houve condição parcelada na nova nota, o sistema solicita a montagem de parcelas
- Se o cliente tinha saldo em contas CP/AC e há compensação ativa, abre tela de compensação
- Resultado: são impressas separadamente a(s) nota(s) de devolução e a nova nota, cada uma com seu valor total integral
Resultado esperado: Duas operações fiscais completas e independentes, mantendo a rastreabilidade integral dos valores de entrada e saída.
L - Operação Líquida (Diferença)
| O que faz | Detalhe |
|---|---|
| Modelo | Gera um lançamento único considerando apenas a diferença entre a nova nota e a(s) devolução(ões) |
| Condição de pagamento | Obriga o uso de uma condição cadastrada com CONDPAGTO.ST_CONDPAGTO = 'D' (Diferença); DT_VENCIMENTO = hoje + 1 |
| Se não existir CONDPAGTO com ST_CONDPAGTO='D' | Dispara exceção W-1924 |
| Bloqueio | Ao selecionar condição de pagamento do tipo "D" em outro fluxo, lança exceção W-1941 |
| Financeiro | Calcula fValorProcesso = T_VL_DIFERENCA - total_compensado - VL_DESCONTODIF e gera financeiro somente se a diferença for relevante |
| Compensação | Consulta crédito disponível em CONTAS com TP_TIPOCONTA IN (CP,AC,CC,HP) e saldo não liquidado; se houver, exibe o botão Compensar |
| Campos visíveis | Exibe VL_DESCONTODIF, PC_DESCONTODIF, VL_TOTALCOMPENSADO e labels de compensação na tela MNF026 |
| Relatório | Imprime relatório de liquidação (tabRelatorio) com VL_CREDITO preenchido a partir de T_VL_NOTAFISCAL |
Simulação passo a passo
- Em MFA001 → Parâmetros → Ambos → Opção 1 → ST_FECHAMENTOTROCA = "Operação Líquida (Diferença)"
- Salve os parâmetros (F6)
- Garanta que exista ao menos uma CONDPAGTO com
ST_CONDPAGTO = 'D'(senão ocorre W-1924 ao processar a troca) - Abra o MNF026 e selecione a nota de origem
- Informe os itens devolvidos e os novos itens; o sistema apura a diferença
- Observe que passam a ficar visíveis os campos Desconto sobre Diferença, % Desconto e Total Compensado; o botão Compensar aparece se houver crédito em aberto nas contas do cliente (tipos CP/AC/CC/HP)
- Aplique desconto ou compensação se desejar e confirme
- O sistema gera lançamento financeiro apenas pela diferença líquida (
fValorProcesso) com vencimento em D+1 usando a condição tipo "D" - É impresso o relatório de liquidação consolidado
Resultado esperado: Um único fechamento financeiro resumindo a operação de troca pela diferença, permitindo aproveitamento de créditos do cliente e aplicação de desconto sobre a diferença.
Tabela Comparativa Resumida
| Comportamento | S (Separada) | L (Líquida) |
|---|---|---|
| Gera dois lançamentos (entrada + saída integrais) | Sim | Não |
| Gera lançamento único pela diferença | Não | Sim |
| Usa condição de pagamento original da nota | Sim | Não |
| Exige CONDPAGTO com ST_CONDPAGTO='D' | Não | Sim (senão W-1924) |
| Monta parcelas na tela MostraParcela (parcelado) | Sim | Não |
| Aciona MostraCompensacao por saldo em CP/AC | Sim (se compensação ativa e não à vista) | Não (compensação própria) |
| Exibe campos de desconto sobre diferença | Não | Sim |
| Exibe botão Compensar no MNF026 | Não | Sim (se houver crédito) |
| Imprime relatório de liquidação | Não | Sim |
| Bloqueia condição "D" em outros fluxos | Não | Sim (W-1941) |
| Data de vencimento usada | tabNOTADT_VENCIMENTO | Data atual + 1 dia |
Referências no Código Fonte
Delphi
| Arquivo | Linha | Trecho |
|---|---|---|
source/MFA001/UdmMFA001.pas | 244 | tabPARMFATURST_FECHAMENTOTROCA: TStringField; |
source/MFA001/UdmMFA001.pas | 544 | tabPARMFATURST_FECHAMENTOTROCA.AsString := 'S'; (valor padrão no AfterInsert) |
source/MFA001/UMFA001.dfm | 7412-7438 | Definição do cmbST_FECHAMENTOTROCA: TwwDBComboBox com Items.Strings = ('Operaçao Separada (Entrada/Saida)'#9'S', 'Operação Liquida (Diferença)'#9'L') |
source/MFA001/UMFA001.dfm | 6414-6428 | Label85: 'Modelo de Fechamento de Troca (MNF026)' |
source/MNF026/UMNF026.pas | 766 | if (ParmFatur.Values['ST_FECHAMENTOTROCA'] = 'S') then - aciona compensação em contas CP/AC para devoluções não-à-vista |
source/MNF026/UMNF026.pas | 800 | if (ParmFatur.Values['ST_FECHAMENTOTROCA'] = 'L') then - gera financeiro pela diferença |
source/MNF026/UMNF026.pas | 1193 | if (ParmFatur.Values['ST_FECHAMENTOTROCA'] = 'L') then - imprime relatório de liquidação |
source/MNF026/UMNF026.pas | 2618 | if ( ParmFatur.Values['ST_FECHAMENTOTROCA'] = 'L' ) then - exibe botão Compensar e campos de desconto/compensação |
source/MNF026/UdmMNF026.pas | 2690 | Busca primeira CONDPAGTO com ST_CONDPAGTO='D'; dispara W-1924 se não existir |
source/MNF026/UdmMNF026.pas | 3039 | Modo "S": abre MostraParcela para condição parcelada que gera contas (lança W-0364) |
source/MNF026/UdmMNF026.pas | 3091 | Modo "L": força vencimento D+1 e condição de diferença quando nota original é à vista |
source/MNF026/UdmMNF026.pas | 3303 | Modo "S": monta parcelas da nota de troca quando condição é parcelada |
source/MNF026/UdmMNF026.pas | 4418 | Bloqueia ST_CONDPAGTO='D' quando ST_FECHAMENTOTROCA='L' → W-1941 |
Mensagens
| Código | Contexto |
|---|---|
W-1924 | Modo "L" exige ao menos uma CONDPAGTO com ST_CONDPAGTO='D' cadastrada |
W-1941 | Bloqueia uso de condição "D" em fluxos conflitantes quando modo "L" está ativo |
W-0364 | Falha na montagem das parcelas (modo "S" com condição parcelada) |