Pular para o conteúdo principal

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_FECHAMENTOTROCA Valor 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óduloCódigoDescrição
Troca de NotasMNF026Processamento de troca com devolução e nova nota
Parâmetros FaturamentoMFA001Cadastro do valor do parâmetro

Campos envolvidos​

CampoDescrição
NOTA.CD_EMPRESA / NR_LANCAMENTO / CD_SERIE / TP_NOTAIdentificação das notas envolvidas na troca (origem, devolução, nova nota)
NOTA.ST_CONDPAGTOStatus da condição de pagamento (V=à vista, P=parcelado, D=diferença)
NOTA.CD_CONDPAGTOCondição de pagamento utilizada na operação
NOTA.VL_NOTAFISCALValor fiscal total da nota
FILTRO.T_VL_DIFERENCADiferença calculada entre nota de troca e notas devolvidas
FILTRO.VL_DESCONTODIFDesconto aplicado sobre a diferença
CONTAS.VL_SALDO / ST_CONTAS / CD_TIPOCONTAContas financeiras utilizadas em compensações
TIPOCONTA.TP_TIPOCONTATipo da conta (CP, AC, CC, HP) para compensação
CONDPAGTO.ST_CONDPAGTOStatus da condição (D = diferença, V = à vista)

Opções disponíveis​

S - Operação Separada (Entrada/Saída)​

O que fazDetalhe
ModeloGera dois lançamentos independentes: nota(s) de devolução (entrada) + nova nota (saída) pelos valores integrais
Condição de pagamentoUsa a condição original da nota de troca (tabNOTACD_CONDPAGTO / tabNOTADT_VENCIMENTO)
FinanceiroPara 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çãoSe 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çãoNão imprime relatório de liquidação (apenas as notas individuais via Imprime_Nota)
Botão de compensaçãoBotão "Compensar", campos de desconto e totais compensados ficam ocultos

Simulação passo a passo​

  1. Em MFA001 → Parâmetros → Ambos → Opção 1 → ST_FECHAMENTOTROCA = "Operação Separada (Entrada/Saída)"
  2. Salve os parâmetros (F6)
  3. Abra o MNF026 e selecione uma nota de origem (nota anterior emitida ao cliente)
  4. Informe os itens que o cliente está devolvendo → sistema gera nota(s) de devolução de entrada pelo valor total dos itens devolvidos
  5. Informe os novos itens que o cliente está levando → sistema gera a nova nota de saída pelo valor total dos novos itens
  6. 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
  7. 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 fazDetalhe
ModeloGera um lançamento único considerando apenas a diferença entre a nova nota e a(s) devolução(ões)
Condição de pagamentoObriga 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
BloqueioAo selecionar condição de pagamento do tipo "D" em outro fluxo, lança exceção W-1941
FinanceiroCalcula fValorProcesso = T_VL_DIFERENCA - total_compensado - VL_DESCONTODIF e gera financeiro somente se a diferença for relevante
CompensaçãoConsulta 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íveisExibe VL_DESCONTODIF, PC_DESCONTODIF, VL_TOTALCOMPENSADO e labels de compensação na tela MNF026
RelatórioImprime relatório de liquidação (tabRelatorio) com VL_CREDITO preenchido a partir de T_VL_NOTAFISCAL

Simulação passo a passo​

  1. Em MFA001 → Parâmetros → Ambos → Opção 1 → ST_FECHAMENTOTROCA = "Operação Líquida (Diferença)"
  2. Salve os parâmetros (F6)
  3. Garanta que exista ao menos uma CONDPAGTO com ST_CONDPAGTO = 'D' (senão ocorre W-1924 ao processar a troca)
  4. Abra o MNF026 e selecione a nota de origem
  5. Informe os itens devolvidos e os novos itens; o sistema apura a diferença
  6. 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)
  7. Aplique desconto ou compensação se desejar e confirme
  8. O sistema gera lançamento financeiro apenas pela diferença líquida (fValorProcesso) com vencimento em D+1 usando a condição tipo "D"
  9. É 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​

ComportamentoS (Separada)L (Líquida)
Gera dois lançamentos (entrada + saída integrais)SimNão
Gera lançamento único pela diferençaNãoSim
Usa condição de pagamento original da notaSimNão
Exige CONDPAGTO com ST_CONDPAGTO='D'NãoSim (senão W-1924)
Monta parcelas na tela MostraParcela (parcelado)SimNão
Aciona MostraCompensacao por saldo em CP/ACSim (se compensação ativa e não à vista)Não (compensação própria)
Exibe campos de desconto sobre diferençaNãoSim
Exibe botão Compensar no MNF026NãoSim (se houver crédito)
Imprime relatório de liquidaçãoNãoSim
Bloqueia condição "D" em outros fluxosNãoSim (W-1941)
Data de vencimento usadatabNOTADT_VENCIMENTOData atual + 1 dia

Referências no Código Fonte​

Delphi​

ArquivoLinhaTrecho
source/MFA001/UdmMFA001.pas244tabPARMFATURST_FECHAMENTOTROCA: TStringField;
source/MFA001/UdmMFA001.pas544tabPARMFATURST_FECHAMENTOTROCA.AsString := 'S'; (valor padrão no AfterInsert)
source/MFA001/UMFA001.dfm7412-7438Definiçã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.dfm6414-6428Label85: 'Modelo de Fechamento de Troca (MNF026)'
source/MNF026/UMNF026.pas766if (ParmFatur.Values['ST_FECHAMENTOTROCA'] = 'S') then - aciona compensação em contas CP/AC para devoluções não-à-vista
source/MNF026/UMNF026.pas800if (ParmFatur.Values['ST_FECHAMENTOTROCA'] = 'L') then - gera financeiro pela diferença
source/MNF026/UMNF026.pas1193if (ParmFatur.Values['ST_FECHAMENTOTROCA'] = 'L') then - imprime relatório de liquidação
source/MNF026/UMNF026.pas2618if ( ParmFatur.Values['ST_FECHAMENTOTROCA'] = 'L' ) then - exibe botão Compensar e campos de desconto/compensação
source/MNF026/UdmMNF026.pas2690Busca primeira CONDPAGTO com ST_CONDPAGTO='D'; dispara W-1924 se não existir
source/MNF026/UdmMNF026.pas3039Modo "S": abre MostraParcela para condição parcelada que gera contas (lança W-0364)
source/MNF026/UdmMNF026.pas3091Modo "L": força vencimento D+1 e condição de diferença quando nota original é à vista
source/MNF026/UdmMNF026.pas3303Modo "S": monta parcelas da nota de troca quando condição é parcelada
source/MNF026/UdmMNF026.pas4418Bloqueia ST_CONDPAGTO='D' quando ST_FECHAMENTOTROCA='L' → W-1941

Mensagens​

CódigoContexto
W-1924Modo "L" exige ao menos uma CONDPAGTO com ST_CONDPAGTO='D' cadastrada
W-1941Bloqueia uso de condição "D" em fluxos conflitantes quando modo "L" está ativo
W-0364Falha na montagem das parcelas (modo "S" com condição parcelada)