UMI CELL

Panduan Lengkap Sistem Manajemen Konter

1. Pendahuluan

Tentang UMI Cell

UMI Cell adalah sistem manajemen Konter berbasis web yang dirancang untuk memudahkan pengelolaan bisnis HP, meliputi:

  • โœ… Manajemen Produk dengan Multi-Cabang & Multi-Harga
  • โœ… Transaksi Pembelian & Penjualan
  • โœ… Service & Reparasi HP dengan Tracking Status
  • โœ… Portal Customer untuk Cek Status Service & History Transaksi
  • โœ… Dashboard Admin dengan Monitoring Real-time
  • โœ… Manajemen Pelanggan & Supplier
  • โœ… Laporan Laba Rugi, Stok, dan Kinerja
  • โœ… QR Code untuk Produk & Transaksi
  • โœ… Import Produk via Excel

Kebutuhan Sistem

Komponen Spesifikasi
Web Server Apache/Nginx + PHP 8.1+
Database MySQL 5.7+ / MariaDB
Browser Chrome, Firefox, Edge (versi terbaru)
Kamera (Optional) Untuk fitur scan QR Code

2. Login & Akses

Cara Login

Langkah 1: Buka browser dan akses URL aplikasi (contoh: https://codekilat.my.id/umi-cell/)
Langkah 2: Masukkan Email dan Password
Langkah 3: Klik tombol Login

Tipe User & Hak Akses

Role Akses & Wewenang
Super Admin Akses penuh ke semua fitur, manage user & cabang
Admin Kelola transaksi, produk, service, dan laporan
Kasir Input transaksi penjualan & pembelian
Teknisi Kelola service, update status service
Customer Cek status service
โš ๏ธ Keamanan: Jaga kerahasiaan password. Logout setelah selesai. Jangan share akun.

3. Dashboard & Portal Customer

3.1 Dashboard Admin

Dashboard Admin merupakan halaman utama yang ditampilkan setelah login sebagai Admin, Super Admin, Kasir, atau Teknisi. Dashboard menyediakan ringkasan informasi penting untuk monitoring bisnis.

Informasi di Dashboard Admin

๐Ÿ“Š Dashboard Admin menampilkan 3 Section Utama:

1. Produk yang Sudah Mencapai Batas Minimum Stok

Section ini menampilkan tabel dengan kartu merah (danger) yang berisi informasi produk yang stoknya sudah rendah atau mencapai batas minimum. Menampilkan maksimal 10 produk dengan stok terendah.

Kolom Informasi
# Nomor urut
Kode Produk Format: B-0001, B-0002, dst (auto generated dari ID produk)
Nama Produk Nama lengkap produk
Cabang Nama cabang tempat produk berada
Stok Saat Ini Jumlah stok tersedia (badge merah dengan unit)
Stok Minimum Batas minimum stok yang ditentukan
Status Badge status:
- Hitam "Habis": Stok = 0
- Merah "Di Bawah Minimum": Stok kurang dari Min Stock
- Kuning "Mencapai Minimum": Stok sama dengan Min Stock
โœ… Jika semua stok aman: Muncul alert hijau dengan pesan "Semua produk masih aman, tidak ada yang mencapai batas minimum stok"

2. Peringkat Produk Terlaris

Section ini menampilkan tabel dengan kartu hijau (success) yang berisi 10 produk dengan penjualan tertinggi.

Kolom Informasi
# Ranking (1-10)
Produk Nama produk (bold) dan nama merek (kecil abu-abu di bawahnya)
Terjual Total quantity yang terjual (badge hijau)
Pendapatan Total pendapatan dari produk tersebut (dalam Rupiah)
๐Ÿ“Œ Catatan: Data ini dihitung dari SEMUA transaksi penjualan yang pernah tercatat di sistem, bukan hanya periode tertentu.

3. Peringkat Customer

Section ini menampilkan tabel dengan kartu biru (info) yang berisi 10 customer dengan total belanja tertinggi.

Kolom Informasi
# Ranking (1-10)
Customer Nama customer (bold) dan nomor WhatsApp (kecil abu-abu di bawahnya)
Transaksi Total jumlah transaksi (badge biru dengan format: 5x, 10x, dst)
Total Belanja Total uang yang telah dibelanjakan (dalam Rupiah)
๐Ÿ“Œ Catatan: Hanya customer yang pernah tercatat dalam transaksi yang akan muncul di ranking ini.
๐Ÿ’ก Tips Menggunakan Dashboard:
  • Cek section "Produk Mencapai Batas Minimum Stok" setiap hari untuk mengetahui produk yang perlu di-restock
  • Gunakan data "Peringkat Produk Terlaris" untuk strategi stocking - pastikan produk laris selalu tersedia
  • Manfaatkan data "Peringkat Customer" untuk program loyalitas atau promo khusus customer setia
  • Dashboard ini otomatis update setiap kali ada transaksi baru

3.2 Dashboard Customer

Sistem ini menyediakan halaman khusus untuk customer, dimana customer dapat mengakses informasi penting terkait transaksi dan service mereka secara mandiri tanpa perlu menghubungi toko.

Cara Customer Mengakses Dashboard

Langkah 1: Customer login menggunakan akun yang telah dibuat oleh admin
Langkah 2: Masukkan Email dan Password yang diberikan
Langkah 3: Setelah login, customer akan masuk ke halaman dashboard customer

Informasi di Dashboard Customer

๐Ÿ“Š Dashboard Customer menampilkan 4 Kartu Statistik:
  • Total Pembelian - Jumlah transaksi pembelian yang pernah dilakukan
  • Total Belanja - Total uang yang telah dibelanjakan (dalam Rupiah)
  • Total Service - Jumlah service yang pernah dilakukan
  • Service Aktif - Jumlah service yang sedang dalam proses (belum selesai)

Section Service Aktif

Jika customer memiliki service yang sedang dikerjakan, akan ditampilkan dalam bentuk kartu khusus dengan background gradient ungu yang menarik. Setiap kartu service aktif menampilkan:

  • Merek & Model Device - Contoh: Samsung Galaxy A12
  • Nomor Service - Kode unik untuk tracking
  • Keluhan - Masalah yang dilaporkan customer
  • Diagnosa - Hasil pemeriksaan teknisi (jika sudah ada)
  • Tanggal Service - Kapan barang masuk
  • Status - Status terkini (badge putih di tengah kartu)
  • Tombol "Lihat Detail" - Untuk melihat informasi lengkap service

Section Riwayat Pembelian

Menampilkan 5 transaksi pembelian terakhir. Setiap item menampilkan:

  • Nomor Invoice - Nomor transaksi pembelian
  • Tanggal & Waktu - Kapan pembelian dilakukan
  • Nama Cabang - Lokasi toko tempat pembelian
  • Produk Dibeli - Daftar produk dengan quantity (maksimal 3 produk ditampilkan, sisanya "+X lainnya")
  • Total Pembayaran - Jumlah yang dibayarkan (dengan warna ungu)
  • Metode Pembayaran - Badge hijau menampilkan metode (Cash/Transfer/dll)

Section Riwayat Service

Menampilkan 5 service terakhir (semua status). Setiap item menampilkan:

  • Merek & Model Device - HP yang diservice
  • Nomor Service - Kode tracking
  • Tanggal Service - Kapan barang masuk
  • Keluhan - Deskripsi masalah (dipotong 40 karakter)
  • Status - Badge berwarna sesuai status:
    • ๐ŸŸก Kuning (Warning) - Menunggu Diagnosa
    • ๐Ÿ”ต Biru (Info) - Dalam Pengerjaan
    • โšซ Abu-abu (Secondary) - Menunggu Sparepart
    • ๐ŸŸข Hijau (Success) - Selesai / Diambil
    • ๐Ÿ”ด Merah (Danger) - Dibatalkan
  • Total Biaya - Jika sudah ada (dengan warna ungu)
  • Tombol "Detail" - Untuk melihat informasi lengkap

Section Informasi Kontak

Menampilkan data profil customer:

  • Nama - Nama lengkap customer
  • WhatsApp - Nomor telepon/WA
  • Email - Alamat email
  • Alamat - Alamat lengkap customer

Keuntungan Dashboard Customer

โœ… Manfaat untuk Customer:
  • Tidak perlu datang ke toko atau telepon untuk cek status service
  • Dapat memantau progress service kapan saja, 24/7
  • Melihat semua riwayat pembelian dan service di satu tempat
  • Akses mudah ke history pembelian untuk keperluan garansi
  • Lebih transparan dan meningkatkan kepercayaan
  • Statistik lengkap tentang total belanja dan service
โœ… Manfaat untuk Toko:
  • Mengurangi telepon/chat customer yang menanyakan status service
  • Meningkatkan kepuasan dan loyalitas customer
  • Memperkuat citra profesional toko
  • Efisiensi waktu staff untuk fokus pada pekerjaan lain
  • Customer dapat self-service untuk mengecek informasi mereka
โš ๏ธ Catatan Penting:
  • Setiap customer harus memiliki akun (email & password) untuk bisa login
  • Admin harus membuat akun customer saat menambah data customer baru
  • Customer hanya bisa melihat data milik mereka sendiri (privacy terjaga)
  • Teknisi harus rajin update status service agar customer mendapat informasi akurat
  • Dashboard menampilkan maksimal 5 transaksi dan 5 service terakhir di halaman utama

4. Data Master

4.1 Kategori Produk

Pengelompokan produk berdasarkan jenis (Smartphone, Aksesoris, Sparepart, dll)

Menambah Kategori

Langkah 1: Klik menu Master Data โ†’ Kategori
Langkah 2: Klik + Tambah Kategori
Langkah 3: Isi form:
  • Nama Kategori - Wajib diisi (contoh: "Smartphone")
  • Deskripsi - Wajib diisi (deskripsi kategori)
Langkah 4: Klik Simpan

4.2 Merek

Daftar merek produk (Samsung, Xiaomi, iPhone, Oppo, dll)

Menambah Merek

Langkah 1: Klik menu Master Data โ†’ Merek
Langkah 2: Klik + Tambah Merek
Langkah 3: Isi Nama Merek (wajib)
Langkah 4: Klik Simpan

4.3 Supplier

Data pemasok produk

Menambah Supplier

Langkah 1: Klik menu Master Data โ†’ Supplier
Langkah 2: Klik + Tambah Supplier
Langkah 3: Isi form:
  • Nama Supplier - Wajib
  • NO WhatsApp - Wajib
  • Alamat - Wajib
  • Email - Opsional
Langkah 4: Klik Simpan

4.4 Customer

Database pelanggan

Menambah Customer

Langkah 1: Klik menu Master Data โ†’ Customer
Langkah 2: Klik + Tambah Customer
Langkah 3: Isi form:
  • Nama Customer - Wajib
  • NO WhatsApp - Wajib
  • Alamat - Wajib
  • Email - Wajib
Langkah 4: Klik Simpan

4.5 Cabang (Branch)

Data cabang toko (untuk multi-branch)

Menambah Cabang

Langkah 1: Klik menu Master Data โ†’ Cabang
Langkah 2: Klik + Tambah Cabang
Langkah 3: Isi form:
  • Nama Cabang - Wajib
  • Alamat - Wajib
  • NO WhatsApp - Wajib
Langkah 4: Klik Simpan
๐Ÿ’ก Penting: Pastikan data master sudah lengkap sebelum input produk atau transaksi.

4. Manajemen Produk

4.1 Tambah Produk Manual

Fitur produk menggunakan sistem Multi-Cabang dengan Stok & Harga per Cabang

Langkah 1: Klik menu Produk
Langkah 2: Klik + Tambah Produk
Langkah 3: Isi form dengan sistem 3 Tab

๐Ÿ“‹ Tab 1: Data Produk

Field Tipe Wajib Keterangan
Nama Produk Text โœ… Ya Nama lengkap produk
Kategori Dropdown โœ… Ya Pilih kategori dari master
Merek Dropdown โœ… Ya Pilih merek dari master
Satuan Unit Text โœ… Ya Contoh: pcs, box, unit
Minimal Stok Number โœ… Ya Batas minimum stok (min: 0)
Deskripsi Textarea โŒ Tidak Deskripsi produk

๐Ÿ“ฆ Tab 2: Stok per Cabang

Tambahkan stok untuk setiap cabang:

Field Tipe Wajib Keterangan
Cabang Dropdown โœ… Ya Pilih cabang
Jumlah Stok Number โœ… Ya Qty stok (min: 0)
โš ๏ธ Validasi:
  • Minimal 1 stok cabang harus ditambahkan
  • Tidak boleh ada duplikasi cabang yang sama
  • Cabang di Tab 2 HARUS sama dengan cabang di Tab 3

๐Ÿ’ฐ Tab 3: Harga per Cabang

Tambahkan harga untuk setiap cabang:

Field Tipe Wajib Keterangan
Cabang Dropdown โœ… Ya Pilih cabang (harus sama dengan Tab 2)
Harga Beli Number โœ… Ya Modal/HPP produk (min: 0)
Harga Jual Number โœ… Ya Harga jual ke customer (min: 0)
โš ๏ธ Validasi:
  • Minimal 1 harga cabang harus ditambahkan
  • Tidak boleh duplikasi cabang
  • Cabang di Tab 3 HARUS sinkron dengan Tab 2
Langkah 4: Setelah semua tab terisi, klik Simpan
โœจ QR Code Otomatis: Sistem akan generate QR Code unik untuk setiap produk.

4.2 Import Produk dari Excel

Langkah 1: Di halaman Produk, klik Import Excel
Langkah 2: Download template Excel dengan klik Download Template
Langkah 3: Isi data produk di Excel sesuai kolom:
  • Nama Produk - Wajib
  • Kategori - Nama kategori yang sudah ada di master
  • Merek - Nama merek yang sudah ada di master
  • Unit - Satuan (pcs, box, dll)
  • Cabang - Nama cabang
  • Harga Beli - Harga modal
  • Harga Jual - Harga jual
  • Stok - Jumlah stok
  • Stok Minimal - Batas minimum
  • Deskripsi - Opsional
Langkah 4: Upload file Excel
Langkah 5: Klik Proses Import
๐Ÿšจ Penting Sebelum Import:
  • Pastikan kategori dan merek sudah ada di database
  • Pastikan cabang sudah dibuat
  • Format angka harus numerik (tidak boleh ada huruf)
  • Tidak boleh ada data duplikat
  • Barcode akan digenerate otomatis oleh sistem

4.3 Scan QR Code Produk

Langkah 1: Di halaman Produk, klik Scan QR Code
Langkah 2: Pilih metode:
  • Tab "Input Manual" - Ketik/paste barcode lalu Enter
  • Tab "Scan dengan Kamera" - Aktifkan kamera dan arahkan ke QR Code
Langkah 3: Sistem otomatis redirect ke halaman detail produk

4.4 Download QR Code Produk

Langkah 1: Buka detail produk (klik nama produk)
Langkah 2: Klik Unduh QR Code (JPG)
Langkah 3: File JPG akan didownload (bisa dicetak dan ditempel di produk)

4.5 Detail Produk (Show)

Halaman detail produk menampilkan:

  • โœ… QR Code produk (dapat diunduh)
  • โœ… Informasi: Nama, Kategori, Merek, Unit, Min Stock, Deskripsi
  • โœ… Total Stok - Dengan indikator warna:
    • ๐ŸŸข Hijau: Stok aman (โ‰ฅ min stock)
    • ๐ŸŸก Kuning: Stok rendah (< min stock)
    • ๐Ÿ”ด Merah: Stok habis (0)
  • โœ… Nilai Stok - Total harga beli ร— quantity
  • โœ… Tabel Stok per Cabang - Stok, status, nilai per cabang
  • โœ… Tabel Harga per Cabang - Harga beli, jual, margin (Rp & %), tanggal efektif
  • โœ… Statistik - Total stok, nilai total, tersedia di berapa cabang
Rumus Kalkulasi:
Margin (Rp) = Harga Jual - Harga Beli
Margin (%) = ((Harga Jual - Harga Beli) / Harga Beli) ร— 100%
Nilai Total Stok = Harga Beli ร— Quantity

5. Transaksi Pembelian

5.1 Buat Transaksi Pembelian

Langkah 1: Klik menu Transaksi โ†’ Pembelian
Langkah 2: Klik + Buat Pembelian
Langkah 3: Isi form informasi pembelian

๐Ÿ“‹ Form Informasi Pembelian

Field Tipe Wajib Keterangan
No. Pembelian Text - Auto-generate, readonly
Supplier Dropdown โœ… Ya Pilih dari master supplier
Cabang Dropdown โœ… Ya Cabang tujuan pembelian
Tanggal Pembelian Date โœ… Ya Default: hari ini
Catatan Textarea โŒ Tidak Catatan tambahan
Langkah 4: Tambah produk dengan 2 metode:

๐Ÿ“ฆ Metode 1: Pilih Produk (Tab 1)

a. Pilih cabang terlebih dahulu (dropdown produk aktif setelah cabang dipilih)
b. Pilih produk dari dropdown (format: Kode - Nama - Merek (Stok: xxx))
c. Masukkan Qty (jumlah yang dibeli, min: 1)
d. Harga akan auto-load dari database, bisa diubah manual
e. Subtotal = Qty ร— Harga (auto calculate)
f. Klik + Tambah

๐Ÿ“ท Metode 2: Scan QR Code (Tab 2)

a. Klik tab "Scan dengan Kamera"
b. Aktifkan kamera dan scan QR Code produk
c. Produk otomatis ditambahkan ke tabel

๐Ÿ“Š Tabel Detail Produk

Kolom Keterangan
Produk Nama produk (display only)
Stok Stok tersedia di cabang (display only)
Qty Jumlah yang dibeli (editable, min: 1)
Harga Harga beli per unit (editable, min: 0)
Subtotal Qty ร— Harga (auto calculate)
Aksi Tombol hapus baris
Langkah 5: Ulangi untuk produk lain
Langkah 6: Cek Total Pembelian (auto sum dari semua subtotal)
Langkah 7: Klik Simpan Pembelian
โœจ Otomatis: Stok produk akan bertambah setelah pembelian disimpan.
๐Ÿšจ Validasi:
  • Supplier dan Cabang wajib dipilih
  • Minimal 1 produk harus ditambahkan
  • Total pembelian harus > 0

5.2 Halaman Index Pembelian

Menampilkan daftar semua pembelian dengan kolom:

  • No. Pembelian
  • Tanggal
  • Supplier
  • Cabang
  • Total
  • Status (Badge: Pending๐ŸŸก, Completed๐ŸŸข, Cancelled๐Ÿ”ด)
  • User (yang input)
  • Aksi (Detail, Edit, Delete)

5.3 Detail Pembelian (Show)

Menampilkan informasi lengkap:

  • QR Code pembelian (dapat diunduh JPG)
  • Tabel detail produk yang dibeli
  • Informasi pembelian lengkap
  • Tombol: Cetak Faktur (PDF)

6. Transaksi Penjualan

6.1 Buat Transaksi Penjualan

Langkah 1: Klik menu Transaksi โ†’ Penjualan
Langkah 2: Klik + Buat Penjualan
Langkah 3: Isi form informasi penjualan

๐Ÿ“‹ Form Informasi Penjualan

Field Tipe Wajib Keterangan
No. Penjualan Text - Auto-generate, readonly
Cabang Dropdown โœ… Ya Cabang penjualan
Customer Dropdown โŒ Tidak Default: Umum
Tanggal Penjualan Date โœ… Ya Default: hari ini
Metode Pembayaran Dropdown โœ… Ya cash, transfer, credit
Catatan Textarea โŒ Tidak Catatan tambahan

๐Ÿ’ณ Metode Pembayaran

Metode Badge Keterangan
Tunai (cash) Cash Pembayaran tunai
Transfer (transfer) Transfer Transfer bank
Kredit (credit) Credit Hutang/tempo
Langkah 4: Tambah produk (sama seperti pembelian, ada 2 metode)

๐Ÿ“ฆ Metode Input Produk

Tab 1: Pilih Produk - Dropdown select produk

Tab 2: Scan QR Code - Input manual atau scan dengan kamera

๐Ÿ“Š Tabel Detail Produk Penjualan

Kolom Keterangan
Produk Nama produk
Stok Stok tersedia
Qty Jumlah jual (max = stok tersedia)
Harga Harga jual per unit (editable)
Diskon Diskon per item (min: 0)
Subtotal (Qty ร— Harga) - Diskon
Aksi Hapus baris
Langkah 5: Isi informasi total

๐Ÿ’ฐ Kalkulasi Total Penjualan

Field Tipe Keterangan
Subtotal Display Sum dari semua subtotal items
Diskon Number Diskon global (opsional, min: 0)
Pajak Number Pajak global (opsional, min: 0)
Total Pembayaran Display Subtotal - Diskon + Pajak
Rumus Kalkulasi:
Subtotal Item = (Qty ร— Harga) - Diskon Item
Subtotal = Sum dari semua Subtotal Item
Total Pembayaran = Subtotal - Diskon Global + Pajak
Langkah 6: Klik Simpan Penjualan
โœจ Otomatis: Stok produk akan berkurang dan profit dihitung otomatis.
๐Ÿšจ Validasi:
  • Cabang dan Metode Pembayaran wajib dipilih
  • Minimal 1 produk harus ditambahkan
  • Qty tidak boleh melebihi stok tersedia

6.2 Detail Penjualan (Show)

Menampilkan:

  • Detail produk yang dijual
  • Total: Subtotal, Diskon, Pajak, Total
  • Informasi penjualan lengkap
  • QR Code penjualan (download JPG)
  • Tombol: Cetak Faktur PDF

7. Manajemen Stok

Modul manajemen stok digunakan untuk monitoring pergerakan stok dan melakukan stock opname (inventarisasi fisik). Fitur ini membantu menjaga akurasi data stok dengan kondisi fisik barang di toko.

7.1 Pergerakan Stok (Stock Movement)

Halaman pergerakan stok menampilkan histori/riwayat semua transaksi yang mempengaruhi jumlah stok produk. Halaman ini bersifat read-only (hanya untuk melihat data, tidak ada input manual).

Akses Menu

Langkah 1: Klik menu Transaksi โ†’ Pergerakan Stok
๐Ÿ’ก Catatan Penting: Pergerakan stok tercatat secara OTOMATIS saat terjadi transaksi pembelian, penjualan, atau stock opname. Anda TIDAK bisa menambah/edit data pergerakan stok secara manual di halaman ini.

๐Ÿ“Š Kolom yang Ditampilkan

Kolom Keterangan
No Nomor urut
Tanggal Tanggal & waktu terjadinya pergerakan stok
Produk Nama produk yang stoknya berubah
Cabang Cabang tempat stok berubah
Tipe Masuk (in), Keluar (out), atau Penyesuaian (adjustment)
Qty Jumlah perubahan stok (dengan tanda + untuk masuk, - untuk keluar)
Referensi Sumber transaksi:
Pembelian, Penjualan, atau Stock Opname
Catatan Keterangan tambahan (jika ada)
User User yang melakukan transaksi

๐Ÿ” Filter Data

Gunakan filter untuk mempermudah pencarian data:

Filter Keterangan
Produk Filter berdasarkan produk tertentu (dropdown)
Cabang Filter berdasarkan cabang (dropdown)
Tipe Filter berdasarkan tipe pergerakan:
- Masuk (in)
- Keluar (out)
- Penyesuaian (adjustment)
Dari Tanggal Tanggal awal periode (date picker)
Sampai Tanggal Tanggal akhir periode (date picker)
Cara Filter: Pilih filter yang diinginkan โ†’ Klik tombol ๐Ÿ” (icon search)

๐Ÿ“‹ Jenis-jenis Pergerakan Stok

Sumber Transaksi Tipe Keterangan
Pembelian Masuk (in) Stok bertambah dari pembelian barang ke supplier
Penjualan Keluar (out) Stok berkurang karena terjual ke customer
Stock Opname Penyesuaian (adjustment) Penyesuaian stok dari hasil stock opname (bisa + atau - tergantung selisih)
๐Ÿ’ก Fungsi Pergerakan Stok:
  • Audit Trail: Semua perubahan stok tercatat dan dapat dilacak
  • Tracking Riwayat: Melihat histori stok per produk atau per cabang
  • Analisa Pergerakan: Identifikasi produk fast-moving (laku cepat) atau slow-moving (laku lambat)
  • Deteksi Anomali: Monitoring pola pergerakan stok yang tidak normal
โš ๏ธ Perhatian: Halaman ini hanya menampilkan data histori. Untuk mengubah stok, gunakan menu Stock Opname atau lakukan transaksi pembelian/penjualan.

7.2 Stock Opname (Inventarisasi Fisik)

Stock opname adalah proses menghitung fisik barang di toko dan menyesuaikannya dengan data sistem. Dilakukan secara berkala untuk memastikan akurasi data.

โš ๏ธ Catatan Penting: Stock opname langsung berstatus COMPLETED saat disimpan dan LANGSUNG mengupdate stok sistem. Sistem hanya menyimpan produk yang memiliki selisih (stok fisik โ‰  stok sistem).

Akses Menu

Langkah 1: Klik menu Transaksi โ†’ Stock Opname

Halaman Index Stock Opname

Menampilkan daftar semua stock opname yang pernah dilakukan:

Kolom Keterangan
No Nomor urut
No. Opname Nomor unik SO (format: OPYYYYMMDD0001)
Tanggal Tanggal pelaksanaan stock opname
Cabang Cabang yang di-opname
Jumlah Item Jumlah produk yang memiliki selisih
Status Pending, Selesai, atau Batal
User User yang melakukan SO
Aksi ๐Ÿ‘๏ธ Detail, โœ๏ธ Edit, ๐Ÿ—‘๏ธ Hapus

Membuat Stock Opname Baru

Langkah 1: Klik + Tambah Stock Opname
Langkah 2: Isi form di panel kanan (Informasi Stock Opname)

๐Ÿ“‹ Panel Kanan: Informasi Stock Opname

Field Tipe Wajib Keterangan
No. Opname Text - Auto-generate (readonly)
Cabang Dropdown โœ… Ya Pilih cabang yang akan di-opname
Tanggal Opname Date โœ… Ya Default: hari ini
Catatan Textarea โŒ Tidak Keterangan SO (contoh: "SO Bulanan Januari 2026")
Total Item dengan Selisih Display - Auto calculate (contoh: "5 item")
Langkah 3: Pilih cabang terlebih dahulu, kemudian klik ๐Ÿ”„ Muat Produk untuk load semua produk dari cabang tersebut
๐Ÿ’ก Catatan: Tombol "Muat Produk" baru aktif setelah cabang dipilih. Tombol ini akan memuat SEMUA produk yang ada stok di cabang yang dipilih.

๐Ÿ“ฆ Panel Kiri: Tabel Detail Produk

Setelah klik "Muat Produk", semua produk dari cabang akan ditampilkan dalam tabel:

Kolom Keterangan
No Nomor urut
Produk Nama produk - Merek (readonly)
Satuan Unit produk (readonly, contoh: pcs, box)
Stok Sistem Stok yang tercatat di database (readonly, badge biru)
Stok Fisik Input hasil hitung fisik (editable, default = stok sistem)
Selisih Auto calculate: Stok Fisik - Stok Sistem
Warna badge:
๐ŸŸข +5 jika positif (kelebihan)
๐Ÿ”ด -3 jika negatif (kekurangan)
โšช 0 jika tidak ada selisih
Catatan Input keterangan selisih (editable, opsional)
Langkah 4: Ubah nilai Stok Fisik sesuai hasil hitung fisik barang di toko
Langkah 5: Sistem otomatis menghitung Selisih dan menampilkannya dengan warna:
  • Hijau (+) = Stok fisik lebih banyak dari sistem (ada kelebihan)
  • Merah (-) = Stok fisik lebih sedikit dari sistem (ada kekurangan)
  • Abu-abu (0) = Stok cocok
Langkah 6: Isi Catatan untuk produk yang memiliki selisih (opsional, untuk audit trail)
Langkah 7: Indikator "Total Item dengan Selisih" akan otomatis update (contoh: "5 item")
Langkah 8: Jika sudah selesai, klik ๐Ÿ’พ Simpan Stock Opname
Rumus Kalkulasi Stock Opname:
Selisih = Stok Fisik - Stok Sistem

Interpretasi Selisih:
- Selisih > 0 (Positif): Ada kelebihan stok โ†’ Stok sistem akan ditambah
- Selisih < 0 (Negatif): Ada kekurangan stok โ†’ Stok sistem akan dikurangi
- Selisih = 0: Stok cocok โ†’ Produk TIDAK disimpan dalam SO (dilewati)
๐Ÿšจ Perhatian Sebelum Simpan:
  • Tombol "Simpan Stock Opname" akan DISABLED jika tidak ada produk dengan selisih
  • Stock opname berstatus completed (selesai) saat disimpan
  • Stok sistem LANGSUNG diupdate ke stok fisik saat simpan
  • Sistem HANYA menyimpan produk yang memiliki selisih (โ‰  0)
  • Pergerakan stok otomatis tercatat dengan tipe "adjustment"
  • Pastikan stok fisik sudah benar sebelum simpan (tidak bisa undo otomatis)
โœจ Setelah Simpan:
  • Status SO: Selesai (completed)
  • Stok sistem sudah diupdate sesuai stok fisik
  • Pergerakan stok tercatat di menu "Pergerakan Stok" dengan referensi "Stock Opname"
  • SO masih bisa diedit atau dihapus (tidak ada lock)

Detail Stock Opname (Show)

Klik tombol ๐Ÿ‘๏ธ untuk melihat detail SO. Halaman detail menampilkan:

  • โœ… Informasi SO: No. Opname, Tanggal, Cabang, Status, User, Catatan
  • โœ… Tabel Detail Produk: Produk, Stok Sistem, Stok Fisik, Selisih (dengan warna), Catatan
  • โœ… Tombol Aksi:
    • โœ๏ธ Edit - Edit SO
    • ๐Ÿ—‘๏ธ Hapus - Hapus SO

Edit Stock Opname

Stock opname bisa diedit kapan saja (tidak ada batasan status):

Langkah 1: Di halaman index atau detail SO, klik โœ๏ธ Edit
Langkah 2: Ubah tanggal, catatan, atau data produk
Langkah 3: Klik Update
๐Ÿ’ก Catatan Edit: Saat edit SO, detail lama akan dihapus dan diganti dengan detail baru. Pastikan data sudah benar sebelum update.

Hapus Stock Opname

Langkah 1: Klik ๐Ÿ—‘๏ธ pada SO yang ingin dihapus
Langkah 2: Konfirmasi penghapusan
โš ๏ธ Perhatian: Menghapus SO akan menghapus record SO, tapi TIDAK otomatis mengembalikan stok ke kondisi sebelumnya. Jika ingin mengembalikan stok, buat SO baru dengan nilai kebalikannya.

๐Ÿ“… Rekomendasi Jadwal Stock Opname

Frekuensi Jenis Produk Keterangan
Harian Produk high-value (HP flagship) Untuk produk dengan nilai tinggi
Mingguan Produk fast-moving (aksesoris populer) Produk yang sering terjual
Bulanan Semua produk Stock opname menyeluruh semua cabang
Tahunan Full inventory audit Audit lengkap dengan eksternal auditor (jika perlu)

๐Ÿ” Tips Stock Opname yang Efektif

  • Persiapan: Siapkan barcode scanner atau checklist produk sebelum mulai
  • Waktu: Lakukan di luar jam operasional atau saat toko tutup
  • Tim: Libatkan minimal 2 orang (1 hitung, 1 input data) untuk akurasi
  • Sistematis: Hitung per kategori atau per rak agar tidak terlewat
  • Double Check: Cek ulang produk dengan selisih besar sebelum approve
  • Dokumentasi: Foto kondisi barang jika ada selisih untuk audit trail
  • Analisa: Review penyebab selisih untuk mencegah di periode berikutnya
โš ๏ธ Penyebab Umum Selisih Stock Opname:
  • Transaksi yang belum/salah diinput ke sistem
  • Barang rusak atau cacat yang belum dicatat
  • Kehilangan atau pencurian (shrinkage)
  • Kesalahan penempatan produk (produk A tercampur dengan produk B)
  • Retur customer yang belum diproses
  • Transfer antar cabang yang belum tercatat

8. Service HP

8.1 Buat Pesanan Service

Langkah 1: Klik menu Service
Langkah 2: Klik + Buat Service
Langkah 3: Isi form dengan 4 Card

๐Ÿ“ฑ Card 1: Informasi Perangkat

Field Tipe Wajib Keterangan
Jenis Perangkat Dropdown โœ… Ya Handphone, Tablet, Laptop, Smartwatch, Lainnya
Merek Text โœ… Ya Contoh: Samsung, iPhone, Xiaomi
Model Text โœ… Ya Contoh: Galaxy S23, iPhone 14 Pro
IMEI Text โŒ Tidak Nomor IMEI perangkat

๐Ÿ”ง Card 2: Keluhan & Diagnosa

Field Tipe Wajib Keterangan
Keluhan Pelanggan Textarea โœ… Ya Deskripsi masalah yang dialami customer
Diagnosa Teknisi Textarea โŒ Tidak Hasil diagnosa awal (bisa diisi nanti)

๐Ÿ”ฉ Card 3: Spare Part Yang Digunakan

Dapat menambahkan beberapa spare part:

Field Tipe Keterangan
Spare Part Dropdown Pilih dari master produk
Qty Number Jumlah (min: 1)
Harga Satuan Number Auto-fill dari harga jual produk
Subtotal Display Qty ร— Harga Satuan (auto calculate)

Tombol: + Tambah Spare Part dan Hapus

๐Ÿ“‹ Card 4: Informasi Service

Field Tipe Wajib Keterangan
Tanggal Service Date โœ… Ya Default: hari ini
Customer Dropdown โœ… Ya Pilih dari master customer
Cabang Dropdown โœ… Ya Pilih cabang
Teknisi Display - Auto: user yang login
Prioritas Dropdown โŒ Tidak normal, urgent, very urgent
Estimasi Selesai Datetime-local โŒ Tidak Target selesai
Biaya Jasa Service Number โŒ Tidak Default: 0
Total Biaya Spare Part Display - Sum dari spare part (auto)
Estimasi Total Biaya Display - Biaya Jasa + Spare Part
Uang Muka (DP) Number โŒ Tidak Default: 0
Catatan Textarea โŒ Tidak Catatan tambahan
Rumus Kalkulasi Service:
Total Biaya Spare Part = Sum dari (Qty ร— Harga Satuan)
Estimasi Total Biaya = Biaya Jasa + Total Biaya Spare Part
Sisa Pembayaran = Estimasi Total Biaya - DP
Langkah 4: Klik Simpan
โœจ QR Code Service: Setiap service mendapat QR Code untuk tracking status.

8.2 Status Service (Lifecycle)

Urutan status service dari awal sampai selesai:

No Status Badge Keterangan
1 Menunggu Diagnosa Menunggu Service baru masuk, belum diperiksa
2 Sedang Diagnosa Diagnosa Teknisi sedang cek masalah
3 Menunggu Persetujuan Persetujuan Menunggu customer approve biaya
4 Menunggu Spare Part Spare Part Menunggu spare part datang
5 Dalam Pengerjaan Pengerjaan Sedang dikerjakan teknisi
6 Quality Control QC Pengecekan kualitas hasil service
7 Siap Diambil Siap Diambil Service selesai, menunggu diambil customer
8 Selesai Selesai Sudah diambil customer
9 Dibatalkan Dibatalkan Service dibatalkan

8.3 Update Status Service

Langkah 1: Buka detail service (klik no. service)
Langkah 2: Di bagian bawah halaman, lihat form Update Status
Langkah 3: Pilih status baru dari dropdown
Langkah 4: Tambahkan catatan progres (opsional)
Langkah 5: Klik Update Status
๐Ÿ’ก Riwayat Status: Setiap perubahan status tercatat dalam timeline dengan tanggal, status, notes, dan user yang mengupdate.

8.4 Detail Service (Show)

Halaman detail menampilkan:

  • โœ… Informasi Perangkat: Jenis, Merek, Model, IMEI
  • โœ… Keluhan & Diagnosa
  • โœ… Spare Part yang Digunakan (tabel)
  • โœ… Riwayat Status: Timeline lengkap dengan tanggal, status, notes, user
  • โœ… Informasi Service: No, Tanggal, Customer, Cabang, Teknisi, Prioritas, Status, Estimasi, Catatan
  • โœ… Biaya Service:
    • Biaya Jasa
    • Biaya Spare Part
    • Total
    • DP (Down Payment)
    • Sisa Pembayaran
  • โœ… Form Update Status (jika belum selesai/dibatalkan)
  • โœ… QR Code Service (download JPG)
  • โœ… Tombol: Print Nota

8.5 Customer Cek Status Service

Customer bisa cek status tanpa login:

Langkah 1: Buka URL: /customer
Langkah 2: Scan QR Code service atau masukkan nomor service
Langkah 3: Status dan progres akan ditampilkan

9. Laporan

9.1 Laporan Laba Rugi

Laporan analisa keuntungan dan kerugian bisnis dalam periode tertentu. Menampilkan ringkasan keuangan, grafik penjualan, produk terlaris, pelanggan terbaik, dan detail laba rugi per produk.

๐Ÿ” Filter Laporan

Filter Wajib Keterangan
Tanggal Mulai โœ… Ya Tanggal awal periode laporan
Tanggal Akhir โœ… Ya Tanggal akhir periode laporan
Cabang โŒ Tidak Dropdown: "Semua Cabang" atau pilih cabang tertentu
Setelah memilih filter, klik ๐Ÿ” Filter

๐Ÿ“Š BAGIAN 1: Summary Cards (4 Kartu Ringkasan)

Card Label Warna Rumus
Card 1 Total Penjualan Biru (bg-info) SUM(sale.total_amount) dari semua penjualan completed
Card 2 Harga Pokok Penjualan (HPP) Kuning (bg-warning) SUM(quantity ร— purchase_price) dari semua sale_details
Card 3 Laba Kotor Hijau (bg-success) Total Penjualan - HPP
Card 4 Laba Bersih Hijau/Merah (tergantung nilai) Total Penjualan - Total Diskon + Total Pajak - HPP

๐Ÿ“ˆ BAGIAN 2: Additional Metrics (3 Info Box)

Box Label Icon Rumus
Box 1 Margin Laba ๐Ÿ“Š (percent) (Laba Bersih / Total Penjualan) ร— 100%
Box 2 Total Diskon ๐Ÿท๏ธ (tags) SUM(sale.discount) dari semua penjualan
Box 3 Total Pajak ๐Ÿงพ (receipt) SUM(sale.tax) dari semua penjualan

๐Ÿ“‰ BAGIAN 3: Grafik Penjualan & Pembelian

Judul: "Grafik Penjualan & Pembelian"

Jenis: Line Chart (grafik garis)

Data yang ditampilkan:

  • Garis Biru: Total penjualan per hari (dari tabel sales)
  • Garis Merah: Total pembelian per hari (dari tabel purchases)

X-axis: Tanggal (format: "15 Jan", "16 Jan", dll)

Y-axis: Nominal dalam Rupiah

๐Ÿ† BAGIAN 4: Top 10 Produk Terlaris

Judul Card: "Top 10 Produk Terlaris"

Urutan: Diurutkan berdasarkan Total Laba tertinggi (bukan quantity)

Kolom Keterangan Rumus
No Nomor urut (1-10) -
Produk Nama produk product.name
Qty Terjual Jumlah terjual + satuan SUM(quantity) + unit (contoh: "150 pcs")
Total Penjualan Total pendapatan dari produk SUM(quantity ร— selling_price - discount)
Total Laba Total keuntungan dari produk (badge hijau/merah) SUM(quantity ร— (selling_price - purchase_price) - discount)

๐Ÿ‘ฅ BAGIAN 5: Top 10 Customer

Judul Card: "Top 10 Customer"

Urutan: Diurutkan berdasarkan Total Pembelian tertinggi

Kolom Keterangan Rumus
No Nomor urut (1-10) -
Nama Customer Nama + nomor telepon customer.name + phone
Total Transaksi Jumlah transaksi (badge biru) COUNT(*) transaksi + "transaksi"
Total Pembelian Total belanja customer SUM(total_amount)
Rata-rata Pembelian Rata-rata per transaksi AVG(total_amount)

๐Ÿ’ฐ BAGIAN 6: Laporan Laba Rugi (Tabel Detail)

Judul Card: "Laporan Laba Rugi"

Tombol Export: ๐Ÿ“„ Export PDF, ๐Ÿ“Š Export Excel

Header Tabel: "Periode: [Tanggal Mulai] - [Tanggal Akhir]"

Baris Label Nilai Warna Background
SECTION: PENDAPATAN
Header PENDAPATAN - Biru (bg-info)
Sub-item     Penjualan Rp [totalRevenue] Putih
Sub-item     Diskon Penjualan (Rp [totalSalesDiscount]) Putih
Sub-item     Pajak Rp [totalSalesTax] Putih
Subtotal Total Pendapatan Bersih Rp [totalRevenue - totalSalesDiscount + totalSalesTax] Putih (font bold)
SECTION: HPP
Header HARGA POKOK PENJUALAN (HPP) - Kuning (bg-warning)
Sub-item     HPP Rp [totalCOGS] Putih
SECTION: LABA
Total LABA KOTOR Rp [grossProfit] Hijau (bg-success, font bold)
Total LABA BERSIH Rp [netProfit] Hijau/Merah (tergantung nilai, font bold, text white)

๐Ÿ“ฆ BAGIAN 7: Laporan Laba Rugi Per Produk

Judul Card: "Laporan Laba Rugi Per Produk"

Tombol Export: ๐Ÿ“„ Export PDF, ๐Ÿ“Š Export Excel

Header Tabel (2 baris):

Nota Nama Item Total Jual Harga Pokok Potongan Laba
Laba Kotor Laba %

Isi Tabel (per produk):

Kolom Keterangan Rumus dari Controller
Nota Nomor urut Auto increment (1, 2, 3, ...)
Nama Item Nama produk - Brand product.name + " - " + brand.name
Total Jual Total penjualan produk SUM(quantity * selling_price)
Harga Pokok HPP produk SUM(quantity * purchase_price)
Potongan Total diskon produk (level item) SUM(discount) dari sale_details
Laba Kotor Laba kotor produk SUM(quantity * (selling_price - purchase_price))
Laba % Persentase laba (SUM(quantity * (selling_price - purchase_price)) / SUM(quantity * selling_price) * 100)

Baris Sub Total (setiap produk):

  • Label: "Sub Total" (colspan 2)
  • Menampilkan nilai yang sama dengan baris produk di atasnya
  • Background: abu-abu muda (bg-light)
  • Font: Bold

Baris TOTAL (Grand Total di akhir tabel):

Kolom Nilai
Label TOTAL (colspan 2)
Total Jual SUM semua total_jual
Harga Pokok SUM semua harga_pokok
Potongan SUM semua potongan
Laba Kotor SUM semua laba_kotor
Laba % Kosong

Style Grand Total: Background hijau (bg-success), Text putih, Font bold

๐Ÿงฎ Rumus Kalkulasi Lengkap

1. Total Penjualan:
SUM(sale.total_amount) WHERE status = 'completed'

2. Total Diskon:
SUM(sale.discount) WHERE status = 'completed'
Catatan: Ini diskon level transaksi (dari tabel sales)

3. Total Pajak:
SUM(sale.tax) WHERE status = 'completed'

4. Harga Pokok Penjualan (HPP):
SUM(sale_detail.quantity ร— sale_detail.purchase_price)

5. Laba Kotor:
Total Penjualan - HPP

6. Laba Bersih:
Total Penjualan - Total Diskon + Total Pajak - HPP
Catatan: Belum termasuk biaya operasional (gaji, sewa, listrik, dll)

7. Margin Laba:
(Laba Bersih / Total Penjualan) ร— 100%

--- UNTUK TABEL PER PRODUK ---

8. Total Jual (per produk):
SUM(quantity ร— selling_price) GROUP BY product_id

9. Harga Pokok (per produk):
SUM(quantity ร— purchase_price) GROUP BY product_id

10. Potongan (per produk):
SUM(discount) dari tabel sale_details GROUP BY product_id
Catatan: Ini diskon level item (beda dengan Total Diskon di atas)

11. Laba Kotor (per produk):
SUM(quantity ร— (selling_price - purchase_price)) GROUP BY product_id

12. Laba % (per produk):
(Laba Kotor per produk / Total Jual per produk) ร— 100%

๐Ÿ“ค Tombol Export yang Tersedia

  • Export PDF Laporan Utama: ๐Ÿ“„ Export PDF (di card "Laporan Laba Rugi")
  • Export Excel Laporan Utama: ๐Ÿ“Š Export Excel (di card "Laporan Laba Rugi")
  • Export PDF Per Produk: ๐Ÿ“„ Export PDF (di card "Laporan Laba Rugi Per Produk")
  • Export Excel Per Produk: ๐Ÿ“Š Export Excel (di card "Laporan Laba Rugi Per Produk")

9.2 Laporan Daftar Item (Product List)

Daftar seluruh produk beserta nilai aset

๐Ÿ“… Filter

Filter Keterangan
Cabang Semua Cabang / pilih cabang tertentu

๐Ÿ“Š Kolom yang Ditampilkan

  • Kode (B-xxxx)
  • Nama Produk
  • Kategori
  • Merek
  • Total Stok
  • Stok Min
  • Harga Beli
  • Harga Jual
  • Deskripsi
  • Aset (Harga Beli ร— Qty) - Per produk dan Total keseluruhan
Rumus Nilai Aset:
Nilai Aset per Produk = Harga Beli ร— Total Stok
Total Nilai Aset = Sum dari semua Nilai Aset per Produk

๐Ÿ“ค Export

  • Export PDF

9.3 Laporan Pendapatan Service

Laporan analisa pendapatan dari service HP dalam periode tertentu. Menampilkan ringkasan keuangan, grafik tren pendapatan harian, pendapatan per cabang, dan detail transaksi service.

๐Ÿ” Filter Laporan

Filter Wajib Keterangan
Tanggal Mulai โœ… Ya Tanggal awal periode laporan
Tanggal Akhir โœ… Ya Tanggal akhir periode laporan
Cabang โŒ Tidak Dropdown: "Semua Cabang" atau pilih cabang tertentu
Setelah memilih filter, klik ๐Ÿ” Tampilkan

Tombol Export (di atas tabel):

  • ๐Ÿ“„ Export PDF
  • ๐Ÿ“Š Export Excel
๐Ÿ’ก Catatan Format Rupiah:
  • Semua nilai pendapatan ditampilkan dalam format Rupiah PENUH dengan pemisah titik ribuan
  • Contoh: Rp 1.250.000 (bukan Rp 1.250K)
  • Format ini berlaku untuk tampilan web, export PDF, dan export Excel

๐Ÿ“Š BAGIAN 1: Summary Cards (4 Kartu Ringkasan)

Card Label Warna Format Nilai Rumus
Card 1 Total Pendapatan Hijau (bg-success) Rp 1.250.000 (format penuh dengan pemisah titik) SUM(service.total_cost)
Card 2 Biaya Jasa Service Biru (bg-info) Rp 850.000 (format penuh dengan pemisah titik) SUM(service.service_fee)
Card 3 Biaya Spare Part Kuning (bg-warning) Rp 400.000 (format penuh dengan pemisah titik) SUM(service.parts_cost)
Card 4 Sisa Pembayaran Merah (bg-danger) Rp 150.000 (format penuh dengan pemisah titik) SUM(service.remaining_payment)

๐Ÿ“ˆ BAGIAN 2: Additional Metrics (3 Info Box)

Box Label Warna Rumus
Box 1 Down Payment (DP) Biru (bg-primary) SUM(service.down_payment)
Box 2 Rata-rata DP Hijau (bg-success) (Total DP / Total Pendapatan) ร— 100%
Format: "...%"
Box 3 Rata-rata Nilai per Service Biru (bg-info) Total Pendapatan / COUNT(service)
Format: "Rp ..."

๐Ÿ“‰ BAGIAN 3: Tren Pendapatan Harian (Grafik)

Judul Card: "Tren Pendapatan Harian"

Jenis: Line Chart (grafik garis)

Warna Header: Biru (bg-info)

Data yang ditampilkan:

  • Garis Hijau: Total pendapatan per hari (dari service_date)

X-axis: Tanggal (format: "15 Jan", "16 Jan", dll)

Y-axis: Nominal dalam Rupiah (format: "Rp ...")

Rumus Data Chart: GROUP BY DATE(service_date), lalu SUM(total_cost)

๐Ÿ’ฐ BAGIAN 4: Pendapatan Per Cabang (Tabel)

Judul Card: "Pendapatan Per Cabang"

Warna Header: Hijau (bg-success)

Kolom Keterangan Rumus
Cabang Nama cabang (bold) branch.name
Jumlah Service Total service di cabang COUNT(*) GROUP BY branch_id
Biaya Jasa Total biaya jasa cabang SUM(service_fee) GROUP BY branch_id
Biaya Spare Part Total biaya spare part cabang SUM(parts_cost) GROUP BY branch_id
Total Pendapatan Total pendapatan cabang (bold) SUM(total_cost) GROUP BY branch_id
Persentase Kontribusi cabang (badge biru) (Pendapatan Cabang / Total Pendapatan Semua) ร— 100%

Baris TOTAL (Footer):

Kolom Nilai
Label TOTAL
Jumlah Service SUM semua total_services
Biaya Jasa Total service fee semua cabang
Biaya Spare Part Total parts cost semua cabang
Total Pendapatan Total pendapatan semua cabang
Persentase 100%

Style Footer: Background abu-abu muda (bg-light), Font bold

๐Ÿ“‹ BAGIAN 5: Detail Transaksi Service (Tabel)

Judul Card: "Detail Transaksi Service"

Warna Header: Abu-abu (bg-secondary)

Kolom Keterangan Data/Rumus
No. Service Nomor service (clickable link) service.service_number (link ke detail service)
Tanggal Tanggal service service_date (format: d/m/Y)
Customer Nama customer customer.name
Device Merek + Model HP device_brand + " " + device_model
Cabang Nama cabang branch.name
Biaya Jasa Biaya jasa service (align right) service.service_fee
Biaya Spare Part Biaya spare part (align right) service.parts_cost
Total Total biaya (bold, align right) service.total_cost
DP Down payment (align right) service.down_payment
Sisa Sisa pembayaran (align right, warna merah jika > 0, hijau jika 0) service.remaining_payment

Baris TOTAL (Footer):

Kolom Nilai
Label TOTAL: (colspan 5, align right)
Biaya Jasa SUM(service_fee)
Biaya Spare Part SUM(parts_cost)
Total SUM(total_cost)
DP SUM(down_payment)
Sisa SUM(remaining_payment)

Style Footer: Font bold

Fitur Tabel: DataTables (pagination, search, sorting), default 25 rows per page, order by Tanggal desc

๐Ÿงฎ Rumus Kalkulasi Lengkap

1. Total Pendapatan:
SUM(service.total_cost) WHERE service_date BETWEEN start_date AND end_date
Catatan: total_cost = service_fee + parts_cost

2. Biaya Jasa Service:
SUM(service.service_fee)

3. Biaya Spare Part:
SUM(service.parts_cost)

4. Total Down Payment (DP):
SUM(service.down_payment)

5. Sisa Pembayaran:
SUM(service.remaining_payment)
Catatan: remaining_payment = total_cost - down_payment

6. Rata-rata DP (%):
(Total Down Payment / Total Pendapatan) ร— 100%

7. Rata-rata Nilai per Service:
Total Pendapatan / COUNT(service)

--- UNTUK TABEL PER CABANG ---

8. Pendapatan Per Cabang:
SUM(total_cost) GROUP BY branch_id

9. Persentase Kontribusi Cabang:
(Pendapatan Cabang / Total Pendapatan Semua Cabang) ร— 100%

๐Ÿ“ค Tombol Export yang Tersedia

  • Export PDF: ๐Ÿ“„ Export PDF - Download laporan dalam format PDF
  • Export Excel: ๐Ÿ“Š Export Excel - Download laporan dalam format Excel (lengkap dengan ringkasan, per cabang, dan detail transaksi)

9.4 Laporan Service Berdasarkan Status

Laporan ini menampilkan monitoring distribusi status service, mendeteksi service yang tertunda, dan memantau service yang siap diambil customer. Laporan ini sangat berguna untuk monitoring operasional service dan customer service.

๐Ÿ“… Filter Laporan

Filter yang tersedia untuk mengatur tampilan data:

Filter Tipe Keterangan
Tanggal Mulai Date Input Wajib diisi. Tanggal awal periode laporan
Tanggal Akhir Date Input Wajib diisi. Tanggal akhir periode laporan
Cabang Dropdown Opsional. Pilih "Semua Cabang" atau cabang tertentu
Tombol Aksi: ๐Ÿ” Tampilkan

๐Ÿ“Š BAGIAN 1: Summary Cards

Menampilkan ringkasan utama dengan 4 kartu informasi:

Card Warna Icon Label Keterangan
Card 1 bg-info (Biru) ๐Ÿ”ง fa-wrench Total Service Total semua service dalam periode (count)
Card 2 bg-success (Hijau) โœ… fa-check-circle Selesai Jumlah service dengan status "selesai" (count)
Card 3 bg-warning (Kuning) โš ๏ธ fa-exclamation-triangle Tertunda (>3 hari) Service yang berjalan > 3 hari dari tanggal service (count)
Card 4 bg-primary (Biru Tua) ๐Ÿ”” fa-bell Siap Diambil Service dengan status "siap diambil" (count)

๐Ÿ“Š BAGIAN 2: Distribusi Status Service (Pie Chart)

Visualisasi grafik berbentuk Pie Chart yang menampilkan distribusi persentase tiap status service:

  • Judul: "Distribusi Status Service"
  • Warna Card Header: bg-info (Biru)
  • Tipe Chart: Pie Chart (Chart.js)
  • Data: Menampilkan semua status yang ada dengan warna berbeda:
    • Menunggu Diagnosa - Kuning (#FFC107)
    • Sedang Diagnosa - Orange (#FF9800)
    • Menunggu Persetujuan - Biru (#2196F3)
    • Menunggu Spare Part - Ungu (#9C27B0)
    • Dalam Pengerjaan - Cyan (#00BCD4)
    • Quality Control - Hijau Tua (#4CAF50)
    • Siap Diambil - Hijau Muda (#8BC34A)
    • Selesai - Hijau (#4CAF50)
    • Dibatalkan - Merah (#F44336)
  • Legend Position: Bottom (bawah chart)
  • Responsive: Ya, menyesuaikan ukuran layar

๐Ÿ“Š BAGIAN 3: Statistik Per Status (Tabel)

Tabel yang menampilkan rincian per status dalam bentuk tabel:

Kolom Alignment Keterangan
Status Left Nama status (ucwords/kapital per kata)
Jumlah Center Count service dengan status tersebut
Total Nilai Right Sum total_cost dari service dengan status tersebut (format Rupiah)
FOOTER (bg-light, bold): TOTAL | Total Count | Total Sum Nilai

Warna Card Header: bg-info (Biru)

Judul Card: "Statistik Per Status"

๐Ÿ“‹ BAGIAN 4: Service Tertunda (>3 hari)

Kondisi Tampil: Hanya muncul jika ada service yang tertunda (>3 hari dari tanggal service)

Warna Card Header: bg-warning (Kuning)

Judul Card: "Service Tertunda (>3 hari)"

Kolom Keterangan
No. Service Service number (clickable link ke detail service)
Tanggal Tanggal service (format: dd/mm/yyyy)
Customer Nama customer
Device Merk dan model device (contoh: "Samsung Galaxy A52")
Status Status saat ini (badge warning kuning)
Teknisi Nama teknisi atau "-" jika belum ada
Lama (Hari) Jumlah hari sejak tanggal service sampai sekarang (contoh: "5 hari")

๐Ÿ“‹ BAGIAN 5: Service Siap Diambil

Kondisi Tampil: Hanya muncul jika ada service dengan status "siap diambil"

Warna Card Header: bg-primary (Biru Tua)

Judul Card: "Service Siap Diambil"

Kolom Alignment Keterangan
No. Service Left Service number (clickable link ke detail service)
Tanggal Left Tanggal service (format: dd/mm/yyyy)
Customer Left Nama customer
Device Left Merk dan model device
Teknisi Left Nama teknisi atau "-"
Total Biaya Right Total cost service (format Rupiah)
Sisa Bayar Right Remaining payment (format Rupiah)

๐Ÿ“‹ BAGIAN 6: Detail Semua Service (DataTables)

Tabel lengkap semua service dengan fitur DataTables (sortir, search, pagination):

Warna Card Header: bg-secondary (Abu-abu)

Judul Card: "Detail Semua Service"

Kolom Alignment Keterangan
No. Service Left Service number (clickable link)
Tanggal Left Tanggal service (dd/mm/yyyy)
Customer Left Nama customer
Device Left Merk dan model device
Status Left Badge dengan warna sesuai status:
  • menunggu diagnosa โ†’ warning (kuning)
  • sedang diagnosa โ†’ info (biru muda)
  • menunggu persetujuan โ†’ primary (biru tua)
  • menunggu spare part โ†’ secondary (abu-abu)
  • dalam pengerjaan โ†’ info (biru muda)
  • quality control โ†’ success (hijau)
  • siap diambil โ†’ primary (biru tua)
  • selesai โ†’ success (hijau)
  • dibatalkan โ†’ danger (merah)
Cabang Left Nama cabang
Teknisi Left Nama teknisi atau "-"
Total Right Total cost (format Rupiah)

Fitur DataTables:

  • Responsive: Ya
  • Length Change: Ya (bisa ganti jumlah baris per halaman)
  • Page Length Default: 25 baris
  • Order Default: Kolom Tanggal (index 1), descending (terbaru di atas)
  • Search: Ya (kotak pencarian global)
  • Pagination: Ya

๐Ÿงฎ Rumus dan Perhitungan

Berikut rumus yang digunakan dalam laporan ini:

  1. Total Service: COUNT semua service dalam periode
  2. Selesai: COUNT service dengan status = 'selesai'
  3. Tertunda (>3 hari): COUNT service dimana (NOW - service_date) > 3 hari DAN status โ‰  'selesai' DAN status โ‰  'dibatalkan'
  4. Siap Diambil: COUNT service dengan status = 'siap diambil'
  5. Lama Service (hari): DATEDIFF(NOW, service_date) untuk service yang belum selesai
  6. Total Nilai per Status: SUM(total_cost) GROUP BY status
  7. Persentase Distribusi Status: (COUNT status tertentu / Total Service) ร— 100%

๐Ÿ“ค Tombol Export yang Tersedia

  • Export PDF: ๐Ÿ“„ Export PDF - Download laporan dalam format PDF (target="_blank", buka tab baru)
  • Export Excel: ๐Ÿ“Š Export Excel - Download laporan dalam format Excel (lengkap dengan ringkasan, statistik per status, dan detail semua service)

Parameter Export: Semua filter yang dipilih (start_date, end_date, branch_id) akan di-pass ke URL export.

9.5 Laporan Kinerja Teknisi

Laporan ini menampilkan evaluasi performa dan produktivitas teknisi dalam menangani service. Berguna untuk penilaian kinerja, bonus, dan alokasi tugas teknisi.

๐Ÿ“… Filter Laporan

Filter yang tersedia untuk mengatur tampilan data:

Filter Tipe Keterangan
Tanggal Mulai Date Input Wajib diisi. Tanggal awal periode laporan
Tanggal Akhir Date Input Wajib diisi. Tanggal akhir periode laporan
Teknisi Dropdown Opsional. Pilih "Semua Teknisi" atau teknisi tertentu untuk melihat data spesifik
Cabang Dropdown Opsional. Pilih "Semua Cabang" atau cabang tertentu
Tombol Aksi: ๐Ÿ” Tampilkan

๐Ÿ“Š BAGIAN 1: Summary Cards

Menampilkan ringkasan utama dengan 4 kartu informasi:

Card Warna Icon Label Keterangan
Card 1 bg-info (Biru) ๐Ÿ”ง fa-wrench Total Service Total semua service dalam periode (count)
Card 2 bg-success (Hijau) โœ… fa-check-circle Selesai Jumlah service dengan status "selesai" (count)
Card 3 bg-warning (Kuning) ๐Ÿ‘ฅ fa-users Jumlah Teknisi Total teknisi yang menangani service (count distinct teknisi)
Card 4 bg-primary (Biru Tua) ๐Ÿ’ฐ fa-money-bill-wave Total Pendapatan Total pendapatan dari service yang selesai (format penuh: "Rp 1.250.000")

๐Ÿ“Š BAGIAN 2: Grafik Kinerja Teknisi (Bar Chart Stacked)

Visualisasi grafik berbentuk Stacked Bar Chart yang menampilkan kinerja per teknisi:

  • Judul: "Grafik Kinerja Teknisi"
  • Warna Card Header: bg-info (Biru)
  • Tipe Chart: Bar Chart (Chart.js) - Stacked (bertumpuk)
  • Sumbu X: Nama teknisi
  • Sumbu Y: Jumlah service (begin at zero)
  • Dataset (3 layer bertumpuk):
    • Selesai - Hijau (#4CAF50)
    • Dalam Proses - Biru (#2196F3)
    • Dibatalkan - Merah (#F44336)
  • Legend Position: Top (atas chart)
  • Responsive: Ya, menyesuaikan ukuran layar
  • Stacked Mode: Ya (sumbu X dan Y di-stack)

๐Ÿ“Š BAGIAN 3: Statistik Per Teknisi (Tabel)

Tabel detail yang menampilkan statistik lengkap setiap teknisi:

Warna Card Header: bg-success (Hijau)

Judul Card: "Statistik Per Teknisi"

Kolom Alignment Format/Badge Keterangan
Teknisi Left Bold Nama teknisi (bold/tebal)
Total Service Center Plain text Jumlah total service yang ditangani teknisi
Selesai Center badge badge-success (hijau) Jumlah service yang selesai
Dalam Proses Center badge badge-info (biru muda) Jumlah service yang masih dalam proses
Dibatalkan Center badge badge-danger (merah) Jumlah service yang dibatalkan
Success Rate Center badge dengan warna dinamis:
  • โ‰ฅ 80% โ†’ badge-success (hijau)
  • 60-79% โ†’ badge-warning (kuning)
  • < 60% โ†’ badge-danger (merah)
Persentase keberhasilan (contoh: "85%")
Avg. Durasi Center Plain text + " hari" Rata-rata durasi pengerjaan (contoh: "3 hari")
Total Pendapatan Right Format Rupiah Total pendapatan dari semua service teknisi (contoh: "Rp 5.250.000")
FOOTER (bg-light, bold): TOTAL | Sum Total Service | Sum Selesai | Sum Dalam Proses | Sum Dibatalkan | "-" | "-" | Sum Total Pendapatan

๐Ÿ“‹ BAGIAN 4: Detail Service (DataTables)

Tabel lengkap semua service dengan fitur DataTables (sortir, search, pagination):

Warna Card Header: bg-secondary (Abu-abu)

Judul Card: "Detail Service"

Kolom Alignment Keterangan
No. Service Left Service number (clickable link ke detail service)
Tanggal Left Tanggal service (format: dd/mm/yyyy)
Customer Left Nama customer
Device Left Merk dan model device (contoh: "Samsung Galaxy A52")
Teknisi Left Nama teknisi atau "-" jika belum ada
Status Left Badge dengan warna sesuai status:
  • selesai โ†’ badge-success (hijau)
  • dibatalkan โ†’ badge-danger (merah)
  • siap diambil โ†’ badge-primary (biru tua)
  • lainnya โ†’ badge-warning (kuning)
Durasi Left Durasi pengerjaan:
  • Jika sudah selesai: selisih hari dari service_date ke completed_at (contoh: "5 hari")
  • Jika belum selesai: selisih hari dari service_date ke sekarang + "(berjalan)" (contoh: "3 hari (berjalan)")
Total Right Total cost service (format Rupiah)

Fitur DataTables:

  • Responsive: Ya
  • Length Change: Ya (bisa ganti jumlah baris per halaman)
  • Page Length Default: 25 baris
  • Order Default: Kolom Tanggal (index 1), descending (terbaru di atas)
  • Search: Ya (kotak pencarian global)
  • Pagination: Ya

๐Ÿงฎ Rumus dan Perhitungan

Berikut rumus yang digunakan dalam laporan ini:

  1. Total Service: COUNT semua service dalam periode
  2. Selesai: COUNT service dengan status = 'selesai'
  3. Jumlah Teknisi: COUNT DISTINCT(technician_id)
  4. Total Pendapatan (Card): SUM(total_cost) WHERE status = 'selesai' / 1000 (dalam ribuan)
  5. Total Service Per Teknisi: COUNT service WHERE technician_id = X
  6. Selesai Per Teknisi: COUNT service WHERE technician_id = X AND status = 'selesai'
  7. Dalam Proses Per Teknisi: COUNT service WHERE technician_id = X AND status NOT IN ('selesai', 'dibatalkan')
  8. Dibatalkan Per Teknisi: COUNT service WHERE technician_id = X AND status = 'dibatalkan'
  9. Success Rate (%): (Selesai / Total Service) ร— 100
  10. Avg. Durasi (hari): AVG(DATEDIFF(completed_at, service_date)) untuk service yang selesai
  11. Total Pendapatan Per Teknisi: SUM(total_cost) WHERE technician_id = X
  12. Durasi Service (untuk tabel detail):
    • Jika selesai: DATEDIFF(completed_at, service_date)
    • Jika belum selesai: DATEDIFF(NOW, service_date)

๐ŸŽจ Badge Warna Success Rate

Success Rate menggunakan badge dinamis dengan aturan:

  • ๐ŸŸข badge-success (Hijau): Success Rate โ‰ฅ 80%
  • ๐ŸŸก badge-warning (Kuning): Success Rate 60-79%
  • ๐Ÿ”ด badge-danger (Merah): Success Rate < 60%

๐Ÿ“ค Tombol Export yang Tersedia

  • Export PDF: ๐Ÿ“„ Export PDF - Download laporan dalam format PDF (target="_blank", buka tab baru)
  • Export Excel: ๐Ÿ“Š Export Excel - Download laporan dalam format Excel (lengkap dengan ringkasan, statistik per teknisi, dan detail service)

Parameter Export: Semua filter yang dipilih (start_date, end_date, technician_id, branch_id) akan di-pass ke URL export.

10. Pengaturan Sistem

Modul pengaturan sistem digunakan untuk mengelola user, roles, dan permissions menggunakan package Spatie Laravel Permission. Fitur ini memerlukan permission khusus untuk mengaksesnya.

10.1 Manajemen Roles (Peran)

Roles adalah peran atau jabatan user dalam sistem yang menentukan hak akses (permissions) yang dimiliki user.

๐Ÿ“‹ Halaman Daftar Roles

Menampilkan tabel dengan kolom:

Kolom Keterangan
NO. Nomor urut
Nama Role Nama role (contoh: Super Admin, Admin, Kasir, Teknisi, Customer)
Permission Daftar permission yang dimiliki role (ditampilkan sebagai button hijau kecil)
Aksi Tombol Edit (kuning) dan Hapus (merah)

โž• Menambah Role Baru

Langkah 1: Klik menu Pengaturan โ†’ Roles
Langkah 2: Klik tombol โœš Tambah di kanan atas
Langkah 3: Modal "Tambah Role" akan muncul. Isi form dengan field berikut:
Field Tipe Wajib Keterangan
Nama Role Text Input โœ… Ya Nama role harus unique (tidak boleh sama dengan role yang sudah ada)
Permission Checkbox (inline) โŒ Tidak Centang permission yang ingin diberikan ke role ini. Semua permission yang ada di database akan ditampilkan sebagai checkbox
Langkah 4: Klik tombol ๐Ÿ“ค Simpan
๐Ÿ’ก Catatan: Setelah klik Simpan, role baru akan langsung ter-assign dengan permissions yang sudah dicentang.

โœ๏ธ Edit Role

Langkah 1: Di halaman daftar Roles, klik tombol โœ๏ธ pada row role yang ingin diedit
Langkah 2: Modal "Edit Data" akan muncul dengan form yang sama seperti form tambah
Langkah 3: Ubah nama role atau centang/uncheck permissions
Langkah 4: Klik ๐Ÿ“ค Simpan
๐Ÿ’ก Catatan: Permissions akan di-sync ulang dengan pilihan baru menggunakan method syncPermissions()

๐Ÿ—‘๏ธ Hapus Role

Langkah 1: Klik tombol ๐Ÿ—‘๏ธ pada role yang ingin dihapus
Langkah 2: Konfirmasi penghapusan (akan muncul dialog konfirmasi)
โš ๏ธ Perhatian:
  • Role yang dihapus tidak dapat dikembalikan
  • User yang memiliki role ini akan kehilangan semua permissions dari role tersebut
  • Sebaiknya jangan hapus role default sistem

10.2 Manajemen Permissions (Hak Akses)

Halaman permissions menampilkan daftar READ-ONLY dari semua permission yang tersedia di sistem. Halaman ini TIDAK MEMILIKI fitur tambah, edit, atau hapus permission.

๐Ÿ“‹ Halaman Daftar Permissions

Menampilkan tabel dengan kolom:

Kolom Keterangan
NO. Nomor urut
Nama Permission Nama permission (contoh: products.index, sales.create, users.delete, dll)
๐Ÿ’ก Catatan Penting:
  • Halaman ini HANYA untuk melihat daftar permissions yang ada
  • TIDAK ADA tombol Tambah, Edit, atau Hapus permission
  • Permissions di-manage langsung di database atau via seeder
  • Untuk assign permission ke role, gunakan halaman Roles (Section 10.1)

๐Ÿ”‘ Format Nama Permission

Permission di sistem ini menggunakan format: module.action

Contoh permission yang umum ada di sistem:

Modul Contoh Permission
Products products.index, products.create, products.edit, products.delete
Sales sales.index, sales.create, sales.edit, sales.delete
Purchases purchases.index, purchases.create, purchases.edit, purchases.delete
Services services.index, services.create, services.edit, services.delete
Roles roles.index, roles.create, roles.edit, roles.delete
Users users.index, users.create, users.edit, users.delete
Permissions permissions.index

๐Ÿ“Œ Cara Assign Permission ke Role

Karena halaman Permissions hanya READ-ONLY, untuk memberikan permission ke role dilakukan di halaman Roles:

Langkah 1: Buka halaman Pengaturan โ†’ Roles
Langkah 2: Klik tombol Edit pada role yang ingin diatur
Langkah 3: Di form edit, centang/uncheck permission yang ingin diberikan/dicabut
Langkah 4: Klik Simpan

10.3 Manajemen Users (Pengguna)

Kelola akun pengguna yang dapat mengakses sistem.

๐Ÿ“‹ Halaman Daftar Users

Menampilkan tabel dengan kolom:

Kolom Keterangan
NO. Nomor urut
Nama User Nama lengkap user
Role Role yang dimiliki user (ditampilkan sebagai badge hijau)
Aksi Tombol Edit (kuning) dan Hapus (merah)

โž• Menambah User Baru

Langkah 1: Klik menu Pengaturan โ†’ Users
Langkah 2: Klik tombol โœš Tambah di kanan atas
Langkah 3: Modal "Tambah User" akan muncul. Isi form dengan field berikut:
Field Tipe Wajib Keterangan
Nama User Text Input โœ… Ya Nama lengkap user
Email Email Input โœ… Ya Email harus valid dan unique (digunakan untuk login)
Password Password Input โœ… Ya Password untuk login
Konfirmasi Password Password Input โœ… Ya Harus sama dengan password (validasi konfirmasi)
Role Checkbox (inline) โŒ Tidak Centang role yang ingin diberikan ke user. User bisa memiliki LEBIH DARI 1 role
Langkah 4: Klik tombol ๐Ÿ“ค Simpan
๐Ÿ’ก Catatan Penting:
  • Field yang ada HANYA: Nama User, Email, Password, Konfirmasi Password, dan Role
  • TIDAK ADA field: Cabang, No. Telepon, Alamat, atau Status
  • User bisa memiliki multiple roles (checkbox, bukan dropdown)
  • Password akan di-hash dengan bcrypt sebelum disimpan

โœ๏ธ Edit User

Langkah 1: Di halaman daftar Users, klik tombol โœ๏ธ pada row user yang ingin diedit
Langkah 2: Modal "Edit Data" akan muncul dengan form yang mirip seperti form tambah
Langkah 3: Ubah data yang diperlukan (nama, email, role)
Langkah 4: Password: Kosongkan field password jika TIDAK ingin mengubah password. Jika diisi, maka password lama akan diganti dengan yang baru
Langkah 5: Klik ๐Ÿ“ค Simpan
๐Ÿ’ก Logika Update Password:
  • Jika field password KOSONG โ†’ password tidak diubah (tetap password lama)
  • Jika field password DIISI โ†’ password lama akan di-replace dengan password baru (di-hash)

๐Ÿ—‘๏ธ Hapus User

Langkah 1: Klik tombol ๐Ÿ—‘๏ธ pada user yang ingin dihapus
Langkah 2: Konfirmasi penghapusan (akan muncul dialog konfirmasi)
โš ๏ธ Perhatian:
  • User yang dihapus tidak dapat dikembalikan
  • Riwayat transaksi yang dibuat user tetap tersimpan (tidak dihapus)

๐Ÿ” Validasi Form

Form tambah dan edit user memiliki validasi JavaScript:

  • Nama User: Tidak boleh kosong
  • Email: Tidak boleh kosong, harus format email valid
  • Password (Tambah): Wajib diisi
  • Konfirmasi Password: Harus sama dengan password
  • Error akan muncul dengan class is-invalid dan pesan di bawah field
  • Modal akan auto-buka kembali jika ada error dari server

11. Tips & Troubleshooting

11.1 Tips Penggunaan

๐ŸŽฏ Best Practices

  • Siapkan Master Data Dulu - Buat kategori, merek, supplier, customer, dan cabang sebelum input produk
  • Import Excel untuk Bulk - Gunakan fitur import Excel untuk input produk massal (lebih cepat)
  • Perhatikan Stok & Harga per Cabang - Pastikan cabang di Tab Stok = cabang di Tab Harga
  • Cek Stok Harian - Monitor stok menipis setiap hari dari dashboard
  • Update Status Service - Update progres service berkala agar customer informed
  • Cetak QR Code - Print QR Code dan tempel di produk untuk scan cepat saat transaksi
  • Rekap Laporan Bulanan - Export laporan laba rugi setiap akhir bulan untuk evaluasi
  • Backup Data Rutin - Backup database minimal 1 minggu sekali

โšก Shortcut Cepat

  • Scan QR di Penjualan - Gunakan scan QR saat transaksi untuk input produk lebih cepat
  • Filter Tanggal - Manfaatkan filter tanggal di semua laporan
  • Search Box - Gunakan search untuk cari produk/customer/transaksi cepat
  • Export Excel - Export laporan ke Excel untuk analisa lebih lanjut di spreadsheet

11.2 Troubleshooting

โŒ Masalah: QR Code Tidak Tergenerate

Solusi:
  • Pastikan library BaconQrCode sudah terinstall (cek composer)
  • Periksa permission folder public/qrcodes (harus writable)
  • Restart web server
  • Cek log error di storage/logs/laravel.log

โŒ Masalah: Import Excel Gagal

Solusi:
  • Pastikan format Excel sesuai template yang didownload
  • Cek kategori dan merek sudah ada di database
  • Cek cabang sudah dibuat
  • Pastikan tidak ada data duplikat
  • Periksa format angka (harga & stok harus numerik, tidak boleh ada huruf)
  • Jangan ada baris kosong di tengah data
  • Nama kategori, merek, cabang harus sama persis dengan yang ada di database (case sensitive)

โŒ Masalah: Cabang di Stok & Harga Tidak Sinkron

Solusi:
  • Saat tambah produk, pastikan cabang di Tab 2 (Stok) sama dengan Tab 3 (Harga)
  • Jika sudah terlanjur, edit produk dan tambahkan cabang yang kurang
  • Validasi sistem akan menolak jika cabang tidak sinkron

โŒ Masalah: Stok Tidak Update Setelah Transaksi

Solusi:
  • Periksa transaksi sudah tersimpan dengan benar (cek di index)
  • Cek tidak ada error saat simpan transaksi
  • Refresh halaman produk (Ctrl + F5)
  • Periksa log error di server
  • Pastikan cabang di transaksi ada di produk

โŒ Masalah: Qty Penjualan Melebihi Stok

Solusi:
  • Sistem akan otomatis validasi qty tidak boleh > stok tersedia
  • Jika tetap bisa, berarti ada bug - hubungi developer
  • Cek stok di cabang yang dipilih (bukan total stok semua cabang)

โŒ Masalah: Kamera QR Tidak Muncul

Solusi:
  • Pastikan browser mendukung akses kamera (Chrome, Firefox, Edge recommended)
  • Berikan permission kamera saat diminta browser
  • Gunakan HTTPS (jika deploy online, localhost bisa HTTP)
  • Coba browser lain jika masih tidak bisa
  • Pastikan kamera tidak sedang digunakan aplikasi lain

โŒ Masalah: Laporan Tidak Muncul / Kosong

Solusi:
  • Periksa filter tanggal sudah benar
  • Pastikan ada data di periode yang dipilih
  • Cek filter cabang (jika pilih cabang tertentu, pastikan ada data di cabang tersebut)
  • Clear cache browser (Ctrl + Shift + Del)
  • Coba periode tanggal yang berbeda untuk testing

โŒ Masalah: Tidak Bisa Login

Solusi:
  • Periksa email dan password benar
  • Pastikan akun tidak dinonaktifkan (hubungi admin)
  • Clear cookies browser
  • Coba browser lain atau mode incognito
  • Hubungi admin untuk reset password jika lupa

โŒ Masalah: Margin/Laba Negatif di Laporan

Solusi:
  • Periksa harga jual < harga beli (rugi)
  • Cek apakah ada diskon terlalu besar
  • Review harga jual produk yang margin-nya negatif
  • Sesuaikan harga jual agar profit positif

11.3 Keamanan Data

๐Ÿ”’ Praktik Keamanan

  • Gunakan password kuat (minimal 8 karakter, kombinasi huruf besar-kecil-angka-simbol)
  • Jangan share password antar user
  • Logout setelah selesai menggunakan aplikasi
  • Jangan akses dari komputer publik/warnet
  • Ganti password secara berkala (3-6 bulan sekali)
  • Backup database ke storage eksternal (Google Drive, Dropbox, dll)
  • Gunakan HTTPS jika deploy online (SSL Certificate)

11.4 Maintenance Rutin

Periode Aktivitas yang Harus Dilakukan
Harian - Cek stok menipis dari dashboard
- Update status service yang sedang berjalan
- Review transaksi hari ini
Mingguan - Backup database
- Review laporan penjualan minggu ini
- Cek service yang tertunda
- Update harga produk jika ada perubahan
Bulanan - Export laporan laba rugi lengkap
- Analisa profit per produk
- Inventory check (stock opname)
- Review kinerja teknisi
- Evaluasi produk slow-moving
3 Bulan - Ganti password semua user
- Cleanup data lama (transaksi >1 tahun ke arsip)
- Optimize database (VACUUM/OPTIMIZE TABLE)
- Review & update master data

11.5 FAQ (Frequently Asked Questions)

โ“ Apakah bisa ubah harga produk setelah dibuat?

Jawab: Ya, bisa. Edit produk โ†’ Tab 3 (Harga per Cabang) โ†’ ubah harga beli/jual โ†’ simpan. Perubahan harga tidak mempengaruhi transaksi yang sudah lewat.

โ“ Bagaimana cara tambah cabang baru untuk produk yang sudah ada?

Jawab: Edit produk โ†’ Tab 2 (tambah stok cabang baru) โ†’ Tab 3 (tambah harga cabang baru) โ†’ simpan. Pastikan cabang yang ditambah di Tab 2 dan Tab 3 sama.

โ“ Apakah bisa hapus transaksi yang sudah disimpan?

Jawab: Tergantung role user. Admin/Super Admin bisa hapus transaksi. Namun sebaiknya jangan hapus untuk menjaga integritas data. Jika ada kesalahan, buat transaksi koreksi.

โ“ Bagaimana cara melihat history perubahan harga produk?

Jawab: Di halaman detail produk โ†’ Tabel Harga per Cabang โ†’ ada kolom "Tanggal Efektif" yang menunjukkan kapan harga terakhir diupdate.

โ“ Apakah laporan bisa difilter per kasir/teknisi?

Jawab: Laporan kinerja teknisi bisa filter per teknisi. Untuk laporan penjualan per kasir, belum tersedia filter (tapi data kasir ditampilkan di tabel transaksi).

โ“ Bagaimana cara handle produk yang ada di 2 cabang dengan harga berbeda?

Jawab: Sistem sudah support Multi-Harga per Cabang. Di Tab 3, tambahkan harga untuk masing-masing cabang dengan nilai yang berbeda.

โ“ Apakah bisa cetak label QR Code dalam jumlah banyak sekaligus?

Jawab: Saat ini harus download QR Code satu per satu dari halaman detail produk. Untuk cetak massal, bisa gunakan software label printing eksternal.