Especifica | |||
Produto | TSS | Módulo |
|
Segmento Executor | SERVIÇOS | ||
Projeto1 | M_SER_TSS002 | IRM1 | PCREQ-8234 |
Requisito1 | PCREQ-8235 | Subtarefa1 |
|
Release de Entrega planejada | 12.1.13 | ||
País | ( X ) Brasil ( ) Argentina ( ) México ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colômbia ( ) Outro _____________. |
Disponibilizar uma interface para integração dos métodos WS SOAP com a API HTTP e gerenciar o processo de contingência do TSS OFFLINE.
A funcionalidade do serviço do TSS OFFLINE será definida através da chamada da função IsLocalBrocker(). Esta função será executada dentro da função TSSAnalyseReq(), onde é chamada na segregação dos métodos do TSS. E assim, direcionada para a função TSSBrokerReq() que será responsável por identificar o Web Service e o método em execução, através do Alias virtual HTTPHEADIN->MAIN e da função procname(), respectivamente.
Após a identificação do Web Service e do Método, a rotina buscará os dados referente ao método em execução para que seja feita a montagem da requisição à ser enviada para o TSS ONLINE. Os dados deverão ser recuperados através da rotina TSSGetProcQueue(), que retornará um array com os dados do método. Por fim, identificará a fila de processamento da requisição, onde será realizada através da função setProcQueue().
Assim definidos os dados para processamento, será executado o processamento da requisição através da função TSSLocalBroker().
A função TSSLocalBroker() será responsável por processar as requisições dos métodos do TSS OFFLINE.
Para toda requisição será realizada a validação de acordo com sua funcionalidade. Quando ocorrer a validação com sucesso, verificará o cache da requisição, que é formada pela serialização da mensagem da requisição e o código do processo, assim resultando numa mensagem Hash, obtida a partir da função sha1(). A consulta do cache ocorrerá através da função getCache(). Caso a requisição seja encontrada, a rotina retornará a resposta em cache, caso contrário, o próximo passo consiste na identificação do cadastro de entidades, que ocorrerá através da função getEntidade().
Os métodos que precisarem de um pré-processamento serão tratados pela função preProcReq(), já os métodos que precisarem apenas verificar se a requisição deve ou não ser enviada para o TSS ONLINE, apenas serão tratados pela função setSendReq(), por padrão sempre enviado ao TSS ONLINE. De acordo com a fila de processamento, terá a definição da tabela de negócio, através da função setProcTable().
O processo pode variar de acordo com o método executado . Onde serão atendidos pelo próprio TSS OFFLINE, sem a necessidade do envio para o TSS ONLINE, processados apenas no TSS ONLINE ou ainda em ambos os TSS.
As requisições definidas para processamento no TSS OFFLINE, passarão por duas restrições antes de serem executadas no TSS OFFLINE:
0 - Admempresas
1 - Configuração
2 - Remessa de processamento
3 - Monitoramento
.O processamento no TSS OFFLINE ocorrerá através das mesmas funções de processamento utilizadas no TSS ONLINE.
Antes do processo de envio para o TSS ONLINE, o sistema verificará os parâmetros de configuração da entidade, através da função GetDocCfg(). E também configurará a sequência da requisição, através da função getReqSequence().
A requisição a ser envida para o TSS ONLINE, será uma mensagem JSON que será obtida através da chamada da função getJSONRequest(), sendo que, só poderão ser envidas caso o processamento tenha ocorrido com sucesso.
O envio da requisição para o TSS ONLINE poderá ocorrer de duas formas Síncrona ou Assíncrona.
Processo Síncrono
No processamento Síncrono, o envio da requisição para o TSS ONLINE será realizado na mesma conexão estabelecida pelo ERP com o TSS OFFLINE. Os processamentos síncronos serão identificados através das seguintes condições:
Ao atender os critérios acima, ocorrerá a consulta do status de operação do TSS ONLINE. O status deverá ser obtido através da função isTSSCloudOnline(), se retornar inválido indica que o TSS ONLINE está fora de operação, impossibilitando o envio, se o retorno for válido, a requisição poderá ser enviada através da função TSSPostQueueMessage().
De acordo com o retorno obtido pela função TSSPostQueueMessage() a rotina deverá se comportar da seguinte forma:
Poderá haver a necessidade de realizar algum processamento com o retorno do TSS ONLINE. Dessa forma o retorno deverá ser tratado através da função procRetOnline().
Caso ocorra falha na consulta do status de operação do TSS ONLINE, os processos do tipo 3 "consulta de documentos", deverão ser atendidas pelo TSS OFFLINE, nesse caso deverá ser executada a função responsável pelo processamento do método, que retornará o status do documento na base de dados do TSS OFFLINE.
Processo Assíncrono
O processamento Assíncrono será realizado para os processos capazes de gerar a resposta para o ERP somente utilizando o serviço do TSS OFFLINE sem depender de uma resposta do TSSONLINE.
Neste caso a conexão com o ERP será liberada e a requisição será colocada em uma fila do TSS OFFLINE através da função putQueue() para que essa possa ser envida posteriormente através do JOB do TSS OFFLINE( JOB_DLL( ) ).
Por fim as requisições recebidas e atendidas com sucesso, serão armazenadas no cache da aplicação através da função grvCache().
Estrutura da função:
Função: TSSAnalyseReq()
Função responsável pela verificação do serviço que está configurado.
A configuração é realizada no arquivo de configuração (.INI) do TOTVS Application Server.
Parâmetros:
Nulo
Retorno:
lRetorno - Retorno verdadeiro caso o serviço específico esteja sendo utilizado.
Função: isLocalBroker()
Função responsável para verificar se o serviço será um TSS OFFLINE.
A configuração é realizada no arquivo de configuração (.INI) do TOTVS Application Server, onde deverá ser informado em seu environment:
[TSSOFFLINE]
TSSOFFLINE=1
ONLINEURL=URL do TSS OnLine
ONLINEPORT=Porta do TSS OnLine
Parâmetros:
Nulo
Retorno:
lRetorno - Retorno verdadeiro caso o serviço seja sendo utilizado.
Função: TSSBrokerReq()
Função responsável pela definição básica do processamento da requisição, ou seja, responsável por identificar o Web Service e o Método em execução, buscando os dados referente ao método para que seja feita a montagem da requisição e identificar a fila de processamento.
O retorno da função deverá ser de acordo com a estrutura de retorno definida para o método Web Service. Em caso de falha que provoque o etorno Soap fault, a rotina deverá preencher a variável cError com a mensagem Soap fault e retornar nil.
Parâmetros:
oWsRequest - Mensagem Soap recebida pelo Método Web Service.
cError - Referência para mensagem de erro no processamento da requisição
cWS - Web Service
cMethod - Método
Retorno:
oRet - Mensagem Soap de Retorno do Web Service.
Função: TSSLocalBroker()
Função responsável pelo tratamento da requisição que está sendo realizada com o serviço do TSS OFFLINE, ou seja, validará o método em execução (TSVAL0002ADMEMPRESSAS link), verificando o cache da requisição, o cadastro de entidades, verificar se é somente processado no TSS OFFLINE ou se deverá ser enviado para o TSS ONLINE, de forma síncrona ou assíncrona, consultar se o serviço do TSS ONLINE está disponível para envio da requisição. Além de tratamentos para contingência para certos cenários e processos.
O retorno da função deverá ser de acordo com a estrutura de retorno definida para o método Web Service. Em caso de falha que provoque o etorno Soap fault, a rotina deverá preencher a variável cError com a mensagem Soap fault e retornar nil.
Parâmetros:
oWsRequest - Mensagem Soap recebida pelo Método Web Service.
cWSRequest - Mensagem Soap recebida com número de serial.
cError - Referência para mensagem de erro no processamento da requisição.
aProc - Vetor contendo os dados de processo do método.
cMethod – Método.
Retorno:
oRet - Mensagem Soap de Retorno do Web Service.
Função: TSSGetProcQueue()
Função responsável por retornar os dados do método do TSS.
As informações estarão definidas na função: TSSInitServices(). Ao identificar o processo no cadastro a rotina deverá retornar um vetor com os dados do processo. A busca pelo processo poderá ser realizada de duas formas, Web Service e Método ou através do código do processo.
Parâmetros:
cWS - Nome do Web Service
cMethod - Nome do método
cCodProc - Código do Processo
Retorno:
aProc - Vetor com os dados do Processo. Sendo:
aProc[1] – WEB SERVICE;
aProc[2] – METODO;
aProc[3] - CODIGO DO PROCESSO;
aProc[4] - FUNCAO DE VALIDADE;
aProc[5] - FUNCAO DE PROCESSAMENTO;
aProc[6] - TIPO DE PROCESSOS;
aProc[7] - DEFINIÇÃO DA UTILIZAÇÃO DA FILA;
Função: GetCache()
Função responsável por recuperar a resposta de uma requisição gravada no cache no TSS OFFLINE.
A função receberá com parâmetro um Hash do tipo sha1 com a mensagem da requisição Web Service. Através desse Hash a função deverá realizar uma busca no cadastro de cache Tabela DLL0002. Que será considerado apenas para processos com tipo diferente de "1" (Configuração).
Parâmetros:
cTypeProc - Fila de processamento.
cHash - Hash da mensagem.
oRetMsgJson - Objeto como referência de retorno do cache.
Retorno:
lRet - Retorno verdadeiro caso tenha encontrado o cache.
Função: GetEntidade()
Função responsável pela definição da entidade da requisição.
Parâmetros:
oJSON - Mensagem Soap recebida pelo Método Web Service.
oRet - Objeto como referência de retorno do processo ADMEMPRESAS.
cCodProc - Código do processo.
Retorno:
cIdEnt - Entidade do processo.
Função: preProcReq()
Função responsável por concentrar qualquer pré-processamento necessário antes do envio da requisição para o TSS ONLINE.
Os seguintes processos são tratados pela função:
Parâmetros:
oRequest - Objeto da requisição.
cIdEnt - Código da entidade.
cError - Referência para atribuição de Erro no Processamento.
oRet - Referência para retorno do Processo.
lSinc - Referência para indicar se o processo será realizado de forma Síncrona ou Assíncrona.
cCodProc - Código do processo.
Retorno:
lRet - Indica se a requisição está válida para ser enviada para o TSS ONLINE.
Função: setSendReq()
Função responsável por definir se deve ou não enviar a requisição para o TSS ONLINE. Por default sempre será enviado para o TSS ONLINE os métodos do processo do tipo 1.
Parâmetros:
lSendReq - Indica se será enviado para o TSS ONLINE
Retorno:
Nulo
Função: setProcTable()
Função responsável por definir a tabela de negócio através da definição da fila de processamento do TSS ONLINE.
Parâmetros:
cModel - Modelo da fila
cCodProc - Código do processamento
Retorno:
Nulo
Função: GetDocCFG()
Função responsável por buscar os parâmetros de configuração da entidade (SPED000).
Parâmetros:
cIdEnt - Código da entidade
Retorno:
cJson - Mensagem com os parâmetros no formato Json.
Função: getReqSequence()
Função responsável por buscar a sequência da requisição.
Parâmetros:
Nulo
Retorno:
cSequence - Sequencia da requisição
Função: getJSonRequest()
Função responsável pela montagem do leiaute padrão para envio de requisições para o TSS ONLINE.
A Mensagem deverá ser estruturada com os seguintes atributos:
Parâmetros:
oReceive - Objeto da requisição Web Service.
cMethod - Método do Web Service.
aProc - Dados do método
cDocConfig - Configuração da entidade (JSon).
cSequence - Sequência de requisição.
Retorno:
cJSON - String com a requisição para o TSS ONLINE.
Função: isTSSCloudOnline()
Função responsável pela consulta do status da operação do TSS ONLINE. A consulta será realizada através do processo 0015 (TSProc0015CFGCONNECT ). A função TSSPostQueueMessage(). montará a mensagem JSON da requisição e enviando para o TSS ONLINE.
As consultas deverão ser realizadas de forma moderada, tendo um controle de intervalo entre as tentativas, o qual será realizado através da API para manipulação de variáveis Globais, devendo ser criado um array de 2 posições contendo o status de operação e o horário da última consulta realizada.
Caso a consulta seja realizada com Sucesso, o status deverá ser preenchido com ‘.T.’, permanecendo enquanto não houver falha de comunicação com o TSS ONLINE. A cada tentativa de consulta o horário deverá ser sempre atualizado, mantendo um intervalos de 10 segundos.
Parâmetros:
lCheck - Força a realização da consulta.
cError - Referência para retorno de erro no processamento.
Retorno:
aStatus[1] - Status de Operação.
Função: procRetError()
Função responsável por realizar os processos em caso de falha na transmissão da requisição.
Deverão ser realizados tratamentos para os seguintes processos:
A configuração deverá ser realizada através do Processo 0021 (TSProc0021CfgModalidGRV)
Parâmetros:
cIdEnt - Código da Entidade.
oWSRequest - Objeto da requisição Web Service.
cCodProc - Código do processo.
Retorno:
oRet - Requisição com a Remessa da NFC-e.
Função: procRetOnline()
Função responsável por executar rotina para processamento de retorno do TSS ONLINE.
Parâmetros:
oWSResponse - Retorno do TSS ONLINE
cCodProc - Código do processo.
Retorno:
oRet - Retorno do Processamento.
Função: TSSInitServices()
Função responsável por armazenar no array todos as informações dos métodos do Web Service.
Parâmetros:
Nulo
Retorno:
aService - Todos as informações dos métodos do Web Service.
Função: getJsonTicket()
Função responsável pela montagem da requisição de consulta do ticket.
Parâmetros:
cTicket - Ticket de consulta.
Retorno:
aService - Todos as informações dos métodos do Web Service.
Função: getCloudStatus()
Função responsável por montar e retornar status de operação do TSS ONLINE.
A função montará a resposta com a estrutura da classe MonitorStatusSefazModelo, informado a indisponibilidade do TSS ONLINE.
Os atributos deverão ser preenchidos da seguinte forma:
Modelo: Informar o modelo de cada tipo de documento modelo Sefaz(55, 57, 58, 65).
VersaoMensagem: Preencher com conteúdo do parâmetro MV_VERSAO.
StatusCodigo: Preencher com "999".
StatusMensagem: "TSSCloud Fora de Operação".
UFOrigem: SPÈD0001->UF.
UFResposta: Preencher com vazio " ".
TempoMedioSef: 0
Motivo: "Falha de comunicação".
Observacao: vazio " ".
Sugestao: "Entrar em contingencia OFFLINE".
LogAuditoria: vazio " ".
Parâmetros:
cIdEnt - Código da Entidade
Retorno:
StatusSefazModelo - Estrutura MonitorStatusSefazModelo com mensagem de retorno.
Função: getReqSequence()
Função responsável por retornar à sequência definida para a requisição.
A sequência da requisição estará definida na variável __cSequence definida pela função setReqSequence(). A função deverá apenas retornar o conteúdo da variável.
Parâmetros:
Nulo
Retorno:
__cSequence - Sequência da Requisição.
Função: setReqSequence()
Função responsável por definir a sequência do documento da requisição.
A sequência do documento deverá ser definido na variável __cSequence definida com escopo "static".
Parâmetros:
__cSequence - Sequência do documento .
Retorno:
Nulo
Função: getProcQueue()
Função responsável por retornar o Modelo do documento da requisição.
O modelo do documento estará definido na variável __cProcModel definida pela função setProcQueue(). A função deverá apenas retorno do conteúdo da variável.
Parâmetros:
Nulo
Retorno:
__cProcModel - Modelo do documento.
Função: setProcQueue()
Função responsável por definir o Modelo do documento da requisição.
O modelo do documento deverá ser definido na variável __cProcModel definida com escopo "static"
Parâmetros:
__cProcModel - Modelo do documento.
Retorno:
Nulo
Função: putQueue()
Função responsável pela gravação da Tabela DLL0001 onde serão armazenadas as requisições que enviadas pelo JOB do TSS OFFLINE.
Parâmetros:
cIdEnt - Codigo da entidade.
cReqId - Hash da requisição.
cWSRequest - Mensagem JSon da requisição.
cProc - Código do processo.
cError - Mensagem de Erro.
Retorno:
lRet - Gravado com sucesso.
Função: grvCache()
Função responsável pela gravação do cache na Tabela DLL0002. Somente será armazenado requisições do tipo diferente de ‘1’.
Parâmetros:
cTypeProc - Tipo de requisição.
cIdEnt - Código da entidade.
cMsgHash - Hash da requisição.
cMsgJson - Mensagem JSon da requisição.
cMsgJsonRet - Mensagem JSon do retorno do envio.
cCodProc - Código do processo.
Retorno:
lRet - Se foi gravado com sucesso.
Tabela: DLL0001
Cadastro de requisições para envio ao TSS ONLINE.
Campo | Tipo | Tamanho | Descrição | Observação |
ID_ENT | Caractere | 040 | Código da Entidade | Id da Entidade no TSS |
REQ_ID | Caractere | 003 | Id da requisição | Id da Requisição |
REQ_MSG | Binary | Indefinido | Mensagem da Requisição | String Json com requisição para o TSS ONLINE |
DOCUMENTO | Caractere | 045 | Tipo do Documento | Tipo do Documento : Ex: Nfe, CTe |
DATA_CONT | Date | 008 | Data do registro | Data da Inclusão do registro |
HORA_CONT | Caractere | 010 | Hora do registro | Hora da Inclusão do registro |
TICKET | Caractere | 040 | Ticket da Requisição | Ticket retornado pela Fila do TSS |
TABELA | Caractere | 040 | Tabela do documento |
|
PROCESSO | Caractere | 004 | Código do Processo | Código de acordo com a tabela TSS0006 |
HISTORICO | Caractere | 250 | Historico com os Tickets | String com tickets retornados pelo TSS delimitados por “,” |
Tabela de cadastro de cache de requisições.
Campo | Tipo | Tamanho | Descrição | Observação |
ID_ENT | Caractere | 040 | Código da Entidade | Id da Entidade no TSS |
CODPROC | Caractere | 004 | Código do Processo | Código de acordo com a tabela TSS0006 |
MSG_JSON | Binary | Indefinido | Mensagem da Requisição | String da Requisição |
MSG-HASH | Binary | indefinido | String com Hash da Mensagem | Hash da requisição WS |
RMSG_JSON | Binary | indefinido | String com resposta da requisição | Resposta da requisição WS |
DATA_CACHE | Date | 008 | Data do registro | Data da Inclusão do registro |
HORA_CACHE | Caractere | 010 | Hora do registro | Hora da Inclusão do registro |
Fluxo do processamento
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|