Pular para o conteúdo principal

MNF002 — Emissão de Nota Fiscal de Venda (enriquecimento)

Menu: Faturamento > Movimentações > Notas Fiscais > Emissão de Nota Fiscal de Venda

Objetivo​

A tela MNF002 é usada para emitir Notas Fiscais de Venda (modelos 55/65/NFS-e/SAT/Cupom), vinculando-as ou não a Pedidos de Venda já cadastrados. Ela calcula automaticamente impostos (ICMS, IPI, PIS/COFINS, IBS/CBS, substituição tributária), controla estoque, seriais e lotes, aplica regras de comissão de vendedores, gera contas a receber e integra com a emissão eletrônica do documento fiscal (NF-e/NFC-e/SAT). Também trata cenários específicos como transferência entre empresas/filiais, nota complementar, devolução (com aviso para usar a MNF007), exportação e romaneio de pneus recapados.

Fluxo principal​

  1. Abrir a tela pelo menu Faturamento > Movimentações > Notas Fiscais > Emissão de Nota Fiscal de Venda. (MNF002 - geral) — source/MNF002/UMNF002.pas:5729-5735 (TfrmMNF002.FormCreate)
  2. Selecionar a Série da nota fiscal e, se a série exigir, aparecerá a obrigatoriedade de vincular um Pedido de Venda (parâmetro da série na MFA002). (pagNOTA - Dados da Nota) — source/MNF002/UdmMNF002.pas:10994-11000 (TdmMNF002.tabITEMNOTANewRecord)
  3. Informar a Pessoa (cliente) e o Endereço; o sistema valida se está ativa, sem bloqueio financeiro e carrega vendedor, condição e forma de pagamento padrão. (pagNOTA - Dados da Nota) — source/MNF002/UdmMNF002.pas:4162-4230 (TdmMNF002.tabNOTACD_PESSOAValidate)
  4. Opcionalmente, vincular um ou mais Pedidos de Venda do cliente pela tela de seleção de pedidos (botão Pedido); os itens marcados são conferidos quanto a local de armazenagem antes de serem trazidos para a nota. (UPEDIDO - Seleção de Pedidos) — source/MNF002/UPEDIDO.pas:126-136 (TfrmPEDIDO.btnOKClick)
  5. Incluir/conferir os produtos na grade (Produto, Movimentação, Peso/Quantidade, Valor Unitário), com validações automáticas de tabela de preço, estoque e faixa de peso/quantidade. (pagNOTA - grid de Produtos) — source/MNF002/UdmMNF002.pas:10137-10246 (TdmMNF002.ValidaPeso)
  6. Preencher dados adicionais quando aplicável: Embarque/Transportador (exportação), Pneu recapado, Rateio de Centro de Resultado. (pagDADOS - Dados Adicionais) — source/MNF002/UdmMNF002.pas:7121-7143 (TdmMNF002.tabEMBARQUEBeforePost)
  7. Clicar em Salvar: o sistema valida obrigatoriedades, verifica bloqueios (VERIFICA_BLOQUEIO), pede chave de acesso se detectar CFOP de devolução, grava a nota (Grava_NotaFiscal) e gera o documento fiscal (GERA_NOTAFISCAL). (pagNOTA - botão Salvar) — source/MNF002/UMNF002.pas:3872-3918 (TfrmMNF002.btnSalvarClick)
  8. Após salvar, o sistema confirma a operação, dispara emissão de NF-e/NFC-e/SAT quando aplicável e imprime nota, duplicatas e receita agronômica conforme configuração. (pagNOTA - pós-salvamento) — source/MNF002/UMNF002.pas:5074-5108 (TfrmMNF002.btnSalvarClick)

Campos obrigatórios​

CampoCondiçãoMensagemFonte
Data de Emissão da Notasempre, ao salvar o cabeçalho da notaÉ Obrigatório informar a Data de Emissão da Nota Fiscal!source/MNF002/UdmMNF002.pas:3819-3825 (TdmMNF002.tabNOTABeforePost)
Série da Nota Fiscalao clicar em SalvarÉ Obrigatório informar a Série da Nota Fiscal!source/MNF002/UMNF002.pas:3693-3697 (TfrmMNF002.btnSalvarClick)
Número da Nota Fiscalquando a série não é do tipo numeração automática (simulação)Para a Série do Tipo Simulação é Obrigatório informar o Número da Nota Fiscal!source/MNF002/UMNF002.pas:3699-3704 (TfrmMNF002.btnSalvarClick)
Pessoa (cliente)sempre, ao salvar o cabeçalhoÉ Obrigatório informar a Pessoa Física / Jurídica!source/MNF002/UdmMNF002.pas:3841-3846 (TdmMNF002.tabNOTABeforePost)
Endereço da pessoasempre, ao salvar o cabeçalhoÉ Obrigatório informar o Endereço da Pessoa Física / Jurídica!source/MNF002/UdmMNF002.pas:3848-3853 (TdmMNF002.tabNOTABeforePost)
Condição de Pagamentosempre, ao salvar o cabeçalhoÉ Obrigatório informar a Condição de Pagamento!source/MNF002/UdmMNF002.pas:3855-3867 (TdmMNF002.tabNOTABeforePost)
Forma de Pagamentosempre, ao salvar o cabeçalhoÉ Obrigatório informar a Forma de Pagamento!source/MNF002/UdmMNF002.pas:3881-3886 (TdmMNF002.tabNOTABeforePost)
Data de Vencimentoquando a condição de pagamento é do tipo 'Digite' (ST_CONDPAGTO = 'D')A Data de Vencimento não pode ser vazia!source/MNF002/UMNF002.pas:3781-3804 (TfrmMNF002.btnSalvarClick)
Vendedorquando PARMFATUR.ST_BLOQUEIOVENDEDOR = 'S' e PARMFATUR.ST_VARIOSVENDEDORES = 'N'É Obrigatório informar o Vendedor !source/MNF002/UMNF002.pas:3681-3687 (TfrmMNF002.btnSalvarClick)
Produto do itempara cada linha da grade de produtosÉ Obrigatório informar o Produto da Nota Fiscal!source/MNF002/UdmMNF002.pas:3919-3931 (TdmMNF002.tabITEMNOTABeforePost)
Movimentação do itempara cada linha da grade de produtosÉ Obrigatório informar a Movimentação do Produto na Nota Fiscal!source/MNF002/UdmMNF002.pas:3932-3937 (TdmMNF002.tabITEMNOTABeforePost)
Peso e/ou Quantidade do itemconforme o produto controle por peso, quantidade ou ambosÉ Obrigatório informar o Peso do Produto ... / a Quantidade do Produto ...source/MNF002/UdmMNF002.pas:3952-3967 (TdmMNF002.tabITEMNOTABeforePost)
Valor Unitário e Valor Total do itempara cada linha da grade de produtosÉ Obrigatório informar o Valor Unitário/Total do Produto ...source/MNF002/UdmMNF002.pas:3968-3979 (TdmMNF002.tabITEMNOTABeforePost)
NRE e Chave de Acesso de Exportaçãoquando o item usa CFO de exportação (aba Exportação visível)Para Nota de Exportação, é Obrigatório Informar a NRE / a Chave de Acesso. Verifique!source/MNF002/UdmMNF002.pas:3983-3997 (TdmMNF002.tabITEMNOTABeforePost)
Chave de Acesso da Nota Referenciadaao incluir um registro na grade de documentos referenciadosÉ Obrigatório Nº da Chave de Acesso da Nota Referênciada!source/MNF002/UdmMNF002.pas:10404-10417 (TdmMNF002.tabNotaRefBeforePost)

Mensagens: causa e ação​

I-1821: O frete no valor de R$ %s foi adicionado a nota.​

Causa: A nota foi gerada a partir de um pedido de venda e o cliente/parâmetro geral não cobre integralmente o valor líquido com isenção de frete, então o sistema calculou e rateou automaticamente o frete entre os itens.

Ação: Conferir se o valor de frete rateado está correto; se não deveria haver cobrança, revisar a tabela de frete/isenção do cliente (TFA001) ou os parâmetros VL_FRETE/VL_FRETEISENTO em MFA001.

Fonte: source/MNF002/UdmMNF002.pas:9005-9006 (TdmMNF002.CalculaFreteAutomatico)

A Data de Vencimento não pode ser Menor que a Data de Emissão da Nota Fiscal!​

Causa: A condição de pagamento exige data de vencimento digitada e o usuário informou uma data anterior à data de emissão da nota.

Ação: Corrigir a Data de Vencimento para ser igual ou posterior à Data de Emissão antes de salvar.

Fonte: source/MNF002/UMNF002.pas:3799-3804 (TfrmMNF002.btnSalvarClick)

A Data de vencimento não pode ser Menor que a Data de Emissão da Nota. Deseja Continuar ?​

Causa: Ao trocar de cliente (ou sair do campo Pessoa), o sistema detecta que a data de vencimento já preenchida ficou anterior à emissão.

Ação: Responder 'Não' para que o sistema limpe a data e permita redigitar corretamente, ou 'Sim' apenas se a divergência for intencional (a nota ainda será barrada no botão Salvar).

Fonte: source/MNF002/UMNF002.pas:6058-6065 (TfrmMNF002.edtCD_PESSOAExit)

A Movimentação Gera Estoque e o Produto "%s": Não Possui Local de Armazenagem Associado. Ou o Usuário não Possui Acesso. Ou não Permite Faturamento. Verifique! [TPO001, TOF007]​

Causa: O produto usa uma movimentação que controla estoque, mas não há nenhum local de armazenagem cadastrado para ele (TPO001), ou o usuário logado não tem acesso a nenhum dos locais cadastrados, ou o local não permite faturamento.

Ação: No cadastro do produto (TPO001), associar ao menos um local de armazenagem que permita faturamento; conceder ao usuário acesso a esse local (TOF007).

Fonte: source/MNF002/UdmMNF002.pas:4002-4024 (TdmMNF002.tabITEMNOTABeforePost)

A Movimentação %s não pode ser de Devolução ou Retorno!​

Causa: O usuário selecionou, para um item de nota de venda, uma movimentação cadastrada como de devolução/retorno (ST_DEVOLUCAO diferente de 'N'), o que não é permitido nesta tela de emissão.

Ação: Selecionar uma movimentação de venda normal; devoluções devem ser lançadas na tela MNF007.

Fonte: source/MNF002/UdmMNF002.pas:5579-5580 (TdmMNF002.tabITEMNOTACD_MOVIMENTACAOValidate)

Atenção! Para realizar a devolução de documentos fiscais, utilizar a tela MNF007.​

Causa: O CFOP determinado para o item (dentro ou fora do estado) está marcado como CFOP de devolução (ST_DEVOLUCAO='S' na CFO/TFI002), mesmo a movimentação não sendo formalmente de devolução.

Ação: Orientar o usuário a lançar a operação na tela MNF007 (Devolução de Documentos Fiscais) em vez de emitir venda normal com este CFOP.

Fonte: source/MNF002/UdmMNF002.pas:5589-5597 (TdmMNF002.tabITEMNOTACD_MOVIMENTACAOValidate)

A chave de acesso informada é inválida.​

Causa: A chave de acesso digitada não tem 44 dígitos ou não passa na validação do dígito verificador (módulo 11).

Ação: Conferir e redigitar a chave de acesso completa (44 dígitos) do documento fiscal referenciado.

Fonte: source/MNF002/UdmMNF002.pas:10451-10455 (TdmMNF002.tabNotaRefNR_CHAVEACESSOValidate)

A Chave de Acesso Referênciada deve ser de um CT-e!! / deve ser de uma NF-e!!​

Causa: O modelo do documento embutido na chave de acesso (posições 21-22) não corresponde ao tipo de referência selecionado no combo (CT-e ou NF-e).

Ação: Selecionar o tipo de documento correto no combo de referência, ou digitar a chave de acesso do documento certo (modelo 57 para CT-e, 55 para NF-e).

Fonte: source/MNF002/UdmMNF002.pas:10462-10471 (TdmMNF002.tabNotaRefNR_CHAVEACESSOValidate)

Este Produto está Associado a um Pedido e não pode ser Excluído.​

Causa: O usuário tentou excluir da grade um item cujo peso/quantidade veio de um pedido de venda vinculado.

Ação: Para remover o item, desmarcar/zerar a quantidade atendida do produto na tela de seleção de Pedido, em vez de excluir diretamente na grade da nota.

Fonte: source/MNF002/UMNF002.pas:5807-5809 (TfrmMNF002.btnExcluirClick)

Esta nota fiscal já tem um pedido associado, não sendo possível gerar um novo pedido!​

Causa: O usuário clicou em 'Gerar Pedido' numa nota que já possui NR_PEDIDO preenchido.

Ação: Não é necessário gerar outro pedido; usar o pedido já associado à nota, visível no campo Nº do Pedido.

Fonte: source/MNF002/UMNF002.pas:8372-8373 (TfrmMNF002.btnGravarPedidoClick)

A porcentagem de comissão não pode ser maior que 100%. Verifique!​

Causa: No campo de comissão geral do cabeçalho, foi digitado um percentual maior que 100, que seria replicado para todos os itens.

Ação: Corrigir o percentual de comissão geral para um valor entre 0 e 100.

Fonte: source/MNF002/UMNF002.pas:7421-7424 (TfrmMNF002.edtPC_COMISSAOGERALExit)

O valor de desconto não pode ser maior que o total dos itens. Verifique!​

Causa: O desconto geral informado no cabeçalho da nota é maior que o valor total (bruto) somado dos itens.

Ação: Reduzir o valor de desconto geral para, no máximo, o total dos itens da nota.

Fonte: source/MNF002/UMNF002.pas:6552-6556 (TfrmMNF002.edtVL_DESCONTO2Exit)

CNPJ/CPF Inválido​

Causa: O número de CNPJ/CPF digitado no campo do transportador (dados de embarque) não passa na validação de dígitos verificadores.

Ação: Conferir e redigitar o CNPJ/CPF do transportador.

Fonte: source/MNF002/UMNF002.pas:6679-6686 (TfrmMNF002.edtNR_CGCCPFExit)

Regras de negócio​

  • MNF002.R001 (ver regras/MNF002/MNF002.R001.md)
  • MNF002.R002 (ver regras/MNF002/MNF002.R002.md)
  • MNF002.R003 (ver regras/MNF002/MNF002.R003.md)
  • MNF002.R004 (ver regras/MNF002/MNF002.R004.md)
  • MNF002.R005 (ver regras/MNF002/MNF002.R005.md)
  • MNF002.R006 (ver regras/MNF002/MNF002.R006.md)
  • MNF002.R007 (ver regras/MNF002/MNF002.R007.md)
  • MNF002.R008 (ver regras/MNF002/MNF002.R008.md)
  • MNF002.R009 (ver regras/MNF002/MNF002.R009.md)
  • MNF002.R010 (ver regras/MNF002/MNF002.R010.md)
  • MNF002.R011 (ver regras/MNF002/MNF002.R011.md)
  • MNF002.R012 (ver regras/MNF002/MNF002.R012.md)
  • MNF002.R013 (ver regras/MNF002/MNF002.R013.md)
  • MNF002.R014 (ver regras/MNF002/MNF002.R014.md)
  • MNF002.R015 (ver regras/MNF002/MNF002.R015.md)
  • MNF002.R016 (ver regras/MNF002/MNF002.R016.md)
  • MNF002.R017 (ver regras/MNF002/MNF002.R017.md)
  • MNF002.R018 (ver regras/MNF002/MNF002.R018.md)
  • MNF002.R019 (ver regras/MNF002/MNF002.R019.md)

Perguntas frequentes​

P: Por que não consigo excluir um produto da nota fiscal? R: Porque o produto foi atendido a partir de um Pedido de Venda (tem peso ou quantidade vindos do pedido). Nesse caso a exclusão precisa ser feita ajustando a quantidade atendida na tela de seleção do Pedido, não diretamente na grade da nota. Fonte: source/MNF002/UMNF002.pas:5806-5809 (TfrmMNF002.btnExcluirClick)

P: Por que aparece a mensagem 'A Movimentação Gera Estoque e o Produto ... Não Possui Local de Armazenagem Associado'? R: O produto usa uma movimentação de estoque, mas não tem local de armazenagem cadastrado, ou o local existente não permite faturamento, ou o usuário logado não tem acesso a nenhum local válido para esse produto. Fonte: source/MNF002/UdmMNF002.pas:4002-4024 (TdmMNF002.tabITEMNOTABeforePost)

P: Por que a tela pede autorização de login/senha ao salvar a nota? R: A rotina VERIFICA_BLOQUEIO detectou um motivo de bloqueio para a nota (ex.: limite de crédito, pendência financeira, etc.) e o parâmetro PARMFATUR.ST_LOGINBLOQUEIO está configurado como 'S', exigindo um usuário Autorizador ativo para liberar a nota; se o parâmetro não pedir login, a nota é salva com status Bloqueada. Fonte: source/MNF002/UMNF002.pas:3872-3918 (TfrmMNF002.btnSalvarClick)

P: Por que o sistema pede a chave de acesso da nota de origem ao salvar? R: Porque algum item da nota tem um CFOP marcado como de devolução (ST_DEVOLUCAO='S' na CFO). O sistema pergunta se deseja informar a chave de acesso da nota fiscal de origem para referenciar; recomenda-se, nesse caso, usar a tela MNF007 (Devolução) em vez desta. Fonte: source/MNF002/UdmMNF002.pas:10010-10049 (TdmMNF002.VerificaNotaDevolucao)

P: Por que não consigo alterar o valor unitário ou a tabela de preço de um item? R: O parâmetro PARMFATUR.ST_TABPRECO está configurado para bloquear tabela e/ou valor ('B', 'L' ou 'V'). Um usuário cadastrado como Autorizador com a permissão 'Altera Preço' ativa pode sobrepor esse bloqueio. Fonte: source/MNF002/UdmMNF002.pas:10347-10389 (TdmMNF002.VerificaBloqTabPreco)

P: Por que a quantidade/peso do item foi rejeitada mesmo parecendo correta? R: O produto tem peso mínimo e máximo cadastrados e o parâmetro PARMFATUR.ST_VALIDAPESO está ativo; o peso/quantidade informado ficou fora da faixa calculada (mínimo/máximo multiplicado pela quantidade). Ajuste o peso/quantidade ou revise o cadastro do produto. Fonte: source/MNF002/UdmMNF002.pas:10137-10246 (TdmMNF002.ValidaPeso)

P: Por que não consigo emitir a nota sem selecionar um pedido? R: A série de nota fiscal utilizada está parametrizada (MFA002) para obrigar vínculo com pedido de venda; inserir itens manualmente é bloqueado enquanto essa condição estiver ativa e a nota não for complementar. Fonte: source/MNF002/UdmMNF002.pas:10994-11000 (TdmMNF002.tabITEMNOTANewRecord), source/MNF002/UMNF002.pas:3836-3837 (TfrmMNF002.btnSalvarClick)

P: Deu a mensagem 'A Nota Fiscal ... já foi Lançada', o que fazer? R: Já existe uma nota gravada com o mesmo número, série e espécie para a empresa (situação diferente de Excluída). Confira se a nota já não foi lançada anteriormente ou corrija o número da nota fiscal digitado (válido apenas para séries do tipo Simulação). Fonte: source/MNF002/UdmMNF002.pas:6980-6993 (TdmMNF002.tabNOTANR_NOTAFISCALValidate)

P: Por que o frete foi somado automaticamente na nota, sem eu ter digitado nada? R: A nota veio de um pedido de venda e o parâmetro PARMFATUR.ST_COBRANCAAUTOFRETE está ativo; como o valor da nota superou o limite de isenção de frete configurado para o cliente (ou o parâmetro geral), o sistema calculou e rateou o frete automaticamente entre os itens, avisando o valor com a mensagem I-1821. Fonte: source/MNF002/UdmMNF002.pas:8962-9017 (TdmMNF002.CalculaFreteAutomatico)

P: Por que a tela pediu para eu selecionar seriais/garantia/dados do celular ao salvar? R: O produto lançado controla número de série (ST_SERIAL='S') ou é vinculado a garantia/celular ('C'); o sistema exige selecionar os seriais correspondentes (tela de Seriais), informar os seriais da garantia, ou os dados de contrato/operadora antes de concluir a gravação da nota. Fonte: source/MNF002/USERIAL2.pas:102-129 (TfrmSERIAL.btnOKClick), source/MNF002/UGARANTIA.pas:91-149 (TfrmGARANTIA.btnOKClick)

P: Posso gerar um pedido de venda a partir de uma nota já emitida nesta tela? R: Sim, pelo botão 'Gravar Pedido', desde que a nota ainda não tenha nenhum pedido associado (campo Nº do Pedido vazio); o sistema grava um novo pedido replicando cabeçalho e produtos da nota. Fonte: source/MNF002/UMNF002.pas:8366-8408 (TfrmMNF002.btnGravarPedidoClick)

Dúvidas em aberto (o código não responde)​

  • Onde estão implementadas as funções 'ValidaPessoa' e 'validatePedido', usadas em tabNOTACD_PESSOAValidate e tabITEMNOTABeforePost para decidir se busca endereço/tabela de preço automaticamente? — São chamadas dentro de UdmMNF002.pas (ex.: linha 4299 e 4087) mas não encontrei a declaração dessas funções nos arquivos lidos do módulo MNF002; provavelmente vêm de uma unit compartilhada (jCommon ou similar) fora do escopo desta leitura.
  • Qual o efeito exato de PARMFATUR.ST_CONSOLPED, ST_REPROCESSATABPRECO, TP_LISTAITEM e TP_MOVCONTENTREGA nesta tela? — Esses parâmetros constam na lista de parâmetros lidos pelo módulo (camada 0), mas não encontrei referência direta a eles no código-fonte das units .pas lidas nesta sessão; podem ser usados apenas nos .dfm (comboboxes/visibilidade) ou em unidades compartilhadas não abertas.
  • Onde exatamente as mensagens de catálogo E-0032 e E-0033 (formato 'Código.: %s') são disparadas neste módulo? — O briefing lista E-0032/E-0033 como mensagens do catálogo do módulo, mas as ocorrências de texto equivalente que encontrei nos arquivos lidos ('A Pessoa Física / Jurídica não está Ativa/Cadastrada [TFA001]!') usam JException com texto literal, sem o sufixo 'Código.: %s' nem o código de catálogo E-0032/E-0033. Não localizei o ponto exato que dispara essas duas mensagens de catálogo dentro do módulo MNF002.
  • Qual o efeito completo de PARMENTREGA.ST_TRANSFERENCIA além de liberar a validação de local de armazenagem em notas de nota mestra? — Encontrei apenas um uso, em ValidaLocaisAcessoUsuario (UdmMNF002.pas:9438), pulando a validação de acesso a locais quando ST_TRANSFERENCIA='S' e a movimentação é de nota mestra ('M'); não haviam outros usos desse parâmetro nos trechos lidos do módulo.