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
| Tabel | Isi |
|---|---|
{prefix}awmw_warehouses | Satu 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_stock | Stok 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
| Kunci | Isi |
|---|---|
_awmw_warehouse_id / _awmw_warehouse_name | Gudang utama pesanan, yaitu gudang yang akan dibuatkan resi |
_awmw_split + _awmw_warehouse_ids | Penanda pesanan terbagi dan daftar gudangnya |
_awmw_warehouse_id pada setiap baris item | Gudang yang melayani baris produk atau baris pengiriman tersebut |
_awmw_stock_reduced | Penanda bahwa stok gudang sudah dipotong, agar tidak terpotong dua kali |
_awmw_reduced_stock + _awmw_reduced_warehouse_id | Per 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:
| Endpoint | Dipakai untuk |
|---|---|
GET https://api-public.agenwebsite.com/v1/shipping/origins | Mengisi daftar kota pada jendela Pilih Kota Asal Ongkir |
POST https://api-public.agenwebsite.com/v1/shipping/search | Mengisi hasil pada jendela Cari Lokasi Gudang |
Hook untuk Pengembang
| Filter | Kegunaan |
|---|---|
awmw_enabled | Menyalakan atau mematikan seluruh integrasi |
awmw_cart_plan | Mengubah hasil pembagian keranjang ke gudang |
awmw_split_enabled | Mengatur pemisahan pengiriman secara terprogram |
awmw_shortfall_policy | Mengatur perilaku saat stok kurang |
awmw_manage_cap | Mengubah hak akses pengelolaan gudang (default manage_woocommerce) |
awmw_warehouse_limit | Membatasi jumlah gudang |
awmw_wizard_warehouse_limit | Membatasi jumlah gudang yang dibuat lewat panduan pengaturan |
awmw_shipping_linked | Menentukan apakah Gudang Utama terkunci mengikuti AgenWebsite Shipping |
awmw_province_options | Mengubah daftar provinsi yang dapat dipilih |
awmw_redirect_to_wizard | Mematikan pengalihan otomatis ke panduan pengaturan |
agenwebsite_multi_warehouse_api_timeout | Mengubah 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