Pular para o conteúdo principal

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

  1. 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.
  2. Consulta pelo WMS (GET)

    • O WMS consome a API Orders para identificar pedidos pendentes.
    • A consulta é incremental, buscando apenas pedidos novos ou alterados.
  3. 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_Open sã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 B1QueryCursor para 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.