Pular para o conteúdo principal

Importação de Produtos (Items) do SAP B1

📌 Descrição do Processo

A importação de produtos representa o fluxo de sincronização de itens cadastrados no SAP B1 para o WMS. O SAP B1 mantém o cadastro master de produtos (Items), enquanto o WMS recebe esses dados para controle de estoque e operações de armazém.

A integração garante que os produtos cadastrados no SAP B1 sejam automaticamente sincronizados com o WMS, incluindo atualizações de dados existentes.

Importante

Este processo utiliza cursor para paginação e suporta atualização de dados de produtos já existentes no WMS.


🔄 Fluxo de Importação

  1. Consulta no SAP B1 (GET)

    • O WMS consome a API Items para buscar produtos.
    • Utiliza cursor para paginação, buscando apenas registros novos ou alterados.
    • Suporta atualização de produtos já existentes.
  2. Processamento no WMS

    • Os produtos são convertidos para o modelo interno do WMS.
    • Produtos novos são criados, existentes são atualizados.
    • Dados como descrição, preço, dimensões são sincronizados.
  3. Persistência no WMS

    • Produtos são salvos/atualizados no banco de dados do WMS.
    • Cursor de integração é atualizado para próxima execução.
    • Log de auditoria é registrado para cada operação.

🖥️ APIs Envolvidas

  • SAP B1 → WMS (GET)

    • /Items → retorna produtos cadastrados no B1.
    • Suporte a paginação via cursor.
    • Filtros por data de modificação para atualizações.
    • Filtro de prefixos: Apenas produtos com códigos iniciados em:
      • MA (Matérias-primas)
      • MP (Materiais de produção)
      • PA (Produtos acabados)
      • PI (Produtos intermediários)
      • UC (Unidades de consumo)

📦 Exemplo de Importação (Objeto Fictício)

Cenário:

  • Produto: PA-789 – Bateria 60Ah
  • Categoria: Baterias Automotivas
  • Dimensões: 30x20x20 cm
  • Peso: 15 kg

1. Produto no SAP B1

{
"ItemCode": "PA-789",
"ItemName": "Bateria 60Ah",
"ItemType": "itItems",
"Valid": "Y",
"SalesItem": "Y",
"PurchaseItem": "Y",
"InventoryItem": "Y",
"ItemProperties": [
{
"PropertyCode": "DIMENSIONS",
"PropertyValue": "30x20x20"
},
{
"PropertyCode": "WEIGHT",
"PropertyValue": "15"
}
]
}

2. Importação no WMS

  • Produto importado/atualizado com sucesso
  • Dados sincronizados com o B1
  • Produto disponível para operações de armazém

✅ Regras de Negócio

  • Apenas produtos com Valid = "Y" são importados.
  • Filtro por prefixo: Apenas produtos com códigos iniciados em MA, MP, PA, PI ou UC.
  • Produtos podem ser atualizados se já existirem no WMS.
  • A importação é incremental, utilizando cursor para paginação.
  • Em caso de falha, o sistema registra log de erro para análise.
  • Produtos com InventoryItem = "Y" têm prioridade na sincronização.
  • Remoção de dígito verificador: Aplicada automaticamente após importação.
  • Operações logísticas: Configuradas por integração (ex: operação 116).

Resumo

Esse fluxo garante que os produtos cadastrados no SAP B1 sejam automaticamente importados e atualizados no WMS, mantendo a sincronização de dados master.


⚙️ 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, com suporte a paginação.
  • Parse: Converte os dados retornados do B1 para os modelos internos do sistema, identificando produtos novos e existentes.
  • Send: Salva/atualiza 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

B1ProductImportService.ImportProductsAsync()
└── B1ProductImportService.GetErpIntegrationProductsAsync()
└── B1ItemConnector.GetAllItemsAsync()
  • B1ProductImportService.ImportProductsAsync(): Inicia o processo de consulta dos produtos a serem integrados para todas as integrações B1 ativas.
  • B1ProductImportService.GetErpIntegrationProductsAsync(): Para cada integração ERP configurada, prepara a configuração B1 e o cursor, aplicando filtros de prefixo.
  • B1ItemConnector.GetAllItemsAsync(): Executa a consulta no SAP B1, retornando apenas produtos válidos (Valid = "Y") e filtrando incrementalmente pelo cursor (UpdateDate), com suporte a paginação e filtro de prefixos (MA, MP, PA, PI, UC).

Parse

B1ItemImportIntegrator.Parse()
└── B1ItemImportService.ParseB1IntegratedItems()
└── B1ItemImportService.ParseB1ItemsToWms()
  • B1ItemImportIntegrator.Parse(): Converte os dados brutos dos produtos do B1 para o modelo interno do sistema.
  • B1ItemImportService.ParseB1IntegratedItems(): Agrupa os produtos por integração e chama o parser.
  • B1ItemImportService.ParseB1ItemsToWms(): Mapeia os dados do B1 para os modelos internos (ProductImport, ProductUpdate), identificando se é criação ou atualização.

Send

B1ProductImportService.SaveProductsAsync()
├── RecordProductService.RecordProductsAsync()
├── DigitCalculator.RemoveProcedureDigit()
├── B1ProductImportService.SaveIntegrationTrackingsAsync()
└── B1ProductImportService.UpdateIntegrationCursorAsync()
  • B1ProductImportService.SaveProductsAsync(): Persiste os dados convertidos no sistema.
  • RecordProductService.RecordProductsAsync(): Salva/atualiza os produtos no banco de dados com validação.
  • DigitCalculator.RemoveProcedureDigit(): Remove dígito verificador dos produtos após importação.
  • SaveIntegrationTrackingsAsync(): Registra cada operação de integração na tabela de auditoria IntegrationTracking.
  • UpdateIntegrationCursorAsync(): Atualiza o cursor de integração com o último produto processado, garantindo incrementalidade e paginação. Em caso de erro, usa o timestamp do último produto com falha.

Resumo do Funcionamento

  • Consulta incremental com paginação: Apenas produtos válidos e não processados anteriormente são buscados, utilizando o cursor para filtrar por data e identificadores, com suporte a paginação para grandes volumes.
  • Filtro por prefixo: Apenas produtos com códigos iniciados em MA, MP, PA, PI ou UC são importados.
  • Conversão e identificação: Os dados do B1 são convertidos para os modelos internos, identificando produtos novos e existentes.
  • Persistência e rastreabilidade: Todos os dados são salvos/atualizados no banco de dados do sistema, com remoção automática de dígito verificador e cada operação é registrada para auditoria e troubleshooting.
  • Tratamento de erros: Em caso de falha, o cursor é atualizado com o timestamp do último produto com erro, permitindo reprocessamento.