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.

Ativa/Inativa Cliente

 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

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

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

 

Parâmetros: 

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:

{

   "result": [],

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

}

Retorno Positivo:

{

]}

 

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"

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

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

cgc

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,

CGC

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.

Opcional

Protótipo de Tela

 

<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

 

 

 Image Removed

 

 

 

 

 

 

Opcional

Fluxo do Processo

 

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

Opcional

Dicionário de Dados

 

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>

 

(Opcional)

Grupo de Perguntas

 

<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 

 

(Opcional)

Consulta Padrão

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

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.

 

 

 

 

 

 

 

 

(Opcional)

Estrutura de Menu

 

<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

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