Cara Kerja Teknis

Bagian ini untuk pengembang dan tim dukungan: apa yang disimpan plugin, bagaimana ongkir gudang sampai ke server AgenWebsite, dan hook apa yang tersedia. Pengguna toko tidak perlu membaca bagian ini untuk memakai plugin.

Alur Data Ongkir

Multi Warehouse tidak memanggil server ongkir sendiri. Ia hanya mengganti alamat asal yang dibaca AgenWebsite Shipping, lalu plugin itulah yang memanggil API.

Keranjang / Pesanan
   -> Multi Warehouse menentukan gudang
   -> mengganti origin + zipcode pada pengaturan AgenWebsite Shipping (sementara)
   -> AgenWebsite Shipping memanggil api-v2.agenwebsite.com/v2/shipping/price
   -> tarif kurir kembali, dihitung dari kota asal gudang

Model Keamanan Override

Penggantian alamat asal itu hanya aktif selama perhitungan berlangsung, lalu dimatikan lagi. Ini bukan detail sepele: AgenWebsite Shipping menyimpan ulang seluruh blok pengaturannya setiap kali halaman pengaturannya disimpan. Bila penggantian dibiarkan aktif tanpa batas, alamat gudang akan ikut tersimpan permanen dan menimpa alamat toko.

  • Aktif saat WooCommerce menghitung ongkir keranjang, per paket.
  • Aktif saat permintaan Generate Resi berjalan, memakai gudang milik pesanan.
  • Aktif saat tab Cek Ongkir dipakai, memakai gudang utama.
  • Aktif saat packing slip satu pesanan dicetak.
  • Di luar itu selalu mati, termasuk pada setiap penyimpanan pengaturan.

Untuk memastikan tidak ada yang tersimpan diam-diam, periksa nilai aw_shipping_settings di database sebelum dan sesudah transaksi. Nilai origin tidak boleh berubah karena aktivitas checkout maupun Generate Resi.

Tabel Database

TabelIsi
{prefix}awmw_warehousesSatu baris per gudang: nama, kontak pengirim, alamat lengkap, kota asal ongkir, provinsi yang dilayani, koordinat opsional, prioritas, status, penanda gudang utama, dan waktu penghapusan
{prefix}awmw_warehouse_stockStok per pasangan gudang dan produk. Baris milik gudang terhapus tetap disimpan, sehingga pemulihan mengembalikan catatan stoknya

Penghapusan gudang bersifat soft delete: baris tetap ada dan hanya diberi waktu penghapusan, agar pesanan lama tetap bisa menyebut nama dan alamat gudangnya.

Data pada Pesanan

KunciIsi
_awmw_warehouse_id / _awmw_warehouse_nameGudang utama pesanan, yaitu gudang yang akan dibuatkan resi
_awmw_split + _awmw_warehouse_idsPenanda pesanan terbagi dan daftar gudangnya
_awmw_warehouse_id pada setiap baris itemGudang yang melayani baris produk atau baris pengiriman tersebut
_awmw_stock_reducedPenanda bahwa stok gudang sudah dipotong, agar tidak terpotong dua kali
_awmw_reduced_stock + _awmw_reduced_warehouse_idPer baris item: berapa banyak yang masih terpotong dan dari gudang mana

Pasangan terakhir itulah yang membuat refund sebagian, pembatalan, dan pemindahan gudang setelah pembayaran tetap menghasilkan catatan stok yang benar di kedua gudang.

Layanan yang Dipanggil dari Browser

Halaman pengaturan memanggil dua endpoint publik AgenWebsite. Keduanya terbuka, tanpa kunci, dan tidak mengirim data toko:

EndpointDipakai untuk
GET https://api-public.agenwebsite.com/v1/shipping/originsMengisi daftar kota pada jendela Pilih Kota Asal Ongkir
POST https://api-public.agenwebsite.com/v1/shipping/searchMengisi hasil pada jendela Cari Lokasi Gudang

Hook untuk Pengembang

FilterKegunaan
awmw_enabledMenyalakan atau mematikan seluruh integrasi
awmw_cart_planMengubah hasil pembagian keranjang ke gudang
awmw_split_enabledMengatur pemisahan pengiriman secara terprogram
awmw_shortfall_policyMengatur perilaku saat stok kurang
awmw_manage_capMengubah hak akses pengelolaan gudang (default manage_woocommerce)
awmw_warehouse_limitMembatasi jumlah gudang
awmw_wizard_warehouse_limitMembatasi jumlah gudang yang dibuat lewat panduan pengaturan
awmw_shipping_linkedMenentukan apakah Gudang Utama terkunci mengikuti AgenWebsite Shipping
awmw_province_optionsMengubah daftar provinsi yang dapat dipilih
awmw_redirect_to_wizardMematikan pengalihan otomatis ke panduan pengaturan
agenwebsite_multi_warehouse_api_timeoutMengubah batas waktu panggilan lisensi

Perintah Pemeriksaan Cepat

wp option get agenwebsite_multi_warehouse_settings --format=json
wp db query "SELECT id, name, origin_city, status, is_default, deleted_at FROM wp_awmw_warehouses"
wp db query "SELECT * FROM wp_awmw_warehouse_stock LIMIT 20"
wp post meta get <order_id> _awmw_warehouse_id
wp option get aw_shipping_settings --format=json