10. Consultas e Envio de Dados ao ERP¶
Este capítulo detalha as interfaces desenvolvidas para que o Portal Retail realize consultas em tempo real de validação na base de dados do ERP e exporte cadastros prontos para o ERP integrado. Diferente do recebimento em lote (Batch), aqui o Portal é quem faz as requisições ao serviço web disponibilizado pelo parceiro ERP.
10.1 Diretrizes de Integração e Protocolos¶
As integrações descritas nesta seção (consultas externas e envio de dados) possuem as seguintes premissas de flexibilidade:
- Protocolos Suportados: A comunicação pode ser realizada via API REST (JSON) ou WebServices SOAP (XML).
- Responsabilidade do Parceiro ERP: O parceiro responsável pela manutenção do ERP deverá fornecer ao Portal Retail:
- Credenciais de acesso (Tokens, API Keys, ou Basic Auth).
- URLs de homologação e produção.
- Endpoints específicos para cada operação.
- Documentação técnica com exemplos de retorno de sucesso e erro.
- Limitações de volume ou frequência (Rate Limit), caso existam.
- Modelos de Dados: O Portal Retail propõe modelos de payload (descritos abaixo). Caso o parceiro ERP possua uma estrutura própria inflexível, ele deverá enviar a sugestão de payload para que o Portal adapte a integração.
- Estratégia de Integração (Push vs Event): A forma como novos itens são enviados ao ERP deve ser acordada entre o parceiro e o Portal Retail. As opções incluem:
- Envio Direto (Push): O Portal faz um POST imediato com os dados completos (REST ou SOAP).
- Notificação (Event): O Portal envia um Webhook leve e o ERP faz o resgate dos dados (modelo Fetch).
- Configuração Modular: Todas as integrações de saída são opcionais. O administrador do sistema Portal Retail poderá habilitar ou desabilitar cada consulta ou fluxo de envio de forma independente através da interface de administração.
10.2 Consultas ao ERP (Validações)¶
Nesta seção, o Portal Retail atua como cliente, realizando consultas pontuais para validar informações antes de prosseguir com processos internos.
10.2.1 Consulta e Validação de EAN¶
O EAN (European Article Number) é validado no ERP para evitar duplicidades no catálogo varejista.
Proposta de Payload (REST):
Regras de Negócio: - Se o EAN já existir na base e estiver ativo: O Portal bloqueia o novo cadastro e informa duplicidade. - Se o EAN existir e estiver inativo: O Portal oferece a opção de reativação do registro existente e bloqueia a criação de um novo.
10.2.2 Consulta e Classificação Fiscal (NCM)¶
O NCM é consultado no ERP para garantir a conformidade tributária e a classificação correta do produto (Medicamento vs. Não Medicamento).
Proposta de Payload (REST):
Regras de Negócio: - Classificação Determinística: A definição se o produto é Medicamento ou não deve vir exclusivamente do ERP. O usuário não possui permissão para editar este campo manualmente no Portal. - Conflito de Classificação: Se o NCM retornar múltiplas classificações possíveis, o Portal exibe um alerta solicitando que o usuário confirme a classificação desejada antes de prosseguir.
10.3 Envio de Dados ao ERP (Exportação)¶
Esta área destina-se ao envio de cadastros consolidados e aprovados dentro do Portal Retail para o banco de dados do ERP. O envio depende de uma ação explícita ou fluxo de aprovação final.
10.3.1 Envio de Cadastro de Produto¶
Dados consolidados após a aprovação da "Ficha Completa".
Exemplo de Payload:
{
"operation": "CREATE",
"product": {
"basic": {
"ean": "7896045000001",
"description": "Dipirona 500mg Cápsulas",
"internalDescription": "Analgésico Genérico",
"dosage": "500mg",
"unit": "CX"
},
"commercial": {
"brand": "Laboratório Exemplo",
"activeIngredient": "Dipirona Monoidratada",
"continuousUse": false,
"priceGroup": "Analgésicos"
},
"fiscal": {
"ncmCode": "30049062",
"cest": "1300300",
"itemOrigin": 0,
"stBaseMargin": 45.0
},
"marketing": {
"webName": "Dipirona 500mg Genérico",
"images": [
{ "fileName": "foto_frontal.jpg", "contentBase64": "..." }
]
}
}
}
10.3.2 Envio de Cadastro de Fornecedor¶
Dados coletados durante o fluxo de homologação, incluindo documentos em Base64.
Exemplo de Payload:
{
"operation": "CREATE",
"supplier": {
"taxId": "12345678000190",
"name": "FORNECEDOR DE EXEMPLO LTDA",
"address": {
"zipCode": "20000-000",
"city": "Rio de Janeiro",
"state": "RJ"
},
"documents": [
{ "type": "ALVARA_SANITARIO", "fileName": "alvara.pdf", "contentBase64": "..." }
]
}
}
10.3.3 Envio de Grupos de Compra¶
Exportação de agrupamentos comerciais definidos no Portal para sincronização de categorias no ERP.
Exemplo de Payload:
{
"operation": "CREATE",
"purchaseGroup": {
"name": "Analgésicos e Antitérmicos",
"description": "Categoria principal de medicamentos isentos",
"isActive": true
}
}
10.4 Rastreabilidade e Retorno¶
Para cada envio, o sistema registra: - Timestamp: Data e hora do envio. - Responsável: ID do usuário que disparou a exportação. - Payload Enviado: Cópia do JSON/XML enviado ao ERP. - Resposta do ERP: O Portal espera um retorno claro. Caso o ERP falhe, o Portal exibe a mensagem de erro retornada pelo parceiro no painel de controle.