Pular para o conteúdo principal

Baixa Automática de Nota Fiscal à Vista

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Notas Fiscais → Parâmetros NF (aba pagParametrosNF) Tabela: PARMFATUR.ST_PAGTOAVISTA Valor padrão: S (Baixa Automática no Caixa)

Define se, ao confirmar uma Nota Fiscal à vista, o sistema gera automaticamente um Processo de Caixa e abre a tela do Caixa para dar baixa nas parcelas com vencimento igual à data de lançamento, ou se essa baixa deve ser feita manualmente depois (em MFC004).

Telas impactadas​

MóduloCódigoArquivoDescrição
Emissão / Gravação de NFMNF033source/MNF033/UdmMNF033.pas:1009Consumidor principal — decide se abre o Caixa ao confirmar a NF
Consulta Cartão (Compensação)MNF030source/MNF030/UMNF030.pas:386-389Validação comentada — não está mais ativa

Procedures impactadas​

ProcedureArquivoDescrição
GERA_NOTAFISCALScripts/GERA_NOTAFISCAL.sql:257-265, 1390-1404Lê P.ST_PAGTOAVISTA de PARMFATUR, ajusta conforme regras (devolução, estabil, duplicada) e passa para GERA_DUPLICATAS
GERA_DUPLICATASScripts/GERA_DUPLICATAS.sql:8, 172Recebe V_ST_PAGTOAVISTA como parâmetro de entrada; se 'S' gera o Processo de Caixa após criar as duplicatas
GERA_ESTOQUE_NOTAFISCALScripts/GERA_ESTOQUE_NOTAFISCAL.sql:19, 171-177Lê o parâmetro de PARMFATUR (uso legado, sem decisão condicional no fluxo atual)
GERA_NOTAPEDIDOSOVISScripts/GERA_NOTAPEDIDOSOVIS.sql:40, 50-62Bloqueia o faturamento SOVIS quando o parâmetro está como 'S', exigindo "Baixa Manual"
FECHA_CONTRATOLEITEScripts/FECHA_CONTRATOLEITE.sql:106, 398-421Salva o valor atual, força para 'N' durante a emissão da NF do fechamento e restaura depois
FECHA_CONTRATOLEITE_V2Scripts/FECHA_CONTRATOLEITE_V2.sql:114, 398-417Idem V1 — neutraliza o parâmetro durante a chamada a GERA_NOTAFISCAL

Campos envolvidos​

Campo / TabelaDescrição
PARMFATUR.ST_PAGTOAVISTAFlag que define o modo de baixa ('S' automática / 'N' manual)
PROCESSO.NR_PROCESSONúmero do Processo de Caixa gerado pela NF à vista
PROCESSO.TP_PROCESSOTipo do Processo ('P' = Processo, 'R' = Recebimento)
MOVTOCAIXAMovimento de caixa gerado automaticamente com TP_DOCUMENTO = 'AV' (À Vista)
CONTAS.DT_VENCIMENTO / CONTAS.DT_LANCAMENTOIdentifica parcelas à vista (vencimento = lançamento)
ORIGEMREPARCELAMENTO / DESTINOREPARCELAMENTOQuando existe reparcelamento, o sistema usa as contas de destino

Opções disponíveis​

S - Baixa Automática no Caixa​

O que fazDetalhe
Gera Processo de Caixa?SIM, ao confirmar a NF
Abre tela do Caixa?SIM, automaticamente após gravar a NF
Parcelas baixadasTodas as que têm DT_VENCIMENTO = DT_LANCAMENTO (parcelas à vista / entrada)
Gera MOVTOCAIXASim, com TP_DOCUMENTO = 'AV'
Gera ReciboSim, se PARMFINANC.CD_LAYRECIBO estiver configurado
Integra com SOVISINCOMPATÍVEL — o faturamento automático SOVIS é bloqueado

Simulação passo a passo​

  1. MFA001 → aba Notas Fiscais → Parâmetros NF → ST_PAGTOAVISTA = "Baixa Automática no Caixa"
  2. Salve os parâmetros (F6)
  3. Abra MNF033 — emita uma NF de saída com pelo menos 1 parcela à vista (DT_VENCIMENTO = DT_LANCAMENTO)
  4. Confirme a gravação
  5. A procedure GERA_NOTAFISCAL chama GERA_DUPLICATAS com V_ST_PAGTOAVISTA = 'S' → é gerado automaticamente um NR_PROCESSO
  6. No Delphi, UdmMNF033.pas:1009 detecta que há processo com valor > 0 e soma o total das parcelas à vista
  7. A tela do Caixa (AbreCaixa) abre automaticamente já carregada com o processo
  8. Se houver layout de recibo em PARMFINANC.CD_LAYRECIBO, o recibo é gerado (NR_RECIBO via GERA_SEQUENCIA)
  9. Ao fechar o caixa com sucesso, a mensagem final inclui: Processo de Caixa Nº.: NNNN Liquidado com Sucesso.

Resultado esperado: O operador não precisa passar por MFC004 para baixar a entrada. A baixa e o recibo são feitos automaticamente na hora da emissão.

Atenção: este é o valor padrão ao criar um novo registro no MFA001 (UdmMFA001.pas:445).


N - Baixa Manual​

O que fazDetalhe
Gera Processo de Caixa?NÃO na confirmação da NF
Abre tela do Caixa?NÃO
ParcelasFicam em aberto na CONTAS, a serem baixadas depois
Onde baixarManualmente em MFC004 (Baixa de Contas) ou via Caixa (MCX001)
Integra com SOVISOBRIGATÓRIO — o faturamento automático SOVIS exige este valor

Simulação passo a passo​

  1. MFA001 → aba Notas Fiscais → Parâmetros NF → ST_PAGTOAVISTA = "Baixa Manual"
  2. Salve os parâmetros (F6)
  3. Abra MNF033 — emita a mesma NF de saída com parcela à vista
  4. Confirme a gravação
  5. A procedure GERA_NOTAFISCAL chama GERA_DUPLICATAS com V_ST_PAGTOAVISTA = 'N' → nenhum processo de caixa é gerado
  6. O bloco de UdmMNF033.pas:1009 (else if ParmFatur.Values['ST_PAGTOAVISTA'] = 'S') não é executado, logo a tela do Caixa não abre
  7. A parcela à vista fica registrada em CONTAS aguardando baixa
  8. Abra MFC004 → localize a parcela → realize a baixa manual

Resultado esperado: A NF é emitida sem abrir o Caixa. O financeiro precisa baixar a parcela depois — dá mais flexibilidade mas exige um passo adicional.


Regras de Neutralização Automática (GERA_NOTAFISCAL)​

Mesmo com PARMFATUR.ST_PAGTOAVISTA = 'S', a procedure GERA_NOTAFISCAL força I_ST_PAGTOAVISTA = 'N' em situações específicas (Scripts/GERA_NOTAFISCAL.sql:1389-1401):

SituaçãoTrechoMotivo
NF de devolução com condição à prazolinha 1390-1391Devolução não gera processo de caixa automaticamente
NF com origem no Estabil (V_IDESTABIL IS NOT NULL)linha 1394-1395Notas integradas do Estabil não podem ser baixadas automaticamente
NF duplicada (V_ST_DUPLICADA = 'S')linha 1397-1398Evita duplicar o processo de caixa
Duplicata de nota especial (V_ST_DUPLICADA_NOTA = 'X')linha 1400-1401Caso especial, não gera caixa

Interação com FECHA_CONTRATOLEITE (Leite)​

As procedures FECHA_CONTRATOLEITE e FECHA_CONTRATOLEITE_V2 implementam um bypass temporário:

  1. Leem o valor atual de ST_PAGTOAVISTA em VST_PAGTOAVISTA
  2. Se era 'S', dão UPDATE PARMFATUR SET ST_PAGTOAVISTA = 'N' antes de chamar GERA_NOTAFISCAL
  3. Restauram o valor original com UPDATE PARMFATUR SET ST_PAGTOAVISTA = :VST_PAGTOAVISTA após a emissão

Isso garante que o fechamento de contrato de leite nunca dispare processo de caixa automático, mesmo que o parâmetro esteja configurado para 'S'.

Interação com Faturamento SOVIS​

O faturamento automático via GERA_NOTAPEDIDOSOVIS bloqueia a execução quando o parâmetro está como 'S' (Scripts/GERA_NOTAPEDIDOSOVIS.sql:55-62):

[GERA_NOTAPEDIDOSOVIS] A empresa N está usando baixa automática no caixa (MFA001), e para o faturamento automático de notas fiscais a vista funcionar corretamente, o parâmetro deve estar como Baixa Manual!

Para usar faturamento SOVIS em lote, é obrigatório configurar ST_PAGTOAVISTA = 'N'.


Tabela Comparativa Resumida​

OpçãoDescriçãoProcesso de Caixa automático?Abre tela do Caixa?Gera Recibo?SOVIS funciona?
SBaixa Automática no CaixaSimSimSim (se houver layout)Não (bloqueia)
NBaixa ManualNãoNãoNãoSim

Referências no Código Fonte​

Delphi​

ArquivoLinha(s)Trecho
source/MFA001/UMFA001.dfm5958-5959Label lbl16 — Caption "Nota Fiscal À Vista", FocusControl = cmbST_PAGTOAVISTA
source/MFA001/UMFA001.dfm6543-6569ComboBox cmbST_PAGTOAVISTA com Items Baixa Automática no Caixa → S / Baixa Manual → N
source/MFA001/UMFA001.pas376Declaração cmbST_PAGTOAVISTA: TwwDBComboBox
source/MFA001/UMFA001.pas1143Navegação de foco (pagPARMAMETROS + pagNota)
source/MFA001/UMFA001.pas1447SetFocus ao entrar na aba Notas Fiscais
source/MFA001/UdmMFA001.dfm86, 713-718, 2343, 2489, 2721, 2966Select/Insert/Update/Field do dataset tabPARMFATUR
source/MFA001/UdmMFA001.pas59tabPARMFATURST_PAGTOAVISTA: TStringField
source/MFA001/UdmMFA001.pas445Valor padrão 'S' no AfterInsert
source/MNF033/UdmMNF033.pas1009else if (ParmFatur.Values['ST_PAGTOAVISTA'] = 'S') then — dispara o processo de caixa automático
source/MNF030/UMNF030.pas386-389Validação comentada/desativada
source/RCA006/UdmRCA006.dfm3061, 3127, 3216, 3289CRUD do registro PARMFATUR (sem decisão)
source/CPD009/UdmCPD009.dfm312, 378, 467, 540CRUD do registro PARMFATUR (sem decisão)

SQL (Scripts/)​

ArquivoLinha(s)
Scripts/GERA_NOTAFISCAL.sql19, 257-265, 1390-1404
Scripts/GERA_DUPLICATAS.sql8, 172
Scripts/GERA_ESTOQUE_NOTAFISCAL.sql19, 171-177
Scripts/GERA_NOTAPEDIDOSOVIS.sql40, 50-62
Scripts/FECHA_CONTRATOLEITE.sql106, 398-421
Scripts/FECHA_CONTRATOLEITE_V2.sql114, 398-417