NR_ITENS — Limite Máximo de Itens por Nota Fiscal
Tela de configuração: MFA002 — Parâmetros de Nota Fiscal por Série Tabela:
PARMNOTA.NR_ITENS· Tipo:DOM_INTEGER(inteiro, anulável) Campo na tela:edtNR_ITENSValor padrão:NULL(sem limite)
Descrição
Define o número máximo de itens (produtos) permitidos em uma única Nota Fiscal para a série selecionada. Quando informado, o sistema bloqueia a inclusão de itens que ultrapassem esse limite, tanto na interface de lançamento quanto na geração oficial da nota via stored procedure.
Se o campo estiver vazio/nulo, não há limite de itens para aquela série.
Campos envolvidos
| Campo | Tabela | Papel |
|---|---|---|
NR_ITENS | PARMNOTA | Limite máximo de itens configurado por série |
NR_LANCAMENTO / itens | ITEMNOTA | Contagem de itens da nota em emissão |
Telas impactadas
| Tela | Rotina | Efeito |
|---|---|---|
| MNF002 | tabITEMNOTAAfterInsert | Bloqueia inserção de item acima do limite |
| MNF002 | tabNOTACD_SERIENFValidate | Carrega NR_ITENS ao selecionar a série |
| MNF008 | tabITEMNOTAAfterInsert | Bloqueia inserção de item acima do limite |
| MNF008 | Consulta_Pedidos / btnOKClick | Interrompe importação de pedido ao atingir limite |
| MNF013 | tabITEMNOTAAfterInsert | Bloqueia inserção de item acima do limite (CTRC) |
| MNF014 | tabITEMNOTAAfterInsert | Bloqueia inserção de item acima do limite |
| MNF017 | tabCABECALHOCD_SERIEValidate / tabFocoCD_SERIEValidate | Carrega NR_ITENS ao validar série |
| MNF026 | tabFiltroCD_SERIEDEVValidate / tabNOTACD_SERIENFValidate | Carrega NR_ITENS ao validar série (devolução) |
| MFA002 | dmMFA002 | Tela de configuração do parâmetro |
Opções disponíveis
Nulo / Vazio — Sem limite de itens
| O que faz | Detalhe |
|---|---|
| Sem restrição de quantidade | Quando NR_ITENS está vazio, o sistema não verifica limite de itens |
Simulação passo a passo
- Acesse MFA002 — Parâmetros de Nota Fiscal por Série.
- Selecione a empresa, o tipo de nota e a série desejada.
- Deixe o campo NR_ITENS vazio.
- Salve o registro.
- Na tela de emissão de NF (ex.: MNF002), abra uma nota com essa série.
- Inclua produtos normalmente — não haverá bloqueio por quantidade de itens.
Resultado esperado: A nota aceita qualquer quantidade de itens, sem limite.
Número inteiro positivo — Limite máximo de itens
| O que faz | Detalhe |
|---|---|
| Limita a quantidade de itens na NF | Valor inteiro (ex.: 50, 100, 990). Ao tentar incluir um item que ultrapasse esse número, o sistema bloqueia. |
| Bloqueio em tempo real | A validação ocorre no evento AfterInsert do item, cancelando a inserção imediatamente. |
| Bloqueio na geração oficial | A procedure GERA_NOTAFISCAL também valida antes de gerar a nota. |
Simulação passo a passo
- Acesse MFA002 — Parâmetros de Nota Fiscal por Série.
- Selecione a empresa, o tipo de nota e a série desejada.
- No campo NR_ITENS, digite
50. - Salve o registro.
- Na tela de emissão de NF (ex.: MNF002), abra uma nota com essa série.
- Inclua produtos normalmente até o 50º item.
- Ao tentar incluir o 51º item, o sistema exibe a mensagem: "O Número total de Produtos da Nota Fiscal Permitido pelo Layout são 50" e cancela a inserção.
Resultado esperado: A nota não permite mais do que 50 itens. Qualquer tentativa de incluir o item 51 é bloqueada com mensagem de erro.
Exceção / Importante:
- Na importação de pedidos (tela MNF008 —
Consulta_Pedidos), o limite também é respeitado: ao atingir o número máximo, o sistema exibe um aviso e interrompe a importação dos itens restantes, mas não cancela os itens já importados (comportamento deBreak).- Na geração oficial via
GERA_NOTAFISCAL, se o número de itens já gravados ultrapassar o limite, a procedure retorna uma mensagem de erro e não gera a nota.
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Efeito |
|---|---|---|
TdmMNF002.tabITEMNOTAAfterInsert | source/MNF002/UdmMNF002.pas | Bloqueia inserção de item acima do limite |
TdmMNF002.tabNOTACD_SERIENFValidate | source/MNF002/UdmMNF002.pas | Carrega NR_ITENS para a variável iNR_ITENSNOTA |
TdmMNF002.tabFocoCD_SERIEValidate | source/MNF002/UdmMNF002.pas | Carrega NR_ITENS na validação de série foco |
CalculaFreteAutomatico | source/MNF002/UdmMNF002.pas | Declara variável iNR_ITENSNOTA |
TdmMNF008.tabITEMNOTAAfterInsert | source/MNF008/UdmMNF008.pas | Bloqueia inserção de item acima do limite |
TdmMNF008.tabNOTACD_SERIENFValidate | source/MNF008/UdmMNF008.pas | Carrega NR_ITENS para a variável |
Consulta_Pedidos | source/MNF008/UMNF008.pas | Interrompe importação ao atingir limite |
TfrmPEDIDO.btnOKClick | source/MNF008/UMNF008PEDIDO.pas | Verifica limite ao confirmar pedido |
TdmMNF013.tabITEMNOTAAfterInsert | source/MNF013/UdmMNF013.pas | Bloqueia inserção de item acima do limite (CTRC) |
TdmMNF013.tabNOTACD_SERIENFValidate | source/MNF013/UdmMNF013.pas | Carrega NR_ITENS na validação de série |
TdmMNF013.cdsCTRCTP_CTEValidate | source/MNF013/UdmMNF013.pas | Carrega NR_ITENS na validação de tipo CTE |
TfrmMNF013.chkAnulacaoClick | source/MNF013/UMNF013.pas | Carrega NR_ITENS na seleção de anulação |
TdmMNF014.tabITEMNOTAAfterInsert | source/MNF014/UdmMNF014.pas | Bloqueia inserção de item acima do limite |
TdmMNF014.tabNOTACD_SERIENFValidate | source/MNF014/UdmMNF014.pas | Carrega NR_ITENS na validação de série |
TdmMNF017.tabCABECALHOCD_SERIEValidate | source/MNF017/UdmMNF017.pas | Carrega NR_ITENS na validação de série |
TdmMNF017.tabFocoCD_SERIEValidate | source/MNF017/UdmMNF017.pas | Carrega NR_ITENS na validação de série foco |
TdmMNF026.tabFiltroCD_SERIEDEVValidate | source/MNF026/UdmMNF026.pas | Carrega NR_ITENS na validação de série devolução |
TdmMNF026.tabNOTACD_SERIENFValidate | source/MNF026/UdmMNF026.pas | Carrega NR_ITENS na validação de série |
TdmMNF001.tabNOTACD_SERIEFORValidate | source/MNF001/UdmMNF001.pas | Carrega NR_ITENS na validação de série fornecedor |
Procedures SQL com referência direta ao campo
| Procedure | Arquivo | Efeito |
|---|---|---|
GERA_NOTAFISCAL | Scripts/GERA_NOTAFISCAL.sql | Valida se COUNT(itens) <= NR_ITENS; se ultrapassar, retorna erro e não gera a nota |
GERA_ESTOQUE_NOTAFISCAL | Scripts/GERA_ESTOQUE_NOTAFISCAL.sql | Lê NR_ITENS da PARMNOTA e usa como limite de iteração sobre itens |
Candidatas por uso da tabela (sem referência direta ao campo)
As procedures abaixo utilizam a tabela PARMNOTA, mas não referenciam NR_ITENS diretamente em seu código:
CALCULA_IMPOSTONOTA, GERA_CHAVEACESSONFE, GERA_IMPOSTONOTA, GERA_IMPOSTONOTA_INDIVIDUAL, GERA_NFE, GERA_NOTAPEDIDO, RETORNA_IMPMOV, RETORNA_IMPRESSORAUSUARIO, RETORNA_NFSEQUENCIA, entre outras listadas no inventário.
Sem impacto direto identificado no código para essas rotinas em relação ao campo NR_ITENS.
Tabela Comparativa Resumida
Valor de NR_ITENS | Comportamento |
|---|---|
NULL / vazio | Sem limite de itens na NF |
N (inteiro positivo) | Máximo de N itens por NF; bloqueio na inserção e na geração |