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
| Tela | Módulo | Impacto |
|---|---|---|
| MFA002 | Faturamento | Tela de configuração do parâmetro |
| CNF001 | Faturamento | Validação ao duplicar nota fiscal |
| ADM007 | Administrativo | Cadastro/gerenciamento da tabela SEQUENCIA |
| TFA008 | Faturamento | Geração da nota fiscal |
| FNC003 | Financeiro | Sequência de boleto/remessa (usa NM_SEQUENCIA para consultar SEQUENCIA) |
| FNC007 | Financeiro | Sequência de remessa (usa NM_SEQUENCIA para consultar SEQUENCIA) |
Campos envolvidos
| Campo | Tabela | Descrição |
|---|---|---|
NM_SEQUENCIA | PARMNOTA | Nome da sequência configurada para a série/tipo de nota |
NM_SEQUENCIA | SEQUENCIA | Nome da sequência cadastrada (PK com CD_EMPRESA) |
NR_ATUAL | SEQUENCIA | Número atual da sequência |
NR_MAXIMO | SEQUENCIA | Número máximo permitido |
NM_SEQUENCIA | PARMNOTACTB | FK para SEQUENCIA, usada na contabilização |
Comportamento
Como funciona
- O campo
NM_SEQUENCIAarmazena o nome de uma sequência previamente cadastrada na tabelaSEQUENCIA(tela ADM007) ou como generator nativo do banco Firebird. - Ao faturar uma nota fiscal de saída (
TP_NOTA = 'S'), o sistema lêPARMNOTA.NM_SEQUENCIApara aquela série e chama a procedureGERA_SEQUENCIA, que:- Se o nome existir como generator do banco, incrementa via
GEN_ID. - Se existir na tabela SEQUENCIA, incrementa
NR_ATUAL + 1(validando contraNR_MAXIMO).
- Se o nome existir como generator do banco, incrementa via
- O número gerado torna-se o
NR_NOTAFISCALda nota. - 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_SEQUENCIAestiver 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_SEQUENCIAestá 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 faz | Detalhe |
|---|---|
| Texto livre (nome da sequência) | Deve corresponder a um registro em SEQUENCIA.NM_SEQUENCIA ou a um generator Firebird existente |
| Editável | Sim — pode ser alterado a qualquer momento na configuração da série |
| Obrigatório | Sim para notas de saída; opcional para entrada com numeração do fornecedor |
| Sem preenchimento | Bloqueia o faturamento de notas de saída |
Preenchimento: Nome de sequência cadastrada
Simulação passo a passo
- Acesse ADM007 — Sequências e cadastre uma sequência com nome
SEQ_NFSAIDA_1, definindoNR_MINIMO = 1,NR_MAXIMO = 999999999. - Abra MFA002 e selecione a série desejada (ex.: série
1, tipoS). - Digite
SEQ_NFSAIDA_1no campo Sequência. - Salve os parâmetros.
- 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 (procedureCRIA_SEQUENCIAcom tipoSEouUE).
Preenchimento: Vazio (sem sequência)
Simulação passo a passo
- Abra MFA002 e selecione a série desejada.
- Deixe o campo Sequência em branco.
- Salve os parâmetros.
- 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ção | Comporta-se como |
|---|---|
NM_SEQUENCIA preenchido e válido | Gera NR_NOTAFISCAL automático via GERA_SEQUENCIA |
NM_SEQUENCIA preenchido mas não existe | Erro ao faturar: "Sequência não está Cadastrada" |
NM_SEQUENCIA vazio + nota de saída | Erro ao faturar: "Sequência não está Cadastrada nos Parâmetros [MFA002]" |
NM_SEQUENCIA vazio + nota de entrada | Usa o número do fornecedor (NR_NOTAFOR) diretamente |
Sequência atingiu NR_MAXIMO | Erro ao faturar: "Sequência Atingiu o Número Máximo" |
Procedures impactadas
Rotinas Delphi com referência direta
| Rotina | Arquivo | Descrição |
|---|---|---|
TfrmADM007.btnSalvarClick | source/ADM007/UADM007.pas | Salva nome da sequência no cadastro |
TdmADM007.tabSEQUENCIABeforePost | source/ADM007/UdmADM007.pas | Valida preenchimento do nome |
TdmADM007.tabSEQUENCIAAfterInsert/Scroll/Cancel | source/ADM007/UdmADM007.pas | Controla edição do campo NM_SEQUENCIA |
TfrmCNF001.btnDuplicarClick | source/CNF001/UCNF001.pas | Valida sequência ao duplicar nota |
ValidaPedidos | source/JunsoftServiceFatApp/UtilsNfe.pas | Valida sequência no serviço de faturamento automático |
gerarSequencia | source/jCommon/jDB.pas | Função genérica que consulta SEQUENCIA pelo nome |
TdmMCA004.tabCONTRATOSCD_SERIEMPRESAValidate | source/MCA004/UdmMCA004.pas | Consulta sequência ao validar série no contrato |
Procedures SQL com referência direta ao campo
| Procedure | Arquivo | Descrição |
|---|---|---|
GERA_SEQUENCIA | Scripts/GERA_SEQUENCIA.sql | Incrementa e retorna o próximo número da sequência |
CONSULTA_SEQUENCIA | Scripts/CONSULTA_SEQUENCIA.sql | Consulta o próximo número sem incrementar |
ALTER_SEQUENCE | Scripts/ALTER_SEQUENCE.sql | Altera/reinicia o valor de uma sequência |
CRIA_SEQUENCIA | Scripts/CRIA_SEQUENCIA.sql | Cria nova sequência (generator ou tabela) |
GERA_NOTAFISCAL | Scripts/GERA_NOTAFISCAL.sql | Lê NM_SEQUENCIA de PARMNOTA e chama GERA_SEQUENCIA para numerar a NF |
GERA_ESTOQUE_NOTAFISCAL.sql | Scripts/GERA_ESTOQUE_NOTAFISCAL.sql | Lê NM_SEQUENCIA de PARMNOTA para estoque de NF |
VIEW_SEQUENCIAS | Scripts/VIEW_SEQUENCIAS.sql | Lista 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.