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. |
Para recuperar o campo de controle S_T_A_M_P_ e recuperar a informação completa ( data e horário ), por exemplo no formato yyyy-mm-dd hh:MM:ss.mmm
( Ano com 4 dígitos, mês com 2 dígitos, dia com 2 dígitos, e horário completo (24h) com precisão de milissegundos,
deve ser feito um CAST específico para retornar a informação como "C" Caractere no AdvPL, para cada banco de dados, vide exemplos abaixo:
Confira mais sobre stamp na documentação do DbAccess: Implementação - Campo de controle adicional no DBAccess - S_T_A_M_P_
Execute a wizard, resultando em sucesso, será apresentada a tela com a mensagem conforme abaixo.
Entidades | Tabelas ERP | Tabelas TAF |
Participante | SA1\SA2 | C1H |
Unidade Medida | SAH | C1J |
Item (Produto) | SB1\SB5\F2Q\CDN | C1L |
Natureza de Operação \ TES | SF4 | C1N |
Centro de Custo | CTT | C1P |
Conta Contábil | CT1 | C1O |
Inscrição do estabelecimento substituto (Inscrições Estaduais) | MV_SUBTRIB | C1F |
Processos referenciados e suspensões. | CCF | C1G\T5L |
Informações Complementares | CCE | C3Q |
NCM | SYD | C0A |
Nota Fiscal | SFT\SF3\SF1\ SD1\SF2\SD2\ Transporte: DUD\DT6 Info Compl. CDT Compl. Processo: CDG | C20\C2F\ C30\C35\ C2D\ Transporte C39 Info Compl. C21 Compl. Processo T9Q |
Apuração ICMS | CDH | C2S\C2T |
Apuração ICMS ST | CDH | C3J\C3K |
Cadastro de Obras | SON | T9C |
CPRB | CKX\F2S\F3Z | C5M\T9T\V48 |
Referente a performance possuímos a sugestão de criação do índice no banco de dados. Se atentar ao grupo de empresa que pode mudar no nome da tabela e a ordem do índice, ex: TABELA + GRUPO + DESCRIÇÃO SFTT10ESP, SF3T10ESP e SFT010STP |
CREATE NONCLUSTERED INDEX SFTT10ESP ON SFTT10(FT_FILIAL, [FT_NFISCAL] ,[FT_SERIE], [FT_CLIEFOR], [FT_LOJA],[FT_IDENTF3], [FT_ENTRADA],[FT_ESPECIE], R_E_C_N_O_, D_E_L_E_T_)
CREATE NONCLUSTERED INDEX SF3T10ESP ON SF3T10(F3_FILIAL, [F3_NFISCAL] ,[F3_SERIE], [F3_CLIEFOR], [F3_LOJA],[F3_IDENTFT], [F3_ENTRADA],[F3_ESPECIE], R_E_C_N_O_, D_E_L_E_T_)
CREATE NONCLUSTERED INDEX SFT010STP ON SFT010(FT_FILIAL, S_T_A_M_P_, R_E_C_N_O_, D_E_L_E_T_)
Documentação Oficial SIGATAF TSI para Clientes
Qtd Layout | Entidades | (C)ad. (M)ov. | JOB TSI? (S)im (N)ão | Tabelas ERP | Tabelas TAF | Layout TAF | Extração ERP | API TAF | Obrigações |
01 | Participante | C | S | SA1\SA2 | C1H | T003 | TAFA556 | WSTAF027 | GIA\REINF |
02 | Unidade Medida *predecessor produto | C | S | SAH | C1J | T005 | TAFA557 | WSTAF030 | - |
03 | Item (Produto) | C | S | SB1\SB5\F2Q\CDN | C1L | T007 | TAFA559 | WSTAF026 | GIA\REINF |
04 | Natureza de Operação \ TES | C | S | SF4 | C1N | T009 | TAFA560 | WSTAF025 | GIA |
05 | Centro de Custo | C | N | CTT | C1P | T011 | TAFA562 | WSTAF029 | - |
06 | Conta Contábil | C | N | CT1 | C1O | T010 | TAFA563 | Sem Construção | - |
07 | Inscrição do estabelecimento substituto (Inscrições Estaduais) | C | N | MV_SUBTRIB | C1F | T001AA | TAFA569 | WSTAF031 | GIA |
08 | Processos referenciados e suspensões. | C | S | CCF | C1G\T5L | T001AB\T001AO | TAFA572 | WSTAF032 | REINF |
09 | Informações Complementares | C | S | CCE | C3Q | T001AK | TAFA575 | WSTAF035 | GIA |
10 | NCM *predecessor produto | C | S | SYD | C0A | (auto contida) | TAFA561 | WSTAF036 | - |
11 | Nota Fiscal | M | S | SFT\SF3\SF1\ SD1\SF2\SD2 | C20\C2F\ | T013\T013AP\ | TAFA574 | WSTAF034 | GIA\REINF |
12 | Apuração ICMS | M | S | CDH | C2S\C2T | T020\T020AA\T020AG | TAFA584 | WSTAF039 | GIA |
13 | Apuração ICMS ST | M | S | CDH | C3J\C3K | T021\T021AA | TAFA586 | WSTAF040 | GIA |
14 | Cadastro de Obras | C | S | SON | T9C | T157 | TAFA596 | WSTAF042 | REINF |
15 | CPRB | M | S | CKX/F2S/F3Z | C5M/T9T/V48 | T082/T082AC/T082AD | TAFA566 | WSTAF043 | REINF |
Fonte | Processo | Detalhamento da rotinas |
ERP/ TAFA558 | Alteração Fake | Alteração fake nos cadastros predecessores com base nas movimentações, |
TSI/ | Schedule TSI | Mecanismo responsável por executar o JOB do TSI na seguinte ordem: |
TAF/ TAFA564 | Log | Cadastro de Log de integração (MVC tabela V5R). |
TAF/ TAFA565 | Motor 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). |
TAF/ TAFA585 | Motor 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: |
TSI/ TSIXFUN | Funções genéricas TSI | GetTafId Rertorna o _ID de cada consulta F3 |
TAF/ TAFA599 | Data de Corte | Filtro para extrair e processar mais rápido tabela V80. |
ERP/ TAFA600 | Alteração Fake SFT | Com base no ERPKEY da V5R para o alias C20 é realizado a alteração fake nas notas que constam no log. |
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.
Quando é necessário criar um novo leiaute no TSI, precisamos trabalhar em alguns pontos, são eles:
A regra deve considerar registros onde o stamp do ERP é superior ao do TAF, ou se no ERP tem conteúdo e no TAF está nulo, em algumas situações também é verificado se o STAMP do ERP é superior ao do log gravado na tabela V5R, |
Aqui é contemplado a regra de extração apenas do ERP Protheus, que em muito(s) casos a(s) regra(s) consta(m) nos extratores:
Entender e elaborar a regra de extração.
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.
Aqui será construídas as APIS para substituir o layout TAF.
Construir as APIs com os seguintes tipos de requisição:
PUT ( pode receber um código ou uma lista para atualizar )
http://localhost:8099/REST/api/tsi/v1/tsiCommonExternalTariff/63013000/?sourceBranch=T1D MG 01
http://localhost:8080/rest/api/tsi/v1/tsiinvoice/?sourceBranch=T1D MG 01 (+Body)
DELETE ( pode receber parâmetros ou uma lista para apagar )
http://localhost:8080/rest/api/tsi/v1/tsiinvoice?sourceBranch=T1D MG 01&operationType=1&modelIdentificationCode=55&taxDocumentSeries=1&taxDocumentNumber=000000002 &fiscalDocumentDate=20201015&participatingCode=CSP000101
http://localhost:8099/REST/api/tsi/v1/tsiCommonExternalTariff/?sourceBranch=T1D MG 01 (+Body)
POST ( pode receber uma lista para inserir )
http://localhost:8080/rest/api/tsi/v1/tsiinvoice/?sourceBranch=T1D MG 01 (+Body)
http://localhost:8099/REST/api/tsi/v1/tsiCommonExternalTariff/?sourceBranch=T1D MG 01 (+Body)
GETID ( pode retornar um único código )
http://localhost:8099/REST/api/tsi/v1/tsiCommonExternalTariff/63013000/?sourceBranch=T1D MG 01
http://localhost:8080/rest/api/tsi/v1/tsiinvoice/idTsiinvoice/?sourceBranch=T1D MG 01&taxDocumentNumber=NTSAIDA
GETLIST ( pode retornar uma lista com paginação, tratar os parâmetros: HasNext, Page, PageSize, Do Código, Até Código, ordenação, etc... )
http://localhost:8080/rest/api/tsi/v1/tsiinvoice/?sourceBranch=T1M SP 03&Page=1&PageSize=50&invoiceOf= &invoiceUp=ZZZZ
http://localhost:8099/REST/api/tsi/v1/tsiCommonExternalTariff/?sourceBranch=T1D MG 01&commonExternalTariffOf=63013000&commonExternalTariffUp=63014000
{ "invoice": [ { "stamp": "2020-11-19 13:44:42.480", "finalDocumentNumber": "0000000003", "AIDFNumber": "", "electronicKeyDocument": "", "identificationSituation": "00", "federativeUnitOrigin": "SP", "shippingIndicator": "1", "valueOfGoods": 9000, "valueOfServices": 0, "documentType": "00", "fiscalDocumentDate": "15/10/20", "insuranceAmount": 0, "documentValue": 9000, "placeOfDelivery": "", "freight": 0, "untaxedAllowanceAmount": 0, "taxDocumentIssuer": "0", "taxDocumentSeries": "1", "valueReducedISSMaterials": 0, "modelIdentificationCode": "55", "participatingCode": "CSP000101", "taxDocumentNumber": "00000000", "typeOfPayment": "1", "amountOfAccessoryExpenses": 0, "discountAmount": 0, "operationType": "1", "taxDocumentEntryAndExitDate": "15/10/20", "otherExpenses": 0, "fiscalDocumentItems": [ { "itemNumber": "0001", "cfopIndicator": "5933", "itemAdditions": 0, "originIdentCode": "1", "operationNature": "503", "accountingValue": 6000, "socialSecurityExemption": "2", "itemAmount": 1, "itemValue": 6000, "discountValue": 0, "physicalMovement": "", "itemTotalValue": 6000, "acessoryExpense": 0, "unitOfMeasurement": "UN", "itemCode": "ISS", "serviceCode": "", "cityServiceCode": "", "serviceType": "", "dipamCode":"" } ] } ] } |
Aqui serão catalogadas e disponibilizadas as APIS construídas para os nossos clientes.
Implementar a estrutura para a documentação do API.TOTVS.COM.BR. Utilizar o cost center como exemplo.
*Ainda não publicar mas ao final da entrega iremos sim publicar a API para uso dos clientes;
Poderá ser feito com o openAPI Preview in Browse ou com o swagger.
Para gerar pacote no Jira por dependência automática é necessário fazer pelo menos 2 check-ins, |
TSI | ||
1 | TAF/Integração/TSI/TAFA573.PRW (13. dep. aut. extração ) | Schedule TSI |
2 | TAF/Integração/TSI/TSIXFUN.PRW (14. dep. aut. extração ) | Funções genéricas TSI |
TSI TAF ( api ) | ||
3 | TAF/Integração/TSI/TAF/TAFA564.PRW (15. dep. aut. extração ) | Log ( V5R ) |
4 | TAF/Integração/TSI/TAF/TAFA565.PRW (12. dep. aut. integração ) | Motor para os Cadastros |
5 | TAF/Integração/TSI/TAF/TAFA585.prw (13. dep. aut. integração ) | Motor Pai, Filho, Neto |
6 | TAF/Integração/TSI/ERP/TAFA599.PRW | Data Corte ( V80 ) |
7 | TAF/Integração/TSI/TAF/WSTAF025.prw | Natureza de Operação / TES |
8 | TAF/Integração/TSI/TAF/WSTAF026.prw (03. dep. aut. integração ) | Produto |
9 | TAF/Integração/TSI/TAF/WSTAF027.prw | Participante |
10 | TAF/Integração/TSI/TAF/WSTAF029.prw | Centro de Custo |
11 | TAF/Integração/TSI/TAF/WSTAF030.prw (02. dep. aut. integração ) | Unidade de Medida |
12 | TAF/Integração/TSI/TAF/WSTAF031.prw (05. dep. aut. integração ) | Inscrição do estabelecimento substituto (Inscrições Estaduais) |
13 | TAF/Integração/TSI/TAF/WSTAF032.prw (11. dep. aut. integração ) | Processos referenciados e suspensões. |
14 | TAF/Integração/TSI/TAF/WSTAF034.prw (08. dep. aut. integração ) | Nota Fiscal |
15 | TAF/Integração/TSI/TAF/WSTAF035.prw (06. dep. aut. integração ) | Informações Complementares |
16 | TAF/Integração/TSI/TAF/WSTAF036.prw | NCM |
17 | TAF/Integração/TSI/TAF/WSTAF039.prw (09. dep. aut. integração ) | Apuração ICMS |
18 | TAF/Integração/TSI/TAF/WSTAF040.prw (10. dep. aut. integração ) | Apuração ICMS ST |
19 | TAF/Integração/TSI/TAF/WSTAF042.prw | Cadastro de Obras |
20 | TAF/Integração/TSI/TAF/WSTAF043.PRW | CPRB |
TSI ERP ( extração ) | ||
21 | TAF/Integração/TSI/ERP/TAFA556.prw ( 01. dep. aut. extração ) | Participante |
22 | TAF/Integração/TSI/ERP/TAFA557.prw ( 02.dep. aut. extração ) | Unidade Medida |
23 | TAF/Integração/TSI/ERP/TAFA558.PRW ( 12. dep. aut. extração ) | Alteração Fake Cadastros |
24 | TAF/Integração/TSI/ERP/TAFA559.prw ( 03. dep. aut. extração ) | Item (Produto) |
25 | TAF/Integração/TSI/ERP/TAFA560.PRW ( 04. dep. aut. extração ) | Natureza de Operação \ TES |
26 | TAF/Integração/TSI/ERP/TAFA561.PRW ( 07 dep. aut. extração ) | NCM |
27 | TAF/Integração/TSI/ERP/TAFA562.PRW | Centro de Custo |
28 | TAF/Integração/TSI/ERP/TAFA563.PRW | Conta Contábil |
29 | TAF/Integração/TSI/ERP/TAFA566.PRW | CPRB |
30 | TAF/Integração/TSI/ERP/TAFA569.PRW ( 05. dep. aut. extração ) | Inscrição do estabelecimento substituto (Inscrições Estaduais) |
31 | TAF/Integração/TSI/ERP/TAFA572.PRW ( 11. dep. aut. extração ) | Processos referenciados e suspensões. |
32 | TAF/Integração/TSI/ERP/TAFA574.prw ( 08 dep. aut. extração ) | Nota Fiscal |
33 | TAF/Integração/TSI/ERP/TAFA575.prw ( 06. dep. aut. extração ) | Informações Complementares |
34 | TAF/Integração/TSI/ERP/TAFA584.prw ( 09 dep. aut. extração ) | Apuração ICMS |
35 | TAF/Integração/TSI/ERP/TAFA586.prw ( 10 dep. aut. extração ) | Apuração ICMS ST |
36 | TAF/Integração/TSI/ERP/TAFA596.PRW | Cadastro de Obras |
37 | TAF/Integração/TSI/ERP/TAFA600.PRW (15. dep. aut. integração ) | Alteração Fake SFT |
Auto Contidas | ||
38 | TAF/Tabelas Dinâmicas/TAFA010A.PRW | |
39 | TAF/Tabelas Dinâmicas/TAFA010.PRW | |
TAF PROCESSAMENTOS | ||
40 | TAF/Processamentos/TAFACONT.PRW | |
UPDATE | ||
41 | TAF/Update/RUPTAF.PRW | |
42 | TAF/Update/UPDTAF.PRW | |
GENÉRICOS | ||
43 | TAF/Genéricos/Bibliotecas/TAFXFUN.PRW | |
44 | TAF/Genéricos/Configuração/TAFINIT.PRW | |
45 | TAF/Genéricos/Configuração/TafLoad.PRW | |
EXTRATOR | ||
46 | Livros Fiscais/Extrator/ExtT013.PRW | |
47 | Livros Fiscais/Extrator/FisaExtWiz_Class.prw | |
48 | Livros Fiscais/Extrator/ExtT013XX.prw | |
49 | Livros Fiscais/Extrator/ExtT015.PRW | |
TAF CADASTROS FISCAIS | ||
50 | TAF/Cadastros Fiscais/TAFA062.PRW |
Lista dos fontes que não estão pasta $/Protheus_Padrao/Fontes_Doc/Master/Fontes/TAF/Integração/TSI do TFS mas foram alterados para o TSI.
Outros Fontes |
---|
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/TAF/Genéricos/Configuração/TAFINIT.PRW |
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/Livros Fiscais/Extrator/ExtT013.PRW |
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/Livros Fiscais/Extrator/FisaExtWiz_Class.prw |
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/Livros Fiscais/Extrator/ExtT013XX.prw |
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/Livros Fiscais/Extrator/ExtT015.PRW |
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/TAF/Update/RUPTAF.PRW |
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/TAF/Update/UPDTAF.PRW |
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/TAF/Genéricos/Bibliotecas/TAFXFUN.PRW |
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/TAF/Cadastros Fiscais/TAFA062.PRW |
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/TAF/Tabelas Dinâmicas/TAFA010.PRW |
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/TAF/Tabelas Dinâmicas/TAFA010A.PRW |
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/TAF/Processamentos/TAFACONT.PRW |
$/Protheus_Padrao/Fontes_Doc/Master/Fontes/TAF/Genéricos/Configuração/TAFLOAD.PRW |
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). Todos os hashs são estáticos, ou seja a estrutura é montada apenas no início do chamado do programa.
Os erros são aglutinados e gravados em uma única linha na V5R (por chave do cadastro), substituindo o erro anterior caso exista.
Incluir VLDDATA para tratamento nos mesmos moldes do que foi feito no cadastro de nota fiscal.
Filial sendo gravada no campo V5R_CODFIL e não na V5R_REGCHAVE.
Caso o ajuste seja realizado e chave do registro seja "comitado" no TAF, o log é apagado na sequência.
Caso o log gravado na V5R não possua algum campo de chave e depois o usuário corrigiu e refez a integração. |
As principais validações no TSI são por modelo do mvc (VldData) ou regras específicas: