NUNCA PUBLIQUE ESTA PÁGINA. POR LIMITAÇÃO DA FERRAMENTA, NÃO PODEMOS MAIS CRIAR PÁGINAS RESTRITAS A CLIENTES. A ALTERNATIVA QUE ACHAMOS FOI CRIAR ESTA PÁGINA COMO RASCUNHO, ASSIM APENAS USUÁRIOS LOGADOS PODEM ACESSAR O CONTEÚDO.

Projeto Interno

O objetivo deste guia é ajudar os membros da equipe a entender a composição do projeto e como nos organizamos para planejar, desenvolver, testar e documentar o TAF TSI.
A documentação oficial publicada para os clientes consta em TSI - TAF Service Integration.
O projeto consta no diretório: .../Master/Fontes/TAF/Integração/TSI, sendo composto por fontes na raiz (genéricos) , subpasta ERP (extração dos módulos do protheus) e subpasta TAF (APIS que fazem operações nas tabelas legados do TAF).
O controle com o nome dos fontes, descrição e analista que desenvolveram o TSI, fica disponível no google docs \Tabelas TAF.
Atualmente o pacote centralizador do TSI no AtuSx é o 009134 (release 33). Aqui tem a criação dos campos stamp nas tabelas do TAF e a criação da tabela de log V5R.
Pontos de melhorias, dúvidas ou discussões sobre a execução, podem ser colocados no dontpad do TSI, para posterior implementação, se necessário expor em review ou retrospectiva.

Divisão na execução

Quando é necessário criar um novo leiaute no TSI, precisamos trabalhar em alguns pontos, são eles:

Extração do ERP

Aqui é contemplado a regra de extração apenas do ERP Protheus, que em muito(s) casos a(s) regra(s) consta(m) nos extratores:

  1. Entender e elaborar a regra de extração.
  2. Nessa etapa são levantados todos os campos necessários na extração,  a planilha interna com o layout consta em google drive em Layout TAF.xlsx
  3. Aqui também é necessário utilizar o pacote centralizador do TSI no atusx, para criar o campo STAMP na tabela legado do SIGATAF.
  4. Conforme DOD dessa tarefa, aqui também é esperado a geração do JSON com o conteúdo dos campos do layout nas tags pré definidas para integração.
  5. Controle do Stamp criado na Tabela do ERP e Mecanismo de validação do STAMP entre Protheus x TAF finalizado.

Integração TAF (+ Hash )

Etapa onde o layout já está sendo extraído pelo TSI (geração do json mencionado na etapa 4 da extração do ERP) e agora será construído a integração das informações para o TAF.

  1. Construir Hash do JSON para o TAF (pai, filho e netos).
  2. Realizar o processo de gravação dos dados através de um mecanismo que irá receber o JSON e realizar a integração com o TAF.
  3. Colocar a rotina dentro do Schedule.

Construção de APIS

Open API

Fontes e Tabelas

Entidades(C)ad.
(M)ov.
JOB TSI?
(S)im
(N)ão
Tabelas ERPTabelas TAFLayout TAFExtração
ERP
API
TAF
ParticipanteCSSA1\SA2C1HT003TAFA556WSTAF027
Unidade MedidaCSSAHC1JT005TAFA557WSTAF030
Item (Produto)CSSB1\SB5\F2Q\CDNC1LT007TAFA559WSTAF026
Natureza de Operação \ TESCSSF4C1NT009TAFA560WSTAF025
Centro de CustoCNCTTC1PT011TAFA562WSTAF029
Conta ContábilCNCT1C1OT010TAFA563Sem Construção
Inscrição do estabelecimento substitutoCNMV_SUBTRIBC1FT001AATAFA569WSTAF031
Processos referenciados e suspensões.CNCCFC1G\T5LT001AB\T001AOTAFA572WSTAF032
Informações ComplementaresCSCCEC3QT001AKTAFA575WSTAF035
NCMCSSYDC0A (auto contida)TAFA561WSTAF036
Nota FiscalMS

SFT\SF3\SF1\

SD1\SF2\SD2

C20\C30\C35\

C39\C2F\C2D

T013\T013AP\
T015\T015AE
TAFA574WSTAF034
Apuração ICMS MSCDHC2S\C2TT020\T020AA\T020AGTAFA584WSTAF039
Apuração ICMS STMSCDHC3J\C3KT021\T021AATAFA586WSTAF040

Processos

FonteProcessoDetalhamento da rotinas:
TAFA558Alteração Fake

Alteração fake nos cadastros predecessores com base nas movimentações,
através da comparação dos stamps nas tabelas SFT x C20 e SE1\SE2 x LEM.

TAFA573Schedule TSI

Mecanismo responsável por executar o JOB do TSI na seguinte ordem:
1. Efetua a alteração FAKE;
2. Extração e integração dos CADASTROS que possuem stamp preenchido ( ver coluna acima "JOB TSI?=S")
3. Após a gravação de todos os cadastros é realizado a integração da NOTA FISCAL;
4. Gravação de Layouts de MVC com filho, neto ( Apuração ICMS e ICMS ST);

TAFA564Log

Cadastro de Log de integração (MVC tabela V5R).
Os mecanismos possuem a chamada da função PutTSIV5R para inserir registros nessa tabela.

TAFA565Motor para os Cadastros

Método responsável por persistir os dados enviados via JSON e gravar o MVC de cadastro básico (apenas uma tabela).
putTsiV5r: Método responsável por persistir os dados na tabela de log de erros
AgrupaErro: Aglutina todos os erros por chave de registro

TAFA585Motor Pai, Filho, Neto

Função que efetua inclusão e alteração do cadastro no MVC e seu respectivo filhos/netos ( com mais de uma tabela).

Colocar na função do hash pai as inforções de s_u_b_m_o_d_e_l_ ( filhos ) e s_u_b_m_o_d_e_l_2 ( netos ), conforme abaixo:

HMSet(oHash, 's_u_b_m_o_d_e_l_' , {{'MODEL_C2T'/*model filho*/,'adjustmentApuration' /* tag filho*/, 'HashC2T()' /* hash filho*/ }} )

HMSet(oHash, 's_u_b_m_o_d_e_l_2' , {{'adjustmentApuration'/* tag filho*/,'MODEL_T02'/*model neto*/,'accumulatedAdjust'/*tag neto*/, 'HashT02()' /*hash neto*/}} )
*Nessa tag filho do submodel2 informa quem é o pai desse neto.

TSIXFUNFunções genéricas TSI

GetTafId        Rertorna o _ID de cada consulta F3
GetTafId2()    Funcão utilizada para retornar id de registro a partir de chave composta
SetHashKey  Método responsável por montar HashMap de Cadastros
RetErroTaf     Método responsável por montar msg de error na integração
SetErroJs       Método responsável por retornar os erros no JSon de integração
VldExecute    Função responsável por validar os dados de empresa e filial para requisição
ClearV5R       Apaga Registro V5R caso o nota seja incluída com sucesso.
WsTSIVldGet No caso de conteúdo vazio para retorno ao get, retorna com 0 se for campo numérico e '' se for outro tipo de dado.
ValTsiData     Função para tratar o conteúdo tipo data, retornando a data no formato SQL AAAAMMDD
TsiGetJson     Motor que realiza de para de campo com hash para parsear registros em json. Monta o objeto json de forma automatizada.

Hash no TSI

O hash é montado nos fontes que constam na pasta TAF\Integração\TSI\TAF (API TSI).
Para cada pai, possuímos o hash com informações genéricas para auxiliar na gravação do modelo.
Para cada tabela possuímos um hash com o "de/para" ( Tag x Campo).