Árvore de páginas

  1. Introdução

A integração RetailApp (Figura 1)  é o serviço que faz o envio de informações do TVFR (L’Oréal, Live40, UA, Boticário) para o RetailApp (Figura 2) (Ferramenta de monitoramento de vendas).

Figura 1 -  Integração RetailApp

 

Figura 2 - RetailApp

 


  1. Informações Técnicas
  • Código Fonte da Integração:

$/Live/Live/branches/GrupoBoticario/dev/Alfa/Fontes/IntegracaoLive/MonitoramentoLiveBoticario


  • DataBases:


  • Servidores:
    • Corporativo (Live40) - AZDBLIVENEW\LIVECORPDB (10.173.204.12, 50287)
    • Loreal - AZDBLIVENEW\LOREALDB (10.173.204.12, 50698)
    • UA - AZDBLIVENEW\UADB (10.173.204.12, 50428)


  • TVFR (Rentech) – Local onde estão as informações do TVFR (Vendas, Funcionários, etc)


  • LiveUtil* – Local onde estão as tabelas referentes à integração (configurações, Lojas, logs, etc). *Esse DataBase é onde normalmente devemos atuar quando há solicitações do cliente.




 

  • Tabelas LiveUtil:

 

  • APPRetailConfiguration: Contém as informações de schedules, timeouts, quantidade de informações enviadas, etc

 

  • APPRetailCustomerID: Contém informações gerais de clientes (usuário e senha para acesso às Apis do RetailApp, Classificador padrão de produtos que será enviado, etc)


  • APPRetailEntity: Contém as informações das Lojas que fazem parte do Cliente. Somente serão enviadas informações das lojas que estiverem nessa tabela.


  • APPRetailLog: Contém o log todas as informações que foram processadas dentro da integração. Essa tabela é importante para validar se as informações estão sendo disponibilizadas e processadas corretamente.


  1. Solicitações mais comuns

Segue abaixo lista de solicitações mais comuns recebidas pela equipe de integração:

1 – Inclusão de lojas para integração:   

  • Criar um script para inclusão da loja solicitada na tabela APPRetailEntity na base LiveUtil

Ex:

        IF NOT EXISTS(SELECT * FROM APPRETAILENTITY (NOLOCK) WHERE UNIQUEID = '33300042')

INSERT INTO APPRETAILENTITY VALUES ('Loja 33300042', 77, 5, '33300042', 1)


ID - PK IDENTITY(1,1)

entityName - "Loja" + Código enviado pelo cliente

Parent  - Se baseia na própria tabela APPRetailEntity, ou seja, o campo ID (PK) referência o campo Parent. Para saber qual é o Parent, deve-se buscar todas os níveis de ParentLevel do CustomerID em questão e escolher o nível mais próximo anterior ao 5.

ParentLevel - 5 (Para Loja)

UniqueID - Código enviado pelo cliente

CustomerId - Deve-se buscar na tabela APPRetailCustomerID, a partir do nome do cliente (SELECT ID [CustomerID] FROM APPRetailCustomerID WITH(NOLOCK) WHERE Descricao LIKE '%Natura%'), onde o mesmo é o ID (PK) da tabela.


2 – Remoção de Lojas para integração:

  • Criar um script para exclusão da loja solicitada na tabela APPRetailEntity na base LiveUtil

Ex:

        IF EXISTS(SELECT * FROM APPRETAILENTITY (NOLOCK) WHERE UNIQUEID = '33300042')

DELETE FROM APPRETAILENTITY WHERE UNIQUEID = '33300042'


3 – Informações não enviadas ou não recebidas pelo RetailApp

  • Realizar uma consulta (select) na tabela APPRetailEntity na base LiveUtil e analisar se as informações informadas estão contidas no Log.

Ex:

SELECT top 10 * from APPRetailLog (nolock) where...Modulo = 'Orders'...


  • Dependendo do resultado, o tamanho do retorno pode ser muito grande e não exibir no resultado da consulta. Nesse caso, utilizar a query no modelo abaixo, que faz a exportação para XML e traz todas as informações:

Ex:

SELECT TOP 5 * FROM APPRetailLog (nolock)
where Modulo = 'Orders' and Mensagem like '382_8 {%092222439%'
order by 1 desc
for xml path, root('Orders')

4 – Reenviar informações de Orders por exemplo.

  • Necessário realizar um update para a data desejada na tabela APPRETAILCONFIGURATION, para que o serviço inicie a carga a partir dessa data informada.

Ex:

USE LiveUtil

BEGIN TRY  

    BEGIN TRANSACTION

    UPDATE APPRETAILCONFIGURATION SET ULTIMAEXECUCAOORDER = '2022-09-01' WHERE CUSTOMERID = 8

    COMMIT TRANSACTION

END TRY  
BEGIN CATCH  
     ROLLBACK TRANSACTION
END CATCH  

IMPORTANTE: Sempre antes de iniciar a análise sobre falta de informações no RetailApp verificar se as informações solicitadas pelo cliente realmente existem no TVFR (DataBase Rentech).

PONTOS DE ATENÇÃO:

* Ficar atento se o servidor está correto (L’Oréal, Live40, UA)

* Para o Boticário não temos permissão para execução de scripts de insert, update e delete, necessário utilizar uma interface (http://practicolive.e-boticario.com.br/LiveMonitoramento/) para realizar esse procedimento.

A intenção é que no futuro todos os ambientes tenham a interface do LiveMonitoramento configuradas, evitando a execução de scripts (insert/delete) direto no banco de dados. Isso facilitará também na solução de casos mais comuns (inclusão e exclusão de lojas) pelo suporte N1.


  • Sem rótulos