...
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 mensagens JSON definidas 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:
Função: APILISTDOC()
Função WebService: RestListDoc
WebService 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:
...
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.
...
...
{
"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 ()
...
...
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.
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.
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.
aMatriz
...
– Matriz de retorno no formato:
aMatriz
Função: NFSERECOMENListDocTab()
A rotina NFSERecomenListDocTab() 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.
...
...
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.
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
aMatriz - Matriz multidimensional contendo objetos, na seguinte estrutura:
aMatriz
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
Procedimento |
|
|
|
Descrição | (Max 40 posições) | (Max 40 posições) | (Max 40 posições) |
Módulo |
|
|
|
Programa base |
|
|
|
Nome Menu | (Max 32 posições) | (Max 32 posições) | (Max 32 posições) |
Interface | GUI/WEB/ChUI/Flex | GUI/WEB/ChUI/Flex | GUI/WEB/ChUI/Flex |
Registro padrão | Sim | Sim | Sim |
Visualiza Menu | Sim/Não | Sim/Não | Sim/Não |
Release de Liberação |
|
|
|
Programas
Programa |
|
|
|
Descrição | (Max 40 posições) | (Max 40 posições) | (Max 40 posições) |
Nome Externo |
|
|
|
Nome Menu/Programa | (Max 32 posições) | (Max 32 posições) | (Max 32 posições) |
Nome Verbalizado[1] | (Max 254 posições) | (Max 254 posições) | (Max 254 posições) |
Procedimento |
|
|
|
Template | (Verificar lista de opções no man01211) | (Verificar lista de opções no man01211) | (Verificar lista de opções no man01211) |
Tipo[2] | Consulta/Manutenção/ Relatório/Tarefas | Consulta/Manutenção/ Relatório/Tarefas | Consulta/Manutenção/ Relatório/Tarefas |
Interface | GUI/WEB/ChUI/Flex | GUI/WEB/ChUI/Flex | GUI/WEB/ChUI/Flex |
Categoria[3] |
|
|
|
Executa via RPC | Sim/Não | Sim/Não | Sim/Não |
Registro padrão | Sim | Sim | Sim |
Outro Produto | Não | Não | Não |
Visualiza Menu | Sim/Não | Sim/Não | Sim/Não |
Query on-line | Sim/Não | Sim/Não | Sim/Não |
Log Exec. | Sim/Não | Sim/Não | Sim/Não |
Rotina (EMS) |
|
|
|
Sub-Rotina (EMS) |
|
|
|
Localização dentro da Sub Rotina (EMS) |
|
|
|
Compact[4] | Sim/Não | Sim/Não | Sim/Não |
Home[5] | Sim/Não | Sim/Não | Sim/Não |
Posição do Portlet[6] | 0 – Top Left | 0 – Top Left | 0 – Top Left |
Informar os papeis com os quais o programa deve ser vinculado |
|
|
|
Cadastro de Papéis
<O cadastro de papéis é obrigatório para os projetos de desenvolvimento FLEX a partir do Datasul 10>.
<Lembrete: o nome dos papeis em inglês descrito neste ponto do documento, devem ser homologados pela equipe de tradução>.
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
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |