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.

01. DADOS GERAIS

Produto:

TOTVS Transmite

Linha de Produto:

Linha Protheus

Segmento:

Backoffice

Módulo:TOTVS Transmite
Função:Não Há
País:Brasil
Ticket:Não Há
Requisito/Story/Issue (informe o requisito relacionado) :DSERTSS3-2479

02. SITUAÇÃO/REQUISITO

Desenvolver mecanismo que possibilite ao TOTVS Transmite receber e realizar a transmissão (apenas em regime normal, contingência e EPEC serão realizadas a posteriori) de NF-e's. Essa construção deverá respeitar a seguinte arquitetura:

...

Bloco de código
languagejava
titleModelo Mensagem Transmissão
linenumberstrue
{
    "codigoFilial": "00ABDF58597BD69632540F3B0471F52E1838D7AD",
    "modelo": "NFe",
    "tipoTransmissao": "Emissao",
    "dados":  [
            "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48TkZlIHhtbG5zPSJodHRwOi8vd3d3LnBvcnRhbGZpc2NhbC5pbmYuYnIvbmZlIj48aW5mTkZlIHZlcnNhbz0iNC4wMCIgSWQ9Ik5GZTM1MjIwNDUzMTEzNzkxMDAwMTIyNTU3MDEwMDAwMDIwMjcxMDA0NTQ1NTU1Ij48aWRlPjxjVUY+MzU8L2NVRj48Y05GPjAwNDU0NTU1PC9jTkY+PG5hdE9wPklDTVM8L25hdE9wPjxtb2Q+NTU8L21vZD48c2VyaWU+NzAxPC9zZXJpZT48bk5GPjIwMjc8L25ORj48ZGhFbWk+MjAyMi0wNC0wNFQxMTozMjowMC0wMzowMDwvZGhFbWk+PHRwTkY+MTwvdHBORj48aWREZXN0PjI8L2lkRGVzdD48Y011bkZHPjM1NTAzMDg8L2NNdW5GRz48dHBJbXA+MTwvdHBJbXA+PHRwRW1pcz4xPC90cEVtaXM+PGNEVj41PC9jRFY+PHRwQW1iPjI8L3RwQW1iPjxmaW5ORmU+MTwvZmluTkZlPjxpbmRGaW5hbD4wPC9pbmRGaW5hbD48aW5kUHJlcz4xPC9pbmRQcmVzPjxwcm9jRW1pPjA8L3Byb2NFbWk+PHZlclByb2M+MTIuMS4wMjUgfCAzLjA8L3ZlclByb2M+PC9pZGU+PGVtaXQ+PENOUEo+NTMxMTM3OTEwMDAxMjI8L0NOUEo+PHhOb21lPlRPVFZTIFMuQTwveE5vbWU+PHhGYW50PlRFU1RFPC94RmFudD48ZW5kZXJFbWl0Pjx4TGdyPkF2ZW5pZGEgQnJheiBMZW1lPC94TGdyPjxucm8+MTcxNzwvbnJvPjx4Q3BsPmZ1bmRvczwveENwbD48eEJhaXJybz5TYW50YW5hPC94QmFpcnJvPjxjTXVuPjM1NTAzMDg8L2NNdW4+PHhNdW4+U0FPIFBBVUxPPC94TXVuPjxVRj5TUDwvVUY+PENFUD4wMTI1MDAwMDwvQ0VQPjxjUGFpcz4xMDU4PC9jUGFpcz48eFBhaXM+QlJBU0lMPC94UGFpcz48Zm9uZT41NTExMjM0NTY3ODk8L2ZvbmU+PC9lbmRlckVtaXQ+PElFPjExMTAxMDk0NTExMTwvSUU+PENSVD4zPC9DUlQ+PC9lbWl0PjxkZXN0PjxDTlBKPjAxMTA1NDgxMDAwMTYyPC9DTlBKPjx4Tm9tZT5ORi1FIEVNSVRJREEgRU0gQU1CSUVOVEUgREUgSE9NT0xPR0FDQU8gLSBTRU0gVkFMT1IgRklTQ0FMPC94Tm9tZT48ZW5kZXJEZXN0Pjx4TGdyPlJVQSBQRURSTyBERSBUT0xFRE88L3hMZ3I+PG5ybz4xNTU8L25ybz48eEJhaXJybz5DRU5UUk88L3hCYWlycm8+PGNNdW4+MzEwMDYwOTwvY011bj48eE11bj5BR1VBIEJPQTwveE11bj48VUY+TUc8L1VGPjxDRVA+MDIxNDAwMDA8L0NFUD48Y1BhaXM+MTA1ODwvY1BhaXM+PHhQYWlzPkJSQVNJTDwveFBhaXM+PGZvbmU+MTEyNTkwMTAxMDwvZm9uZT48L2VuZGVyRGVzdD48aW5kSUVEZXN0PjE8L2luZElFRGVzdD48SUU+NDgwOTYzNDI1MDAzODwvSUU+PGVtYWlsPmNsaXBqc3Bjb250QHRlc3Rlcy5jb20uYnI8L2VtYWlsPjwvZGVzdD48ZGV0IG5JdGVtPSIxIj48cHJvZD48Y1Byb2Q+OTAwMDAwMDAwMDAwMDE8L2NQcm9kPjxjRUFOPjM1MzQ1NjEyMzQ1Njk8L2NFQU4+PHhQcm9kPlBORVUgMTMwIFRSQVNFSVJPPC94UHJvZD48TkNNPjQ0MTcwMDEwPC9OQ00+PENFU1Q+MDEwMDcwMDwvQ0VTVD48Y0JlbmVmPjwvY0JlbmVmPjxDRk9QPjYxMDE8L0NGT1A+PHVDb20+UEM8L3VDb20+PHFDb20+MS4wMDAwPC9xQ29tPjx2VW5Db20+MTAwLjAwMDAwMDAwPC92VW5Db20+PHZQcm9kPjEwMC4wMDwvdlByb2Q+PGNFQU5UcmliPjM1MzQ1NjEyMzQ1Njk8L2NFQU5UcmliPjx1VHJpYj5QQzwvdVRyaWI+PHFUcmliPjEuMDAwMDwvcVRyaWI+PHZVblRyaWI+MTAwLjAwMDAwMDAwPC92VW5UcmliPjxpbmRUb3Q+MTwvaW5kVG90PjwvcHJvZD48aW1wb3N0bz48SUNNUz48SUNNUzAwPjxvcmlnPjA8L29yaWc+PENTVD4wMDwvQ1NUPjxtb2RCQz4zPC9tb2RCQz48dkJDPjA8L3ZCQz48cElDTVM+MDwvcElDTVM+PHZJQ01TPjA8L3ZJQ01TPjwvSUNNUzAwPjwvSUNNUz48SVBJPjxjRW5xPjk5OTwvY0VucT48SVBJTlQ+PENTVD41MzwvQ1NUPjwvSVBJTlQ+PC9JUEk+PFBJUz48UElTTlQ+PENTVD4wODwvQ1NUPjwvUElTTlQ+PC9QSVM+PENPRklOUz48Q09GSU5TTlQ+PENTVD4wODwvQ1NUPjwvQ09GSU5TTlQ+PC9DT0ZJTlM+PC9pbXBvc3RvPjwvZGV0Pjx0b3RhbD48SUNNU1RvdD48dkJDPjA8L3ZCQz48dklDTVM+MDwvdklDTVM+PHZJQ01TRGVzb24+MDwvdklDTVNEZXNvbj48dkZDUFVGRGVzdD4wPC92RkNQVUZEZXN0Pjx2SUNNU1VGRGVzdD4wPC92SUNNU1VGRGVzdD48dklDTVNVRlJlbWV0PjA8L3ZJQ01TVUZSZW1ldD48dkZDUD4wPC92RkNQPjx2QkNTVD4wPC92QkNTVD48dlNUPjA8L3ZTVD48dkZDUFNUPjA8L3ZGQ1BTVD48dkZDUFNUUmV0PjA8L3ZGQ1BTVFJldD48dlByb2Q+MTAwLjAwPC92UHJvZD48dkZyZXRlPjA8L3ZGcmV0ZT48dlNlZz4wPC92U2VnPjx2RGVzYz4wPC92RGVzYz48dklJPjA8L3ZJST48dklQST4wPC92SVBJPjx2SVBJRGV2b2w+MDwvdklQSURldm9sPjx2UElTPjA8L3ZQSVM+PHZDT0ZJTlM+MDwvdkNPRklOUz48dk91dHJvPjA8L3ZPdXRybz48dk5GPjEwMC4wMDwvdk5GPjwvSUNNU1RvdD48L3RvdGFsPjx0cmFuc3A+PG1vZEZyZXRlPjE8L21vZEZyZXRlPjwvdHJhbnNwPjxjb2JyPjxmYXQ+PG5GYXQ+NzAxMDAwMDAyMDI3PC9uRmF0Pjx2T3JpZz4xMDAuMDA8L3ZPcmlnPjx2RGVzYz4wPC92RGVzYz48dkxpcT4xMDAuMDA8L3ZMaXE+PC9mYXQ+PGR1cD48bkR1cD4wMDE8L25EdXA+PGRWZW5jPjIwMjItMDQtMDQ8L2RWZW5jPjx2RHVwPjEwMC4wMDwvdkR1cD48L2R1cD48L2NvYnI+PHBhZz48ZGV0UGFnPjxpbmRQYWc+MDwvaW5kUGFnPjx0UGFnPjE1PC90UGFnPjx2UGFnPjEwMC4wMDwvdlBhZz48L2RldFBhZz48L3BhZz48aW5mQWRpYz48aW5mQ3BsPk8gbWFyY2lvIG5hbyBzYWJlIG8gcXVlIGZhbGEgIE5vdGEgZmlzY2FsIGVtaXRpZGEgc2VtIGRlc3RhcXVlIGRvIElDTVMuPC9pbmZDcGw+PC9pbmZBZGljPjxpbmZSZXNwVGVjPjxDTlBKPjUzMTEzNzkxMDAwMTIyPC9DTlBKPjx4Q29udGF0bz5Sb2RyaWdvIGRlIEFsbWVpZGEgU2FydG9yaW88L3hDb250YXRvPjxlbWFpbD5yZXNwX3RlY25pY29fZGZlX3Byb3RoZXVzQHRvdHZzLmNvbS5icjwvZW1haWw+PGZvbmU+MTEyODU5MzkwNDwvZm9uZT48L2luZlJlc3BUZWM+PC9pbmZORmU+PC9ORmU+PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxORmUgeG1sbnM9Imh0dHA6Ly93d3cucG9ydGFsZmlzY2FsLmluZi5ici9uZmUiPg0KCTxpbmZORmUgdmVyc2FvPSI0LjAwIiBJZD0iTkZlMzUyMjA0NTMxMTM3OTEwMDAxMjI1NTcwMTAwMDAwMjAyNzEwMDQ1NDU1NTUiPg0KCQk8aWRlPg0KCQkJPGNVRj4zNTwvY1VGPg0KCQkJPGNORj4wMDQ1NDU1NTwvY05GPg0KCQkJPG5hdE9wPklDTVM8L25hdE9wPg0KCQkJPG1vZD41NTwvbW9kPg0KCQkJPHNlcmllPjcwMTwvc2VyaWU+DQoJCQk8bk5GPjIwMjc8L25ORj4NCgkJCTxkaEVtaT4yMDIyLTA0LTA0VDExOjMyOjAwLTAzOjAwPC9kaEVtaT4NCgkJCTx0cE5GPjE8L3RwTkY+DQoJCQk8aWREZXN0PjI8L2lkRGVzdD4NCgkJCTxjTXVuRkc+MzU1MDMwODwvY011bkZHPg0KCQkJPHRwSW1wPjE8L3RwSW1wPg0KCQkJPHRwRW1pcz4xPC90cEVtaXM+DQoJCQk8Y0RWPjU8L2NEVj4NCgkJCTx0cEFtYj4yPC90cEFtYj4NCgkJCTxmaW5ORmU+MTwvZmluTkZlPg0KCQkJPGluZEZpbmFsPjA8L2luZEZpbmFsPg0KCQkJPGluZFByZXM+MTwvaW5kUHJlcz4NCgkJCTxwcm9jRW1pPjA8L3Byb2NFbWk+DQoJCQk8dmVyUHJvYz4xMi4xLjAyNSB8IDMuMDwvdmVyUHJvYz4NCgkJPC9pZGU+DQoJCTxlbWl0Pg0KCQkJPENOUEo+NTMxMTM3OTEwMDAxMjI8L0NOUEo+DQoJCQk8eE5vbWU+VE9UVlMgUy5BPC94Tm9tZT4NCgkJCTx4RmFudD5URVNURTwveEZhbnQ+DQoJCQk8ZW5kZXJFbWl0Pg0KCQkJCTx4TGdyPkF2ZW5pZGEgQnJheiBMZW1lPC94TGdyPg0KCQkJCTxucm8+MTcxNzwvbnJvPg0KCQkJCTx4Q3BsPmZ1bmRvczwveENwbD4NCgkJCQk8eEJhaXJybz5TYW50YW5hPC94QmFpcnJvPg0KCQkJCTxjTXVuPjM1NTAzMDg8L2NNdW4+DQoJCQkJPHhNdW4+U0FPIFBBVUxPPC94TXVuPg0KCQkJCTxVRj5TUDwvVUY+DQoJCQkJPENFUD4wMTI1MDAwMDwvQ0VQPg0KCQkJCTxjUGFpcz4xMDU4PC9jUGFpcz4NCgkJCQk8eFBhaXM+QlJBU0lMPC94UGFpcz4NCgkJCQk8Zm9uZT41NTExMjM0NTY3ODk8L2ZvbmU+DQoJCQk8L2VuZGVyRW1pdD4NCgkJCTxJRT4xMTEwMTA5NDUxMTE8L0lFPg0KCQkJPENSVD4zPC9DUlQ+DQoJCTwvZW1pdD4NCgkJPGRlc3Q+DQoJCQk8Q05QSj4wMTEwNTQ4MTAwMDE2MjwvQ05QSj4NCgkJCTx4Tm9tZT5ORi1FIEVNSVRJREEgRU0gQU1CSUVOVEUgREUgSE9NT0xPR0FDQU8gLSBTRU0gVkFMT1IgRklTQ0FMPC94Tm9tZT4NCgkJCTxlbmRlckRlc3Q+DQoJCQkJPHhMZ3I+UlVBIFBFRFJPIERFIFRPTEVETzwveExncj4NCgkJCQk8bnJvPjE1NTwvbnJvPg0KCQkJCTx4QmFpcnJvPkNFTlRSTzwveEJhaXJybz4NCgkJCQk8Y011bj4zMTAwNjA5PC9jTXVuPg0KCQkJCTx4TXVuPkFHVUEgQk9BPC94TXVuPg0KCQkJCTxVRj5NRzwvVUY+DQoJCQkJPENFUD4wMjE0MDAwMDwvQ0VQPg0KCQkJCTxjUGFpcz4xMDU4PC9jUGFpcz4NCgkJCQk8eFBhaXM+QlJBU0lMPC94UGFpcz4NCgkJCQk8Zm9uZT4xMTI1OTAxMDEwPC9mb25lPg0KCQkJPC9lbmRlckRlc3Q+DQoJCQk8aW5kSUVEZXN0PjE8L2luZElFRGVzdD4NCgkJCTxJRT40ODA5NjM0MjUwMDM4PC9JRT4NCgkJCTxlbWFpbD5jbGlwanNwY29udEB0ZXN0ZXMuY29tLmJyPC9lbWFpbD4NCgkJPC9kZXN0Pg0KCQk8ZGV0IG5JdGVtPSIxIj4NCgkJCTxwcm9kPg0KCQkJCTxjUHJvZD45MDAwMDAwMDAwMDAwMTwvY1Byb2Q+DQoJCQkJPGNFQU4+MzUzNDU2MTIzNDU2OTwvY0VBTj4NCgkJCQk8eFByb2Q+UE5FVSAxMzAgVFJBU0VJUk88L3hQcm9kPg0KCQkJCTxOQ00+NDQxNzAwMTA8L05DTT4NCgkJCQk8Q0VTVD4wMTAwNzAwPC9DRVNUPg0KCQkJCTxjQmVuZWYvPg0KCQkJCTxDRk9QPjYxMDE8L0NGT1A+DQoJCQkJPHVDb20+UEM8L3VDb20+DQoJCQkJPHFDb20+MS4wMDAwPC9xQ29tPg0KCQkJCTx2VW5Db20+MTAwLjAwMDAwMDAwPC92VW5Db20+DQoJCQkJPHZQcm9kPjEwMC4wMDwvdlByb2Q+DQoJCQkJPGNFQU5UcmliPjM1MzQ1NjEyMzQ1Njk8L2NFQU5UcmliPg0KCQkJCTx1VHJpYj5QQzwvdVRyaWI+DQoJCQkJPHFUcmliPjEuMDAwMDwvcVRyaWI+DQoJCQkJPHZVblRyaWI+MTAwLjAwMDAwMDAwPC92VW5UcmliPg0KCQkJCTxpbmRUb3Q+MTwvaW5kVG90Pg0KCQkJPC9wcm9kPg0KCQkJPGltcG9zdG8+DQoJCQkJPElDTVM+DQoJCQkJCTxJQ01TMDA+DQoJCQkJCQk8b3JpZz4wPC9vcmlnPg0KCQkJCQkJPENTVD4wMDwvQ1NUPg0KCQkJCQkJPG1vZEJDPjM8L21vZEJDPg0KCQkJCQkJPHZCQz4wPC92QkM+DQoJCQkJCQk8cElDTVM+MDwvcElDTVM+DQoJCQkJCQk8dklDTVM+MDwvdklDTVM+DQoJCQkJCTwvSUNNUzAwPg0KCQkJCTwvSUNNUz4NCgkJCQk8SVBJPg0KCQkJCQk8Y0VucT45OTk8L2NFbnE+DQoJCQkJCTxJUElOVD4NCgkJCQkJCTxDU1Q+NTM8L0NTVD4NCgkJCQkJPC9JUElOVD4NCgkJCQk8L0lQST4NCgkJCQk8UElTPg0KCQkJCQk8UElTTlQ+DQoJCQkJCQk8Q1NUPjA4PC9DU1Q+DQoJCQkJCTwvUElTTlQ+DQoJCQkJPC9QSVM+DQoJCQkJPENPRklOUz4NCgkJCQkJPENPRklOU05UPg0KCQkJCQkJPENTVD4wODwvQ1NUPg0KCQkJCQk8L0NPRklOU05UPg0KCQkJCTwvQ09GSU5TPg0KCQkJPC9pbXBvc3RvPg0KCQk8L2RldD4NCgkJPHRvdGFsPg0KCQkJPElDTVNUb3Q+DQoJCQkJPHZCQz4wPC92QkM+DQoJCQkJPHZJQ01TPjA8L3ZJQ01TPg0KCQkJCTx2SUNNU0Rlc29uPjA8L3ZJQ01TRGVzb24+DQoJCQkJPHZGQ1BVRkRlc3Q+MDwvdkZDUFVGRGVzdD4NCgkJCQk8dklDTVNVRkRlc3Q+MDwvdklDTVNVRkRlc3Q+DQoJCQkJPHZJQ01TVUZSZW1ldD4wPC92SUNNU1VGUmVtZXQ+DQoJCQkJPHZGQ1A+MDwvdkZDUD4NCgkJCQk8dkJDU1Q+MDwvdkJDU1Q+DQoJCQkJPHZTVD4wPC92U1Q+DQoJCQkJPHZGQ1BTVD4wPC92RkNQU1Q+DQoJCQkJPHZGQ1BTVFJldD4wPC92RkNQU1RSZXQ+DQoJCQkJPHZQcm9kPjEwMC4wMDwvdlByb2Q+DQoJCQkJPHZGcmV0ZT4wPC92RnJldGU+DQoJCQkJPHZTZWc+MDwvdlNlZz4NCgkJCQk8dkRlc2M+MDwvdkRlc2M+DQoJCQkJPHZJST4wPC92SUk+DQoJCQkJPHZJUEk+MDwvdklQST4NCgkJCQk8dklQSURldm9sPjA8L3ZJUElEZXZvbD4NCgkJCQk8dlBJUz4wPC92UElTPg0KCQkJCTx2Q09GSU5TPjA8L3ZDT0ZJTlM+DQoJCQkJPHZPdXRybz4wPC92T3V0cm8+DQoJCQkJPHZORj4xMDAuMDA8L3ZORj4NCgkJCTwvSUNNU1RvdD4NCgkJPC90b3RhbD4NCgkJPHRyYW5zcD4NCgkJCTxtb2RGcmV0ZT4xPC9tb2RGcmV0ZT4NCgkJPC90cmFuc3A+DQoJCTxjb2JyPg0KCQkJPGZhdD4NCgkJCQk8bkZhdD43MDEwMDAwMDIwMjc8L25GYXQ+DQoJCQkJPHZPcmlnPjEwMC4wMDwvdk9yaWc+DQoJCQkJPHZEZXNjPjA8L3ZEZXNjPg0KCQkJCTx2TGlxPjEwMC4wMDwvdkxpcT4NCgkJCTwvZmF0Pg0KCQkJPGR1cD4NCgkJCQk8bkR1cD4wMDE8L25EdXA+DQoJCQkJPGRWZW5jPjIwMjItMDQtMDQ8L2RWZW5jPg0KCQkJCTx2RHVwPjEwMC4wMDwvdkR1cD4NCgkJCTwvZHVwPg0KCQk8L2NvYnI+DQoJCTxwYWc+DQoJCQk8ZGV0UGFnPg0KCQkJCTxpbmRQYWc+MDwvaW5kUGFnPg0KCQkJCTx0UGFnPjE1PC90UGFnPg0KCQkJCTx2UGFnPjEwMC4wMDwvdlBhZz4NCgkJCTwvZGV0UGFnPg0KCQk8L3BhZz4NCgkJPGluZkFkaWM+DQoJCQk8aW5mQ3BsPlRFU1RFIENPTVBMRU1FTlRBUjwvaW5mQ3BsPg0KCQk8L2luZkFkaWM+DQoJCTxpbmZSZXNwVGVjPg0KCQkJPENOUEo+NTMxMTM3OTEwMDAxMjI8L0NOUEo+DQoJCQk8eENvbnRhdG8+Um9kcmlnbyBkZSBBbG1laWRhIFNhcnRvcmlvPC94Q29udGF0bz4NCgkJCTxlbWFpbD5yZXNwX3RlY25pY29fZGZlX3Byb3RoZXVzQHRvdHZzLmNvbS5icjwvZW1haWw+DQoJCQk8Zm9uZT4xMTI4NTkzOTA0PC9mb25lPg0KCQk8L2luZlJlc3BUZWM+DQoJPC9pbmZORmU+DQo8L05GZT4="
        ]
}

 

  • Utilizar a ferramenta Postman (ou similares), com a mensagem para simular um ERP encaminhando documento(s) para transmissão;
  • Encaminhar a mensagem para o Endpoint: '{urlBase}/api/v2.0/edi' (POST), localizado no serviço edi-api;
  • Utilizar o Token do RAC/TNF para autenticação das requisições.
     

...

  • 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'

...

    • .

04. DEMAIS INFORMAÇÕES

  • Não Há.

05. ASSUNTOS RELACIONADOS

  • Não Há.