Pular para o conteúdo principal

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.

IMPORTANTE

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

  1. 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.
  2. 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).
  3. 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=17 e BaseEntry para 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.

Importante sobre Saldos

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.


Resumo

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.