Páginas filhas
  • ER_PCREQ-8286 Lista_Documentos_Enviados_por_Filial

Lista documentos enviados por filial

 

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

Disponibilizar uma API para realização de consultas dos documentos na base de dados do TSS.

(Obrigatório)

 

Definição da Regra de Negócio

Através da API de consultas de documentos, as aplicações cliente do TSS poderão obter informações sobre os documentos contidos na base de dados do TSS. A consulta poderá ser realizada para um ou mais documentos. O critério para consulta na base de dados será obtido através dos parâmetros recebidos pela API. A API terá como retorno uma lista de documentos, estruturados com suas respectivas informações de registro na base do TSS e dados sobre o seu atual status de processamento.
A API funciona com paginação de dados, ou seja, possui um limite de dados no retorno. O limite do retorno pode ser especificado na entrada ou pode-se utilizar o limite máximo que está especificado na função.
O consumo da API deverá ser realizado através de mensagens JSON codificado em base64 definidas na função RestListDoc.
O processo de Serialização e Deserialização de mensagens deverá ser realizado através das funções FwJsonSerialize() e FwJsonDeserialize() respectivamente.
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: RestListDoc
WebService responsável pela definição da Interface da API de lista documento enviados por filial.
O WebService deverá receber mensagens na estrutura JSON codificado em base64, onde serão decodificadas e passadas como parâmetro para a função ApiListDoc().
O retorno do WebService será uma mensagem JSON.
A situação do documento está codificada em base 64.
Os parâmetros CGC, Inscrição Estadual e UF são obrigatórios, os demais não são e, portanto, podem ou não vir preenchidos.

Parâmetros:

JSon= ew0KImVtcHJlc2EiOiANCnsiY25waiI6ICI5OTk5OTk5OTk5OTk5OSIsImllIjogIjk5OTk5OTk5IiwidWYiOiAiQUEifSwNCiJ0aXBkb2MiOiJuZmUiLA0KInBhcmFtZXRyb3MiOnsiZHRpbmkiOiAiMTk5MDAxMDEiLCJkdGZpbSI6IjIwMTUwODI2IiwiIHN0YXR1cyI6IjIiLCJkb2MiOiIwMDAwMDEiLCJzZXJpZSI6IjExMSJ9LA0KIlF1ZWJyYSI6MTAwLCANCiJSRUNOTyI6MCANCn0g

Mensagem JSON decodificada:

{
"empresa":{"cgc": "53113791000122","tipopessoa":2,"ie": "111010945111","uf": "SP"},
"tipdoc":"NFE",
"parametros":{"dtini": "20000101","dtfim":"20170101","doc":"","status":"","serie":""},
"quebra":1,
"Recno":0
}


Retorno Negativo:

{

"status": 400,

"result":

{

"documento":[],

"Paginacao":{"Recno":0}

} ,

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

}
 

Retorno Positivo:

"result":
{
"documento":
[
{"ENTIDADE":"000002","IDEMPRESA":"00000000000000000001","DOCID":"1000005","DOCUMENTO":"5","DTENVIO":"20140115","DTPROC":"20140115",
"HRENVIO":"08:59:44","HRPROC":"10:36:15","LOGID":"","SERIE":"1","SITUACAO":"MDE0IC0gTkZlIG7jbyBhdXRvcml6YWRhIC0gQ29ycmlqYSBvIHByb2Js
ZW1hIGUgcmV0cmFuc21pdGEgYXMgbm90YXMgZmlzY2FpcyBlbGV0cvRuaWNhcy4gNTM5L1JlamVp5+NvOiBEdXBsaWNpZGFkZSBkZSBORi1lLCBjb20g
ZGlmZXJlbudhIG5hIENoYXZlIGRlIEFjZXNzbyBbY2hORmU6MzUxMzAyNTMxMTM3OTEwMDAxMjI1NTAwMTAwMDAwMDAwNTEwMDU1NTU1NTJdW25S
ZWM6MzUxMDAwMDY4MzU4NjEzXQ==","STATUS":"OK","TIPO":"NFE","AMBIENTE":""},
],
"Paginacao":{"Recno":3}
} , 
"error": null 
}


Função: APILISTDOC()
Função responsável pela definição da Interface da API de consulta de documentos.
A função GetDocList 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 GetDocList 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 estrutura dos documentos será definida de acordo com as tabelas de negócio: Sendo:
SPED050 – NF-e/NFC-e/CT-e/MDF-e SPED051 – NFS-eSPED201 – GNRESPED202 – DMST-eSPED400 – e-Social
A função APILISTDOC() deverá receber mensagens na estrutura JSON, onde serão convertidas em objeto pela função fwJsonDeserialize().
A função APILISTDOC() funciona com paginação de dados, sendo que existe um limite máximo de dados no retorno, esse limite está especificado no código fonte da função.
Para a paginação, pode ser enviado a quantidade de registros que deseja obter no retorno, porém, deve ser menor que o limite máximo.
Caso não seja possível enviar todos os dados na solicitação em uma página, a rotina retornará o número RECNO do próximo registro, e para a próxima solicitação, deve-se informar este mesmo número RECNO. Assim a função APILISTDOC() iniciará a busca a partir do RECNO informado na entrada dos dados.
Caso não haja erro na deserialização de JSON para objeto, será chamada a rotina VALENTRADA(), passando como parâmetro o objeto.
A função VALENTRADA () retornará uma matriz com objetos, onde cada objeto será um documento diferente. Essa matriz será passada como parâmetro na chamada da função getJSONResp() junto com a mensagem de erro (caso exista). O retorno da função getJSONResp() é a mensagem já na estrutura JSON.
A rotina APILISTDOC() será finalizada e como retorno será passado a mensagem na estrutura JSON.

cJsonRequest= 

{
"empresa":{"cgc": "53113791000122","tipopessoa":2,"ie": "111010945111","uf": "SP"}, 
"tipdoc":"NFE", 
"parametros":{"dtini": "20000101","dtfim":"20170101","doc":"","status":"","serie":""},
"quebra":1,
"Recno":0
}



Retorno Negativo:

{

"result":

{

"documento":[],

"Paginacao":{"Recno":0}

} ,

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

}
 

Retorno Positivo:

"result":
{
"documento":
[
{"ENTIDADE":"000002","IDEMPRESA":"00000000000000000001","DOCID":"1000005","DOCUMENTO":"5","DTENVIO":"20140115","DTPROC":"20140115",
"HRENVIO":"08:59:44","HRPROC":"10:36:15","LOGID":"","SERIE":"1","SITUACAO":"MDE0IC0gTkZlIG7jbyBhdXRvcml6YWRhIC0gQ29ycmlqYSBvIHByb2Js
ZW1hIGUgcmV0cmFuc21pdGEgYXMgbm90YXMgZmlzY2FpcyBlbGV0cvRuaWNhcy4gNTM5L1JlamVp5+NvOiBEdXBsaWNpZGFkZSBkZSBORi1lLCBjb20g
ZGlmZXJlbudhIG5hIENoYXZlIGRlIEFjZXNzbyBbY2hORmU6MzUxMzAyNTMxMTM3OTEwMDAxMjI1NTAwMTAwMDAwMDAwNTEwMDU1NTU1NTJdW25S
ZWM6MzUxMDAwMDY4MzU4NjEzXQ==","STATUS":"OK","TIPO":"NFE","AMBIENTE":""},
],
"Paginacao":{"Recno":3}
} , 
"error": null 
}


Função: VALENTRADA ()

A função ValEntrada() 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, os campos CNPJ, Inscrição Estadual e UF são obrigatórios, os demais não são e, portanto, podem ou não vir preenchidos.

Para obter o ID_ENT do CNPJ informado, será chamada a função GetEntTSS(), será passado como parâmetro o CNPJ, Inscrição Estadual e UF do cliente, informações que estão dentro do objeto recebido como parâmetro, assim a função GetEntTSS() terá como retorno o número da entidade do cliente (ID_ENT).

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 obtidas como, tipo de documento e número da entidade, será chamada a função ListDocTab(), 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, série do documento, data inicial (DATE_NFE), data final (DATE_NFE) e situação do documento. O retorno desta função será uma matriz com objetos.

Após obter o retorno da rotina ListDocTab(), a função ValEntrada() será encerrada, retornando a matriz com objetos.


Parâmetros: 

oObjeto – Mensagem JSon deserializada e transformada em Objeto.

@cError – Mensagem de erro.

@cHttpStatus – Código de status, baseados no formato padrão de mensagens HTTP, conforme o link: https://pt.wikipedia.org/wiki/Lista_de_c%C3%B3digos_de_status_HTTP.

 

Retorno:

aMatriz – Matriz de retorno no formato:

aMatriz

{

{"DOC":"754000595","DTFIM":"","DTINI":"20150805","HFIM":"","HINI":"17:05:28","SERIE":"754","SITUA":"002 - Não foi possível assinar a Nfe - entre em contato com o responsável. 028 - Certificado digital Ausente.","STATUS":"Não Transmitido","TIPO":"NFE"},
{"DOC":"754000596","DTFIM":"2015-08-05","DTINI":"2015-08-05","HFIM":"17:12:55","HINI":"17:11:54","SERIE":"754","SITUA":"014 - NFe não autorizada - Corrija o problema e retransmita as notas fiscais eletrônicas. 525\/Rejeição: CFOP de Importação e não informado dados da DI","STATUS":"OK","TIPO":"NFE"},
{"DOC":"754000597","DTFIM":"2015-08-05","DTINI":"2015-08-05","HFIM":"18:03:32","HINI":"18:02:32","SERIE":"754","SITUA":"014 - NFe não autorizada - Corrija o problema e retransmita as notas fiscais eletrônicas. 525\/Rejeição: CFOP de Importação e não informado dados da DI","STATUS":"OK","TIPO":"NFE"},
{"DOC":"AAA123","DTFIM":" - - ","DTINI":"2015-06-19","HFIM":"","HINI":"13:29:44","SERIE":"AAA","SITUA":"002 - Não foi possível assinar a Nfe - entre em contato com o responsável. 028 - Certificado digital Ausente.","STATUS":"Não Transmitido","TIPO":"NFE"}
}


 
Função: ListDocTab()
A rotina ListDocTab() deverá executar filtros nas tabelas do TSS de acordo os dados de entrada, deverá ter como retorno, uma matriz contendo as informações dos documentos.
Antes de executar o filtro, a rotina identificará qual o modelo de documento, pois, para cada modelo será usado uma query diferente, como exemplo: Modelo 55 – tabela SPED050; Modelo 56 –tabela SPED051.
Para modelo '56', após obter os registros, será chamada a rotina NFSERecomen() que tem como retorno uma string com situação do documento.
Para os modelos: 55,57,58 e 65 após obter os registros, será chamada a rotina NfeRec () que tem como retorno uma string com situação do documento.
Após executar a query, a rotina gravará todos os dados encontrados em uma matriz. Essa matriz será o retorno da função.

Parâmetros: 

cEnt – Código da Entidade

cTipo – Tipo de documento

cDoc – Número do documento

cSerie – Série do Documento

cStatus – Status do Documento

dDtini – Data inicial de inclusão do documento do TSS

dDtfim – Data final de inclusão do documento no TSS

cError – Mensagem de erro

cHttpStatus – Status HTTP, https://pt.wikipedia.org/wiki/Lista_de_c%C3%B3digos_de_status_HTTP

Retorno:

aMatriz - Matriz multidimensional contendo objetos, na seguinte estrutura:

aMatriz

{

{"DOC":"754000595","DTFIM":"","DTINI":"20150805","HFIM":"","HINI":"17:05:28","SERIE":"754","SITUA":"002 - Não foi possível assinar a Nfe - entre em contato com o responsável. 028 - Certificado digital Ausente.","STATUS":"Não Transmitido","TIPO":"NFE"},
{"DOC":"754000596","DTFIM":"2015-08-05","DTINI":"2015-08-05","HFIM":"17:12:55","HINI":"17:11:54","SERIE":"754","SITUA":"014 - NFe não autorizada - Corrija o problema e retransmita as notas fiscais eletrônicas. 525\/Rejeição: CFOP de Importação e não informado dados da DI","STATUS":"OK","TIPO":"NFE"},
{"DOC":"754000597","DTFIM":"2015-08-05","DTINI":"2015-08-05","HFIM":"18:03:32","HINI":"18:02:32","SERIE":"754","SITUA":"014 - NFe não autorizada - Corrija o problema e retransmita as notas fiscais eletrônicas. 525\/Rejeição: CFOP de Importação e não informado dados da DI","STATUS":"OK","TIPO":"NFE"},
{"DOC":"AAA123","DTFIM":" - - ","DTINI":"2015-06-19","HFIM":"","HINI":"13:29:44","SERIE":"AAA","SITUA":"002 - Não foi possível assinar a Nfe - entre em contato com o responsável. 028 - Certificado digital Ausente.","STATUS":"Não Transmitido","TIPO":"NFE"}

}

Função: NFSERECOMEN()
A rotina NFSERecomen() deverá obter a situação do documento com base nos parâmetros de entrada.
A rotina receberá um Alias com dados das tabelas: SPED051/SPED053/SPED055. Com esses dados validados, a rotina retornará a mensagem correspondente à situação do documento.

Parâmetros: 

aAlias – Deverá conter os campos das tabelas SPED051,SPED053 e SPED055

Retorno:

cMensagem – String contendo a situação do documento.
Função: NFERec()
A rotina NFERec() deverá obter a situação do documento com base nos parâmetros de entrada.
A rotina receberá um Alias com dados das tabelas: SPED050/SPED052/SPED054, deve também estar posicionado no registro na tabela SPED054. Com esses dados validados, a rotina retornará a mensagem correspondente à situação do documento.

Parâmetros: 

aAlias – Deverá conter os campos das tabelas SPED050,SPED052 e SPED054

Retorno:

cMensagem – String contendo a situação do documento.


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.                                                             

 

 

  • Sem rótulos