Change Example Pack (Realistic Data Change Scenarios)
Quick Summary
Paket ini berisi contoh perubahan yang paling sering kejadian dan paling berisiko salah: status workflow, skema payment split, dan perubahan field schema. Setiap contoh wajib punya: langkah, file impact, migration/backfill, dampak API/UI, dan rollback.
Example 1 — Tambah Status PO Baru: partial_received
Tujuan
Membedakan kondisi barang diterima sebagian tanpa langsung masuk complaint.
Langkah implementasi
- Tambah konstanta/status di model PO (
PreOrder). - Update validasi transisi status di controller PO (web + API).
- Update filter list PO (
on-going/received/...) agar status baru tidak hilang. - Update docs flow + state machine.
File impact (minimum)
app/Models/PreOrder.phpapp/Http/Controllers/Admin/Po/PoController.phpapp/Http/Controllers/API/V1/PO/POController.phpresources/views/...(badge/status label)docs/state-machine.md,docs/business-flows.md
Migration / data change
- Umumnya tanpa migration schema jika status disimpan string.
- Perlu script backfill jika ada data historis yang harus dipetakan ke status baru.
Dampak API/UI
- API list/detail PO harus menampilkan nilai status baru.
- UI filter/status badge wajib tambah label yang konsisten.
Rollback
- Mapping
partial_receivedkembali keapprovedataureceivedvia script terkontrol. - Revert kode yang menambah transisi status baru.
Example 2 — Tambah Kolom bank_reference_no di Payment Split
Tujuan
Menyimpan nomor referensi transfer untuk audit pembayaran split.
Langkah implementasi
- Buat migration tambah kolom nullable
bank_reference_no. - Update model fillable + request validation.
- Update endpoint update/paid payment split.
- Update UI form accounting dan detail payment.
File impact (minimum)
database/migrations/*_add_bank_reference_no_to_payment_splits.phpapp/Models/PaymentSplit.phpapp/Http/Requests/...PaymentSplit...phpapp/Http/Controllers/Admin/Pembayaran/PaymentSplitController.phpresources/views/admin/pembayaran/...docs/api-examples.md,docs/change-data-playbook.md
Migration / data change
- Forward migration: add nullable column.
- Backfill opsional: isi data historis dari bukti transfer jika tersedia.
Dampak API/UI
- Response payment split bisa expose
bank_reference_no(role tertentu). - UI accounting menampilkan input + readonly view setelah paid.
Rollback
- Drop kolom via down migration (jika aman).
- Jika sudah dipakai audit, rollback jadi soft rollback: sembunyikan dari UI/API tapi kolom tetap ada.
Example 3 — Ubah Payload Create SPB: wajib delivery_date
Tujuan
Mengurangi SPB tanpa target tanggal pengiriman.
Langkah implementasi
- Ubah request validation Create SPB agar
delivery_daterequired. - Pastikan update API examples + mobile/web form.
- Tambahkan handling error message yang jelas.
- Uji create/update SPB untuk role project.
File impact (minimum)
app/Http/Requests/API/V1/SPB/PM/CreateSPBRequest.phpapp/Http/Controllers/API/V1/SPB/PM/SPBController.phpresources/js|viewsform SPB (web/mobile bila satu repo)docs/api-reference.md,docs/api-examples.md
Migration / data change
- Tidak wajib migration.
- Data lama yang null
delivery_dateperlu handling di UI/report (fallback label).
Dampak API/UI
- Client lama yang tidak mengirim
delivery_dateakan gagal validasi. - UI perlu mandatory marker + helper text.
Rollback
- Kembalikan validation jadi nullable.
- Tetap log warning jika field kosong untuk observability.
Checklist sebelum merge (wajib)
- Ada rollback plan yang benar-benar executable.
- Dampak ke API consumer dicatat (breaking / non-breaking).
- Dampak ke UI role-based dicatat.
- Jika ada asumsi, sudah dicatat ke Verification Matrix.
Catatan Verifikasi
- Status: Partial
- Scope: Contoh di atas adalah pattern realistis dari struktur kode saat ini, belum dieksekusi sebagai tiket live tertentu.
- Action: Saat ada perubahan riil berikutnya, lampirkan PR/commit aktual ke contoh paling relevan.