83 lines
4.8 KiB
Markdown
83 lines
4.8 KiB
Markdown
# Finalisasi Peralatan Teknisi
|
|
|
|
## Ruang lingkup
|
|
|
|
Peralatan Teknisi adalah subledger operasional penguasaan fisik. Modul tidak membuat jurnal, tidak menulis `stock_logs`/`inventory_ledger`, serta tidak mengubah `qty_sisa`, harga, costing, atau nilai persediaan. Barang perusahaan tetap mengacu ke `items`, `kode_barang`, dan `item_barcodes`. `reserved_qty` dipakai untuk menahan kuantitas yang sedang berada di luar gudang agar tidak dapat dijual dua kali.
|
|
|
|
Barang customer disimpan terpisah dalam `customer_equipment_registry` dan tidak pernah diberi `item_id` atau `barcode_id` persediaan.
|
|
|
|
## Migration production
|
|
|
|
Jalankan setelah backup dan maintenance window:
|
|
|
|
```bash
|
|
php index.php migrate latest
|
|
php index.php migrate status
|
|
php index.php migrate equipment_audit
|
|
```
|
|
|
|
Migration yang harus terpasang berurutan:
|
|
|
|
1. `20260911000100_finalize_technician_equipment_operations.php`
|
|
2. `20260911000200_link_application_users_to_employees.php`
|
|
3. `20260911000300_add_customer_equipment_source_fields.php`
|
|
4. `20260911000400_add_technician_document_location.php`
|
|
5. `20260911000500_add_technician_condition_permission.php`
|
|
6. `20260911000600_document_technician_opening_balances.php`
|
|
7. `20260911000700_add_technician_attachment_permission.php`
|
|
|
|
Migration pertama membuat register barang customer, dokumen/header-detail, saldo custody, antrean pemeriksaan, indeks, permission awal, dan saldo awal dari `item_technician`. Migration tidak membuat ulang `item_movements` lama. Migration kedua menambah relasi opsional `users.employee_id` agar akun ber-role Teknisi dapat dibatasi pada barangnya sendiri. Migration ketiga menambah tanggal, nomor dokumen, dan alasan sumber barang customer/non-persediaan. Migration keempat menambah lokasi pemasangan pada dokumen operasional. Migration kelima memisahkan izin kondisi rusak/hilang. Migration keenam membuat dokumen immutable “Saldo Awal Migrasi” tanpa menggandakan movement lama. Migration ketujuh memisahkan izin melihat lampiran.
|
|
|
|
Setelah migration, buka Pengaturan → Pengguna dan tautkan setiap akun Teknisi ke Data Karyawan yang benar. Login ulang diperlukan agar permission baru masuk ke session.
|
|
|
|
## Alur final
|
|
|
|
1. Gudang → teknisi: pilih teknisi sekali, scan/cari banyak barang, lalu posting satu dokumen batch. Sistem menahan `reserved_qty`, mencatat `item_movements`, dan saldo custody per baris.
|
|
2. Teknisi → customer: pemasangan penuh/sebagian dan dokumen pemasangan.
|
|
3. Customer → teknisi: pelepasan dengan kondisi, customer asal, dan histori.
|
|
4. Teknisi → teknisi: pilih teknisi asal/tujuan sekali dan transfer banyak barang penuh/sebagian.
|
|
5. Teknisi → gudang: pengembalian banyak barang dalam satu dokumen dan satu bukti batch; seluruhnya masuk karantina dan belum available.
|
|
6. Pemeriksaan: hanya hasil layak yang melepaskan reservation dan membuat barang perusahaan available kembali.
|
|
7. Penggantian: pemasangan barang baru dan pelepasan barang lama berada dalam satu transaksi/dokumen.
|
|
8. Koreksi: membuat dokumen reversal baru; dokumen lama menjadi `reversed` dan tidak dihapus.
|
|
|
|
Pencarian menerima input scanner barcode USB/Bluetooth, barcode, serial number, kode barang, dan nama barang. Barang customer yang sudah terdaftar dipilih dari hasil scan/pencarian sehingga identitasnya tidak perlu dimasukkan ulang. PDF daftar posisi barang tersedia pada setiap teknisi.
|
|
|
|
## UNIT dan QTY
|
|
|
|
- `UNIT`: kuantitas selalu 1 dan hanya boleh mempunyai satu posisi aktif.
|
|
- `QTY`: mendukung perpindahan sebagian dan saldo per teknisi/customer/status. Setiap perubahan menggunakan transaksi, row lock, version check, validasi saldo, dan idempotency key.
|
|
|
|
## Permission
|
|
|
|
- `technician_equipment`: akses/register/export.
|
|
- `technician_equipment_all`: melihat seluruh teknisi.
|
|
- `technician_attachment`: melihat foto/dokumen lampiran.
|
|
- `technician_handover`: serah terima gudang.
|
|
- `technician_installation`: pemasangan, pelepasan, penggantian.
|
|
- `technician_transfer`: transfer antar teknisi.
|
|
- `technician_return`: pengembalian.
|
|
- `technician_inspection`: pemeriksaan gudang.
|
|
- `technician_condition`: menandai rusak, hilang, atau dihapuskan operasional.
|
|
- `technician_correction`: reversal.
|
|
|
|
Master Admin/Admin selalu mendapat seluruh kemampuan. Role Teknisi tanpa izin `technician_equipment_all` dibatasi memakai `users.employee_id`.
|
|
|
|
## Pemeriksaan development
|
|
|
|
Perintah smoke test menggunakan transaksi rollback dan tidak meninggalkan data:
|
|
|
|
```bash
|
|
php index.php migrate equipment_smoke
|
|
php index.php migrate equipment_qty_smoke
|
|
php index.php migrate equipment_replacement_smoke
|
|
php index.php migrate equipment_query_smoke
|
|
php index.php migrate equipment_batch_smoke
|
|
```
|
|
|
|
Jangan menjalankan metode smoke melalui HTTP; controller migration hanya menerima CLI.
|
|
|
|
## Tidak diubah
|
|
|
|
Alur pembelian, penerimaan, penjualan, invoice, aset tetap, payroll, laporan accounting, master barang, harga, costing, dan general ledger tidak diubah oleh finalisasi ini.
|