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 |
| ||
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 transmitir 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.
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":"5311379100012253113791001790","IE":"111010945111255721161","UF":"SPSC","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=ew0KCSJFbXByZXNhcyI6DQoJCVsNCgkJCXsidGlwb3Blc3NvYSI6MiwiY25waiI6IjUzMTEzNzkxMDAwMTIyIiwiSUUiOiIxMTEwMTA5NDUxMTEiLCJVRiI6IlNQIiwiUGFyYW1ldHJvIjoxfSwNCgkJCXsidGlwb3Blc3NvYSI6MiwiY25waiI6IjAxMTU5NDM1MDAwMTQ2IiwiSUUiOiJJU0VOVE8iLCJVRiI6IlBFIiwiUGFyYW1ldHJvIjoyfSwNCgkJCXsidGlwb3Blc3NvYSI6MiwiY25waiI6IjUzMTEzNzkxMDAwMTg1IiwiSUUiOiIwMDE0OTUxNzgwMDU0IiwiVUYiOiJNRyIsIlBhcmFtZXRybyI6MX0NCgkJXQ0KfQeyJjb250cmF0byI6IjEyMzQ1IiwiRW1wcmVzYXMiOlsgeyJ0aXBvcGVzc29hIjoyLCJjbnBqIjoiNTMxMTM3OTEwMDE3OTAiLCJJRSI6IjI1NTcyMTE2MSIsIlVGIjoiU0MiLCJQYXJhbWV0cm8iOjF9XX0==
Mensagem JSON decodificada:
{
"Empresas":
[
{"tipopessoa":2,"cnpj":"53113791000122","IE":"111010945111","UF":"SP","Parametro":1},
"contrato":"12345","Empresas":[ {"tipopessoa":2,"cnpj":"0115943500014653113791001790","IE":"ISENTO255721161","UF":"PE","Parametro":2}, {"tipopessoa":2,"cnpj":"53113791000185","IE":"0014951780054SC","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: 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,"cnpj":"53113791000122","IE":"111010945111","UF":"SP","Parametro":1},
{"tipopessoa":2,"cnpj":"01159435000146","IE":"ISENTO","UF":"PE","Parametro":2},
{"tipopessoa":2,"cnpj":"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, CNPJ, 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.