Skip to main content

Returns Manager — Apresentação de Arquitetura

SonAE MC · Reverse Engineering · Março 2026



SLIDE 1 — Capa

Returns Manager Análise de Arquitetura e Fluxos Funcionais

SonAE MC · Plataforma OutSystems 11 Março 2026



SLIDE 2 — Agenda

  1. Visão Geral da Aplicação
  2. Arquitectura de Módulos
  3. Landscape de Integrações
  4. Fluxo 1 — Submissão de Devolução Online
  5. Fluxo 2 — Devolução Presencial em Loja
  6. Fluxo 3 — Validação e Aprovação Back-Office
  7. Fluxo 4 — Processamento de Reembolso
  8. Fluxo 5 — Recolha e Receção do Artigo
  9. Fluxo 6 — API REST para Canais Externos
  10. Dependências e Próximos Passos


SLIDE 3 — O que é o Returns Manager

Objetivo: Gestão end-to-end do processo de devoluções de artigos SonAE MC

Utilizadores:

PerfilCanalAção
Cliente finalPortal web / App mobileSubmeter e acompanhar devoluções
Colaborador de lojaBackoffice instoreRegistar devoluções presenciais
Operador back-officeBackoffice webValidar, aprovar e monitorizar
Sistema externoREST APIApp mobile, parceiros, canal omnicanal

Método de reembolso suportado:

  • Crédito em cartão bancário
  • Pontos Cartão Continente
  • Vale de troca em loja


SLIDE 4 — Arquitectura de Módulos (OutSystems 4-Layer Canvas)

┌─────────────────────────────────────────────────────────────┐
│ END-USER LAYER │
│ CW — ReturnsManager_CW BO — ReturnsManagerBackoffice │
│ Ecrãs reactivos / WebBlocks Gestão back-office │
└──────────────────────────┬──────────────────────────────────┘

┌──────────────────────────▼──────────────────────────────────┐
│ ORCHESTRATION LAYER │
│ BL — ReturnsManager_BL API — ReturnsManager_API │
│ Regras de negócio REST Expose (canal externo) │
└──────────────────────────┬──────────────────────────────────┘

┌──────────────────────────▼──────────────────────────────────┐
│ CORE BUSINESS LAYER │
│ CS — ReturnsManager_CS │
│ CRUD + entidades de domínio + políticas de devolução │
└──────────────────────────┬──────────────────────────────────┘

┌──────────────────────────▼──────────────────────────────────┐
│ FOUNDATION LAYER │
│ IS — ReturnsManager_IS Pat — ReturnsManager_Pat │
│ Integration Services Padrões UI e temas │
│ LIB — Structures_LIB │
│ Estruturas de dados reutilizáveis │
└─────────────────────────────────────────────────────────────┘

Princípio: camadas superiores dependem sempre de camadas inferiores — nunca o inverso.



SLIDE 5 — Landscape de Integrações

Sistemas Externos Integrados

SistemaProtocoloDireçãoFinalidade
OMS (Order Management)RESTConsumeValidação de encomendas e linhas elegíveis
SAP / ERPSOAPConsumeCriação de nota de devolução e nota de crédito
Gateway de PagamentoRESTConsumeEmissão de reembolso bancário
Transportadora / WMSREST + SOAPBiderecionalAgendamento de recolha + webhooks de estado
Serviço de NotificaçõesRESTConsumeEnvio de email e SMS ao cliente
Programa de FidelizaçãoRESTConsumeCrédito de pontos Cartão Continente
Identity ProviderSSO / OAuthConsumeAutenticação de utilizadores
Canais ExternosRESTExposeApp mobile, parceiros, omnicanal

Volume de Integrações (por OML)

TipoQuantidadeCamada responsável
REST Expose (endpoints publicados)11API, IS
Consume REST (serviços externos)15IS (via CustomClients)
Consume SOAP (SAP / ERP legacy)20IS (via CustomClients)
Total46

Nota: Toda a comunicação com sistemas externos passa exclusivamente pelo módulo IS. Os módulos BL, CS, CW e API nunca chamam sistemas externos diretamente.



SLIDE 6 — Fluxo 1: Submissão de Devolução Online

Perfil: Cliente final · Canal: Portal web / App mobile

Passos principais

#PassoCamadaIntegração
1Cliente acede ao portal e seleciona "Devolver artigo"CW
2Sistema recupera encomendas elegíveis do clienteBL → ISOMS REST
3Cliente seleciona artigo(s) e motivoCW
4Validação de elegibilidade (prazo, política, estado)BL → CSDB (política)
5Cliente confirma submissãoCW
6Criação do pedido de devolução no sistemaBL → CSDB
7Estado definido como PendenteCSDB
8Confirmação apresentada ao cliente (nº de devolução)CW

Sistemas envolvidos

Cliente → CW → BL → IS → OMS (verificar elegibilidade)
BL → CS → DB (criar e persistir pedido)

Resultado

  • Pedido de devolução criado com estado Pendente
  • Número de referência gerado e apresentado ao cliente


SLIDE 7 — Fluxo 2: Devolução Presencial em Loja

Perfil: Colaborador de loja · Canal: Backoffice instore

Passos principais

#PassoCamadaIntegração
1Colaborador pesquisa encomenda (nº / NIF do cliente)CW
2Sistema recupera encomenda do clienteBL → ISOMS REST
3Colaborador seleciona artigo(s) + inspeciona estado físicoCW
4Validação de elegibilidade para canal lojaBL → CSDB (política)
5Colaborador confirma receção física do artigoCW
6Pedido criado com estado Recebido em LojaBL → CSDB
7Criação de ordem de devolução no ERPBL → ISSAP SOAP
8Referência SAP associada ao pedidoCSDB
9Comprovativo impresso / enviado para o colaboradorCW

Sistemas envolvidos

Colaborador → CW → BL → IS → OMS (verificar encomenda)
BL → CS → DB (criar pedido)
BL → IS → SAP (criar ordem de devolução ERP)

Resultado

  • Pedido criado com estado Recebido em Loja
  • Referência SAP registada → devolução visível no ERP

Diferenças face ao canal online

AspetoOnlineLoja
Quem iniciaClienteColaborador
Estado inicialPendenteRecebido em Loja
Integração SAPApós aprovaçãoImediata (no momento da receção)
Recolha agendadaSimNão (artigo já entregue)


SLIDE 8 — Fluxo 3: Validação e Aprovação Back-Office

Perfil: Operador back-office · Canal: Backoffice web

Passos principais

#PassoCamadaIntegração
1Operador acede à lista de devoluções pendentesBO → BL
2Sistema lista devoluções com estado PendenteBL → CSDB
3Operador abre detalhe de uma devoluçãoBO → BL
4Sistema apresenta devolução + linhas + histórico de estadosBL → CSDB
5aAprovação: operador aprova com notasBL → CSDB
5bRejeição: operador rejeita com motivoBL → CSDB
6Log de auditoria criado com operador e decisãoCSDB
7Estado atualizado e visível ao clienteCSDB

Critérios de decisão típicos

  • Photographs / evidência de dano
  • Prazo de devolução (política por categoria de produto)
  • Histórico de devoluções do cliente
  • Estado físico reportado (loja) ou declarado (online)

Resultado — Aprovação

  • Estado → Aprovado
  • Fluxo de reembolso (Fluxo 4) ativado automaticamente
  • Fluxo de recolha (Fluxo 5) ativado se canal online

Resultado — Rejeição

  • Estado → Rejeitado
  • Motivo registado e comunicado ao cliente (Notificações)
  • Audit log com operador e timestamp


SLIDE 9 — Fluxo 4: Processamento de Reembolso

Trigger: Automático após aprovação da devolução (evento ou timer BL)

Passos principais

#PassoCamadaIntegração
1BL recupera devoluções aprovadas sem reembolsoBL → CSDB
2Emissão de nota de crédito no ERPBL → ISSAP SOAP
3aCartão bancário: emissão de reembolsoBL → ISGateway REST
3bPontos Fidelização: crédito de pontosBL → ISFidelização REST
3cVale de troca: criação de voucherBL → CSDB
4Estado de reembolso atualizadoCSDB
5Notificação de confirmação enviada ao clienteBL → ISNotificações REST

Métodos de Reembolso Suportados

MétodoSistemaProtocoloSLA típico
Crédito cartão bancárioGateway PagamentoREST3–5 dias úteis
Pontos Cartão ContinentePrograma FidelizaçãoRESTImediato
Vale de troca em lojaInterno (DB)Imediato

Sistemas envolvidos

BL (timer/evento)
└─→ IS → SAP (nota de crédito — sempre)
└─→ IS → Gateway Pagamento (se reembolso bancário)
└─→ IS → Fidelização (se pontos)
└─→ CS → DB (se vale de troca)
└─→ IS → Notificações (confirmação ao cliente)


SLIDE 10 — Fluxo 5: Recolha e Receção do Artigo (Canal Online)

Trigger: Automático após aprovação de devolução online

Passos principais

#PassoCamadaIntegração
1Agendamento de recolha na transportadoraBL → ISTransportadora REST/SOAP
2Referência de recolha e data estimada guardadasCSDB
3Cliente notificado com data e código de recolhaBL → ISNotificações REST
4Transportadora confirma recolha (webhook)IS → BLCallback REST
5Estado atualizado para Em TrânsitoCSDB
6Artigo chega ao armazém — confirmação (webhook)IS → BLCallback REST
7Estado atualizado para Recebido em ArmazémCSDB
8Cliente notificado da receçãoBL → ISNotificações REST
9Cliente pode consultar timeline de estadoCW → BL → CSDB

Timeline de estados da devolução online

Submetido → Pendente → Aprovado → AguardaRecolha
→ EmTrânsito → RecebidoArmazém → Reembolsado / Rejeitado

Nota sobre Webhooks

A transportadora contacta diretamente o módulo IS via callbacks REST. O IS traduz e encaminha para o BL — padrão anti-corruption layer.



SLIDE 11 — Fluxo 6: API REST para Canais Externos

Perfil: Sistemas externos (app mobile, parceiros, omnicanal)

Endpoints expostos (módulo API)

EndpointMétodoDescrição
/returnsPOSTCriar pedido de devolução
/returns/{id}GETConsultar detalhe e estado
/returns/{id}/cancelPATCHCancelar pedido
/returnsGETListar devoluções do cliente
(+ outros conforme IS)

Fluxo de chamada

Sistema Externo
→ API Module (validação token + mapeamento)
→ BL (regras de negócio — idêntico ao canal web)
→ CS → DB

Características de segurança

  • Autenticação por Bearer Token / API Key
  • Validação no módulo API antes de qualquer chamada ao BL
  • Respostas normalizadas (HTTP status codes standard)

Princípio chave

O módulo API não contém lógica de negócio — é apenas uma camada de tradução e segurança. Toda a lógica está no BL, garantindo comportamento consistente entre todos os canais.



SLIDE 12 — Mapa de Responsabilidades por Módulo

MóduloCamadaResponsabilidadeAcede a
CWEnd-UserEcrãs reactive (cliente + loja)BL
BackofficeEnd-UserEcrãs back-office (aprovação)BL, CS
APIOrchestrationREST Expose — canal externo/mobileBL
BLOrchestrationRegras de negócio, orquestração de fluxosCS, IS
CSCoreCRUD entidades, políticas, audit logDB
ISFoundationWrappers de sistemas externosOMS, SAP, Gateway, etc.
PatFoundationComponentes UI reutilizáveis (temas, padrões)
LIBFoundationEstruturas de dados partilhadas


SLIDE 13 — Entidades de Domínio (modelo de dados inferido)

EntidadeDescriçãoAtributos chave
ReturnCabeçalho do pedido de devoluçãoReturnId, CustomerId, OrderRef, Status, Channel, CreatedOn
ReturnLineLinhas de artigo a devolverReturnLineId, ReturnId, ProductId, Qty, Reason, Condition
ReturnStatusHistórico de estadosStatusId, ReturnId, Status, ChangedOn, OperatorId
ReturnReasonCatálogo de motivos de devoluçãoReasonId, Code, Description, IsActive
ReturnPolicyPolíticas por categoria/prazoPolicyId, Category, MaxDays, AllowedChannels, RefundMethods
AuditLogRegisto de decisões back-officeLogId, ReturnId, Action, OperatorId, Notes, Timestamp
VoucherVales de troca geradosVoucherId, ReturnId, CustomerId, Amount, ExpiryDate, IsUsed


SLIDE 14 — Resumo de Integrações por Fluxo

FluxoOMSSAPPagamentoTransportadoraNotificaçõesFidelização
F1 — Submissão Online
F2 — Devolução em Loja
F3 — Aprovação Back-Office
F4 — Reembolso
F5 — Recolha/Receção
F6 — API Externa


SLIDE 15 — Pontos a Confirmar / Próximos Passos

O que falta confirmar (requer acesso ao Service Center / Service Studio)

ItemComo obter
Nomes dos 35 módulos de integração referenciadosSQL em ossys_Espace ou Service Center
Endpoints reais das integrações externas (URLs base)Abrir ReturnsManager_IS no Service Studio → CustomClients
Operações SOAP específicas por módulo SAPService Studio → Integration → Consume SOAP
Regras de elegibilidade detalhadasService Studio → BL → Server Actions
Timers e eventos automáticos (BPT)Service Studio → Processes
Permissões e roles definidosService Studio → Users & Roles

SQL de lookup dos 35 módulos de integração

-- Colar no SQL Server da plataforma OutSystems
SELECT LOWER(CAST(e.[Guid] AS VARCHAR(36))) AS GUID, e.Name, e.Description, e.Kind
FROM ossys_Espace e
WHERE LOWER(CAST(e.[Guid] AS VARCHAR(36))) IN (
'0ab06d19-d645-444d-a0fb-fae8dbc67e7b', -- SOAP #1
'0ce7ac57-75f1-467b-96f4-352a6b42f8cc', -- SOAP #2
'17e33556-ccf4-4cbf-818d-e117c090e305', -- REST #1
-- ... ver tabela completa em integrations-table.md
)
ORDER BY e.Kind, e.Name


SLIDE 16 — Conclusão

Arquitetura bem estruturada

  • Separação clara entre UI, lógica, dados e integrações
  • Anti-corruption layer no IS — sistemas externos isolados
  • API module garante consistência omnicanal

Cobertura funcional completa

  • 3 canais (online, loja, API externa)
  • 3 métodos de reembolso
  • Pipeline de estados rastreável com audit log

Complexidade de integração

  • 46 integrações (20 SOAP + 15 REST + 11 Expose)
  • SAP como sistema crítico (SOAP — síncrono, sem retry nativo fácil)
  • Webhooks da transportadora — dependência assíncrona crítica

Recomendações

  1. Mapear nomes reais dos 35 módulos via SQL / Service Center
  2. Documentar contratos de API dos sistemas externos (WSDL / OpenAPI)
  3. Validar gestão de erros nas integrações SAP SOAP
  4. Confirmar estratégia de retry/idempotência no fluxo de reembolso

Documento gerado por análise de reverse engineering dos OML — Returns Manager v11 · SonAE MC