# Interface de Produtos
###### Informações:
> Cliente : Grupo Nós
> Criado por : Logic Information Systems - 02/01/2023
> Introdução: Readme para descrever tecnicamente o fluxo de integração de produtos com origem no RMS e destino no Zanthus.
## ARQUITETURA
### Visão geral:
1. O RIB publica as mensagens de criação, modificação ou exclusão de itens na fila AQ etItemsFromRMS;
2. Na aplicação RIB rib-zth, o subscriber Items_sub lê as mensagens de itens publicadas na fila. O rib-zth envia essas mensagens para o injector do RSB em uma chamada SOAP, passando os seguintes parâmetros:
- family;
- Messagetype;
- businessObjectId;
- retailPayload
3. O injector RibZthToRsbZthRouting-ServicesIntegrationFlow, com base nos dados enviados pelo rib-zth, realiza a chamada à operação correspondente do decorator zth-Items-AppServiceDecorator.
4. O decorator zth-Items-AppServiceDecorator trata a mensagem recebida, aplicando os filtros configurados e transformando os dados com base no mapeamento definido. Se necessário, o serviço enriquece a mensagem buscando os dados do item por meio da chamada à API rms-item. Por fim, realiza uma chamada REST à API da Zanthus passando um JSON no body da mensagem.
5. A API rms-item recebe como parâmetro o código do item ou UPC e busca seus detalhes no banco de dados do RMS.
A API da Zanthus responde à requisição do decorator com um payload no formato JSON. O serviço então converte a resposta para o formato XML e realiza as seguintes validações:
1. Se o HTTP Status retornado é 200 e a resposta não contém pelo menos um nó listaNaoProcessados. Exceção código 130, definido para lojas não ativadas na Zanthus.
2. Se a resposta não contém um nó resultado ou se esse nó tem um conteúdo diferente de error.
Caso as validações sejam cumpridas, o serviço finaliza com sucesso.
## OPERAÇÕES/FILTROS
### createItemDesc;
Filtro de item aprovado
Filtro da UDA Canal de Venda
Filtro da UDA Venda Food Service
Filtro de item transacional
### updateItemHdrDesc;
Filtro de item aprovado
Chamada à API rms-item para buscar os detalhes do item no banco de dados do RMS
Filtro da UDA Canal de Venda
Filtro da UDA Venda Food Service
Filtro de item transacional
### DeleteItemDesc;
Filtro das UDAs Canal de Venda, Venda Food Service, Venda Menores 18 anos e Finalizadora
Chamada à API rms-item para buscar os detalhes do item no banco de dados do RMS
Filtro de item transacional
Filtro da UDA Canal de Venda
Filtro da UDA Venda Food Service
### createItemUDALOVDesc;
Filtro das UDAs Venda Menores 18 anos e Finalizadora
Chamada à API rms-item para buscar os detalhes do item no banco de dados do RMS
Filtro de item transacional
Filtro da UDA Canal de Venda
Filtro da UDA Venda Food Service
### deleteItemUDALOVDesc;
Filtro das UDAs Venda Menores 18 anos e Finalizadora
Chamada à API rms-item para buscar os detalhes do item no banco de dados do RMS
Filtro de item transacional
Filtro da UDA Canal de Venda
Filtro da UDA Venda Food Service
### createItemUPCDesc;
Chamada à API rms-item para buscar os detalhes do item no banco de dados do RMS
Filtro da UDA Canal de Venda
Filtro da UDA Venda Food Service
Valida se o UPC da mensagem é primário
Caso seja um UPC primário, faz a transformação do payload Item retornado pela API rms-item no formato XML para a requisição JSON enviada à Zanthus. Essa transformação é necessária para atualizar o campo EAN_UNIDADE no cabeçalho do Produto (JSON MERCADORIA)
Caso seja um UPC não primário, faz a transformação do payload ItemHdrDesc no formato XML para a requisição JSON enviada à Zanthus. Essa transformação gera uma mensagem apenas para a criação do EAN na Zanthus, sem necessidade de alterar o cabeçalho do produto
### updateItemUPCDesc;
Chamada à API rms-item para buscar os detalhes do item no banco de dados do RMS
Filtro da UDA Canal de Venda
Filtro da UDA Venda Food Service
Valida se o UPC da mensagem é primário
Caso seja um UPC primário, faz a transformação do payload Item retornado pela API rms-item no formato XML para a requisição JSON enviada à Zanthus. Essa transformação é necessária para atualizar o campo EAN_UNIDADE no cabeçalho do Produto (JSON MERCADORIA)
Caso seja um UPC não primário, faz a transformação do payload ItemHdrDesc no formato XML para a requisição JSON enviada à Zanthus. Essa transformação gera uma mensagem apenas para a criação do EAN na Zanthus, sem necessidade de alterar o cabeçalho do produto
### deleteItemUPCDesc;
Não possui filtros nesta operação.
## TRANSFORMAÇÕES
As seguintes transformações em XQuery estão configuradas no decorator zth-Items-AppServiceDecorator.
Para este fluxo de integração são gerados os seguintes objetos JSON de acordo com a operação executada:
***MERCADORIA – objeto que contém os dados do produto transacional
PRODUTOACESSO – objeto que contém a relação entre produto e EAN***
#### ItemDescToReplaceMercadoriaProdutoAcesso
Esta XQuery recebe como parâmetro de entrada o payload XML ItemDesc e o transforma em dois objetos JSON: **MERCADORIA e PRODUTO_ACESSO.**
Esses objetos são encapsulados pelo objeto REPLACE, que realiza a criação ou modificação do dado na Zanthus.
Utilizada na operação ***createItemDesc***
#### ItemDetailsToReplaceMercadoriaProdutoAcesso
Esta XQuery recebe como parâmetro de entrada o payload XML Item, definido no arquivo XSD ItemDetails, e o transforma em dois objetos JSON:**MERCADORIA e PRODUTO_ACESSO.** Esses objetos são encapsulados pelo objeto REPLACE, que realiza a criação ou modificação do dado na Zanthus. Utilizada nas seguintes operações:**createItemUPCDesc; updateItemUPCDesc; createItemUDALOVDesc.**
#### ItemHdrDescToReplaceMercadoria
Esta XQuery recebe como parâmetro de entrada o payload XML ItemHdrDesc e o transforma no objeto JSON MERCADORIA. Esse objeto é encapsulado pelo objeto REPLACE, que realiza a criação ou modificação do dado na Zanthus. Utilizada na operação updateItemHdrDesc.
#### ItemRefToReplaceMercadoria
Esta XQuery recebe como parâmetro de entrada o payload XML ItemRef e o transforma no objeto JSON MERCADORIA. Esse objeto é encapsulado pelo objeto REPLACE, que realiza a criação ou modificação do dado na Zanthus. Utilizada na operação deleteItemDesc.
#### ItemsDetailsRefToReplaceMercadoria
Esta XQuery recebe como parâmetro de entrada o payload XML item, definido no XSD ItemDetails, e transforma no objeto JSON MERCADORIA. Este objeto é encapsulado pelo objeto REPLACE, que realiza a deleção ou modificação do dado na Zanthus. Utilizada na operação deleteItemDesc.
#### ItemsDetailsToReplaceMercadoria
Esta XQuery recebe como parâmetro de entrada o payload XML Item, definido no arquivo XSD ItemDetails, e o transforma no objeto JSON MERCADORIA. Esse objeto é encapsulado pelo objeto REPLACE, que realiza a criação ou modificação do dado na Zanthus. Utilizada na operação deleteItemUDALOVDesc
#### ItemUPCDescToReplaceProdutoAcesso
Esta XQuery recebe como parâmetro de entrada o payload XML ItemUPCDesc e o transforma no objeto JSON PRODUTO_ACESSO. Esse objeto é encapsulado pelo objeto REPLACE, que realiza a criação ou modificação do dado na Zanthus. Utilizada nas seguintes operações: createItemUPCDesc e updateItemUPCDesc
#### ItemUPCRefToDeleteProdutoAcesso
Esta XQuery recebe como parâmetro de entrada o payload XML ItemUPCRef e o transforma no objeto JSON PRODUTO_ACESSO. Esse objeto é encapsulado pelo objeto DELETE, que realiza a exclusão do dado na Zanthus. Utilizada na operação deleteItemUPCDesc.
## LOGS
As mensagens que passam por este fluxo de integração são registradas no banco de dados do RSB na tabela **rsb_soainfra.RSB_SERVICE_ACTIVITY**. Nessa tabela podem ser encontrados os payloads das requisições enviadas no formato XML e as respostas retornadas pela API da Zanthus.
Este fluxo também realiza um filtro nas mensagens com base em regras definidas pela área de negócio, com o objetivo de integrar somente os dados necessários para o destino. As mensagens que não atendem às regras estabelecidas são descartadas e registradas no log do domínio do Weblogic rsb_server1-diagnostic.log.
Abaixo um exemplo de mensagem registrada nesse log.
zth-Items-AppServiceDecorator - createItemDesc operation: Excluded message for item 108850007 (UDA Venda Food Service: 2)
## Informações de Software para abertura do decorator
| Softwares | Versão/Ambiente |
| ----------------- |:----------------------- |
| JDeveloper Studio Developer |12.2 Studio - Instalação Local |
| Console Weblogic Grupo Nós | QAS/SDX/PRD |
- Auto-generated Table of Content
[ToC]