ST_OBRIGAPEDIDO - Obrigatoriedade de Pedido Vinculado à Nota Fiscal
Tela de configuração: MFA002 — Parâmetros de Nota Fiscal por Série Tabela:
PARMNOTA.ST_OBRIGAPEDIDOValor padrão:N(Não)
Telas impactadas
| Tela | Rotina | Efeito |
|---|---|---|
| MNF001 — Entrada de Nota Fiscal | btnSalvarClick, tabITEMNOTANewRecord | Impede emissão/salvamento sem pedido; impede inserção de itens avulsa |
| MNF002 — Emissão de Nota Fiscal (Saída) | btnSalvarClick, tabITEMNOTANewRecord | Impede emissão sem pedido; impede inserção de itens avulsa; valida itens contra pedido |
| MNF026 — Devolução de Nota Fiscal | tabFiltroCD_SERIEDEVValidate, tabNOTACD_SERIENFValidate | Carrega o parâmetro ao selecionar a série |
Campos envolvidos
| Campo | Tabela | Uso |
|---|---|---|
ST_OBRIGAPEDIDO | PARMNOTA | Campo origem do parâmetro (por série + empresa + tipo de nota) |
NR_PEDIDO | PEDIDONOTA | Verifica existência de pedido vinculado ao lançamento |
NR_PEDIDO (XML) | Via cdsPEDIDOXML | Verifica pedido importado de XML (MNF001) |
Opções disponíveis
S — Sim (Obriga Pedido Vinculado)
| O que faz | Detalhe |
|---|---|
| Bloqueia inserção de itens avulsa | O usuário não pode adicionar itens manualmente — apenas via importação de pedido |
| Bloqueia emissão sem pedido | Ao salvar a nota, o sistema verifica se existe pedido associado |
| Valida itens contra o pedido | Ao gravar, verifica se cada item da nota existe no pedido vinculado |
| Não se aplica a Nota Complementar | Notas complementares são isentas da obrigatoriedade |
Simulação passo a passo
- Acesse MFA002 → Parâmetros de Nota Fiscal por Série e selecione a série desejada.
- No campo correspondente, escolha "S" (Sim) para
ST_OBRIGAPEDIDO. - Salve o parâmetro.
- Abra MNF002 — Emissão de Nota Fiscal e selecione a mesma série.
- Tente inserir um item manualmente (sem vincular um pedido).
- O sistema cancela a inserção e exibe a mensagem: "Não é Permitido inserir itens para a série [X] pois a mesma obriga ter pedido associado. Verifique! [MFA002]".
- Vincule um pedido à nota e adicione os itens a partir dele.
- Ao salvar a nota, o sistema verifica se todos os itens da nota constam no pedido vinculado. Itens fora do pedido são listados para correção.
Resultado esperado: Notas fiscais dessa série só podem ser emitidas com um pedido previamente associado, e os itens devem corresponder aos do pedido.
Exceção / Importante:
- Notas do tipo Complementar (
ehComplementar = True) são isentas dessa obrigatoriedade (verificado em MNF002).- No MNF001, a importação de XML (
ImportouXML) e o carregamento de pedido (flagCarregandoPedido) bypassam o bloqueio de inserção de itens.- A validação ao salvar (MNF001) verifica pedido vinculado em três fontes: campo
NR_PEDIDOda nota, tabelaPEDIDONOTAe pedido do XML (cdsPEDIDOXML).
N — Não (Sem Obrigatoriedade)
| O que faz | Detalhe |
|---|---|
| Libera inserção de itens avulsa | O usuário pode adicionar itens manualmente sem pedido |
| Libera emissão sem pedido | A nota pode ser salva e emitida normalmente sem pedido vinculado |
Simulação passo a passo
- Acesse MFA002 → Parâmetros de Nota Fiscal por Série e selecione a série desejada.
- No campo correspondente, confirme "N" (Não) para
ST_OBRIGAPEDIDO. - Salve o parâmetro.
- Abra MNF002 — Emissão de Nota Fiscal e selecione a mesma série.
- Adicione itens manualmente, sem vincular pedido.
- Salve e emita a nota normalmente.
Resultado esperado: Notas fiscais dessa série podem ser emitidas livremente, com ou sem pedido associado.
Regra Geral
O parâmetro é armazenado por série + empresa + tipo de nota (chave primária de PARMNOTA). Isso significa que a obrigatoriedade pode ser configurada de forma independente para cada combinação de série e tipo (entrada/saída).
O fluxo de validação quando ST_OBRIGAPEDIDO = 'S' ocorre em três pontos:
- Inserção de item (
tabITEMNOTANewRecord): bloqueia a inclusão manual de itens se não houver pedido carregado. - Gravação da nota (
Grava_NotaFiscal/btnSalvarClick): verifica se cada item da nota existe no pedido vinculado. - Salvamento final (
btnSalvarClick): verifica se a nota possui pedido associado antes de emitir.
Tabela Comparativa Resumida
| Valor | Descrição | Insere item avulso? | Emite sem pedido? | Nota Complementar |
|---|---|---|---|---|
N | Não | ✅ Sim | ✅ Sim | Sem restrição |
S | Sim | ❌ Não | ❌ Não | ✅ Isenta |
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Linha | Efeito |
|---|---|---|---|
TdmMFA002.tabPARMNOTAAfterInsert | UdmMFA002.pas | 92 | Inicializa campo com 'N' ao criar novo registro |
TfrmMNF001.btnSalvarClick | UMNF001.pas | 1941–1958 | Consulta ST_OBRIGAPEDIDO e bloqueia emissão sem pedido |
TdmMNF001.tabITEMNOTANewRecord | UdmMNF001.pas | 11916–11931 | Consulta ST_OBRIGAPEDIDO e bloqueia inserção de item avulsa |
TfrmMNF002.btnSalvarClick | UMNF002.pas | 3611–3612 | Bloqueia emissão se sem pedido e ST_OBRIGAPEDIDO = 'S' (exceto complementar) |
TdmMNF002.tabITEMNOTANewRecord | UdmMNF002.pas | 10676–10680 | Bloqueia inserção de item se sem pedido carregado |
Grava_NotaFiscal | UdmMNF002.pas | 1728–1744 | Valida se cada item da nota existe no pedido vinculado |
TdmMNF002.tabNOTACD_SERIENFValidate | UdmMNF002.pas | 7904–7943 | Carrega valor do parâmetro ao selecionar série |
TdmMNF026.tabFiltroCD_SERIEDEVValidate | UdmMNF026.pas | 4467 | Carrega parâmetro ao selecionar série de devolução |
TdmMNF026.tabNOTACD_SERIENFValidate | UdmMNF026.pas | 4883 | Carrega parâmetro ao selecionar série na devolução |
Referências SQL diretas ao campo
Não foi encontrada referência direta ao campo ST_OBRIGAPEDIDO em Scripts/. As procedures que utilizam a tabela PARMNOTA acessam outros campos da tabela, não este parâmetro especificamente.
Candidatas por uso da tabela (sem referência direta ao campo)
As procedures abaixo utilizam a tabela PARMNOTA, mas não referenciam ST_OBRIGAPEDIDO diretamente:
| Procedure/View | Arquivo |
|---|---|
CALCULA_IMPOSTONOTA | Scripts/CALCULA_IMPOSTONOTA.sql |
GERA_NFE | Scripts/GERA_NFE.sql |
GERA_NOTAFISCAL | Scripts/GERA_NOTAFISCAL.sql |
GERA_ESTOQUE_NOTAFISCAL | Scripts/GERA_ESTOQUE_NOTAFISCAL.sql |
GERA_IMPOSTONOTA | Scripts/GERA_IMPOSTONOTA.sql |
GERA_IMPOSTONOTA_INDIVIDUAL | Scripts/GERA_IMPOSTONOTA_INDIVIDUAL.sql |
GERA_NOTAPEDIDO | Scripts/GERA_NOTAPEDIDO.sql |
RETORNA_NFSEQUENCIA | Scripts/RETORNA_NFSEQUENCIA.sql |