Páginas filhas
  • ER_PCREQ-8286_Busca_XML_por_documento

Busca XML por documento

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.                                                             

  

(Obrigatório)

Informações Gerais

 

Especificação

Produto

TSS

Módulo

TSS

Segmento Executor

SERVIÇOS

Projeto1

M_SER_TSS002

IRM1

PCREQ-8285

Requisito1

PCREQ-8286

Subtarefa1

 

Release de Entrega planejada

12.1.13

País

( X ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>.

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

(Obrigatório)

Objetivo

 

Criar API com a finalidade de retornar o arquivo XML do documento.

(Obrigatório)

Definição da Regra de Negócio

 

Através da API de busca XML por documento, os clientes do TSS poderão obter o arquivo XML do documento. A consulta será para um documento. O critério para consulta será com base nos dados de entrada. A API terá como retorno o arquivo XML codificado em base64.

O consumo da API deverá ser realizado através de mensagens JSON codificado em base64 definidas na WebService RestXMLTSS.

O processo de Deserialização de mensagens deverá ser realizado através da função FwJsonDeserialize().

Os códigos de status serão baseados no formato padrão de mensagens HTTP, conforme o link:

https://pt.wikipedia.org/wiki/Lista_de_c%C3%B3digos_de_status_HTTP

 

WebService: RestXMLTSS
WebService responsável pela definição da Interface da API de busca informações do documento.
O WebService deverá receber mensagens na estrutura JSON codificado em base64, onde serão decodificadas e passadas como parâmetro para a função RETXMLTSS().
O retorno do WebService será uma mensagem JSON.
Todos os parâmetros da mensagem serão obrigatórios.

Parâmetros: 

JSon = ew0KImVtcHJlc2EiOg0KeyJFbnRpZGFkZSI6ICIwMDAwMDIifSwNCiAidGlwZG9jIjoibmZlIiwNCiAicGFyYW1ldHJvcyI6eyJkb2NpZCI6IjAwMTAwMDAwMSJ9DQp9

Mensagem JSON decodificada:
{

"empresa":

{"Entidade": "000002"},

 "tipdoc":"nfe",

 "parametros":{"docid":"001000001"}

}


Retorno:

Retorno Negativo:

{

  "result":

   {

    "documento": ""

   },

  "error": "Estrutura do objeto inválida."

}


Retorno Positivo:

{

"status": 200, "result":"PE5GZSB4bWxucz0iaHR0cDovL3d3dy5wb3J0YWxmaXNjYWwuaW5mLmJyL25mZSI+PGluZk5GZSB2ZXJzYW89I

jMuMTAiIElkPSJORmUzNTE1MDY1MzExMzc5MTAwMDEyMjU1NzU0MDAwMDAwNTgyMTAwMjgxMTExOSI+PGlkZT48Y1VGPjM

1PC9jVUY+PGNORj4wMDI4MTExMTwvY05GPjxuYXRPcD5WRU5EQSBJQ01TPC9uYXRPcD48aW5kUGFnPjA8L2luZFBhZz48bW9kPj

U1PC9tb2Q+PHNlcmllPjc1NDwvc2VyaWU+PG5ORj41ODI8L25ORj48ZGhFbWk+MjAxNS0wNi0xMVQxOTozMjowMC0wMjowMDwvZG

hFbWk+PGRoU2FpRW50PjIwMTUtMDYtMTFUMTk6MzI6MDAtMDI6MDA8L2RoU2FpRW50Pjx0cE5GPjA8L3RwTkY+PGlkRGVzdD4y

PC9pZERlc3Q+PGNNdW5GRz4zNTUwMzA4PC9jTXVuRkc+PHRwSW1wPjE8L3RwSW1wPjx0cEVtaXM+MTwvdHBFbWlzPjxjRFY+OT

wvY0RWPjx0cEFtYj4yPC90cEFtYj48ZmluTkZlPjE8L2Zpbk5GZT48aW5kRmluYWw+MDwvaW5kRmluYWw+PGluZFByZXM+OTwvaW5

kUHJlcz48cHJvY0VtaT4wPC9wcm9jRW1pPjx2ZXJQcm9jPjIuNDc8L3ZlclByb2M+PC9pZGU+PGVtaXQ+PENOUEo+NTMxMTM3OTEwM

DAxMjI8L0NOUEo+PHhOb21lPlRPVFZTIFNBPC94Tm9tZT48eEZhbnQ+VEVTVEU8L3hGYW50PjxlbmRlckVtaXQ+PHhMZ3I+QVYuIEJ

SQVogTEVNRTwveExncj48bnJvPjE2MzE8L25ybz48eEJhaXJybz5KRC4gU0FPIEJFTlRPPC94QmFpcnJvPjxjTXVuPjM1NTAzMDg8L2NNd

W4+PHhNdW4+U0FPIFBBVUxPPC94TXVuPjxVRj5TUDwvVUY+PENFUD4wMjUxMTAwMDwvQ0VQPjxjUGFpcz4xMDU4PC9jUGFpc

z48eFBhaXM+QlJBU0lMPC94UGFpcz48Zm9uZT41NTExMzk4MTcyMDA8L2ZvbmU+PC9lbmRlckVtaXQ+PElFPjExMTAxMDk0NTExMT

wvSUU+PENSVD4zPC9DUlQ+PC9lbWl0PjxkZXN0PjxDTlBKPjY1NTc2MTQzMDAwMTkxPC9DTlBKPjx4Tm9tZT5ORi1FIEVNSVRJREE

gRU0gQU1CSUVOVEUgREUgSE9NT0xPR0FDQU8gLSBTRU0gVkFMT1IgRklTQ0FMPC94Tm9tZT48ZW5kZXJEZXN0Pjx4TGdyPlJVQS

BKT1NFIFRFSVhFSVJBIERFIEFSQVVKTzwveExncj48bnJvPjg1PC9ucm8+PHhCYWlycm8+RkxPUkFNQVI8L3hCYWlycm8+PGNNdW4+

MzEwNjIwMDwvY011bj48eE11bj5CRUxPIEhPUklaT05URTwveE11bj48VUY+TUc8L1VGPjxDRVA+MzE3NDIxMzg8L0NFUD48Y1BhaX

M+MTA1ODwvY1BhaXM+PHhQYWlzPkJSQVNJTDwveFBhaXM+PGZvbmU+MzE4NjgyNTY4NjwvZm9uZT48L2VuZGVyRGVzdD48aW

5kSUVEZXN0PjI8L2luZElFRGVzdD48L2Rlc3Q+PGRldCBuSXRlbT0iMSI+PHByb2Q+PGNQcm9kPlAwMDFfSVNJUzwvY1Byb2Q+PGNF

QU4+PC9jRUFOPjx4UHJvZD5QUk9EVVRPIEFDQUJBRE8gSVNJUyBQSVMgQ09GSU48L3hQcm9kPjxOQ00+MDEwMTEwOTA8L05DT

T48Q0ZPUD4yNDAzPC9DRk9QPjx1Q29tPlBDPC91Q29tPjxxQ29tPjEuMDAwMDwvcUNvbT48dlVuQ29tPjUwLjAwMDAwMDAwPC92VW

5Db20+PHZQcm9kPjUwLjAwPC92UHJvZD48Y0VBTlRyaWI+PC9jRUFOVHJpYj48dVRyaWI+UEM8L3VUcmliPjxxVHJpYj4xLjAwMDA8

L3FUcmliPjx2VW5UcmliPjUwLjAwMDAwMDAwPC92VW5UcmliPjx2T3V0cm8+MTAuNzA8L3ZPdXRybz48aW5kVG90PjE8L2luZFRvdD

48L3Byb2Q+PGltcG9zdG8+PElDTVM+PElDTVMwMD48b3JpZz4wPC9vcmlnPjxDU1Q+MDA8L0NTVD48bW9kQkM+MzwvbW9kQkM+P

HZCQz41MC4wMDwvdkJDPjxwSUNNUz4xMi4wMDAwPC9wSUNNUz48dklDTVM+Ni4wMDwvdklDTVM+PC9JQ01TMDA+PC9JQ01TP

jxJUEk+PGNFbnE+OTk5PC9jRW5xPjxJUElUcmliPjxDU1Q+NTA8L0NTVD48dkJDPjUwLjAwPC92QkM+PHBJUEk+Ny4wMDAwPC9wSV

BJPjx2SVBJPjMuNTA8L3ZJUEk+PC9JUElUcmliPjwvSVBJPjxQSVM+PFBJU05UPjxDU1Q+MDU8L0NTVD48L1BJU05UPjwvUElTPjxQS

VNTVD48dkJDPjUzLjUwPC92QkM+PHBQSVM+MTAuMDAwMDwvcFBJUz48dlBJUz41LjM1PC92UElTPjwvUElTU1Q+PENPRklOUz48

Q09GSU5TTlQ+PENTVD4wNTwvQ1NUPjwvQ09GSU5TTlQ+PC9DT0ZJTlM+PENPRklOU1NUPjx2QkM+NTMuNTA8L3ZCQz48cENPRk

lOUz4xMC4wMDAwPC9wQ09GSU5TPjx2Q09GSU5TPjUuMzU8L3ZDT0ZJTlM+PC9DT0ZJTlNTVD48L2ltcG9zdG8+PC9kZXQ+PHRvdGF

sPjxJQ01TVG90Pjx2QkM+NTAuMDA8L3ZCQz48dklDTVM+Ni4wMDwvdklDTVM+PHZJQ01TRGVzb24+MDwvdklDTVNEZXNvbj48dkJD

U1Q+MDwvdkJDU1Q+PHZTVD4wPC92U1Q+PHZQcm9kPjUwLjAwPC92UHJvZD48dkZyZXRlPjA8L3ZGcmV0ZT48dlNlZz4wPC92U2VnP

jx2RGVzYz4wPC92RGVzYz48dklJPjA8L3ZJST48dklQST4zLjUwPC92SVBJPjx2UElTPjA8L3ZQSVM+PHZDT0ZJTlM+MDwvdkNPRklOUz

48dk91dHJvPjEwLjcwPC92T3V0cm8+PHZORj42NC4yMDwvdk5GPjwvSUNNU1RvdD48L3RvdGFsPjx0cmFuc3A+PG1vZEZyZXRlPjE8L21

vZEZyZXRlPjwvdHJhbnNwPjxjb2JyPjxkdXA+PG5EdXA+NzU0MDAwNTgyPC9uRHVwPjxkVmVuYz4yMDE1LTA2LTExPC9kVmVuYz48

dkR1cD42NC4yMDwvdkR1cD48L2R1cD48L2NvYnI+PC9pbmZORmU+PC9ORmU+" ,

"error": null

}
 

Função: RETXMLTSS()

Função responsável pela definição da Interface da API retorna xml por documento.

A função RetXmlTss definirá a estrutura da API. A função deverá ser definida em um fonte.prw definido com o mesmo nome da função.

A função RetXmlTss deverá ser implementada apenas como função de interface para a API. Deverá ser totalmente desacoplada de qualquer definição de instrução de processamento, devendo apenas realizar as devidas validações das mensagens. Todo o processamento deverá estar definido em funções auxiliares.

A função RetXmlTss () deverá receber mensagens na estrutura JSON, onde serão convertidas em objeto pela função fwJsonDeserialize().

Caso não haja erro na deserialização de JSON para objeto, será chamada a rotina GetXml(), passando como parâmetro o objeto.

A função GetXml () retornará uma string, contendo o XML codificado em base64. Essa string será passada como parâmetro na chamada da função getJSONResp() junto com o código de status e mensagem de erro (caso exista). O retorno da função getJSONResp() é a mensagem  já na estrutura JSON.

Todos os parâmetros da mensagem serão obrigatórios.

A rotina RetXmlTss() será finalizada e como retorno será passado a mensagem na estrutura JSON.

Parâmetros: 

cJsonRequest =

{

"empresa":

{"Entidade": "000002"},

 "tipdoc":"nfe",

 "parametros":{"docid":"001000001"}

}


Retorno:

Retorno Negativo:

{

  "result":

   {

    "documento": ""

   },

  "error": "Estrutura do objeto inválida."

}


Retorno Positivo:

{

"status": 200, "result":"PE5GZSB4bWxucz0iaHR0cDovL3d3dy5wb3J0YWxmaXNjYWwuaW5mLmJyL25mZSI+PGluZk5GZSB2ZXJzYW89I

jMuMTAiIElkPSJORmUzNTE1MDY1MzExMzc5MTAwMDEyMjU1NzU0MDAwMDAwNTgyMTAwMjgxMTExOSI+PGlkZT48Y1VGPjM

1PC9jVUY+PGNORj4wMDI4MTExMTwvY05GPjxuYXRPcD5WRU5EQSBJQ01TPC9uYXRPcD48aW5kUGFnPjA8L2luZFBhZz48bW9kPj

U1PC9tb2Q+PHNlcmllPjc1NDwvc2VyaWU+PG5ORj41ODI8L25ORj48ZGhFbWk+MjAxNS0wNi0xMVQxOTozMjowMC0wMjowMDwvZG

hFbWk+PGRoU2FpRW50PjIwMTUtMDYtMTFUMTk6MzI6MDAtMDI6MDA8L2RoU2FpRW50Pjx0cE5GPjA8L3RwTkY+PGlkRGVzdD4y

PC9pZERlc3Q+PGNNdW5GRz4zNTUwMzA4PC9jTXVuRkc+PHRwSW1wPjE8L3RwSW1wPjx0cEVtaXM+MTwvdHBFbWlzPjxjRFY+OT

wvY0RWPjx0cEFtYj4yPC90cEFtYj48ZmluTkZlPjE8L2Zpbk5GZT48aW5kRmluYWw+MDwvaW5kRmluYWw+PGluZFByZXM+OTwvaW5

kUHJlcz48cHJvY0VtaT4wPC9wcm9jRW1pPjx2ZXJQcm9jPjIuNDc8L3ZlclByb2M+PC9pZGU+PGVtaXQ+PENOUEo+NTMxMTM3OTEwM

DAxMjI8L0NOUEo+PHhOb21lPlRPVFZTIFNBPC94Tm9tZT48eEZhbnQ+VEVTVEU8L3hGYW50PjxlbmRlckVtaXQ+PHhMZ3I+QVYuIEJ

SQVogTEVNRTwveExncj48bnJvPjE2MzE8L25ybz48eEJhaXJybz5KRC4gU0FPIEJFTlRPPC94QmFpcnJvPjxjTXVuPjM1NTAzMDg8L2NNd

W4+PHhNdW4+U0FPIFBBVUxPPC94TXVuPjxVRj5TUDwvVUY+PENFUD4wMjUxMTAwMDwvQ0VQPjxjUGFpcz4xMDU4PC9jUGFpc

z48eFBhaXM+QlJBU0lMPC94UGFpcz48Zm9uZT41NTExMzk4MTcyMDA8L2ZvbmU+PC9lbmRlckVtaXQ+PElFPjExMTAxMDk0NTExMT

wvSUU+PENSVD4zPC9DUlQ+PC9lbWl0PjxkZXN0PjxDTlBKPjY1NTc2MTQzMDAwMTkxPC9DTlBKPjx4Tm9tZT5ORi1FIEVNSVRJREE

gRU0gQU1CSUVOVEUgREUgSE9NT0xPR0FDQU8gLSBTRU0gVkFMT1IgRklTQ0FMPC94Tm9tZT48ZW5kZXJEZXN0Pjx4TGdyPlJVQS

BKT1NFIFRFSVhFSVJBIERFIEFSQVVKTzwveExncj48bnJvPjg1PC9ucm8+PHhCYWlycm8+RkxPUkFNQVI8L3hCYWlycm8+PGNNdW4+

MzEwNjIwMDwvY011bj48eE11bj5CRUxPIEhPUklaT05URTwveE11bj48VUY+TUc8L1VGPjxDRVA+MzE3NDIxMzg8L0NFUD48Y1BhaX

M+MTA1ODwvY1BhaXM+PHhQYWlzPkJSQVNJTDwveFBhaXM+PGZvbmU+MzE4NjgyNTY4NjwvZm9uZT48L2VuZGVyRGVzdD48aW

5kSUVEZXN0PjI8L2luZElFRGVzdD48L2Rlc3Q+PGRldCBuSXRlbT0iMSI+PHByb2Q+PGNQcm9kPlAwMDFfSVNJUzwvY1Byb2Q+PGNF

QU4+PC9jRUFOPjx4UHJvZD5QUk9EVVRPIEFDQUJBRE8gSVNJUyBQSVMgQ09GSU48L3hQcm9kPjxOQ00+MDEwMTEwOTA8L05DT

T48Q0ZPUD4yNDAzPC9DRk9QPjx1Q29tPlBDPC91Q29tPjxxQ29tPjEuMDAwMDwvcUNvbT48dlVuQ29tPjUwLjAwMDAwMDAwPC92VW

5Db20+PHZQcm9kPjUwLjAwPC92UHJvZD48Y0VBTlRyaWI+PC9jRUFOVHJpYj48dVRyaWI+UEM8L3VUcmliPjxxVHJpYj4xLjAwMDA8

L3FUcmliPjx2VW5UcmliPjUwLjAwMDAwMDAwPC92VW5UcmliPjx2T3V0cm8+MTAuNzA8L3ZPdXRybz48aW5kVG90PjE8L2luZFRvdD

48L3Byb2Q+PGltcG9zdG8+PElDTVM+PElDTVMwMD48b3JpZz4wPC9vcmlnPjxDU1Q+MDA8L0NTVD48bW9kQkM+MzwvbW9kQkM+P

HZCQz41MC4wMDwvdkJDPjxwSUNNUz4xMi4wMDAwPC9wSUNNUz48dklDTVM+Ni4wMDwvdklDTVM+PC9JQ01TMDA+PC9JQ01TP

jxJUEk+PGNFbnE+OTk5PC9jRW5xPjxJUElUcmliPjxDU1Q+NTA8L0NTVD48dkJDPjUwLjAwPC92QkM+PHBJUEk+Ny4wMDAwPC9wSV

BJPjx2SVBJPjMuNTA8L3ZJUEk+PC9JUElUcmliPjwvSVBJPjxQSVM+PFBJU05UPjxDU1Q+MDU8L0NTVD48L1BJU05UPjwvUElTPjxQS

VNTVD48dkJDPjUzLjUwPC92QkM+PHBQSVM+MTAuMDAwMDwvcFBJUz48dlBJUz41LjM1PC92UElTPjwvUElTU1Q+PENPRklOUz48

Q09GSU5TTlQ+PENTVD4wNTwvQ1NUPjwvQ09GSU5TTlQ+PC9DT0ZJTlM+PENPRklOU1NUPjx2QkM+NTMuNTA8L3ZCQz48cENPRk

lOUz4xMC4wMDAwPC9wQ09GSU5TPjx2Q09GSU5TPjUuMzU8L3ZDT0ZJTlM+PC9DT0ZJTlNTVD48L2ltcG9zdG8+PC9kZXQ+PHRvdGF

sPjxJQ01TVG90Pjx2QkM+NTAuMDA8L3ZCQz48dklDTVM+Ni4wMDwvdklDTVM+PHZJQ01TRGVzb24+MDwvdklDTVNEZXNvbj48dkJD

U1Q+MDwvdkJDU1Q+PHZTVD4wPC92U1Q+PHZQcm9kPjUwLjAwPC92UHJvZD48dkZyZXRlPjA8L3ZGcmV0ZT48dlNlZz4wPC92U2VnP

jx2RGVzYz4wPC92RGVzYz48dklJPjA8L3ZJST48dklQST4zLjUwPC92SVBJPjx2UElTPjA8L3ZQSVM+PHZDT0ZJTlM+MDwvdkNPRklOUz

48dk91dHJvPjEwLjcwPC92T3V0cm8+PHZORj42NC4yMDwvdk5GPjwvSUNNU1RvdD48L3RvdGFsPjx0cmFuc3A+PG1vZEZyZXRlPjE8L21

vZEZyZXRlPjwvdHJhbnNwPjxjb2JyPjxkdXA+PG5EdXA+NzU0MDAwNTgyPC9uRHVwPjxkVmVuYz4yMDE1LTA2LTExPC9kVmVuYz48

dkR1cD42NC4yMDwvdkR1cD48L2R1cD48L2NvYnI+PC9pbmZORmU+PC9ORmU+" ,

"error": null

}

 

Função: GetXml()

A função GetXml() receberá como parâmetro o objeto da requisição, validará todos os campos quanto a obrigatoriedade, tamanho e tipo de dados. Se algum dado estiver inconsistente, deverá retorna a mensagem de validação correspondente informando.

Os dados contidos no objeto recebido como parâmetro, serão validados afim de identificar quais foram preenchidos, todos os campos são necessários para o retorno.

A função validará o tipo de documento, afim de identificar se é válida, esta informação estará contida dentro do objeto recebido como parâmetro.

Com as informações tipo de documento e número da entidade, será chamada a função RetXml(), para essa função serão passados como parâmetros: o número da entidade do cliente, o tipo de documento, número do documento e série do documento. O retorno desta função será uma mensagem string contendo o XML do documento codificado em base 64.

Após obter o retorno da rotina RetXml(), a função GetXml() será encerrada, retornando a string contendo o código xml em base64.

Parâmetros: 

GetXml(oDados,cError,cHttpStatus)

oDados – Objeto contendo as informações da requisição: entidade, número do documento, série do documento, tipo de documento.

cError – Mensagem de erro, caso exista.

Retorno:

cXml – String contendo o XML codificado em base 64

 

Função: RetXml()

A função RetXml() receberá como parâmetro, a entidade do cliente, o tipo de documento, Nfe_Id, mensagem de erro(caso exista) e código do status, processará os dados afim de obter a mensagem XML.

A função verificará qual o tipo de documento, afim de identificar qual tabela irá buscar o XML.

A função por meio de Query, localizará o documento na tabela correspondente, obtendo informação do campo XML_ERP, essa informação string, será convertida em base64, que será o retorno da função.

Parâmetros: 

(cEnt,cTipo,cDoc,cError)

cEnt – Código da entidade do cliente.

cTipo – Tipo de documento: ‘NFE’;’NFSE’, etc.

cDoc – Nfe_Id // Série + número do documento

cError – Mensagem de erro, caso exista.

Retorno:

cRet – String contendo o XML codificado em base64

 

 

Função: GetJSONResp()

A rotina consiste em obter os dados de entrada e gerar a mensagem em estrutura JSON.

A rotina retornará uma string na estrutura JSON

Parâmetros: 

cHttpStatus – Código do Status.

aArray– Array multidimensional.

cError – Mensagem de erro.

Retorno:

cJSONResponse – String na estrutura JSON.

 

 

 

 

 

 

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.