Conteúdo

1. Visão Geral

O processo de Gerar NFCom - disponível no Módulo "TOTVS Gestão de Estoque, Compras e Faturamento" - transforma os movimentos criados nesse módulo em documentos fiscais eletrônicos (arquivos em formato XML) que serão enviados à SEFAZ do Contribuinte posteriormente.
Este processo está disponível de três formas: "Gerar NFCom" e "Agendar geração NFCom", através do menu de Documentos Eletrônicos (TOTVS Gestão de Estoque, Compras e Faturamento | Vendas | Documentos Eletrônicos | Nota Fiscal de Comunicação Eletrônica (NFCom) | Processos); e pelo processo "Gerar Xml NFCom", diretamente no movimento (TOTVS Gestão de Estoque, Compras e Faturamento | Vendas | Faturamento | Movimentação | Processos).

2. Fluxo do Processo

3. Configurações iniciais

Para acessar o menu Documentos Eletrônicos | Nota Fiscal de Comunicação Eletrônica (NFCom) e gerar a NFCom, é necessário realizar algumas configurações iniciais, conforme abaixo:

Este modelo de documento possui uma permissão de acesso diferente dos demais documentos eletrônicos. Para dar permissão de acesso ao menu da NFCom a um usuário, siga os passos abaixo:

  • Acesse o perfil vinculado ao usuário desejado do módulo TOTVS Gestão de Estoque, Compras e Faturamento e edite o perfil;
  • Vá até a aba Acesso a Menus, siga o caminho [04] Vendas | [04.02] Documentos Eletrônicos, selecione [04.02.01.07] Nota Fiscal de Comunicação Eletrônica (NFCom) e, logo após, clique em Permitir Acesso.

Este processo é fracionável, ou seja, pode ser executado em várias fatias para não sobrecarregar o processamento de grandes volumes de dados (para mais informações, acesse [incluir documentação de fracionamento de jobs]).

Para usar o fracionamento na geração da NFCom é necessário cadastrar um job fracionável com a classe responsável pela geração da NFCom em Ambiente | Segurança de Jobs Fracionáveis. Informe o perfil correspondente ao módulo, a classe de job "DocNFComGerarData", as frações máximas e mínimas desejadas e marque se o fracionamento é agendável e/ou se está ativo.

Formulário exemplificando os dados do fracionamento:

Agora, é necessário parametrizar um movimento para gerar NFCom. Para isso, vá em Ambiente | Parâmetros | Gestão de Estoque, Compras e Faturamento | Selecione o movimento desejado | Etapa 67 - Fis - NF-e | NF-e Estadual | Envia Manualmente (trocar pelo parâmetro da NFCom quando for criado). 

4. Execução do Processo

Como exibido no tópico de Visão Geral, há três caminhos para execução do processo de Gerar NFCom. Todos os três caminhos irão fazer a geração do XML da nota da mesma forma, possuindo diferença apenas na forma que permite ao usuário planejar/executar a geração de suas notas. Abaixo, seguem as diferenças entre cada um dos processos e respectivos detalhes sobre seleção de registros, fracionamento de jobs e agendamento:

A execução deste processo ocorre através do menu Documentos Eletrônicos | Nota Fiscal de Comunicação Eletrônica (NFCom) | Processos | Gerar NFCom.

O processo identifica automaticamente quais movimentos de NFCom ainda não geraram o XML, não sendo necessário selecionar nenhum registro na tela. Esta seleção é feita com base no parâmetro de envio selecionado no movimento (vide item 3. Configurações Iniciais > Parametrizar Movimento deste documento). Mesmo que algum registro em específico seja selecionado, a geração não irá se aplicar apenas para ele, e sim para todos os movimentos no sistema que estejam parametrizados para geração da NFCom e ainda não tenham suas notas geradas. Este processo principal não reprocessa notas já geradas ou com erro/inconsistência. Caso seja necessário reprocessar notas específicas, veja "Gerar Xml NFCom (movimento)"

 2. O processo vai gerar a NFCom e persistir na base de dados com o status Não Transmitido.

 3. Este processo é passível de fracionamento de job

3.1 Quando o fracionamento vai ocorrer?
        Ao executar o processo Gerar NFCom.
        Para isso é necessário criar o job fracionável em "Segurança de Jobs Fracionáveis", como explicado em Configurações Iniciais.

3.2 Quantos registros por fracionamento podem ter?
        21000 registros por fração.
        Se for necessário mais fatias do que parametrizado, o sistema fará o calculo automático da quantidade de fatias serão necessárias.
        Calcula quantidade de movimentos e a quantidade máxima de fatias, (Quantidade_Movimento / Quantidade_Maxima_Fatias) para achar quantas fatias que serão necessárias para executar o processo.

3.3 O que pode ocorrer quando não tem fracionamento configurado?
        Ao não criar Fracionamento de Jobs, pode ocorrer erro ao persistir dos dados no banco, se existirem mais de 21.000 notas na mesma execução.

4. Quando parametrizado em N camadas o processo identifica instâncias dele mesmo para evitar concorrência.

4.1 Como funciona a concorrência de job?
        Verifica se existe outro job em execução de mesmo ID, coligada, nome e módulo (movimento), se sim não executa


Importante: a quantidade máxima de notas processadas por fatia no fracionamento é de 21.000. Caso a quantidade de frações mínimas/máximas não sejam suficientes para processar um determinado volume de notas, o sistema irá calcular a quantidade de fatias mínimas necessárias para processamento internamente.
Exemplo: é necessário gerar 100.000 notas, e a quantidade mínima e máxima de frações cadastrada é igual a 2. O sistema irá dividir a quantidade de notas pelo número máximo por fatia (100.000 / 21.000 ~= 4.76, arredondando para um número inteiro, = 5) e utilizará 5 fatias para geração da NFCom.


A execução deste processo é através do menu Faturamento | Movimentação | Processos | Gerar Xml NFCom.

 1. Pode ser selecionado o(s) Movimento(s) que serão gerados.

 2. Este processo será semelhante a Gerar NFCom que está no menu Nota Fiscal de Comunicação Eletrônica (NFCom) que vai persistir na base de dados a NFCom com status "Não Transmitido".

 3. Será criado uma NFCom na tela de Nota Fiscal de Comunicação Eletrônica (NFCom) e se o movimento já estiver registrado, o mesmo será atualizado com o status Não Transmitido.

 4. Ao regerar um movimento que já foi registrado, o mesmo ocorrerá para as NFCom's com status Não Transmitido, Inconsistente ou Rejeitado.

 5. Este processo é passível de fracionamento de job

3.1 Quando o fracionamento vai ocorrer?
        Ao selecionar o(s) movimentos e executar o processo Gerar Xml NFCom.
        Para isso é necessário criar o job fracionável em "Segurança de Jobs Fracionáveis", como explicado em Configurações Iniciais.

3.2 Quantos registros por fracionamento podem ter?
        21000 registros por fração.
        Se for necessário mais fatias do que parametrizado, o sistema fará o calculo automático da quantidade de fatias serão necessárias.
        Calcula quantidade de movimentos e a quantidade máxima de fatias, (Quantidade_Movimento / Quantidade_Maxima_Fatias) para achar quantas fatias que serão necessárias para executar o processo.

3.3 O que pode ocorrer quando não tem fracionamento configurado?
        Ao não criar Fracionamento de Jobs, pode ocorrer erro ao persistir dos dados no banco, se existirem mais de 21.000 notas na mesma execução.

6. Quando parametrizado em N camadas o processo identifica instâncias dele mesmo para evitar concorrência.

4.1 Como funciona a concorrência de job?
        Verifica se existe outro job em execução de mesmo ID, coligada, nome e módulo (movimento), se sim não executa


Execução desse processo:

1- Esta opção trata uma automatização da opção de Gerar NFCom (principal).

2- A execução deste processo ocorre através do menu Documentos Eletrônicos | Nota Fiscal de Comunicação Eletrônica (NFCom) | Processos | Agendar Geração NFCom

3- Na tela de execução do processo, defina a recorrência de execução do Job de acordo com a necessidade operacional (diária, semanal, etc.).

Ao configurar esta recorrência da geração da NFCom, a mesma será de forma contínua e sem necessidade de intervenção manual, conforme ilustrado abaixo:


5. Layout do XML Gerado

Esse processo irá gerar o XML da NFCom conforme estrutura abaixo. Ao clicar em cada ponto da estrutura, pode-se verificar os detalhes e regras de geração de cada campo dentro dos grupos.