Conteúdo
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 transmitidas à 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 | , em outra etapa do fluxo da NFCom (para visualizar o fluxo, acesse 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)3.2 Processos).
...
2. Fluxo do Processo
Abaixo é detalhado o fluxo do processo de Gerar NFCom, ao clicar em algumas etapas o processo será detalhado.
| draw.io Diagram |
|---|
| border | truefalse |
|---|
| |
|---|
| diagramName | Fluxo Gerar NFCom |
|---|
| simpleViewer | false |
|---|
| width | |
|---|
| links | auto |
|---|
| tbstyle | hidden |
|---|
| diagramDisplayName | |
|---|
| lbox | true |
|---|
| diagramWidth | 3611061 |
|---|
| revision | 4 |
|---|
|
...
| Column |
|---|
|
| Painel |
|---|
| borderColor | #002233 |
|---|
| borderWidth | 1 |
|---|
| borderStyle | dashed |
|---|
| title | Detalhes |
|---|
| |
|
...
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:
| Deck of Cards |
|---|
|
| Card |
|---|
| 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, , [04.02.01.07.08] Gerar NFCom e logo após, clique em Permitir Acesso.
| Expandir |
|---|
| title | Segurança - Acesso - Perfis |
|---|
| Image Removed Image Added
|
|
| Card |
|---|
| label | Configurar Job FracionávelMultiprocessamento |
|---|
| Este processo é fracionávelpossui o conceito de multiprocessamento¹, ou seja, pode ser executado em várias fatias para não sobrecarregar vários pedaços para que o processamento de grandes volumes de dados (para mais informações, acesse [incluir documentação de fracionamento de jobs])seja mais rápido. Suponhamos que a geração da NFCom será feita para 15.000 movimentos. O multiprocessamento irá dividir esses movimentos em vários processos separados e executar cada um desses processos com quantidades menores de notas. Isso resulta em um ganho de tempo e performance tanto na geração das notas quanto na utilização do sistema como um todo. | draw.io Diagram |
|---|
| border | false |
|---|
| |
|---|
| diagramName | Multiprocessamento |
|---|
| simpleViewer | false |
|---|
| width | |
|---|
| links | auto |
|---|
| tbstyle | hidden |
|---|
| diagramDisplayName | |
|---|
| lbox | true |
|---|
| diagramWidth | 571 |
|---|
| revision | 2 |
|---|
|
¹ Este conceito é referido tecnicamente na Linha RM como fracionamento de jobs. Para usar o fracionamento multiprocessamento na geração da NFCom, é necessário cadastrar um job fracionável com a classe responsável pela geração da NFCom cadastrá-lo em Ambiente | Segurança de Jobs Fracionáveis. Informe No cadastro, informe o perfil do usuário correspondente ao módulo, a classe de job como "DocNFComGerarData", as frações máximas e mínimas desejadas de acordo com a quantidade de vezes que desejar dividir o multiprocessamento e marque se o fracionamento ele é agendável e/ou se está ativo. Importante: a quantidade máxima de notas processadas por fatia é 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. | Expandir |
|---|
| title | Ambiente - Processos - Segurança de Jobs Fracionáveis |
|---|
| 
|
Formulário exemplificando os dados do fracionamento: | Expandir |
|---|
| title | Formulário do Fracionamento de Job |
|---|
| 
|
|
|
...
...
4. Execução do Processo
Como exibido na visão geralno tópico 1. Visão Geral, há três caminhos para execução do processo de Gerar NFCom. Todos os três caminhos irão fazer Todas seguem as mesmas regras para 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 NFCom, diferindo apenas na maneira como o usuário pode planejar e executar a emissão das notas. Abaixo, seguem as diferenças entre cada um dos processos e respectivos , incluindo detalhes sobre seleção de registros, multiprocessamento (fracionamento de jobs) e agendamento para execução automática:
| Deck of Cards |
|---|
|
| Card |
|---|
| label | Gerar NFCom (principal) |
|---|
| A execução deste processo ocorre através do menu Documentos Eletrônicos | Nota Fiscal de Comunicação Eletrônica (NFCom) | Processos | Gerar NFCom. | Expandir |
|---|
| Image Added
|
1. O processo identifica automaticamente quais movimentos de NFCom ainda não geraram o XML, não sendo necessário selecionar nenhum registro na tela. . 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 | Expandir |
|---|
| title | Processos - Gerar NFCom |
|---|
| Image Removed
|
Esta seleção é realizada considerando a parametrização do tipo de Movimento (vide item Nota Fiscal de Comunicação Eletrônica (NFCom) | 2.Parâmetros). 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 NFCom (à partir do movimento)" ou volte acesse Nota Fiscal de Comunicação Eletrônica (NFCom) | 3.2 Processos e verifique a etapa responsável pelo reprocessamento da NFCom. As notas serão geradas com o status Não Transmitido, caso não haja erros na validação do schema, ou "Inconsistente", caso ocorra alguma falha na validação. |
| Card |
|---|
| label | Gerar NFCom (a partir do Movimento) |
|---|
| A execução deste processo é através do menu Faturamento | Movimentação | Processos | ocorre diretamente no movimento. Para isto, acesse o movimento parametrizado para geração de NFCom e vá em Processos | Gerar Xml NFCom. 1. Pode ser selecionado o(s) Movimento(s) que serão gerados. | Expandir |
|---|
| Exemplo acessando o processo através de um movimento de faturamento: Image Added
|
Esta tela permite a seleção específica dos movimentos que irão gerar a NFCom na tela. Caso nenhum movimento seja selecionado, o processo será executado para todos os movimentos presentes na tela, semelhante à maioria dos processos da Linha RM. Importante ressaltar que este processo possui limite de 500 registros. Ainda que a configuração de quantidade máxima de registros exibidos na tela seja alterada, não será possível executar o processo para mais de 500 registros. Para volumes de dados maiores, utilize o processo "Gerar NFCom (principal)" descrito na primeira aba deste tópico. Este processo é semelhante ao de "Gerar NFCom" que está no menu de " 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".". Ele irá gerar as notas com o status Não Transmitido, caso não haja erros na validação do schema, ou "Inconsistente", caso ocorra alguma falha na validação. Ele também realiza o reprocessamento de notas, atualizando tanto o conteúdo da nota (xml) quanto seu novo status ao reprocessar. |
| Card |
|---|
| label | Gerar NFCom (automático por agendamento de job) |
|---|
| Para acessar o agendamento da NFCom, vá em Documentos Eletrônicos | 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 | Expandir |
|---|
| title | Processos - Gerar Xml NFCom |
|---|
| Image Removed
|
| | Card |
|---|
| label | Gerar NFCom (automático por agendamento de job) |
|---|
| 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: | Expandir |
|---|
| title | Processo - Agendar Geração NFCom (Agendamento de Job) |
|---|
| Image Removed
|
|
4. 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.
...
| Processos | Agendar Geração NFCom. | Expandir |
|---|
| title | Agendar geração NFCom |
|---|
| Image Added
|
Este processo é equivalente ao "Gerar NFCom (principal)", com a diferença de que permite o agendamento dos jobs responsáveis pela execução. Dessa forma, é possível programar múltiplas execuções futuras de maneira automática, sem a necessidade de intervenção do usuário. O agendamento da NFCom estará disponível apenas se o ambiente utilizado for em N camadas e se o cadastro do fracionamento estiver com a opção "Agendável" marcada. Caso contrário, será exibida apenas uma tela de conclusão de processos. Assim como o processo principal, o agendamento considera todos os movimentos previamente parametrizados e que ainda não tenham notas geradas. Além disso, ele não reprocessa notas com erro ou inconsistentes e não permite a seleção pontual dos movimentos. |
| Informações |
|---|
| Diferente dos modelos de NF-e e NFS-e, o processo de Gerar NFCom não faz nenhuma comunicação com a SEFAZ. Ele apenas gera o XML da nota e valida seu schema, sendo necessário realizar a transmissão das notas posteriormente. |
|
...
5. Multiprocessamento
O multiprocessamento é um recurso desenvolvido para proporcionar mais agilidade, melhor performance e maior automação no processo de geração da NFCom.
Como essa funcionalidade é uma novidade em relação à maioria dos outros documentos eletrônicos da Linha RM, preparamos um pequeno FAQ para esclarecer possíveis dúvidas:
- O que acontece se eu não fizer o cadastro do multiprocessamento?
- A geração da NFCom será realizada em um único processo. Isso pode ser desvantajoso, pois resultará em um tempo de execução maior, especialmente para grandes volumes de notas e poderá tornar a utilização do sistema mais lenta. Além disso, cada processo tem um limite de execução de 21.000 notas, e um volume maior do que esse resultará em erro.
- Quando a divisão dos processos ocorre na geração da NFCom?
- Se o multiprocessamento for cadastrado conforme explicado no tópico 3. Configurações Iniciais | Configurar Multiprocessamento, a divisão dos processos acontecerá automaticamente ao iniciar a geração da NFCom. Não é necessário definir nenhum parâmetro adicional, pois o sistema realiza essa divisão de forma automática. O acompanhamento dos processos gerados pode ser feito em Ambiente | Gerenciamento de Jobs.
- Quantos registros por processo o multiprocessamento suporta?
- São 21.000 registros/notas por processo. Caso o multiprocessamento esteja parametrizado para fazer 50 divisões, por exemplo, é possível fazer a geração de volumes de mais de 1.000.000 de notas.
- O que acontece se a quantidade de divisões que informei no cadastro do multiprocessamento não for suficiente para gerar minhas notas?
O sistema recalcula automaticamente a quantidade necessária de divisões com base no volume total de notas. Esse cálculo segue a fórmula:
Total de notas / limite de notas por processo (21.000) → arredondado para cima.
Por exemplo, se houver 50.000 notas e o multiprocessamento estiver configurado para apenas 2 divisões, o cálculo será:
50.000 / 21.000 ≈ 2,4 → arredondando para cima → 3 divisões.
O cadastro original do multiprocessamento não será alterado, pois essa nova quantidade de divisões será ajustada internamente pelo sistema sempre que necessário.
...
6. Concorrência entre processos
Em ambientes N camadas, pode ocorrer a situação em que dois ou mais usuários executam o mesmo processo simultaneamente, o que resultaria na criação de processos idênticos.
No caso da geração da NFCom, se isso acontecer, ambos os processos fariam a mesma seleção de notas, gerando duplicidades, pois as mesmas notas seriam processadas em paralelo. Para evitar esse problema, o sistema gerencia a concorrência internamente por meio da identificação dos processos gerados.
Sempre que for detectado execuções simultâneas do mesmo processo (classe do processo) para a mesma coligada e classe de parâmetros, a execução será bloqueada. Nesses casos, o sistema exibirá a seguinte mensagem:
"Já existe uma execução desse processo em andamento".
Image Added
- Mas então o multiprocessamento não vai dar concorrência?
- Não, pois a cada processo que ele cria, recebe notas diferentes e não causa duplicidade.
- E no caso de nomes diferentes do processo? Na imagem acima, há processos de nome "Gerar NFCom" e "Agendar geração NFCom"
- Isso não é um problema, pois todas as três formas de geração da NFCom utilizam a mesma classe do processo (DocNFComGerarData), que é o que importa para localizar processos concorrentes.
...