SAP Business One, orta büyüklükteki işletmeler için en yaygın kullanılan ERP sistemlerinden biridir. Bunu WooCommerce’e bağlamak güçlü bir kombinasyon oluşturur: SAP’nin sağlam back-office yetenekleri ile WooCommerce’in esnek e-ticaret ön yüzü. Ancak entegrasyon basit değildir. İşte doğru yapma yöntemi.

Neden SAP + WooCommerce?

SAP B1 kullanan ve e-ticaretlerini WooCommerce’e başlatan veya taşıyan şirketler genellikle şunlara ihtiyaç duyar:

  • Envanterin perakende ve online kanallar arasında gerçek zamanlı senkronizasyonu
  • WooCommerce’den gelen siparişlerin SAP’de otomatik olarak satış siparişi olarak oluşturulması
  • Müşteri verilerinin her iki sistemde birleştirilmesi
  • Ürün kataloğunun SAP’de yönetilmesi, WooCommerce’de görüntülenmesi
  • Fiyatlandırma kurallarının (hacim indirimleri, müşteriye özel) SAP tarafından kontrol edilmesi

Mimari: Middleware Yaklaşımı

WooCommerce’i asla doğrudan SAP’nin veritabanına bağlamayın. SAP B1, uygun entegrasyon noktası olan bir Service Layer (REST benzeri API) sunar.

WooCommerce REST API <--> Middleware (Node.js/Python) <--> SAP Service Layer

Message Queue

Error Handling

& Audit Log

Middleware her iki sistem arasında durur ve şunları yönetir:

  • Veri dönüşümü (SAP’nin alan adlarından WooCommerce şemasına)
  • Oran sınırlama ve toplu işleme
  • Hata kurtarma ve yeniden deneme mantığı
  • Loglama ve izleme

SAP Service Layer Temelleri

// Authenticate with SAP B1 Service Layer

const login = await fetch('https://sap-server:50000/b1s/v1/Login', {

method: 'POST',

headers: { 'Content-Type': 'application/json' },

body: JSON.stringify({

CompanyDB: 'YOUR_DB',

UserName: 'manager',

Password: 'password'

})

});

// Session cookie for subsequent requests

const sessionId = login.headers.get('set-cookie');

// Fetch items (products)

const items = await fetch('https://sap-server:50000/b1s/v1/Items?$select=ItemCode,ItemName,QuantityOnStock&$filter=SalesItem eq \'Y\'', {

headers: { 'Cookie': sessionId }

});

Veri Haritalama

Çoğu entegrasyonun bozulduğu yer burasıdır. SAP ve WooCommerce temelde farklı veri modellerine sahiptir.

Ürünler

SAP B1 Alanı WooCommerce Alanı Notlar
ItemCode sku Birincil tanımlayıcı
ItemName name
QuantityOnStock stock_quantity Depolar arası toplam
ItemPrices (Price List) regular_price SAP’de çoklu fiyat listeleri
SalesItem (Y/N) status Y = yayınla, N = taslak
Picture images[0].src SAP yol saklar, URL dönüşümü gerekir
ItemGroup categories SAP gruplarını WC kategorilerine eşle

Siparişler

WooCommerce Alanı SAP B1 Objesi Notlar
order.id DocEntry (ref) WC sipariş ID’sini SAP’nin açıklamalarında sakla
line_items DocumentLines SKU’ya göre eşle
billing address AddressExtension BillTo adresi
shipping address AddressExtension ShipTo adresi
customer email BusinessPartner Eşleştir veya BP oluştur
payment_method Payment Terms WC gateway’i SAP şartlarına eşle

Müşteriler

WooCommerce Alanı SAP B1 Alanı Notlar
email EmailAddress Benzersiz tanımlayıcı
first_name + last_name CardName Birleştir
billing.company CardName B2B ise
billing.address_1 Addresses SAP’de adres objesi
CardCode SAP’de otomatik oluşturulan

Senkronizasyon Akışları

Ürün Senkronizasyonu (SAP → WooCommerce)

Sıklık: Her 5 dakikada bir veya değişiklik webhook’unda

  • Son senkronizasyondan beri değişen öğeler için SAP’yi sorgula
  • Her öğe için SKU’nun WooCommerce’de var olup olmadığını kontrol et
  • Varsa: stok, fiyat ve durumu güncelle
  • Yeniyse: WooCommerce’de tam detaylarla ürün oluştur
  • Senkronizasyon sonucunu logla

Kritik değerlendirme: SAP’nin fiyat listeleri müşteri grubu özelinde fiyatlandırmayı destekler. SAP fiyat listelerini WooCommerce’in rol tabanlı fiyatlandırma plugin’lerine veya özel meta alanlarına eşleyin.

Sipariş Senkronizasyonu (WooCommerce → SAP)

Tetikleyici: order.created üzerinde WooCommerce webhook’u

  • Webhook payload’ını al
  • SAP’de BusinessPartner bul veya oluştur (e-posta ile eşleştir)
  • Satır öğelerini SAP ItemCode’larına eşle (SKU’ya göre)
  • SAP’de Sales Order oluştur
  • SAP DocEntry’sini WooCommerce sipariş meta’sında sakla
  • WooCommerce sipariş notunu güncelle: “SAP’ye senkronize edildi: SO-{DocEntry}”

Envanter Senkronizasyonu (SAP → WooCommerce)

Tetikleyici: SAP UDF veya eklenti stok değişikliğinde tetiklenir, veya her 60 saniyede yokla

  • SAP’den stok seviyelerini al (tüm depolar veya belirli olanlar)
  • Satışa uygun miktarı hesapla: OnHand - Committed
  • Toplu endpoint üzerinden WooCommerce’i güncelle
  • Çoklu depo işlemi: topla veya belirli depo seç

Hata Yönetimi

SAP entegrasyonları özellikle hata eğilimlidir çünkü:

  • SAP Service Layer oturumları 30 dakika hareketsizlikten sonra sona erer
  • SAP alan doğrulaması katıdır (yanlış UoM, eksik zorunlu alanlar = reddetme)
  • Middleware ve SAP sunucusu arasındaki ağ güvenilmez olabilir

Yeniden deneme stratejisi:

async function sapRequest(endpoint, options, retries = 3) {

for (let i = 0; i < retries; i++) {

try {

await ensureSession(); // Re-login if session expired

const response = await fetch(${SAP_URL}${endpoint}, options);

if (response.status === 401) {

await login(); // Session expired

continue;

}

return await response.json();

} catch (error) {

if (i === retries - 1) throw error;

await sleep(Math.pow(2, i) * 1000);

}

}

}

Üretimden Öğrenilenler

  • Her zaman SAP’nin Service Layer’ını kullanın, asla doğrudan DB sorguları yapmayın. SAP’nin iş mantığı uygulama katmanında yaşar. Bunu atlamak verilerinizi bozacaktır.
  • SAP’nin oturum yönetimini dikkatli bir şekilde ele alın. Service Layer’ın eş zamanlı oturum sınırı vardır. Oturumları havuzlayın ve yeniden kullanın.
  • SAP’nin üretime benzer verilerle test edin. SAP demo veritabanları basit yapılara sahiptir. Gerçek müşteri SAP kurulumları, naif entegrasyonları bozan özel alanlar, kullanıcı tanımlı tablolar ve onay iş akışlarına sahiptir.
  • SAP yükseltmeleri için plan yapın. SAP B1 güncellemeleri Service Layer davranışını değiştirebilir. Entegrasyonunuzu sürüm kilidine alın ve her SAP güncellemesinden sonra test edin.
  • SAP lisans kullanımını izleyin. Her Service Layer oturumu bir SAP lisansı tüketir. Müşterinin lisansının entegrasyon oturumlarını desteklediğini onaylayın.

Sonuç

SAP-WooCommerce entegrasyonu bir middleware problemidir, plugin problemi değil. Hazır bağlayıcılar mevcuttur ancak özel alanlar, çoklu fiyat listeleri ve depo konfigürasyonları olan gerçek SAP implementasyonlarının karmaşıklığını nadiren ele alırlar. Uygun middleware mimarisine, kapsamlı veri haritalamasına ve sağlam hata yönetimine yatırım yapın. Getiri — otomatik sipariş akışı, gerçek zamanlı envanter ve birleşik müşteri verisi — mühendislik yatırımına değer.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Close Search Window