Páginas filhas
  • ER_PCREQ-8286 Lista_Documentos_Enviados_por_Filial

Versões comparadas

Chave

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

...

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 GetListDoc()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


Função: APILISTDOC()
Função 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 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 o código de status e a mensagem de erro (caso exista). O retorno da função getJSONResp() é a mensagem já na estrutura JSON.
A situação do documento está codificada em base 64.
A rotina APILISTDOC() será finalizada e como retorno será passado a mensagem na estrutura JSON.

Os parâmetros CNPJ, 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:

cJson= ew0KImVtcHJlc2EiOiANCnsiY25waiI6ICI5OTk5OTk5OTk5OTk5OSIsImllIjogIjk5OTk5OTk5IiwidWYiOiAiQUEifSwNCiJ0aXBkb2MiOiJuZmUiLA0KInBhcmFtZXRyb3MiOnsiZHRpbmkiOiAiMTk5MDAxMDEiLCJkdGZpbSI6IjIwMTUwODI2IiwiIHN0YXR1cyI6IjIiLCJkb2MiOiIwMDAwMDEiLCJzZXJpZSI6IjExMSJ9LA0KIlF1ZWJyYSI6MTAwLCANCiJSRUNOTyI6MCANCn0g

...

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.

...

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

...

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.

...