Notificação de Separação para SAP B1
📌 Descrição do Processo
A notificação de separação representa o fluxo de comunicação do WMS para o SAP B1 sobre pedidos que foram separados e estão prontos para expedição. O WMS executa a separação (picking), conferência e expedição, e notifica o SAP B1 sobre a conclusão do processo.
Este processo NÃO altera saldos de estoque. A alteração de saldo ocorre apenas na emissão da Nota Fiscal (NF) no SAP B1.
🔄 Fluxo de Notificação
-
Separação no WMS
- O operador do armazém executa a separação conforme o pedido.
- O sistema registra quantidades separadas e, se aplicável, os lotes dos produtos.
-
Criação da PickList no SAP B1 (POST)
- O WMS envia um
POST /PickList, criando a lista de separação no B1. - O vínculo com o pedido de venda deve ser informado via
BaseEntry(Orders).
- O WMS envia um
-
Atualização no SAP B1
- O B1 recebe a notificação de separação concluída.
- A PickList é criada e vinculada ao pedido original.
- Saldo de estoque permanece inalterado até a emissão da NF.
🖥️ APIs Envolvidas
-
WMS → SAP B1 (POST)
/PickList→ cria lista de separação no B1.- Necessário informar
BaseType=17eBaseEntrypara vincular ao pedido.
📦 Exemplo de Notificação (Objeto Fictício)
Cenário:
-
Pedido de venda: SO-65021
-
Cliente: AutoPeças Brasil Ltda.
-
Itens separados:
- PA-789 – Bateria 60Ah → 50 unidades (lote L2025-PA789)
- PA-790 – Bateria 75Ah → 30 unidades (lote L2025-PA790)
1. Separação no WMS
- Operador separa os itens conforme pedido
- Sistema registra quantidades e lotes separados
- Separação marcada como concluída
2. Notificação ao SAP B1 (POST /PickList)
{
"DocDate": "2025-10-09",
"BaseType": 17,
"BaseEntry": 65021,
"DocumentLines": [
{
"ItemCode": "PA-789",
"Quantity": 50,
"WarehouseCode": "01",
"BatchNumbers": [
{ "BatchNumber": "L2025-PA789", "Quantity": 50 }
]
},
{
"ItemCode": "PA-790",
"Quantity": 30,
"WarehouseCode": "01",
"BatchNumbers": [
{ "BatchNumber": "L2025-PA790", "Quantity": 30 }
]
}
]
}
3. Atualização no SAP B1
- PickList criada e vinculada ao pedido SO-65021
- Saldo de estoque permanece inalterado
- Pedido segue fluxo para faturamento/entrega
- Saldo será alterado apenas na emissão da NF
✅ Regras de Negócio
- O vínculo entre PickList e pedido é obrigatório (
BaseType=17→ Sales Orders). - Nenhuma alteração de saldo é realizada neste processo.
- A alteração de saldo ocorre apenas na emissão da Nota Fiscal no SAP B1.
- Em caso de falha, o WMS deve registrar log de erro e permitir reprocessamento após ajuste.
- Para itens com lote, o WMS deve sempre informar no retorno.
Este processo NÃO altera saldos de estoque. A alteração de saldo ocorre exclusivamente na emissão da Nota Fiscal (NF) no SAP B1, não na notificação de separação.
Esse fluxo garante que o WMS notifique o SAP B1 sobre a conclusão da separação, criando a PickList vinculada ao pedido, mas sem alterar saldos de estoque.
⚙️ Especificações Técnicas
Fluxo de execução
- Query: Consulta pedidos separados no WMS que foram importados do B1.
- Parse: Converte os dados de separação do WMS para o formato de PickList do B1.
- Send: Envia a notificação de separação para o SAP B1 via API
/PickList.
Detalhamento das Etapas
Query
B1PickListNotificationIntegrator.Query()
└── B1PickListNotificationService.GetSeparatedOrdersAsync()
└── OrderService.GetSeparatedOrdersFromB1Async()
- B1PickListNotificationIntegrator.Query(): Inicia o processo de consulta dos pedidos separados.
- B1PickListNotificationService.GetSeparatedOrdersAsync(): Busca pedidos que foram separados no WMS e originados do B1.
- OrderService.GetSeparatedOrdersFromB1Async(): Filtra apenas pedidos que vieram do B1 e foram separados.
Parse
B1PickListNotificationIntegrator.Parse()
└── B1PickListNotificationService.ParseSeparatedOrdersToPickList()
└── B1PickListNotificationService.MapOrderLinesToPickListLines()
- B1PickListNotificationIntegrator.Parse(): Converte os dados de separação para formato PickList.
- B1PickListNotificationService.ParseSeparatedOrdersToPickList(): Mapeia pedidos separados para estrutura de PickList.
- B1PickListNotificationService.MapOrderLinesToPickListLines(): Converte linhas do pedido para linhas da PickList, incluindo lotes se aplicável.
Send
B1PickListNotificationIntegrator.Send()
└── B1PickListNotificationService.SendPickListToB1Async()
├── B1PickListConnector.CreatePickListAsync()
├── B1PickListNotificationService.SaveNotificationTrackings()
└── B1PickListNotificationService.UpdateNotificationStatusAsync()
- B1PickListNotificationIntegrator.Send(): Envia as notificações de separação para o B1.
- B1PickListNotificationService.SendPickListToB1Async(): Orquestra o envio das PickLists.
- CreatePickListAsync(): Cria a PickList no SAP B1 via API.
- SaveNotificationTrackings(): Registra cada notificação na tabela de auditoria.
- UpdateNotificationStatusAsync(): Atualiza o status de notificação dos pedidos.
Resumo do Funcionamento
- Consulta de pedidos separados: Busca apenas pedidos que foram importados do B1 e separados no WMS.
- Conversão para PickList: Os dados de separação são convertidos para o formato de PickList do B1.
- Notificação sem alteração de saldo: A PickList é criada no B1 vinculada ao pedido, mas sem alterar saldos de estoque.