Pular para o conteúdo principal

CD_CONSUMIDOR - Consumidor Final Padrão

Tela de configuração: MFA001 — Parâmetros de Faturamento Localização: Aba Operação 2 → campo Transportador [MNF001/MNF002/MNF007] Tabela: PARMFATUR.CD_CONSUMIDOR (DOM_INTEGER) Componente: edtCD_CONSUMIDOR (TDBEdit, lookup com <F9>)

Resumo​

Define qual cadastro de Pessoa será tratado pelo sistema como "Consumidor Final" padrão. Esse código é referenciado em diversos módulos (NF-e/NFC-e, pedidos, contas a receber, controle de entrega, relatórios) para decidir comportamentos específicos — como pular validações de bloqueio financeiro, habilitar edição de CPF/CNPJ na nota, marcar itens como entregues automaticamente, entre outros.

Campos envolvidos​

CampoTipoDescrição
PARMFATUR.CD_CONSUMIDORINTEGERCódigo da pessoa (FK → PESSOA.CD_PESSOA) usada como consumidor final
PARMFATUR.NM_PESSOAtexto (display)Nome da pessoa exibido ao lado do campo
PESSOA.CD_PESSOAINTEGERTabela referenciada — validação de existência e atividade

Telas impactadas​

TelaContexto do impacto
MFA001Configuração do parâmetro
MNF002 (Nota Fiscal de Saída)Pessoa default na inserção; habilita CPF/CNPJ editável; pula validação financeira para consumidor; controle de cupom identificado NFC-e
MNF008 (Nota Fiscal de Entrada)Pessoa default na inserção de nota
MNF013 (CTRC)Pessoa default na inserção de nota
MNF014 (Devolução)Busca parâmetros (CD_CONSUMIDOR carregado)
MCO006 (Contas a Receber/Pagar)Busca parâmetros para filtro de pessoa
CFC004 (Contas a Receber)Exclui consumidor final de consultas de bloqueio
NFC-e (JunsoftGerNotas)Decide se envia CPF/CNPJ do destinatário no QR Code
LNF227 (Relatório DANFE)Exibe "Consumidor Final" quando CD_PESSOA = CD_CONSUMIDOR
LPD046 (Relatório Pedido)Omite dados de contato quando pedido é do consumidor final

Comportamento​

Validação ao preencher​

Ao informar um código no campo edtCD_CONSUMIDOR, o OnValidate (UdmMFA001.pas:1130-1149) executa:

  1. Consulta PESSOA pelo CD_PESSOA informado.
  2. Se não encontrar → exibe erro "A Pessoa Física / Jurídica não está Cadastrada [TFA001]!".
  3. Se encontrar mas ST_ATIVA = 'N' → exibe erro "A Pessoa Física / Jurídica não está Ativa [TFA001]!".
  4. Se válido → preenche NM_PESSOA com o nome retornado.

Uso como pessoa padrão em notas​

Quando uma nova nota é inserida em MNF002, MNF008 ou MNF013, o sistema atribui automaticamente CD_CONSUMIDOR como pessoa da nota:

  • UdmMNF002.pas:3673 → tabNOTACD_PESSOA := parmfatur.values['CD_CONSUMIDOR']
  • UdmMNF008.pas:2114 → tabNOTACD_PESSOA := iCD_CONSUMIDOR
  • UdmMNF013.pas:1724 → tabNOTACD_PESSOA := iCD_CONSUMIDOR

Edição de CPF/CNPJ na NFC-e (MNF002)​

Quando o CD_PESSOA da nota é igual ao CD_CONSUMIDOR e a série não é do tipo NFC-e "N"/"E" (HabilitaCNPJCPFConsFinal, UMNF002.pas:8263):

  • O campo CPF/CNPJ torna-se editável (ReadOnly = False).
  • O campo Nome do Consumidor Final torna-se editável.
  • Permite digitar CPF/CNPJ e nome do cliente no ato da venda NFC-e.

Quando a pessoa não é o consumidor final, esses campos ficam bloqueados e apenas leitura.

Cupom Identificado (NFC-e)​

Na validação de série (UdmMNF002.pas:8024): se a série é NFCE e CD_PESSOA = CD_CONSUMIDOR, o sistema:

  • Marca ST_CUPOMIDENTIFICADO = 'N' e bloqueia o campo (ReadOnly).
  • Caso contrário, ST_CUPOMIDENTIFICADO = 'S' com edição liberada.

QR Code NFC-e​

Em NFCe.pas:1992-1997, ao gerar o QR Code:

  • Se CD_PESSOA <> CD_CONSUMIDOR → envia o CNPJ/CPF do cadastro da pessoa (NR_CNPJCPF).
  • Se CD_PESSOA = CD_CONSUMIDOR → tenta usar o CPF/CNPJ digitado no momento da venda (NR_CNPJCPFCF). Se vazio, não envia.

Pula validação de bloqueio financeiro​

No botão Salvar de MNF002 (UMNF002.pas:3330): se CD_PESSOA = CD_CONSUMIDOR, o sistema faz uma consulta completa de pessoa mas não bloqueia por situação financeira SCPC da mesma forma que faria para um cliente comum.

Em edtCD_PESSOAExit (MNF002 e MNF008): o filtro de contas exclui o consumidor:

AND CONTAS.CD_PESSOA <> COALESCE(
(SELECT FIRST 1 CD_CONSUMIDOR FROM PARMFATUR), -10)

Exceção na validação de pessoa mestra​

Em UdmMNF002.pas:8546: se a pessoa mestra informada for o próprio CD_CONSUMIDOR, o sistema pula a validação de existência/atividade (pois o consumidor já foi validado na inserção).

Controle de Entrega​

O CD_CONSUMIDOR é repassado como Parametros[8] à função CarregarControleEntrega (source/jControleEntrega/UDadosEntrega.pas). Quando combinado com ST_ENTREGACONSUMIDORFINAL = 'S' (configurado em MFA001, aba Operação 2), os itens do pedido/nota são marcados automaticamente como entregues sem abrir a tela de agendamento.

Consulte ST_ENTREGACONSUMIDORFINAL (configurado em MFA001 — Parâmetros de Faturamento, aba Operação 2) para detalhes completos da regra de entrega automática.

Pessoas Restritas por Vendedor​

A procedure VIEW_PESSOARESTRITA (Scripts/VIEW_PESSOARESTRITA.sql) usa o CD_CONSUMIDOR para bypassar a restrição de pessoa por vendedor: quando a pessoa selecionada é o consumidor final, a restrição é ignorada e a pessoa é retornada normalmente.

Bloqueio Automático de Pessoa​

A procedure VERIFICA_BLOQUEIOPESSOA (Scripts/VERIFICA_BLOQUEIOPESSOA.sql) consulta o CD_CONSUMIDOR e exclui essa pessoa do processo de inativação/bloqueio automático por inatividade.

Integração / Exportação​

  • GERA_INTEGRACAO.sql:376 → Gera coluna ST_CONSUMIDOR = 'S'/'N' comparando N.CD_PESSOA com PF.CD_CONSUMIDOR.
  • EXPORTACAO_DOMINIOCUPOM.sql:99 → Busca CNPJ/CPF do consumidor final para exportação de cupons fiscais.
  • ATUALIZA_PESSOA.sql:283 → Quando o código de pessoa muda, atualiza o CD_CONSUMIDOR na PARMFATUR.

Relatórios​

  • LNF227 (DANFE/Relatório de Nota): se CD_PESSOA = CD_CONSUMIDOR, exibe label "Consumidor Final" e oculta campos de CNPJ/CPF e nome.
  • LPD046 (Impressão de Pedido): se CD_PESSOA <> CD_CONSUMIDOR, imprime dados de contato (fantasia, endereço, fone). Se for consumidor, omita esses dados.

Simulação passo a passo — Preenchimento​

  1. Acesse a tela MFA001 — Parâmetros de Faturamento.
  2. Selecione a aba Operação 2.
  3. No campo Consumidor Final, digite o código da pessoa cadastrada (ex.: 9999) ou pressione <F9> para buscar.
  4. O sistema valida: pessoa deve existir e estar ativa (ST_ATIVA = 'S').
  5. Salve os parâmetros (<F6>).

Resultado esperado: PARMFATUR.CD_CONSUMIDOR armazena o código da pessoa. Todas as notas novas em MNF002/MNF008/MNF013 abrirão com essa pessoa como padrão. O sistema passará a tratá-la como consumidor final em todas as regras documentadas acima.

Exceção / Importante:

  • Se o campo ficar vazio (nulo), notas novas em MNF002/MNF008/MNF013 podem não ter pessoa padrão definida, dependendo do fluxo. Recomenda-se sempre preencher.
  • O campo aceita qualquer pessoa ativa. O ideal é cadastrar uma pessoa específica com nome "Consumidor Final" (sem CNPJ/CPF) e usá-la exclusivamente para esse fim.
  • A comparação entre CD_PESSOA e CD_CONSUMIDOR em diversos pontos do código é feita como string — isso significa que espaços ou formatação diferente podem causar falhas na comparação.

Procedures impactadas​

Rotinas Delphi com referência direta​

RotinaArquivoLinhaUso
tabPARMFATURCD_CONSUMIDORValidatesource/MFA001/UdmMFA001.pas1130Validação: pessoa existe e está ativa
edtCD_CONSUMIDORKeyDownsource/MFA001/UMFA001.pas1379Lookup <F9> de pessoa
TdmMNF002.tabNOTAAfterInsertsource/MNF002/UdmMNF002.pas3673Atribui pessoa default ao inserir nota
TfrmMNF002.btnSalvarClicksource/MNF002/UMNF002.pas3330Pula bloqueio financeiro para consumidor
TfrmMNF002.edtCD_PESSOAExitsource/MNF002/UMNF002.pas5678Exclui consumidor de filtro de contas
TfrmMNF002.HabilitaCNPJCPFConsFinalsource/MNF002/UMNF002.pas8263Habilita CPF/CNPJ editável para consumidor
TdmMNF002.tabNOTACD_SERIENFValidatesource/MNF002/UdmMNF002.pas8024Controle de cupom identificado NFC-e
TdmMNF002.tabNOTACD_PESSOAMESTRAValidatesource/MNF002/UdmMNF002.pas8546Pula validação se mestra = consumidor
TdmMNF002.BuscaParametros_MNF002source/MNF002/UdmMNF002.pas10492Carrega CD_CONSUMIDOR em ParmFatur
TdmMNF008.tabNOTAAfterInsertsource/MNF008/UdmMNF008.pas2114Atribui pessoa default ao inserir nota
TdmMNF008.BuscaParametros_MNF008source/MNF008/UdmMNF008.pas757Carrega CD_CONSUMIDOR em ParmFatur
TfrmMNF008.edtCD_PESSOAExitsource/MNF008/UMNF008.pas2046Exclui consumidor de filtro de contas
TdmMNF013.tabNOTAAfterInsertsource/MNF013/UdmMNF013.pas1724Atribui pessoa default ao inserir nota
Busca_Parametrossource/MNF013/UdmMNF013.pas699Carrega CD_CONSUMIDOR
Busca_Parametrossource/MNF014/UdmMNF014.pas323Carrega CD_CONSUMIDOR
TdmMCO006.BuscaParametros_MCO006source/MCO006/UdmMCO006.pas2101Carrega CD_CONSUMIDOR
TfrmCFC004.btnProcurarClicksource/CFC004/UCFC004.pas338Exclui consumidor de consulta de contas
TNFeService.geraPreTagQrCodesource/JunsoftGerNotas/Classes/NFCe.pas1942Seleciona CD_CONSUMIDOR para QR Code
TNFeService (QR Code)source/JunsoftGerNotas/Classes/NFCe.pas1992Decide cDest com base na comparação
ExecLayoutsource/LNF227/ULNF227.pas445Oculta dados quando CD_PESSOA = consumidor
Imprimirsource/LPD046/ULPD046.pas175Omite contato quando pedido é consumidor

Procedures SQL com referência direta ao campo​

Procedure/ViewArquivoLinhaUso
VERIFICA_BLOQUEIOPESSOAScripts/VERIFICA_BLOQUEIOPESSOA.sql8, 28, 46Exclui consumidor do bloqueio automático por inatividade
VIEW_PESSOARESTRITAScripts/VIEW_PESSOARESTRITA.sql12, 20, 35Bypass de restrição por vendedor para consumidor
GERA_INTEGRACAOScripts/GERA_INTEGRACAO.sql376Gera flag ST_CONSUMIDOR comparando CD_PESSOA com CD_CONSUMIDOR
EXPORTACAO_DOMINIOCUPOMScripts/EXPORTACAO_DOMINIOCUPOM.sql99Busca CNPJ do consumidor para exportação de cupom
ATUALIZA_PESSOAScripts/ATUALIZA_PESSOA.sql283Atualiza CD_CONSUMIDOR quando código de pessoa muda
TRGAIUD_CONTASScripts/TRGAIUD_CONTAS.sql10Declara variável v_cd_consumidor (não utilizada no corpo)
GERA_NOTAFISCALScripts/GERA_NOTAFISCAL.sql173Declara variável V_CD_CONSUMIDORMFA001 (não utilizada no corpo)