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 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 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,"cgccnpj":"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=
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},
{"tipopessoa":2,"cgc":"53113791000185","IE":"0014951780054","UF":"MG","Parametro":1}
]
}
Retorno Negativo:
{
]}
Retorno Negativo:
{
"result": [
{
"CNPJ": "53113791000122",
"CPF": "",
"IE": "111010945111",
"UF": "SP",
"IDEMPRESA": "00000000000000000001",
"Entidade": "000002",
"OK": true,
"mensagem": "Cliente bloqueado",
"error": "null"
}, "result": [
{
"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 =
{
"Empresas":
[
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"," {"tipopessoa":2,"cgc":"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