specs / 025-Changes-FnB-Pickup-Time

025 - FnB Pick Up Time (configurable)

Update (sesi lanjutan): Android menampilkan pick-up time di Order Complete + Booking Details (TransactionDto/BookingHistoryItem + fnb_pickup_time), history split FnB vs Rent via nama produk, Payment Summary Order Complete dilengkapi subtotal per kategori + breakdown pajak; migration 018 diterapkan ke DB production (sebelumnya hanya lokal — error "column fnb_pickup_time does not exist" saat Confirm Payment). Port iOS (v1.5) & Web (v0.6) done: tampilan pick-up + Payment Summary lengkap di Order Complete & history detail (Web pakai GET /transactions/customer/:id).

  • Tanggal: 2026-08-11
  • Chat/topik: Pick Up Time FnB di member apps + config admin

Ringkasan perubahan

Member dapat memilih waktu ambil pesanan FnB relatif ke jadwal court booking (default: 30 menit sebelum start sampai end booking, interval 15 menit). Range & interval dikonfigurasi di store_settings lewat Admin Settings. Waktu tersimpan di transactions.fnb_pickup_time. Picker hanya muncul jika cart punya booking court.

Impact bisnis

Dapur/club dapat menyiapkan FnB sesuai waktu yang dipilih member; operasional dapat menyesuaikan buffer dan interval tanpa release app.

Epic / User stories

  • Epic: FnB fulfilment timing
  • US: Sebagai member yang sudah book court, saya ingin memilih jam ambil makanan/minuman, agar pesanan siap saat saya butuh.
  • US: Sebagai admin klub, saya ingin mengatur berapa menit sebelum main anggota boleh ambil dan interval pilihannya.

User terdampak

Member (Android/iOS/Web), admin klub. POS/dapur belum menampilkan field di v1 (kolom sudah ada).

Aplikasi terdampak

  • mpc-be: PERLU — settings API, validasi checkout, persist
  • mpc-admin: PERLU — form settings
  • mpc-android: PERLU — UI + payload
  • mpc-ios: PERLU — parity
  • mpc-web: PERLU — parity
  • mpc-be-pos: TIDAK — tampilan dapur belakangan
  • mpc-pos: TIDAK
  • mpc-owner: TIDAK
  • ksr-sync: TIDAK

Perubahan schema

  • store_settings.fnb_pickup_before_minutes (default 30)
  • store_settings.fnb_pickup_interval_minutes (default 15)
  • transactions.fnb_pickup_time (timestamptz nullable)
  • Migrasi: mpc-dev/docs/schema/migration/018-fnb-pickup-settings.md

Perubahan kode

  • Admin: Settings form + Prisma
  • BE: GET /settings/fnb-pickup, POST /orders + fnb_pickup_time
  • Android/iOS/Web: fetch config, picker, checkout field
  • Changelog digabung ke versi Current (tanpa bump): be v1.6, admin v0.7, android v1.16, ios v1.5, web v0.6