Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
Especificação |
|
|
|
Produto | TSS | Módulo | TSS |
Segmento Executor | SERVIÇOS |
|
|
Projeto1 | M_SER_TSS002 | IRM1 | PCREQ-82878285 |
Requisito1 | PCREQ-82888286 | Subtarefa1 |
|
Release de Entrega planejada | 12.1.13 |
|
|
País | ( X ) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador |
|
|
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).
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 mensagem JSON definidas na função GetListDoc().
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:
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 o código de status e 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.
Parâmetros:
cJsonRequest =
{
"empresa":
{"cnpj": "99999999999999","ie": "99999999","uf": "AA"},
"tipdoc":"nfe",
"parametros":{"dtini": "19900101","dtfim":"20150826"," status":"2","doc":"000001","serie":"111"},
"Quebra":100,
"RECNO":0
}
Retorno Negativo:
{
"status": 200,
"result":
{
"documento":
[
{"DOCID":"753000187","DOCUMENTO":"187","DTENVIO":"20150813","DTPROC":"","HRENVIO":"16:13:30","HRPROC":"","LOGID":"","SERIE":"753","SITUACAO":"MDAyIC0gTuNvIGZvaSBwb3Nz7XZlbCBhc3NpbmFyIGEgTmZlICAtIGVudHJlIGVtIGNvbnRhdG8gY29tIG8gcmVzcG9uc+F2ZWwuIDAyOSAtIEZhbGhhIG5vIFNjaGVtYSBkbyBYTUwu","STATUS","STATUS":"Não
],
"Paginacao":{"Recno":0}
} ,
"error": null
}
Função: VALENTRADA ()
{"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
Âncora | ||||
---|---|---|---|---|
|
{"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.
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.
cMensagem – String contendo a situação do documento.
Função: GetJSONResp()
cJSONResponse – String na estrutura JSON.
<Caso necessário inclua protótipos de telas com o objetivo de facilitar o entendimento do requisito, apresentar conceitos e funcionalidades do software>.
Protótipo 01
<Nesta etapa incluir representações gráficas que descrevam o problema a ser resolvido e o sistema a ser desenvolvido. Exemplo: Diagrama - Caso de Uso, Diagrama de Atividades, Diagrama de Classes, Diagrama de Entidade e Relacionamento e Diagrama de Sequência>.
Arquivo ou Código do Script: AAA – Negociação Financeira / Versao=CP.2014.12_03/
Índice | Chave |
01 | <FI9_FILIAL+FI9_IDDARF+FI9_STATUS> |
02 | <FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_EMISS+FI9_IDDARF> |
03 | <FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_PREFIX+FI9_NUM+FI9_PARCEL+FI9_TIPO> |
Campo | <AAA_PERESP> |
Tipo | <N> |
Tamanho | <6> |
Valor Inicial | <Varia de acordo com o tipo informado. Por exemplo, quando o campo "tipo" for date, neste campo pode ser informado uma data>. |
Mandatório | Sim ( ) Não ( ) |
Descrição | <Referência Mínima para Cálculo> |
Título | <Ref.Calc.> |
Picture | <@E999.99> |
Help de Campo | <Informar o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação> |
<Informações utilizadas na linha Protheus>.
Nome: FINSRF2
X1_ORDEM | 01 |
X1_PERGUNT | Emissão De |
X1_TIPO | D |
X1_TAMANHO | 8 |
X1_GSC | G |
X1_VAR01 | MV_PAR01 |
X1_DEF01 | Comum |
X1_CNT01 | '01/01/08' |
X1_HELP | Data inicial do intervalo de emissões das guias de DARF a serem consideradas na seleção dos dados para o relatório |
<Informações utilizadas na linha Protheus>
Consulta: AMB
Descrição | Configurações de Planejamento |
Tipo | Consulta Padrão |
Tabela | "AMB" |
Índice | "Código" |
Campo | "Código"; "Descrição" |
Retorno | AMB->AMB_CODIGO |
<Informações utilizadas na linha Datasul>.
Procedimentos
...
Código Papel | (máx 3 posições) |
Descrição em Português* |
|
Descrição em Inglês* |
|
[1] Nome Verbalizado é obrigatório para desenvolvimentos no Datasul 10 em diante.
[2] Tipo é obrigatório para desenvolvimento no Datasul 10 em diante
[3] Categorias são obrigatórias para os programas FLEX.
[4] Obrigatório quando o projeto for FLEX
[5] Obrigatório quando o projeto for FLEX
[6] Obrigatório quando o projeto for FLEX
...