...
- Criar e expor o Endpoint: '{urlBase}/api/v2.0/edi' para recebimento das mensagens de transmissão (POST):
- Decorar a API com o [TNFAuthorize], de forma que a autenticação seja gerenciada pelo RAC/TNF;
- Encaminhar mensagem para Fila de Recebimento de acordo com o modelo de documento (exemplo: eTransmissaoNFeRecebimento-Queue).
- Criar e expor o Endpoint: '{urlBase}/api/v2.0/edi/{idReciborecibo}' para consulta do andamento do processo de transmissão:
- Devolver a resposta para o ERP, utilizando o serviço TaskServiceResponse (método Publish), presente no transmit-framework.
...
- Criar estrutura do novo projeto na Azure Devops;
- Fluxo de recepção e transmissão irá realizar as seguintes etapasseguintes etapas:
- Validar os documentos de acordo com o esquema XSD (fornecido pela SEFAZ);
- Assinar os documentos validados (rejeitados na validação já ficarão salvos em base de dados com este status);
- Transmitir os documentos validados e assinados para SEFAZ;
- Encaminhar recibo de transmissão para fila de consulta (em caso de rejeição, lote inteiro será atualizado em base de dados com este status);
- A cada etapa, atualizar o andamento, utilizando o serviço TaskServiceResponse (método Update), a ser criado no transmit-framework.
...
- Fluxo de consulta de resultado de transmissão irá realizar as seguintes etapas:
- Realizar a consulta na SEFAZ pelo recibo recebido no ato da transmissão;
- Persistir a resposta no andamento, utilizando o serviço TaskServiceResponse (método Update), a ser criado no transmit-framework.;
- Se o lote foi processado com sucesso na SEFAZ, persiste atualiza os documentos na collection de NF-e emitidas
OBS: Caso exista algum documento invalido no lote, rejeitar todo lote- coleção 'nfe';
- Reaproveitar o código referente aos índices das coleções;
- Enquanto a SEFAZ
nao - não disponibiliza o resultado da consulta,
reenfileirar a mensagem - Reaproveitar o codigo referente aos índices das collections
03. SOLUÇÃO
- enfileirar a mensagem para nova tentativa.
03. SOLUÇÃO
A solução proposta segue a arquitetura descrita acima, tendo sido realizado os passos a seguir:
1-SIMULADOR DE ERP
- Criação de requisição no Postman, para envio de transmissão, com mensagem acordada (POST);
- Criação de requisição no Postman, para consulta do recibo retornado pela requisição anterior (GET);
- Criação de requisição no Postman, para validar se API (v2.0) está no ar (GET).
2-EDI-API
- Criação de EdiController (v2.0), onde foram inseridos os novos endpoints;
- Criação de endpoint '{urlBase}/api/v2.0/edi' (que atende o método POST), que recebe a requisição de transmissão e insere a mesma na fila de transmissão (eTransmissaoNFeRecebimento-Queue);
- Criação de endpoint '{urlBase}/api/v2.0/edi/{recibo}' (que atende o método GET), que retorna andamento da transmissão, dado o recibo;
- Criação de endpoint '{urlBase}/api/v2.0/edi' (que atende o método GET), que valida se API está disponível e funcional.
3-NFE-WORKER
- Criação de estrutura inicial do projeto e disponibilização dele na Azure Devops, inclusive com a inclusão deste nos pipelines de CI/CD;
- Criação de coleção 'controlelote', hospedada na base do cliente solicitante da transmissão, para controle de ID enviado para a SEFAZ, como identificador deste;
- Criação da coleção 'sefazservice', hospedada na base 'transmite', para hospedar URLs, templates e schemas utilizados pelos serviços de 'Autorizacao' e 'RetAutorizacao';
- Criação de fluxo de recepção de requisição de transmissão (Background Service), que realiza os seguintes passos:
- Obtenção de registro da coleção de 'sefazservice', referente a 'Autorizacao';
- Validação de esquema XSD de todos os documentos que compõem o lote enviado, utilizando schemas do registro obtido da 'sefazservice':
- Se documento validado, ele é inserido como recebido na base de dados;
- Se documento não passa pela validação, ele é inserido como falha de schema;
- Apenas documentos validados seguirão para a próxima etapa.
- Assinatura de documentos validados (atualização de registros da base de dados para assinado);
- Montagem de conteúdo compactado de envelope SOAP para envio a SEFAZ, com documentos assinados;
- Envio de requisição a SEFAZ (URL do registro da 'sefazservice') e captura de retorno:
- Se requisição foi rejeitada, atualiza documentos enviados para status rejeitado;
- Se requisição foi recebida, atualiza documentos enviados para status transmitido;
- Envia recibo para fila de consulta.
- Todas as manipulações de envio e retorno de comunicação com a SEFAZ são tratadas com os templates presentes no registro da 'sefazservice';
- Em todos os passos, acontece a atualização do andamento geral da requisição na coleção 'respostaAssincrona'.
- Criação de fluxo de consulta de status da requisição de transmissão (Background Service), que realiza os seguintes passos:
- Obtenção de registro da coleção de 'sefazservice', referente a 'RetAutorizacao';
- Montagem de requisição de consulta SOAP para envio a SEFAZ (URL do registro da 'sefazservice'), com recibo recebido pela atividade anterior (recepção e transmissão);
- Se requisição retornar que solicitação ainda não foi processada, a mesma tarefa em andamento é adicionada novamente na fila de consulta com um intervalo de espera;
- Se requisição retornar que solicitação foi processada:
- Tratar retorno para separar status por documento que compõem o lote;
- Atualizar documentos em coleção 'nfe' com status individual retornado da SEFAZ.
- Todas as manipulações de envio e retorno de comunicação com a SEFAZ são tratadas com os templates presentes no registro da 'sefazservice';
- Em todos os passos, acontece a atualização do andamento geral da requisição na coleção 'respostaAssincrona'
Não Há
04. DEMAIS INFORMAÇÕES
...