Páginas filhas
  • ER_PCREQ-8286 - Ativa / Inativa Cliente

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.                                                             

  

(Obrigatório)

Informações Gerais

 

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). 

(Obrigatório)

Objetivo

 

Disponibilizar uma API que possa ativar ou inativar cliente no TSS quando utilizado o Cloud.

(Obrigatório)

Definição da Regra de Negócio

 

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:

https://pt.wikipedia.org/wiki/Lista_de_c%C3%B3digos_de_status_HTTP

 

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.

 

Parâmetros: 

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": [],

   "error": " Dados de entrada não podem ser processados: 'Empresas[3]:cnpj'. "

}

Retorno Positivo:

{

   "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": [],

   "error": " Dados de entrada não podem ser processados: 'Empresas[3]:cnpj'. "

}

Retorno Positivo:

{

   "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.

Parâmetros: 

oObjeto – Mensagem JSon deserializada e transformada em Objeto.

@cError – Mensagem de erro.

 

Retorno:

 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.   

Parâmetros: 

cCNPJ – CNPJ do cliente.

cCPF  - CPF do cliente.

cIE – Inscrição estadual do cliente .

cUF – Unidade da Federação do cliente.

cParametro – parâmetro de controle, se 1 bloqueia cliente se 2 desbloqueia cliente.

Retorno:

aMatriz  -  Matriz multidimensional contendo objetos.

 

 

Função: GetJSONResp()

A rotina consiste em obter os dados de entrada e gerar a mensagem em estrutura JSON.

A rotina retornará uma string na estrutura JSON

 

Parâmetros: 

aArray– Array multidimensional.

cError – Mensagem de erro.

Retorno:

cJSONResponse – String na estrutura JSON.