Retorna log XML

 

 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 log XML do documento.

(Obrigatório)

Definição da Regra de Negócio

 

A API será na estrutura WS REST com o nome RestLogXML e com apenas o método GET, que receberá a mensagem JSON codificada em base64 e chamará a função GetLogXml() passando a mensagem JSON decodificada.

Através da API de log XML por documento, os clientes do TSS poderão obter o log 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 os dados contidos na tabela TSSTR2 incluindo o log XML codificado embase 64.

O consumo da API deverá ser realizado através de mensagens JSON definidas na função GetLogXML().

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: RestLogXML
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 GetLogXml().
O retorno do WebService será uma mensagem JSON.
Todos os parâmetros da mensagem serão obrigatórios.

Parâmetros: 

JSon = ew0KIkxPR0lEIjoiU1BFRDA1MC0wMDAwMDAwMDA5MDgtMjAxNjA4MjItMTQ6NDQ6MjIiDQp9

Mensagem JSON decodificada:
{

"LOGID":"SPED050-000000000908-20160822-14:44:22"

}
 

Retorno:

Retorno Negativo:
{

  "result":

   {

    "documento": ""

   },

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

}
 

Retorno Positivo:

{

"result":

                {"Log":

                               [

                                               {"CAMPO":"LOGID","DESCRICAO":"Id Log","CONTEUDO":"SPED050-000000000908-20160822-14:44:22"},

                                               {"CAMPO":"PROCESSO","DESCRICAO":"Processo","CONTEUDO":"101"},

                                               {"CAMPO":"SEQUENCIA","DESCRICAO":"Sequencia","CONTEUDO":"000000004"},

                                               {"CAMPO":"SUBPROC","DESCRICAO":"Cod Sub Proc","CONTEUDO":"003"},

                                               {"CAMPO":"DESCRICAO","DESCRICAO":"Desc Sub Proc","CONTEUDO":"Consulta de Lote da NF-e"},

                                               {"CAMPO":"ORIGEM","DESCRICAO":"Origem","CONTEUDO":"TSS"},

                                               {"CAMPO":"DESTINO","DESCRICAO":"Destino","CONTEUDO":"SEFAZ"},

                                               {"CAMPO":"DTPROCINI","DESCRICAO":"Data Ini","CONTEUDO":"20160822"},

                                               {"CAMPO":"HRPROCINI","DESCRICAO":"Hora Ini","CONTEUDO":"14:44:25"},

                                               {"CAMPO":"DTPROCFIN","DESCRICAO":"Data Fin","CONTEUDO":"20160822"},

                                               {"CAMPO":"HRPROCFIN","DESCRICAO":"Hora Fin","CONTEUDO":"14:44:25"},

                                               {"CAMPO":"SUGESTAO","DESCRICAO":"Sugestao","CONTEUDO":"Verifique detalhes através dos métodos de monitoramento."},

                                               {"CAMPO":"STATUS","DESCRICAO":"Status","CONTEUDO":"1"},

                                               {"CAMPO":"PROCSERVER","DESCRICAO":"Servidor de Processamento","CONTEUDO":""},

                                               {"CAMPO":"PROCTHREAD","DESCRICAO":"Thread de Processamento","CONTEUDO":"15956"},

                                               {"CAMPO":"WSSEND","DESCRICAO":"MSG Envio","CONTEUDO":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c29hcDpFbnZlbG9wZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpzb2FwPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA1L3NvYXAtZW52ZWxvcGUiPjxzb2FwOkhlYWRlcj48bmZlQ2FiZWNNc2cgeG1sbnM9Imh0dHA6Ly93d3cucG9ydGFsZmlzY2FsLmluZi5ici9uZmUvd3NkbC9OZmVSZXRBdXRvcml6YWNhbyI+PGNVRj4zNTwvY1VGPjx2ZXJzYW9EYWRvcz4zLjEwPC92ZXJzYW9EYWRvcz48L25mZUNhYmVjTXNnPjwvc29hcDpIZWFkZXI+PHNvYXA6Qm9keT48bmZlRGFkb3NNc2cgeG1sbnM9Imh0dHA6Ly93d3cucG9ydGFsZmlzY2FsLmluZi5ici9uZmUvd3NkbC9OZmVSZXRBdXRvcml6YWNhbyI+PGNvbnNSZWNpTkZlIHhtbG5zPSJodHRwOi8vd3d3LnBvcnRhbGZpc2NhbC5pbmYuYnIvbmZlIiB2ZXJzYW89IjMuMTAiPjx0cEFtYj4yPC90cEFtYj48blJlYz4zNTEwMDAxMDI0NjIzMDQ8L25SZWM+PC9jb25zUmVjaU5GZT48L25mZURhZG9zTXNnPjwvc29hcDpCb2R5Pjwvc29hcDpFbnZlbG9wZT4="},

                                               {"CAMPO":"WSRECEIVE","DESCRICAO":"MSG Retorno","CONTEUDO":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c29hcDpFbnZlbG9wZSB4bWxuczpzb2FwPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA1L3NvYXAtZW52ZWxvcGUiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPjxzb2FwOkhlYWRlcj48bmZlQ2FiZWNNc2cgeG1sbnM9Imh0dHA6Ly93d3cucG9ydGFsZmlzY2FsLmluZi5ici9uZmUvd3NkbC9OZmVSZXRBdXRvcml6YWNhbyI+PGNVRj4zNTwvY1VGPjx2ZXJzYW9EYWRvcz4zLjEwPC92ZXJzYW9EYWRvcz48L25mZUNhYmVjTXNnPjwvc29hcDpIZWFkZXI+PHNvYXA6Qm9keT48bmZlUmV0QXV0b3JpemFjYW9Mb3RlUmVzdWx0IHhtbG5zPSJodHRwOi8vd3d3LnBvcnRhbGZpc2NhbC5pbmYuYnIvbmZlL3dzZGwvTmZlUmV0QXV0b3JpemFjYW8iPjxyZXRDb25zUmVjaU5GZSB2ZXJzYW89IjMuMTAiIHhtbG5zPSJodHRwOi8vd3d3LnBvcnRhbGZpc2NhbC5pbmYuYnIvbmZlIj48dHBBbWI+MjwvdHBBbWI+PHZlckFwbGljPlNQX05GRV9QTF8wMDhpMjwvdmVyQXBsaWM+PG5SZWM+MzUxMDAwMTAyNDYyMzA0PC9uUmVjPjxjU3RhdD4xMDQ8L2NTdGF0Pjx4TW90aXZvPkxvdGUgcHJvY2Vzc2FkbzwveE1vdGl2bz48Y1VGPjM1PC9jVUY+PGRoUmVjYnRvPjIwMTYtMDgtMjJUMTQ6NDQ6MjItMDM6MDA8L2RoUmVjYnRvPjxwcm90TkZlIHZlcnNhbz0iMy4xMCI+PGluZlByb3Q+PHRwQW1iPjI8L3RwQW1iPjx2ZXJBcGxpYz5TUF9ORkVfUExfMDA4aTI8L3ZlckFwbGljPjxjaE5GZT40MjE2MDg1MzExMzc5MTAwMTc5MDU1NzQxMDAwMDAwMDMxMTAwODQ4ODg4MDwvY2hORmU+PGRoUmVjYnRvPjIwMTYtMDgtMjJUMTQ6NDQ6MjItMDM6MDA8L2RoUmVjYnRvPjxjU3RhdD4yMjY8L2NTdGF0Pjx4TW90aXZvPlJlamVpw6fDo286IEPDs2RpZ28gZGEgVUYgZG8gRW1pdGVudGUgZGl2ZXJnZSBkYSBVRiBhdXRvcml6YWRvcmE8L3hNb3Rpdm8+PC9pbmZQcm90PjwvcHJvdE5GZT48L3JldENvbnNSZWNpTkZlPjwvbmZlUmV0QXV0b3JpemFjYW9Mb3RlUmVzdWx0Pjwvc29hcDpCb2R5Pjwvc29hcDpFbnZlbG9wZT4="},

                                               {"CAMPO":"DETALHES","DESCRICAO":"Detalhes","CONTEUDO":"UHJvY2Vzc28gRXhlY3V0YWRvIGNvbSBmYWxoYS4NClJlamVp5+NvOiBD82RpZ28gZGEgVUYgZG8gRW1pdGVudGUgZGl2ZXJnZSBkYSBVRiBhdXRvcml6YWRvcmE="}

                               ]

                } ,

"error": null

}


Função: GetLogXml()

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

A função GetLogXml 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 GetLogXml 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 GetLogXml() 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 ValLogXml(), passando como parâmetro o objeto.

A função ValLogXml()  retornará um array contendo todos os campos da tabela TSS0004. Esse array será passado 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 GetLogXml() será finalizada e como retorno será passado a mensagem na estrutura JSON.

Parâmetros: 

cJsonRequest =

{

"LOGID":"SPED050-000000000908-20160822-14:44:22"

}
 

Retorno:

Retorno Negativo:
{

  "result":

   {

    "documento": ""

   },

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

}
 

Retorno Positivo:

{

"result":

                {"Log":

                               [

                                               {"CAMPO":"LOGID","DESCRICAO":"Id Log","CONTEUDO":"SPED050-000000000908-20160822-14:44:22"},

                                               {"CAMPO":"PROCESSO","DESCRICAO":"Processo","CONTEUDO":"101"},

                                               {"CAMPO":"SEQUENCIA","DESCRICAO":"Sequencia","CONTEUDO":"000000004"},

                                               {"CAMPO":"SUBPROC","DESCRICAO":"Cod Sub Proc","CONTEUDO":"003"},

                                               {"CAMPO":"DESCRICAO","DESCRICAO":"Desc Sub Proc","CONTEUDO":"Consulta de Lote da NF-e"},

                                               {"CAMPO":"ORIGEM","DESCRICAO":"Origem","CONTEUDO":"TSS"},

                                               {"CAMPO":"DESTINO","DESCRICAO":"Destino","CONTEUDO":"SEFAZ"},

                                               {"CAMPO":"DTPROCINI","DESCRICAO":"Data Ini","CONTEUDO":"20160822"},

                                               {"CAMPO":"HRPROCINI","DESCRICAO":"Hora Ini","CONTEUDO":"14:44:25"},

                                               {"CAMPO":"DTPROCFIN","DESCRICAO":"Data Fin","CONTEUDO":"20160822"},

                                               {"CAMPO":"HRPROCFIN","DESCRICAO":"Hora Fin","CONTEUDO":"14:44:25"},

                                               {"CAMPO":"SUGESTAO","DESCRICAO":"Sugestao","CONTEUDO":"Verifique detalhes através dos métodos de monitoramento."},

                                               {"CAMPO":"STATUS","DESCRICAO":"Status","CONTEUDO":"1"},

                                               {"CAMPO":"PROCSERVER","DESCRICAO":"Servidor de Processamento","CONTEUDO":""},

                                               {"CAMPO":"PROCTHREAD","DESCRICAO":"Thread de Processamento","CONTEUDO":"15956"},

                                               {"CAMPO":"WSSEND","DESCRICAO":"MSG Envio","CONTEUDO":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c29hcDpFbnZlbG9wZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpzb2FwPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA1L3NvYXAtZW52ZWxvcGUiPjxzb2FwOkhlYWRlcj48bmZlQ2FiZWNNc2cgeG1sbnM9Imh0dHA6Ly93d3cucG9ydGFsZmlzY2FsLmluZi5ici9uZmUvd3NkbC9OZmVSZXRBdXRvcml6YWNhbyI+PGNVRj4zNTwvY1VGPjx2ZXJzYW9EYWRvcz4zLjEwPC92ZXJzYW9EYWRvcz48L25mZUNhYmVjTXNnPjwvc29hcDpIZWFkZXI+PHNvYXA6Qm9keT48bmZlRGFkb3NNc2cgeG1sbnM9Imh0dHA6Ly93d3cucG9ydGFsZmlzY2FsLmluZi5ici9uZmUvd3NkbC9OZmVSZXRBdXRvcml6YWNhbyI+PGNvbnNSZWNpTkZlIHhtbG5zPSJodHRwOi8vd3d3LnBvcnRhbGZpc2NhbC5pbmYuYnIvbmZlIiB2ZXJzYW89IjMuMTAiPjx0cEFtYj4yPC90cEFtYj48blJlYz4zNTEwMDAxMDI0NjIzMDQ8L25SZWM+PC9jb25zUmVjaU5GZT48L25mZURhZG9zTXNnPjwvc29hcDpCb2R5Pjwvc29hcDpFbnZlbG9wZT4="},

                                               {"CAMPO":"WSRECEIVE","DESCRICAO":"MSG Retorno","CONTEUDO":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c29hcDpFbnZlbG9wZSB4bWxuczpzb2FwPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA1L3NvYXAtZW52ZWxvcGUiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPjxzb2FwOkhlYWRlcj48bmZlQ2FiZWNNc2cgeG1sbnM9Imh0dHA6Ly93d3cucG9ydGFsZmlzY2FsLmluZi5ici9uZmUvd3NkbC9OZmVSZXRBdXRvcml6YWNhbyI+PGNVRj4zNTwvY1VGPjx2ZXJzYW9EYWRvcz4zLjEwPC92ZXJzYW9EYWRvcz48L25mZUNhYmVjTXNnPjwvc29hcDpIZWFkZXI+PHNvYXA6Qm9keT48bmZlUmV0QXV0b3JpemFjYW9Mb3RlUmVzdWx0IHhtbG5zPSJodHRwOi8vd3d3LnBvcnRhbGZpc2NhbC5pbmYuYnIvbmZlL3dzZGwvTmZlUmV0QXV0b3JpemFjYW8iPjxyZXRDb25zUmVjaU5GZSB2ZXJzYW89IjMuMTAiIHhtbG5zPSJodHRwOi8vd3d3LnBvcnRhbGZpc2NhbC5pbmYuYnIvbmZlIj48dHBBbWI+MjwvdHBBbWI+PHZlckFwbGljPlNQX05GRV9QTF8wMDhpMjwvdmVyQXBsaWM+PG5SZWM+MzUxMDAwMTAyNDYyMzA0PC9uUmVjPjxjU3RhdD4xMDQ8L2NTdGF0Pjx4TW90aXZvPkxvdGUgcHJvY2Vzc2FkbzwveE1vdGl2bz48Y1VGPjM1PC9jVUY+PGRoUmVjYnRvPjIwMTYtMDgtMjJUMTQ6NDQ6MjItMDM6MDA8L2RoUmVjYnRvPjxwcm90TkZlIHZlcnNhbz0iMy4xMCI+PGluZlByb3Q+PHRwQW1iPjI8L3RwQW1iPjx2ZXJBcGxpYz5TUF9ORkVfUExfMDA4aTI8L3ZlckFwbGljPjxjaE5GZT40MjE2MDg1MzExMzc5MTAwMTc5MDU1NzQxMDAwMDAwMDMxMTAwODQ4ODg4MDwvY2hORmU+PGRoUmVjYnRvPjIwMTYtMDgtMjJUMTQ6NDQ6MjItMDM6MDA8L2RoUmVjYnRvPjxjU3RhdD4yMjY8L2NTdGF0Pjx4TW90aXZvPlJlamVpw6fDo286IEPDs2RpZ28gZGEgVUYgZG8gRW1pdGVudGUgZGl2ZXJnZSBkYSBVRiBhdXRvcml6YWRvcmE8L3hNb3Rpdm8+PC9pbmZQcm90PjwvcHJvdE5GZT48L3JldENvbnNSZWNpTkZlPjwvbmZlUmV0QXV0b3JpemFjYW9Mb3RlUmVzdWx0Pjwvc29hcDpCb2R5Pjwvc29hcDpFbnZlbG9wZT4="},

                                               {"CAMPO":"DETALHES","DESCRICAO":"Detalhes","CONTEUDO":"UHJvY2Vzc28gRXhlY3V0YWRvIGNvbSBmYWxoYS4NClJlamVp5+NvOiBD82RpZ28gZGEgVUYgZG8gRW1pdGVudGUgZGl2ZXJnZSBkYSBVRiBhdXRvcml6YWRvcmE="}

                               ]

                } ,

"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.

Com o LOGID, será chamada a função RetXml(), para essa função será passado como parâmetro o LOGID. O retorno desta função será um array contendo todos os campos da tabela TSS0004.

Após obter o retorno da rotina RetXml(), a função GetXml() será encerrada, retornando o array.

Parâmetros: 

GetXml(oDados,cError)

oDados – Objeto contendo as informações da requisição: LOGID.

cError – Mensagem de erro, caso exista.

Retorno:

aArray – Array contendo todos os campos da tabela TSS0004.

 

Função: RetXml()

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

A função por meio de Query, localizará os registros com o LOGID passado como parâmetro, identificará a última sequência do log e buscará todos os campos.

Os campos do tipo Memo, os dados serão codificados em base 64

Parâmetros: 

(cLOGID,cError)

cLOGID – LOGID do documento.

cError – Mensagem de erro, caso exista.

Retorno:

aArray – array contendo todos os campos da tabela TSS0004.

 

 

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: 

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.