Menu Layanan dipakai untuk mendefinisikan daftar jasa laundry yang dijual (kiloan, satuan, paket, meteran) lengkap dengan tipe hitungan, satuan, harga, minimal order, dan estimasi waktu selesai. Data di sini dipakai saat membuat transaksi.
Owner/Administrator menetapkan struktur awal (kategori, satuan, harga).
Supervisor/Kasir dapat mengedit harga harian jika diizinkan oleh kebijakan internal.
Kategori (enum: kiloan | satuan | paket | meteran)
kiloan: dihitung per berat (biasanya kg).
satuan: dihitung per item/buah (misal jas, karpet).
paket: bundling layanan (misal “Paket Kilat 10 kg”).
meteran: dihitung per meter (tirai, seprai ukuran luas).
Tipe (enum: berat | jumlah)
berat: kuantitas akan diinput dalam bobot (kg/ons).
jumlah: kuantitas berupa angka unit (pcs/meter).
Satuan (enum: ons | kg | satuan | per mesin)
Contoh umum: kg untuk kiloan, satuan untuk per item, per mesin untuk cuci koin/self-service.
Jenis (enum: cuci setrika | cuci saja | setrika saja)
Menggambarkan ruang lingkup pekerjaan.
Nama
Nama layanan yang mudah dikenali pelanggan (misal: “Kiloan Reguler”, “Setrika Saja”).
Subkategori (opsional)
Gunakan untuk varian (misal: “Reguler”, “Express”, “Kilat 6 jam”).
Harga (Rp)
Harga dasar per satuan (per kg / per item / per mesin / per meter).
Minimal Order
Batas minimal (misal 2 kg untuk kiloan) agar kasir tidak input di bawah standar.
Estimasi Selesai (jam)
Perkiraan durasi selesai; dipakai untuk informasi pelanggan & proyeksi timeline produksi.
Tambah Layanan
Klik Tambah → isi Kategori, Tipe, Satuan, Jenis, Nama, (Subkategori opsional), Harga, Minimal, Estimasi → Simpan.
Edit Layanan
Klik tombol Edit di baris layanan → ubah data yang diperlukan → Simpan.
Hapus Layanan
Klik Hapus → konfirmasi.
Catatan: jika layanan sudah dipakai pada transaksi detail, sistem menolak penghapusan dan memberi pesan jumlah referensi.
Cari & Navigasi
Gunakan field search, pagination, dan pilihan 10/25/50/100 baris (DataTables).
Cetak/Print
Klik Print untuk mencetak daftar layanan sesuai hasil filter saat ini.
Nama wajib diisi; Harga tidak boleh negatif.
Kategori/Tipe/Satuan/Jenis harus sesuai opsi yang tersedia (enum).
Minimal Order siapkan sesuai kebijakan (misal kiloan: minimal 2 kg).
Estimasi isi realistis (misal Reguler 24 jam, Express 6–8 jam).
Konsistenkan penamaan Nama + Subkategori (contoh: “Kiloan • Reguler”, “Kiloan • Express”) agar rapi di transaksi.
Kiloan Reguler
Kategori: kiloan • Tipe: berat • Satuan: kg • Jenis: cuci setrika
Harga: 8.000 • Minimal: 2 • Estimasi: 24
Kiloan Express 6 Jam
Kategori: kiloan • Tipe: berat • Satuan: kg • Jenis: cuci setrika
Subkategori: Express 6 jam • Harga: 12.000 • Minimal: 2 • Estimasi: 6
Jas (Dry Clean)
Kategori: satuan • Tipe: jumlah • Satuan: satuan • Jenis: cuci saja
Harga: 35.000 • Minimal: 1 • Estimasi: 48
Karpet Tebal
Kategori: meteran • Tipe: jumlah • Satuan: satuan (atau per meter sesuai kebijakan)
Harga: 25.000 • Minimal: 1 • Estimasi: 72
Gunakan Subkategori untuk membedakan SLA: Reguler / Express / Kilat.
Kelompokkan layanan dengan pola nama seragam agar mudah dicari.
Revisi Estimasi berdasarkan performa operasional aktual (hindari over-promise).
Pisahkan layanan “cuci saja” dan “setrika saja” untuk transparansi harga.
Saat kasir memilih layanan, sistem akan:
Mengunci Tipe input (berat vs jumlah) sesuai layanan.
Menggunakan Satuan & Harga default; kasir bisa menyesuaikan bila role/izin memperbolehkan.
Mencegah kuantitas di bawah Minimal Order (bila validasi diaktifkan di form).
Tambah/Edit/Hapus layanan idealnya hanya untuk user berperan Administrator atau Supervisor.
Kasir sebaiknya tidak dapat menghapus layanan.
Perubahan layanan berdampak ke transaksi selanjutnya (historis tetap mengikuti harga yang tersimpan di masing-masing detail transaksi).
“Kategori/Tipe/Satuan/Jenis tidak valid” → pastikan memilih dari opsi yang tersedia.
“Gagal hapus: masih dipakai di transaksi detail” → ubah/arsipkan di transaksi terkait terlebih dahulu; atau nonaktifkan layanan (opsi soft-delete jika tersedia pada versi Anda).
Harga & minimal tidak tersimpan → pastikan format angka benar (tanpa pemisah ribuan saat submit).
Estimasi tidak muncul di nota → cek file nota/struk apakah menampilkan field estimasi; kontak admin sistem jika perlu.
Beda “kiloan” vs “satuan”?
Kiloan dihitung per berat (kg), satuan per item (pcs).
Minimal order wajib?
Disarankan untuk kiloan (misal 2 kg) agar operasional efisien.
Bisakah ubah harga sementara (diskon)?
Bisa di level transaksi via kolom diskon/penyesuaian (tergantung konfigurasi modul transaksi).
Menghapus layanan lama?
Jika sudah dipakai transaksi, tidak bisa dihapus. Solusi: ganti nama (beri tag [NONAKTIF]) atau sediakan flag nonaktif jika modul tersedia.
Semua layanan inti terdaftar (kiloan, satuan, paket jika ada).
Harga & minimal order realistis.
Estimasi tiap layanan diisi (Reguler/Express).
Penamaan konsisten (Nama + Subkategori).
Uji tambah ke transaksi (cek kuantitas, satuan, total).
Pencarian & Pagination: pakai kolom search dan kontrol halaman (10/25/50/100 baris).
Cetak Daftar Layanan: tombol Print di kanan atas tabel.
Deep Link ke Tab Layanan: buka URL l_master_data.php?tipe=layanan untuk langsung menampilkan tab ini.