Initial import of AbelBirdNest Stock
This commit is contained in:
208
docs/codex-handoff-2026-05-10.md
Normal file
208
docs/codex-handoff-2026-05-10.md
Normal file
@ -0,0 +1,208 @@
|
||||
# Codex Handoff - 2026-05-10
|
||||
|
||||
Dokumen ini menyimpan konteks kerja terakhir agar pengerjaan bisa langsung dilanjutkan saat project dibuka lagi.
|
||||
|
||||
## Status Umum
|
||||
|
||||
- App aktif dikembangkan di `Next.js + Prisma`.
|
||||
- Banyak flow bisnis inti sudah tersambung end-to-end.
|
||||
- Project belum dianggap production-ready; fokus saat ini masih penyelesaian fitur dan perapihan UX.
|
||||
|
||||
## Perubahan Domain dan Terminologi
|
||||
|
||||
- `Customer` sudah dirapikan menjadi `Buyer`.
|
||||
- `Seller` sudah dirapikan menjadi `Sales`.
|
||||
- `sellerCurrencyCode` sudah dirapikan menjadi `companyCurrencyCode`.
|
||||
- `item type` dan `item grade` sudah dibersihkan dari kontrak aktif UI/API; flow aktif sekarang pakai `grade`.
|
||||
- Struktur Prisma dan mapping database sudah disesuaikan ke arah penamaan yang lebih jelas.
|
||||
|
||||
## Fitur yang Sudah Aktif
|
||||
|
||||
### 1. Penjualan Reguler
|
||||
|
||||
- Flow create dan close sudah aktif.
|
||||
- Create:
|
||||
- buyer
|
||||
- mata uang buyer
|
||||
- mata uang perusahaan
|
||||
- rate buyer ke perusahaan bila beda currency
|
||||
- kurir
|
||||
- biaya kirim
|
||||
- resi opsional
|
||||
- multiple lot
|
||||
- Line item:
|
||||
- pilih lot
|
||||
- berat jual
|
||||
- harga jual
|
||||
- info grade, kode lot, berat sekarang, harga MAL, bagi hasil agent
|
||||
- Close:
|
||||
- berat jual aktual
|
||||
- berat retur
|
||||
- harga jual aktual
|
||||
- selisih otomatis masuk penyusutan
|
||||
- Komisi agent:
|
||||
- dihitung ulang saat close
|
||||
- menambah saldo agent
|
||||
|
||||
### 2. Titip Jual / Consignment
|
||||
|
||||
- Flow create dan close sudah aktif.
|
||||
- Close support:
|
||||
- berat terjual
|
||||
- berat kembali
|
||||
- berat susut
|
||||
- harga jual
|
||||
- komisi sales manual
|
||||
- Rumus komisi agent:
|
||||
- `((berat terjual * (harga jual - harga MAL)) - komisi sales) * persentase share`
|
||||
- Komisi agent:
|
||||
- menambah saldo bagi hasil agent
|
||||
- Komisi sales:
|
||||
- punya histori sendiri di master `Sales`
|
||||
|
||||
### 3. Penjualan Just In Time
|
||||
|
||||
- Placeholder sudah diganti menjadi flow aktif.
|
||||
- Header input sama arah umumnya dengan penjualan reguler.
|
||||
- Barang dijual tanpa masuk gudang dan tanpa retur.
|
||||
- Line item JIT:
|
||||
- grade
|
||||
- quantity
|
||||
- harga MAL
|
||||
- harga jual
|
||||
- agent opsional
|
||||
- skema bagi hasil opsional
|
||||
- catatan
|
||||
- Status create:
|
||||
- `OPEN`
|
||||
- Close:
|
||||
- update `harga jual aktual` saja
|
||||
- Komisi agent:
|
||||
- dihitung saat close
|
||||
- menambah saldo bagi hasil agent
|
||||
- Banyak pass UI sudah dilakukan agar gaya JIT mendekati penjualan reguler.
|
||||
|
||||
### 4. Purchases
|
||||
|
||||
- Menu `Purchases` sudah dipecah:
|
||||
- `Pembelian Reguler`
|
||||
- `Pembelian Kantor / Buyout Agent`
|
||||
- `Purchase Detail` sekarang dibuka sebagai popup/modal agar tidak merusak layout utama.
|
||||
- Tombol `Cetak receipt` dipindah ke detail purchase, bukan lagi di halaman receipt.
|
||||
|
||||
### 5. Pembelian Kantor / Buyout Agent
|
||||
|
||||
- Sudah aktif sebagai submenu terpisah.
|
||||
- Sumber hanya dari lot aktif yang sudah ada.
|
||||
- Buyout bisa parsial atau full.
|
||||
- Setiap buyout selalu membuat lot baru milik kantor.
|
||||
- Lot lama dikurangi; jika habis bisa closed.
|
||||
- Komisi agent saat buyout:
|
||||
- `max(0, qty * (harga buyout - harga MAL)) * persen share`
|
||||
- Jika harga buyout di bawah harga MAL, komisi agent default `0`.
|
||||
- Komisi buyout menambah saldo bagi hasil agent dan masuk histori.
|
||||
- Detail lot sudah menampilkan jejak buyout.
|
||||
|
||||
### 6. Fund Request
|
||||
|
||||
- Menu baru `/fund-requests` sudah aktif.
|
||||
- Ada 2 tipe:
|
||||
- `Dana modal`
|
||||
- `Bagi hasil`
|
||||
- Input:
|
||||
- code generated
|
||||
- no reff
|
||||
- agent
|
||||
- rekening agent
|
||||
- rekening kantor
|
||||
- nominal
|
||||
- waktu transfer
|
||||
- bukti transfer opsional
|
||||
- Dampak saldo:
|
||||
- `Dana modal`: kantor transfer ke agent, jadi menambah saldo modal agent
|
||||
- `Bagi hasil`: pembayaran bagi hasil ke agent, jadi mengurangi saldo bagi hasil agent
|
||||
- Histori mutasi agent ikut tercatat.
|
||||
|
||||
### 7. Master Agent
|
||||
|
||||
- Agent punya dua saldo:
|
||||
- `saldo bagi hasil`
|
||||
- `saldo modal`
|
||||
- Histori mutasi saldo sudah aktif.
|
||||
- Sumber histori mencakup:
|
||||
- opening balance
|
||||
- manual adjustment
|
||||
- consignment commission
|
||||
- regular sale commission
|
||||
- JIT sale commission
|
||||
- office buyout commission
|
||||
- fund request profit share
|
||||
- fund request capital
|
||||
- Detail agent sudah bisa melihat histori.
|
||||
|
||||
### 8. Master Sales
|
||||
|
||||
- `Sales` punya `commission_balance`.
|
||||
- Histori komisi sales sudah aktif.
|
||||
- Detail sales sudah bisa menampilkan histori komisi.
|
||||
|
||||
### 9. Settings / Profil Perusahaan
|
||||
|
||||
- Profil perusahaan sekarang mendukung multiple rekening kantor.
|
||||
- Bank kantor dipilih dari master bank.
|
||||
- Fund Request memakai pilihan rekening kantor yang dipilih user.
|
||||
- Bug sesudah save yang membuat list rekening kantor terlihat kosong tanpa refresh sudah diperbaiki.
|
||||
|
||||
## Perapihan UI/UX yang Sudah Dilakukan
|
||||
|
||||
- Banyak halaman master 2 kolom sekarang sudah punya:
|
||||
- pagination
|
||||
- search
|
||||
- Picker grade besar sudah diganti ke searchable combobox di beberapa flow aktif.
|
||||
- Sidebar bug auto-expand karena prefix path sudah diperbaiki.
|
||||
- Icon bell di topbar di-hide.
|
||||
- Tombol `?` diarahkan ke halaman bantuan `/help`.
|
||||
- Beberapa halaman transaksi besar sudah dipadatkan dan disamakan skalanya.
|
||||
|
||||
## Catatan Teknis Penting
|
||||
|
||||
- Untuk banyak perubahan schema terakhir, `npm run prisma:generate`, `npm run db:push`, dan `npm run typecheck` sudah pernah lolos.
|
||||
- Alur kerja saat ini masih banyak mengandalkan `db push`, belum migrasi Prisma versioned.
|
||||
- Belum ada test suite otomatis yang matang.
|
||||
- Project sebelumnya juga sudah dinilai belum production-ready, terutama pada aspek auth/bootstrap dev account, secret fallback, migration discipline, dan testing.
|
||||
|
||||
## Isu yang Baru Saja Diperbaiki
|
||||
|
||||
- `Settings`:
|
||||
- setelah simpan, list rekening kantor sempat terlihat reset
|
||||
- akar masalah: response `PUT /api/v1/settings` tidak mengembalikan relasi `companyBankAccounts`
|
||||
- sudah diperbaiki dengan fetch ulang record lengkap sebelum serialize
|
||||
- `Pembelian Reguler`:
|
||||
- warning `lengkapi master data` sempat muncul terus saat buka halaman
|
||||
- sudah diperbaiki agar hanya muncul setelah loading selesai dan hanya jika master wajib benar-benar kosong
|
||||
- `Purchase Analysis`:
|
||||
- chip jumlah purchase sudah dipaksa satu baris
|
||||
|
||||
## Kandidat Lanjutan Paling Masuk Akal
|
||||
|
||||
1. Lanjut desain dan implementasi flow `Pembelian Just In Time` jika memang masih ada versi purchase-side yang terpisah dari `Sales JIT`.
|
||||
2. Sweep UI consistency lagi untuk:
|
||||
- `Sales JIT`
|
||||
- `Fund Request`
|
||||
- `Office Buyout`
|
||||
3. Tambah dokumentasi user flow untuk transaksi baru:
|
||||
- regular sale
|
||||
- JIT sale
|
||||
- office buyout
|
||||
- fund request
|
||||
4. Hardening project sebelum production:
|
||||
- hapus bootstrap user dev dari runtime login
|
||||
- wajibkan `AUTH_SECRET`
|
||||
- pindah ke Prisma migrations
|
||||
- tambah test smoke/integration
|
||||
- rate limiting auth endpoint
|
||||
|
||||
## File Ini
|
||||
|
||||
- Update file ini setiap kali ada keputusan bisnis besar atau modul baru selesai.
|
||||
- Kalau mau lebih formal, file ini bisa diganti nanti menjadi `docs/project-status.md` permanen.
|
||||
Reference in New Issue
Block a user