Pular para o conteúdo principal

NM_SEQUENCIA - Sequência de Numeração de Nota Fiscal

Tela de configuração: MFA002 — Parâmetros de Nota Fiscal Localização: Parâmetros → Nota Fiscal (por Tipo + Série) Tabela: PARMNOTA.NM_SEQUENCIA — VARCHAR(60) Valor padrão: Nenhum (campo nullable — obrigatório para notas de saída)

Resumo​

Define qual sequência numérica (cadastrada na tabela SEQUENCIA ou como generator do Firebird) será usada para gerar automaticamente o número da nota fiscal quando o sistema faturar uma nota daquela série/tipo.

Cada combinação de Tipo de Nota (TP_NOTA) + Série (CD_SERIE) na empresa pode apontar para uma sequência diferente.

Telas impactadas​

TelaMóduloImpacto
MFA002FaturamentoTela de configuração do parâmetro
CNF001FaturamentoValidação ao duplicar nota fiscal
ADM007AdministrativoCadastro/gerenciamento da tabela SEQUENCIA
TFA008FaturamentoGeração da nota fiscal
FNC003FinanceiroSequência de boleto/remessa (usa NM_SEQUENCIA para consultar SEQUENCIA)
FNC007FinanceiroSequência de remessa (usa NM_SEQUENCIA para consultar SEQUENCIA)

Campos envolvidos​

CampoTabelaDescrição
NM_SEQUENCIAPARMNOTANome da sequência configurada para a série/tipo de nota
NM_SEQUENCIASEQUENCIANome da sequência cadastrada (PK com CD_EMPRESA)
NR_ATUALSEQUENCIANúmero atual da sequência
NR_MAXIMOSEQUENCIANúmero máximo permitido
NM_SEQUENCIAPARMNOTACTBFK para SEQUENCIA, usada na contabilização

Comportamento​

Como funciona​

  1. O campo NM_SEQUENCIA armazena o nome de uma sequência previamente cadastrada na tabela SEQUENCIA (tela ADM007) ou como generator nativo do banco Firebird.
  2. Ao faturar uma nota fiscal de saída (TP_NOTA = 'S'), o sistema lê PARMNOTA.NM_SEQUENCIA para aquela série e chama a procedure GERA_SEQUENCIA, que:
    • Se o nome existir como generator do banco, incrementa via GEN_ID.
    • Se existir na tabela SEQUENCIA, incrementa NR_ATUAL + 1 (validando contra NR_MAXIMO).
  3. O número gerado torna-se o NR_NOTAFISCAL da nota.
  4. Para notas de entrada (TP_NOTA = 'E'), a sequência só é usada quando a nota possui numeração interna (indicador de impressão).

Validações​

  • Nota de saída sem sequência: Se NM_SEQUENCIA estiver vazio para uma série de saída e o número da nota for nulo, o sistema bloqueia o faturamento com a mensagem:

    "O NOME DA SEQUÊNCIA DO NÚMERO DE NOTA FISCAL NÃO ESTÁ CADASTRADO NOS PARÂMETROS DE NOTA FISCAL [MFA002]!"

  • Duplicação de nota (CNF001): Se o campo estiver vazio na série destino, a duplicação é bloqueada:

    "Para duplicação da nota é necessário configurar a sequência da Série 'XX' Verifique!"

  • Serviço de faturamento automático (UtilsNfe.pas): Valida que NM_SEQUENCIA está preenchido; se vazio, registra erro:

    "Não foi Encontrado Sequência da Empresa X de NF para a Série! Verifique [MFA002]"

Opções disponíveis​

Não é um campo de opções fixas (como S/N/T). Trata-se de um campo livre que referencia um nome de sequência cadastrado na tabela SEQUENCIA ou como generator do banco.

O que fazDetalhe
Texto livre (nome da sequência)Deve corresponder a um registro em SEQUENCIA.NM_SEQUENCIA ou a um generator Firebird existente
EditávelSim — pode ser alterado a qualquer momento na configuração da série
ObrigatórioSim para notas de saída; opcional para entrada com numeração do fornecedor
Sem preenchimentoBloqueia o faturamento de notas de saída

Preenchimento: Nome de sequência cadastrada​

Simulação passo a passo​

  1. Acesse ADM007 — Sequências e cadastre uma sequência com nome SEQ_NFSAIDA_1, definindo NR_MINIMO = 1, NR_MAXIMO = 999999999.
  2. Abra MFA002 e selecione a série desejada (ex.: série 1, tipo S).
  3. Digite SEQ_NFSAIDA_1 no campo Sequência.
  4. Salve os parâmetros.
  5. Ao faturar uma nota de saída com essa série, o sistema gera o número automaticamente (1, 2, 3...).

Resultado esperado: Cada nota fiscal faturada com essa série recebe um número sequencial único e crescente, controlado pela tabela SEQUENCIA.

Exceção / Importante:

  • Se a sequência atingir NR_MAXIMO, o faturamento é bloqueado com a mensagem "A Sequência X Atingiu o Número Máximo".
  • Se o nome digitado não existir nem como generator nem na tabela SEQUENCIA, o faturamento falha com "A Sequência X não está Cadastrada".
  • Para empresas multiempresa, o nome do generator pode ser prefixado automaticamente com SEQ + código da empresa (ex.: SEQ0001_NFSAIDA_1). Isso depende de como a sequência foi criada (procedure CRIA_SEQUENCIA com tipo SE ou UE).

Preenchimento: Vazio (sem sequência)​

Simulação passo a passo​

  1. Abra MFA002 e selecione a série desejada.
  2. Deixe o campo Sequência em branco.
  3. Salve os parâmetros.
  4. Tente faturar uma nota de saída com essa série.

Resultado esperado: O sistema bloqueia o faturamento e exibe mensagem de erro indicando que a sequência não está cadastrada. Notas de entrada com número do fornecedor já preenchido não são afetadas.

Regra geral​

SituaçãoComporta-se como
NM_SEQUENCIA preenchido e válidoGera NR_NOTAFISCAL automático via GERA_SEQUENCIA
NM_SEQUENCIA preenchido mas não existeErro ao faturar: "Sequência não está Cadastrada"
NM_SEQUENCIA vazio + nota de saídaErro ao faturar: "Sequência não está Cadastrada nos Parâmetros [MFA002]"
NM_SEQUENCIA vazio + nota de entradaUsa o número do fornecedor (NR_NOTAFOR) diretamente
Sequência atingiu NR_MAXIMOErro ao faturar: "Sequência Atingiu o Número Máximo"

Procedures impactadas​

Rotinas Delphi com referência direta​

RotinaArquivoDescrição
TfrmADM007.btnSalvarClicksource/ADM007/UADM007.pasSalva nome da sequência no cadastro
TdmADM007.tabSEQUENCIABeforePostsource/ADM007/UdmADM007.pasValida preenchimento do nome
TdmADM007.tabSEQUENCIAAfterInsert/Scroll/Cancelsource/ADM007/UdmADM007.pasControla edição do campo NM_SEQUENCIA
TfrmCNF001.btnDuplicarClicksource/CNF001/UCNF001.pasValida sequência ao duplicar nota
ValidaPedidossource/JunsoftServiceFatApp/UtilsNfe.pasValida sequência no serviço de faturamento automático
gerarSequenciasource/jCommon/jDB.pasFunção genérica que consulta SEQUENCIA pelo nome
TdmMCA004.tabCONTRATOSCD_SERIEMPRESAValidatesource/MCA004/UdmMCA004.pasConsulta sequência ao validar série no contrato

Procedures SQL com referência direta ao campo​

ProcedureArquivoDescrição
GERA_SEQUENCIAScripts/GERA_SEQUENCIA.sqlIncrementa e retorna o próximo número da sequência
CONSULTA_SEQUENCIAScripts/CONSULTA_SEQUENCIA.sqlConsulta o próximo número sem incrementar
ALTER_SEQUENCEScripts/ALTER_SEQUENCE.sqlAltera/reinicia o valor de uma sequência
CRIA_SEQUENCIAScripts/CRIA_SEQUENCIA.sqlCria nova sequência (generator ou tabela)
GERA_NOTAFISCALScripts/GERA_NOTAFISCAL.sqlLê NM_SEQUENCIA de PARMNOTA e chama GERA_SEQUENCIA para numerar a NF
GERA_ESTOQUE_NOTAFISCAL.sqlScripts/GERA_ESTOQUE_NOTAFISCAL.sqlLê NM_SEQUENCIA de PARMNOTA para estoque de NF
VIEW_SEQUENCIASScripts/VIEW_SEQUENCIAS.sqlLista todas as sequências (filtro por nome)

Candidatas por uso da tabela (sem referência direta ao campo)​

As procedures abaixo utilizam a tabela PARMNOTA mas não referenciam NM_SEQUENCIA diretamente:

  • ATUALIZA_NOTACTB, CALCULA_IMPOSTONOTA, EXPORTACAO_SOVIS_COMPLEMENTO, FECHA_CONTRATOLEITE, FECHA_CONTRATOLEITE_V2, GERA_CHAVEACESSONFE, GERA_IMPOSTONOTA, GERA_IMPOSTONOTA_INDIVIDUAL, GERA_NFE, GERA_NOTAPEDIDO, GRAVA_AVISOS, GRAVA_NOTACTE, RETORNA_IMPMOV, RETORNA_IMPRESSORAUSUARIO, RETORNA_NFSEQUENCIA, VIEW_LIVROFISCAL

Sem impacto funcional direto identificado no campo NM_SEQUENCIA para essas rotinas.