54 lines
3.2 KiB
Markdown
54 lines
3.2 KiB
Markdown
# Deployment Database Production — Penjualan
|
|
|
|
## Sebelum deployment
|
|
|
|
1. Buat backup database dan folder `uploads/accounting`.
|
|
2. Pastikan seluruh migration sampai `20260906001100` sudah diterapkan.
|
|
3. Rekonsiliasi invoice lama, jurnal penjualan, `stock_logs`, `inventory_ledger`, dan status barcode. Tandai khusus invoice legacy yang sudah pernah mengurangi stok.
|
|
4. Pastikan mapping akun Penjualan lengkap untuk setiap company.
|
|
|
|
## Migration
|
|
|
|
Jalankan berurutan:
|
|
|
|
- `20260907000100_finalize_sales_invoice_workflow`
|
|
- `20260907000200_complete_sales_document_metadata`
|
|
- `20260907000300_expand_sales_return_barcode_status`
|
|
- `20260907000400_scope_document_numbering_by_company`
|
|
|
|
Migration bersifat additive dan tidak menghapus kolom/tabel lama. `company_id`, metadata invoice, tabel Surat Jalan, relasi multi-barcode, sumber pembayaran, pengakuan pendapatan, dan retur akan ditambahkan. Enum barcode mempertahankan seluruh status Pembelian/Persediaan yang sudah ada dan menambah `quarantine` serta `damaged`.
|
|
Migration keempat mengganti unique index nomor dokumen global menjadi per-company dan membuat sequence atomik per perusahaan. Struktur data transaksi tidak dihapus.
|
|
|
|
## Setelah deployment
|
|
|
|
1. Jalankan `php index.php salescheck`.
|
|
2. Uji satu invoice Development: pilih barcode → post Surat Jalan → ajukan → approve/post → bayar dengan bukti.
|
|
3. Bandingkan saldo invoice dengan akun Piutang dan saldo inventory ledger dengan akun Persediaan/Persediaan Dalam Penjualan.
|
|
4. Verifikasi permission per role dan isolasi company.
|
|
5. Pastikan folder `uploads/accounting/sales` dapat ditulis PHP tetapi eksekusi script diblokir oleh konfigurasi web server.
|
|
|
|
## Rollback
|
|
|
|
Jangan menjalankan `down()` pada data transaksi aktif. Rollback yang aman adalah mengembalikan backup database dan source secara bersamaan. Dokumen yang sudah posted harus direversal melalui workflow, bukan dihapus manual.
|
|
|
|
## Data yang perlu direkonsiliasi
|
|
|
|
- Invoice lama tanpa `company_id` yang customer-nya ambigu.
|
|
- Invoice dengan `stock_posted_at` tetapi tidak mempunyai inventory ledger yang sepadan.
|
|
- Satu barcode legacy pada `invoice_details.barcode_id` yang belum tercermin pada relasi multi-barcode.
|
|
- Pembayaran lama tanpa `payment_sources` atau bukti pembayaran.
|
|
- Jurnal lama dengan keterangan atau `ref_type/ref_id` yang tidak lengkap.
|
|
|
|
## Tambahan deployment editor invoice
|
|
|
|
Terapkan migration `20260907000500_finalize_invoice_editor` setelah `20260907000400`. Migration additive ini menambah idempotency/version header invoice, tipe dan idempotency baris invoice, indeks daftar/detail/pengelompokan Surat Jalan Draft, serta permission `can_submit` pada role terkait.
|
|
|
|
Lanjutkan dengan `20260907000600_finalize_sales_payment_permissions` untuk memberi `can_post` penerimaan pelanggan kepada role Finance yang memang memiliki hak posting Kas/Bank, sekaligus menambah indeks riwayat pembayaran dan alokasi invoice.
|
|
|
|
Setelah migration:
|
|
|
|
1. Jalankan `php index.php salescheck`.
|
|
2. Minta pengguna logout/login agar snapshot permission session memuat `can_submit` terbaru.
|
|
3. Uji alur singkat: buat header, tambah satu barang atau jasa, post Surat Jalan bila barang, ajukan, approve/post otomatis, lalu bayar dengan bukti.
|
|
4. Jangan mengaktifkan kembali mutasi legacy `Invoices::save/add_item/delete_item/bayar`.
|