Importação de Pedidos de Saída (Orders) do SAP B1
📌 Descrição do Processo
A importação de pedidos representa o fluxo de sincronização de pedidos de venda originados no SAP B1 para o WMS. O SAP B1 controla o pedido de venda (Order), enquanto o WMS recebe esses pedidos para execução da separação (picking), conferência e expedição.
A integração garante que os pedidos criados no SAP B1 sejam automaticamente disponibilizados no WMS para processamento.
🔄 Fluxo de Importação
-
Criação do Pedido de Venda no SAP B1
- O usuário gera um pedido de venda (Orders) no SAP B1.
- Esse pedido ainda não movimenta estoque.
-
Consulta pelo WMS (GET)
- O WMS consome a API
Orderspara identificar pedidos pendentes. - A consulta é incremental, buscando apenas pedidos novos ou alterados.
- O WMS consome a API
-
Processamento no WMS
- Os pedidos são convertidos para o modelo interno do WMS.
- Produtos e entidades relacionadas são validados e importados.
- Os pedidos ficam disponíveis para separação no WMS.
🖥️ APIs Envolvidas
-
SAP B1 → WMS (GET)
/Orders→ retorna pedidos de venda pendentes.
📦 Exemplo de Importação (Objeto Fictício)
Cenário:
-
Pedido de venda: SO-65021
-
Cliente: AutoPeças Brasil Ltda.
-
Itens solicitados:
- PA-789 – Bateria 60Ah → 50 unidades
- PA-790 – Bateria 75Ah → 30 unidades
1. Pedido no SAP B1
{
"DocEntry": 65021,
"CardCode": "C10001",
"CardName": "AutoPeças Brasil Ltda.",
"DocumentStatus": "bost_Open",
"DocumentLines": [
{ "ItemCode": "PA-789", "Quantity": 50 },
{ "ItemCode": "PA-790", "Quantity": 30 }
]
}
2. Importação no WMS
- Pedido importado com sucesso
- Produtos e cliente validados
- Pedido disponível para separação
✅ Regras de Negócio
- Apenas pedidos com status
bost_Opensão importados. - Produtos e entidades devem estar cadastrados no WMS.
- A importação é incremental, evitando reprocessamento.
- Em caso de falha, o sistema registra log de erro para análise.
Resumo
Esse fluxo garante que os pedidos de venda registrados no SAP B1 sejam automaticamente importados para o WMS, ficando disponíveis para separação e expedição.
⚙️ Especificações Técnicas
Fluxo de execução
- Query: Consulta os dados no B1, utilizando o
B1QueryCursorpara buscar apenas registros novos ou alterados desde a última execução. - Parse: Converte os dados retornados do B1 para os modelos internos do sistema, prontos para persistência.
- Send: Salva os registros convertidos no banco de dados do sistema, atualiza cursor da integração e registra cada operação na tabela de auditoria
IntegrationTracking.
Detalhamento das Etapas
Query
B1OrderImportIntegrator.Query()
└── B1OrderImportService.GetIntegratedOrdersAsync()
└── B1OrderImportService.GetOrdersToIntegrateAsync()
└── B1OrderConnector.GetAllOrdersAsync()
- B1OrderImportIntegrator.Query(): Inicia o processo de consulta dos pedidos a serem integrados.
- B1OrderImportService.GetIntegratedOrdersAsync(): Para cada integração ERP configurada, dispara a consulta de pedidos.
- B1OrderImportService.GetOrdersToIntegrateAsync(): Prepara a configuração e o cursor, e solicita os pedidos ao conector do B1.
- B1OrderConnector.GetAllOrdersAsync(): Executa a consulta no SAP B1, retornando apenas pedidos abertos (
DocumentStatus = bost_Open) e filtrando incrementalmente pelo cursor (DocEntry,DocNum,DocDate).
Parse
B1OrderImportIntegrator.Parse()
└── B1OrderImportService.ParseB1IntegratedOrders()
└── B1OrderImportService.ParseB1OrdersToWms()
- B1OrderImportIntegrator.Parse(): Converte os dados brutos dos pedidos do B1 para o modelo interno do sistema.
- B1OrderImportService.ParseB1IntegratedOrders(): Agrupa os pedidos por integração e chama o parser.
- B1OrderImportService.ParseB1OrdersToWms(): Mapeia os dados do B1 para os modelos internos (
OrderImport,EntityFull,ProductImport), associando entidades e produtos relacionados.
Send
B1OrderImportIntegrator.Send()
└── B1OrderImportService.SaveOrdersToWmsAsync()
├── B1OrderImportService.EnsureProductsImportedAsync()
├── B1OrderImportService.EnsureEntitiesImportedAsync()
├── RecordOrderService.RecordOrder()
├── B1OrderImportService.SaveIntegrationTrackings()
└── B1OrderImportService.UpdateIntegrationCursorAsync()
- B1OrderImportIntegrator.Send(): Persiste os dados convertidos no sistema.
- B1OrderImportService.SaveOrdersToWmsAsync(): Orquestra a gravação dos produtos, entidades e pedidos.
- EnsureProductsImportedAsync(): Garante que todos os produtos relacionados estejam cadastrados.
- EnsureEntitiesImportedAsync(): Garante que todas as entidades (clientes) estejam cadastradas.
- RecordOrderService.RecordOrder(): Salva os pedidos no banco de dados.
- SaveIntegrationTrackings(): Registra cada operação de integração na tabela de auditoria
IntegrationTracking. - UpdateIntegrationCursorAsync(): Atualiza o cursor de integração com o último pedido processado, garantindo incrementalidade.
Resumo do Funcionamento
- Consulta incremental: Apenas pedidos abertos e não processados anteriormente são buscados, utilizando o cursor para filtrar por data e identificadores.
- Conversão: Os dados do B1 são convertidos para os modelos internos, incluindo entidades e produtos relacionados.
- Persistência e rastreabilidade: Todos os dados são salvos no banco de dados do sistema, e cada operação é registrada para auditoria e troubleshooting.