Proyek kesembilan menggabungkan keterampilan sebelumnya ke dalam alur bisnis yang menuntut konsistensi: pemesanan. Order dan itemnya harus atomik dengan pengurangan stok, pembayaran harus aman dari idempotency ganda, dan seluruh jejak harus teraudit. Kita membangunnya bertahap lalu menutup dengan reporting dan testing menyeluruh.
Proyek ini menuntut ketelitian transaksi: order dan stok harus tetap konsisten, pembayaran tidak boleh tercatat ganda, dan setiap peristiwa penting harus teraudit. Kode pada setiap bagian diuji menyeluruh di PHP 8.4 sebelum melangkah ke bagian berikutnya.
Rancang fondasi data sistem pemesanan: pelanggan dan produk di SQLite dengan harga dalam sen dan penjaga stok sejak baris pertama.
Buka → # Bagian 2: Order dan Order ItemsBangun OrderRepository yang menulis order beserta itemnya dalam satu transaksi, men-snapshot harga saat pesanan dibuat, dan selalu menghitung total dari baris item.
Buka → # Bagian 3: Order ProcessingSatukan order dan reservasi stok dalam satu transaksi placeOrder serta kendalikan siklus hidup order dengan mesin transisi status.
Buka → # Bagian 4: Transactions dan InventoryLengkapi pemesanan dengan InventoryService berjejak audit, Validator yang mengumpulkan semua galat, dan transaksi pembatalan yang melepaskan stok.
Buka → # Bagian 5: Payment IntegrationPinjamkan uang ke proyek: abstraksi payment gateway lewat interface, tabel payments dengan idempotensi satu baris per order, dan sinkronisasi status lewat mesin transisi.
Buka → # Bagian 6: Reporting dan AuditUbah data order menjadi laporan penjualan dengan JOIN dan agregasi, lalu bangun jejak audit append-only yang bisa diputar ulang per entitas.
Buka → # Bagian 7: Testing dan DeploymentBuktikan seluruh janji proyek secara otomatis dengan PHPUnit dan database :memory: segar per test, lalu kemas sistem menjadi image Docker dengan migrasi schema dan smoke test.
Buka →