Páginas filhas
  • DSERTSS3-2479 - [F.B.E] - Transmissão de documento

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  • 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

  • Não Há.

...