Caso de estudo
IOI-TECH – integração de POS e ERP para retalho
A IOI-TECH é um prestador de serviços tecnológicos com sede em Riade, na Arábia Saudita, e um segundo escritório em Jidá. Desde a sua fundação, em 2018, a empresa entregou projetos de transformação digital na Arábia Saudita e no Médio Oriente alargado, ao serviço de startups, PME e empresas globais em mais de 20 setores - do retalho, banca e telecomunicações ao petróleo e gás, saúde e administração pública.
O seu portefólio abrange planeamento de recursos empresariais (SAP S/4HANA, SAP Business One, Oracle Fusion, Odoo), gestão de recursos humanos, alojamento na cloud, desenvolvimento web e de portais, análise de dados e IA, cibersegurança, desenvolvimento móvel e automatização de vendas - juntamente com os serviços de implementação, formação e suporte que os acompanham.
O ERP é a competência central da IOI-TECH e os seus clientes de retalho gerem o negócio em SAP. O que lhes faltava era uma camada de comércio e de ponto de venda que falasse a mesma língua do ERP. A IOI-TECH escolheu o nopCommerce como base e associou-se a nós para a construir.
O projeto
O desafio
Os clientes de retalho da IOI-TECH na Arábia Saudita e no Médio Oriente gerem as finanças, o inventário e os dados mestre em SAP Business One, ao mesmo tempo que vendem através de uma loja online e de lojas físicas: várias filiais, caixas registadoras e operadores de caixa, gavetas de dinheiro que têm de ser contadas e reconciliadas, stock ao nível da filial, listas de preços negociadas por cliente e produtos vendidos em várias unidades de medida ao mesmo tempo - unidade, caixa, palete.
O nopCommerce padrão não cobre nada disto, e acoplar um produto de POS separado à loja online teria produzido o resultado clássico: três sistemas, três versões da verdade e pessoal a reintroduzir produtos, clientes e encomendas entre a loja, o site e o ERP.
A solução
Concebemos e construímos um conjunto de oito plugins nopCommerce 4.50 integrados, em .NET 6, que transformam uma instalação nopCommerce padrão numa plataforma de retalho omnicanal completa, ligada diretamente ao SAP Business One. Toda a lógica de negócio reside no backend da loja; os terminais POS comunicam com ele através de uma camada de API REST dedicada e a loja comunica com o SAP através da Service Layer. Uma venda registada na caixa, uma encomenda feita no site e um documento lançado no ERP descrevem todos a mesma transação. Tudo é entregue como plugins - o núcleo do nopCommerce nunca é bifurcado, pelo que o cliente se mantém no caminho das atualizações.
Integração com o SAP Business One
O módulo de integração liga o nopCommerce à Service Layer do SAP Business One através de um cliente HTTP autenticado desenvolvido para o efeito, cobrindo parceiros de negócio e grupos de parceiros, artigos e grupos de artigos, encomendas, faturas, guias de remessa, notas de crédito, pagamentos recebidos, listas de preços, armazéns, grupos de IVA, moedas, centros de custo, dimensões, vendedores e séries de documentos.
- Bidirecional, com controlo por entidade. Produtos, clientes, fornecedores, encomendas, entregas e grupos de IVA têm cada um o seu próprio interruptor de sincronização e o seu próprio sentido - do SAP para o nopCommerce, do nopCommerce para o SAP, ou ambos - pelo que cada cliente decide que sistema é dono de que dados.
- Tempo real e agendamento. Um consumidor de eventos envia as alterações para o SAP no momento em que acontecem - encomenda feita, encomenda paga, encomenda cancelada ou reembolsada, envio entregue, produto, cliente ou fornecedor criado, atualizado ou eliminado - enquanto uma tarefa agendada executa a reconciliação completa periódica.
- Mapeamento em vez de valores fixos no código. Mapeamentos geridos no backoffice ligam as categorias, funções de cliente, funções de fornecedor, categorias de imposto e armazéns do nopCommerce aos seus equivalentes no SAP, com os códigos de cartão de parceiro de negócio e as dimensões de cliente mantidos por registo. As encomendas podem ser lançadas no SAP automaticamente ou libertadas manualmente, e a numeração de documentos segue as séries SAP do cliente.
- Operável em produção. Todas as trocas são registadas e pesquisáveis a partir de uma grelha de administração, com limpeza automática por retenção, pelo que um documento falhado é diagnosticado a partir do backend da loja e não a partir do ERP.
Módulos de retalho e POS
- Point Of Sale - o módulo central de retalho. Filiais e atribuição de produtos por filial, dispositivos POS e tipos de dispositivo, caixas com fluxo de abertura/fecho e contagem de dinheiro, movimentos de gaveta de dinheiro com motivos configuráveis, gestão da data de negócio, pesquisa por código de barras, pontos de recolha em loja, um motor de impressão de recibos baseado em tokens com códigos QR, ativação por chave de licença para cada dispositivo e um conjunto de permissões POS dedicado, com segurança de API delimitada por dispositivo e por operador de caixa.
- Inventory - transferências de stock entre filiais e armazéns, para que o inventário de cada filial se mantenha correto à medida que a mercadoria circula.
- Price List - várias listas de preços com valores por produto, associadas a clientes individuais e expostas através da API, para preços grossistas e preços B2B negociados a par do preço de retalho.
- Product Unit Conversion - dimensões de unidade e fatores de conversão por produto sincronizados entre os sistemas ligados, para que o mesmo produto possa ser encomendado, preparado e vendido em unidades diferentes.
- Split Payment - uma única encomenda liquidada com vários métodos de pagamento ao mesmo tempo, com cada transação registada separadamente para a reconciliação de fim de dia.
- Pay In Cash - liquidação em numerário ao balcão, ligada ao fluxo de caixa e de gaveta.
- Delivery Shipping - tarifas de envio por peso e por total da encomenda, para mercadoria vendida em loja mas entregue ao cliente.
Abordagem de engenharia
- Arquitetura de plugins limpa - entidades de domínio, serviços, fábricas e DTOs separados por módulo; migrações FluentMigrator para o esquema, para que a instalação e as atualizações sejam repetíveis.
- Interface de administração construída com vistas Razor e view components nativos do nopCommerce, para que os gestores da loja trabalhem na interface que já conhecem.
- Uma camada de API REST para a aplicação do terminal POS, protegida com autenticação por token e atributos de autorização personalizados que delimitam cada pedido a um dispositivo licenciado e a um operador de caixa autenticado.
- Entrega modular: cada plugin instala-se por si e o conjunto compõe uma solução completa, pelo que um cliente pode começar com a loja online e a ligação ao ERP e acrescentar mais tarde a camada de POS.
O resultado
A IOI-TECH tem agora uma plataforma de retalho repetível, que configura para cada cliente em vez de a construir à medida de cada vez. Loja, web e ERP partilham um catálogo, um valor de stock e um histórico de cliente; as encomendas e os pagamentos chegam ao SAP sem que ninguém os volte a digitar; os operadores de caixa abrem e fecham as caixas com um registo de auditoria completo de cada movimento de gaveta; e os clientes B2B são servidos com as suas próprias listas de preços e unidades de medida - tudo dentro de uma instalação nopCommerce que continua a poder ser atualizada.
Tecnologias
.NET
C#- ASP.NET Core MVC
- nopCommerce 4.50
Entity Framework Core- LinqToDB
SQL Server- FluentMigrator
- AutoMapper
- Razor Views
REST API- JWT
- FluentValidation
- QRCoder