Ativa/Inativa Cliente
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-8285 |
Requisito1 | PCREQ-8286 | Subtarefa1 |
|
Chamado2 | 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).
Disponibilizar uma API que possa ativar ou inativar cliente no TSS quando utilizado o Cloud.
Através da API de ativa ou inativa cliente, as aplicações cliente do TSS poderão liberar ou bloquear o cliente de enviarem documentos do TSS off-line para o TSS onlinetransmitir documentos eletrônicos ao cloud. A atualização será realizada com base nos dados: CNPJ, CPF, Inscrição Estadual, UF, ativar ou inativar e o número do contrato. O critério para a atualização na base de dados será obtido através dos parâmetros recebidos pela API. A API terá como retorno um array contendo objetos, cada objeto representa uma entidade.
O consumo da API deverá ser realizado através de mensagens JSON em base 64 definidas no WebService RestAtBlqEnt().
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:
WebService: RestAtBlqEnt()
WebService responsável pela definição da Interface da API de ativa ou inativa cliente.
O WebService deverá receber mensagens na estrutura JSON em base 64, onde serão decodificadas e passadas como parâmetro para a função AtBlqEnt().
Pode ser enviado mais de um cliente por requisição.
A chave para ativar ou inativar o cliente é:
Onde "Parametro" é do tipo numérico.
1 significa que o cliente será inativado.
2 significa que o cliente será ativado.
Portanto na linha de requisição abaixo, todas as entidades que contenham a chave CNPJ + CPF + IE + UF serão inativadas.
Na primeira ativação do cliente, será gerado um Token que será gravado na tabela TSS0005 para autenticação das mensagens entre o TSS Offline e TSS Cloud (Online). Este Token deverá também ser gravado na seção "[TSSOFFLINE]" do arquivo de configuração "APPSERVER" do TSS Offline, conforme exemplo abaixo:
[TSSOFFLINE]
TOKEN=50164fa93121e0d05843576147d0394c0a1b31ee
O consumo da API deverá ser realizado através de mensagens JSON codificada em base64 definidas no WebService RestAtBlqEnt().
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:
WebService: RestAtBlqEnt()
WebService responsável pela definição da Interface da API de ativa ou inativa cliente.
O WebService deverá receber mensagens na estrutura JSON codificado em base64, onde serão decodificadas e passadas como parâmetro para a função AtBlqEnt().
Pode ser enviado mais de um cliente por requisição.
A chave para ativar ou inativar o cliente é:
Onde "Parametro" é do tipo numérico.
1 significa que o cliente será inativado.
2 significa que o cliente será ativado.
Portanto na linha de requisição abaixo, todas as entidades que contenham a chave CNPJ + CPF + IE + UF serão inativadas.
{"contrato":"12345","Empresas":[ {"tipopessoa":2,"cnpj":"53113791001790","IE":"255721161","UF":"SC{"tipopessoa":2,"cgc":"53113791000122","IE":"111010945111","UF":"SP","Parametro":1}]},
No momento do retorno, será apresentado todas as entidades pertencentes a chave CNPJ + CPF + IE + UF, exemplo:
{"CNPJ": "53113791000122","CPF": "","IE": "111010945111","UF": "SP","IDEMPRESA": "00000000000000000001","Entidade": "000002","OK": true,"mensagem": "Cliente bloqueado","error": "null"},
{"CNPJ": "53113791000122","CPF": "","IE": "111010945111","UF": "SP","IDEMPRESA": "00000000000000000002","Entidade": "000121","OK": true,"mensagem": "Cliente bloqueado","error": "null"},
{ "CNPJ": "53113791000122","CPF": "","IE": "111010945111","UF": "SP","IDEMPRESA": "00000000000000000003","Entidade": "000122","OK": true,"mensagem": "Cliente bloqueado","error": "null"},
Quando a solicitação for bem-sucedida, o atributo "OK" virá com o conteúdo lógico True, mas caso não seja possível ativar ou inativar, o atributo virá com o conteúdo False.
O retorno do WebService será uma mensagem JSON contendo um array com objetos, cada objeto representa uma entidade.
Mensagem JSON codificado em base 64.
JSON=
ew0KCSJFbXByZXNhcyI6DQoJCVsNCgkJCXsidGlwb3Blc3NvYSI6MiwiY2djIjoiNTMxMTM3OTEwMDAxMjIiLCJJRSI6IjExMTAxMDk0NTExMSIsIlVGIjoiU
1AiLCJQYXJhbWV0cm8iOjF9LA0KCQkJeyJ0aXBvcGVzc29hIjoyLCJjZ2MiOiIwMTE1OTQzNTAwMDE0NiIsIklFIjoiSVNFTlRPIiwiVUYiOiJQRSIsIlBhcmFtZ
XRybyI6Mn0sDQoJCQl7InRpcG9wZXNzb2EiOjIsImNnYyI6IjUzMTEzNzkxMDAwMTg1IiwiSUUiOiIwMDE0OTUxNzgwMDU0IiwiVUYiOiJNRyIsIlBhcmFtZX
RybyI6MX0NCgkJXQ0KfQ==eyJjb250cmF0byI6IjEyMzQ1IiwiRW1wcmVzYXMiOlsgeyJ0aXBvcGVzc29hIjoyLCJjbnBqIjoiNTMxMTM3OTEwMDE3OTAiLCJJRSI6IjI1NTcyMTE2MSIsIlVGIjoiU0MiLCJQYXJhbWV0cm8iOjF9XX0=
Mensagem JSON decodificada:
{
{"contrato":"12345","Empresas": [ {"tipopessoa":2,"cgccnpj":"5311379100012253113791001790","IE":"111010945111255721161","UF":"SPSC","Parametro":1},
{"tipopessoa":2,"cgc":"01159435000146","IE":"ISENTO","UF":"PE","Parametro":2},
}]}
Retorno Negativo:
{
"result": [
{
"CNPJ": "53113791000122",
"CPF": "",
{"tipopessoa":2,"cgc":"53113791000185", "IE": "0014951780054111010945111",
"UF": "MGSP",
"ParametroIDEMPRESA": 1}
]
}
Retorno Negativo:
"00000000000000000001",
"Entidade": "000002",
"OK": true,
"mensagem": "Cliente bloqueado",
"error": "
Dados de entrada não podem ser processados: 'Empresas[3]:cgc'.null"
},
{
"resultCNPJ": [
{
"CNPJ": "53113791000122",
"CPF": "",
"IE": "111010945111",
"UF": "SP",
"IDEMPRESA": "0000000000000000000100000000000000000002",
"Entidade": "000002000121",
"OK": true,
"mensagem": "Cliente bloqueado",
"error": "null"
},
{
"CNPJ": "53113791000122",
"CPF": "",
"IE": "111010945111",
"UF": "SP",
"IDEMPRESA": "0000000000000000000200000000000000000003",
"Entidade": "000121000122",
"OK": true,
"mensagem": "Cliente bloqueado",
"error": "null"
},
{
"CNPJ": "5311379100012201159435000146",
"CPF": "",
"IE": "111010945111ISENTO",
"UF": "SPPE",
"IDEMPRESA": "00000000000000000003",
"Entidade": "000122000003",
"OK": true,
"mensagem": "Cliente bloqueadoliberado",
"error": "null"
},
{
"CNPJ": "0115943500014653113790001285",
"CPF": "",
"IE": "ISENTO0014951780054",
"UF": "PEMG",
"IDEMPRESA": "",
"Entidade": "000003",
"OK": truefalse,
"mensagem": "Cliente liberado"null,
"error": "nullEntidade nao encontrada."
}
],
{
"CNPJ "error": "53113790001285",
"CPF": "",
"IE": "0014951780054",
"UF": "MG",
"IDEMPRESA": "",
"Entidade": "",
"OK": false,
"mensagem": null,
"error": "Entidade nao encontrada."
}
],
"error": null
}
Função: AtBlqEnt()
A função 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 ValEntrada(), passando como parâmetro o objeto.
A função ValEntrada() retornará uma matriz , onde cada linha do array será uma entidade 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 ArBlqEnt() será finalizada e como retorno será passado a mensagem na estrutura JSON.
Parâmetros:
cJsonRequest =
null
}
Função: AtBlqEnt()
A função 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 ValEntrada(), passando como parâmetro o objeto.
A função ValEntrada() retornará uma matriz , onde cada linha do array será uma entidade 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 ArBlqEnt() será finalizada e como retorno será passado a mensagem na estrutura JSON.
Parâmetros:
cJsonRequest =
{
"contrato":"12345",{
"Empresas":
[
{"tipopessoa":2,"cgccnpj":"53113791000122","IE":"111010945111","UF":"SP","Parametro":1},
{"tipopessoa":2,"cgccnpj":"01159435000146","IE":"ISENTO","UF":"PE","Parametro":2},
{"tipopessoa":2,"cgccnpj":"53113791000185","IE":"0014951780054","UF":"MG","Parametro":1}
]
}
Retorno Negativo:
{
"result": [
{
"CNPJ": "53113791000122",
"CPF": "",
"IE": "111010945111",
"UF": "SP",
"IDEMPRESA": "00000000000000000001",
"Entidade": "000002",
"OK": true,
"mensagem": "Cliente bloqueado",
"error": "null"
},
{
"CNPJ": "53113791000122",
"CPF": "",
"IE": "111010945111",
"UF": "SP",
"IDEMPRESA": "00000000000000000002",
"Entidade": "000121",
"OK": true,
"mensagem": "Cliente bloqueado",
"error": "null"
},
{
"CNPJ": "53113791000122",
"CPF": "",
"IE": "111010945111",
"UF": "SP",
"IDEMPRESA": "00000000000000000003",
"Entidade": "000122",
"OK": true,
"mensagem": "Cliente bloqueado",
"error": "null"
},
{
"CNPJ": "01159435000146",
"CPF": "",
"IE": "ISENTO",
"UF": "PE",
"IDEMPRESA": "",
"Entidade": "000003",
"OK": true,
"mensagem": "Cliente liberado",
"error": "null"
},
{
"CNPJ": "53113790001285",
"CPF": "",
"IE": "0014951780054",
"UF": "MG",
"IDEMPRESA": "",
"Entidade": "",
"OK": false,
"mensagem": null,
"error": "Entidade nao encontrada."
}
],
"error": null
}
Função: ValEntrada()
A função 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: TipoPessoa,
CGCCNPJ, IE, UF, Parametro são obrigatórios.
Com as informações validadas, será chamada a função AtBlq(), para essa função serão passados como parâmetros: o CNPJ,CPF, IE, Uf e Parametro para a consulta no banco e atualização. O retorno desta função será uma matriz.
Após obter o retorno da rotina AtBlq, a função ValEntrada() será encerrada, retornando a matriz.
aMatriz – matriz contendo os dados das entidades encontradas.
Função: AtBlq()
A rotina deverá executar o filtro na tabela SPED001 e retornando todas as entidades encontradas.
A rotina tentara atualizar o campo BLQCLI, o retorno sendo positivo ou não, será gerado um array temporário onde serão armazenados os dados daquele CNPJ ou CPF e as informações de sucesso ou não na atualização do campo.
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 |
campo.
Função: GetJSONResp()
cJSONResponse – String na estrutura JSON.
<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 1 – Top Right 2 – Bottom Left 3 – Bottom Right | 0 – Top Left 1 – Top Right 2 – Bottom Left 3 – Bottom Right | 0 – Top Left 1 – Top Right 2 – Bottom Left 3 – Bottom Right |
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