v8.9.45
Cetak Invoice Rx 2 Baris & Pembatasan Stok Karyawan
Format Rx pada cetak invoice kini tampil 2 baris terpisah (R dan L masing-masing satu baris). Label ukuran lensa ditulis lengkap: Dm.A (Lebar) dan Dm.B (Tinggi) di seluruh tampilan.
Role Karyawan/Staff tidak dapat melihat atau menggunakan tombol tambah/kurang stok di Master Data. Hanya Admin & Keluarga yang dapat mengubah stok produk.
v8.9.44
Print Thermal — Redesain Struk & Lebih Narrow
Tampilan struk thermal dirancang ulang: nama toko lebih besar (16px bold), separator solid/dashed untuk hirarki visual, nama produk dengan baris qty pcs di bawah jika lebih dari 1, badge LUNAS lebih besar & tegas, footer dengan double-line. Konten lebih narrow (max-width 72mm) untuk tampilan thermal yang proper.
v8.9.43
Print Thermal — Konten Penuh & Tanpa Header URL Chrome
Konten struk kini menggunakan width:100% sehingga otomatis mengisi penuh lebar kertas thermal (58mm atau 80mm). Tombol "Simpan PDF" dihapus — cukup klik Print Struk lalu di dialog Chrome: pilih printer thermal → hilangkan centang Headers and footers → Print.
v8.9.38
Unduh Data Sekarang — Export Master Data ke Excel
Tombol "Unduh Data Sekarang" ditambahkan di semua halaman Master Data (Frame, Lensa, Softlens, Aksesoris). File Excel yang diunduh berisi seluruh data produk aktif termasuk stok terkini — bisa langsung dijadikan base untuk tambah produk baru lalu re-import.
v8.9.37
Kas Masuk: No. Invoice, Nama Pembeli & Produk
Breakdown top-3 di modal Kas Masuk per Kategori kini menampilkan nama pembeli · no. invoice dan di bawahnya daftar produk yang dibeli — lebih lengkap dan mudah diaudit.
v8.9.35
Koreksi Label Dm.A / Dm.B
Dm.A = Lebar (L), Dm.B = Tinggi (T) — Label di form Pengukuran Lensa dan kolom CSV export dikoreksi agar sesuai konvensi optik yang benar.
v8.9.34
TP Kanan/Kiri + Ket. Faset di Pengukuran Lensa
TP dipisah Kanan (OD) & Kiri (OS) — Field TP dipisah jadi dua kolom terpisah. Data invoice lama tetap terbaca normal.
Field Ket. Faset — Kolom baru untuk keterangan jenis faset lensa (teks bebas, misal: Flat, V-bevel). Tersimpan di invoice, tampil di struk & pesan WA ke supplier.
v8.9.32
Log Audit — Semua Tindakan Hapus Tercatat
Audit Log Lengkap — Seluruh tindakan penghapusan data kini dicatat di log audit (Pengaturan → Log Audit): hapus produk satuan, hapus semua produk per kategori, hapus customer, arsipkan invoice, hapus pengeluaran, hapus supplier, dan hapus akun pengguna. Log menyimpan nama pelaku, email, dan waktu kejadian (maks. 50 entri terbaru).
v8.9.31
Hapus Semua Produk per Kategori
Bulk Delete Master Data — Admin kini bisa menghapus seluruh data produk dalam satu kategori sekaligus (Frame, Lensa, Softlens, atau Aksesoris) lewat tombol Hapus Semua di pojok kiri header tabel. Muncul konfirmasi dengan jumlah item sebelum data dihapus.
FIX
Hotfix v8.9.30 — Data Kosong Setelah Login (Compat Firestore Rules)
Fix: Data Ter-load Setelah Login — Setelah rules Firestore diperketat (v8.9.29), app mencoba baca data sebelum user login dan mendapat permission-denied. Akibatnya data tidak pernah dimuat meski login berhasil. Diperbaiki dengan menunda load data sampai setelah autentikasi berhasil.
Error toast "metaRef gagal (permission-denied)" dan "Gagal baca Firestore" yang muncul di halaman login juga dihilangkan — itu bukan error sesungguhnya, hanya load data sebelum auth yang kini di-skip dengan benar.
BARU
Pembaruan v8.9.29 — Penguatan Keamanan Firestore Rules
Proteksi Eskalasi Hak Akses — Aturan Firestore untuk koleksi users diperketat: field role kini tidak bisa diubah setelah akun dibuat. Sebelumnya, pengguna yang tahu cara mengakses Firestore API langsung bisa mengubah role dirinya sendiri menjadi Admin tanpa sepengetahuan siapa pun.
Pembatasan Akses Tulis per Pengguna — Setiap pengguna kini hanya bisa menulis ke profil miliknya sendiri. Penulisan ke dokumen pengguna lain melalui API langsung tidak lagi diizinkan.
Perubahan ini ada di file firestore.rules dan harus di-deploy manual dari Firebase Console — tidak mempengaruhi fungsionalitas app secara langsung.
BARU
Pembaruan v8.9.28 — Dialog Konfirmasi Konsisten (No More Browser Popup)
Semua Dialog Konfirmasi Kini In-App — Sebelumnya, 9 aksi penting (arsip invoice, hapus pengeluaran, tutup buku, reset data, hapus akun, dll) menggunakan dialog native browser confirm() yang bisa diblokir Chrome desktop tanpa notifikasi apa pun. Semua diganti ke modal in-app yang konsisten, lengkap dengan info detail apa yang akan terjadi.
Arsip Invoice Lebih Informatif — Modal konfirmasi arsip invoice kini menampilkan nomor dan nama customer invoice yang akan diarsipkan, bukan sekadar teks generik.
BARU
Pembaruan v8.9.27 — Restore Aman + Export PDF Laporan Tertutup
Restore Data Lebih Aman — Sebelum memulihkan dari backup, sistem kini: (1) memvalidasi file backup (cek struktur data), (2) menampilkan ringkasan perubahan (jumlah data saat ini → backup), dan (3) otomatis mengunduh backup data saat ini sebagai pengaman. Selain itu, bug yang membuat invoice tidak ikut ter-restore di mode cloud sudah diperbaiki.
Export PDF dari Arsip Tutup Buku — Tombol Export PDF kini tersedia langsung di daftar laporan bulan yang sudah ditutup (Cashflow → Arsip Laporan Tertutup) dan di modal detailnya, jadi bisa cetak ulang laporan kapan saja.
BARU
Pembaruan v8.9.26 — Format Nomor Invoice Baru + Anti-Duplikasi
Format Baru: INV/OZ/DDMMYY/0001 — Nomor invoice kini ber-prefix tanggal (contoh: INV/OZ/070626/0001). Counter reset per hari, jadi tidak ada risiko nomor sama jika dua perangkat menyimpan invoice bersamaan. Nomor lama (INV-0001) tetap tampil apa adanya di Riwayat.
Anti Double-Save — Tombol "Simpan" otomatis dinonaktifkan saat invoice sedang diproses, mencegah duplikasi akibat double-klik atau koneksi lambat.
Tutup Buku Lebih Tegas — Invoice baru dan pelunasan tidak bisa lagi diset ke bulan yang sudah ditutup buku. Sebelumnya, perubahan retroaktif bisa membuat angka laporan tidak konsisten.
BARU
Pembaruan v8.9.25 — Security & Stok Fixes
Perlindungan XSS — Semua teks dari database (nama customer, nama produk, supplier) kini di-escape sebelum ditampilkan di HTML. Mencegah karakter khusus menyebabkan tampilan rusak atau celah keamanan.
Fix: Stok Dikembalikan Saat Invoice Diarsipkan — Sebelumnya jika invoice dihapus/diarsipkan, stok frame/lensa/softlens tidak dikembalikan. Sekarang stok otomatis ter-restore saat arsip, dan ter-kurangi lagi saat invoice dipulihkan.
Auto-Logout Diperpanjang — Timer inaktivitas diubah dari 3 menit menjadi 15 menit. Pengguna tidak lagi ter-logout tiba-tiba saat mengerjakan data yang membutuhkan waktu lebih lama.
FIX KRITIS
Pembaruan v8.9.24 — Fix Total: Aplikasi Tidak Bisa Diklik / Stuck
Penyebab Utama Ditemukan & Diperbaiki — Ada satu baris kode rusak (tanda kutip kurang) di fungsi Export CSV Cashflow yang menyebabkan seluruh JavaScript aplikasi gagal dijalankan. Akibatnya: halaman login tidak muncul, semua tombol mati, dan data tidak ter-load — meski tampilan dashboard terlihat. Data Anda tetap aman selama ini, hanya aplikasinya yang tidak bisa jalan.
Validasi Syntax Sebelum Rilis — Ke depannya setiap rilis akan dicek validitas kode-nya terlebih dahulu agar kejadian "aplikasi mati total" tidak terulang.
BARU
Pembaruan v8.9.23 — Hotfix: Login Lebih Responsif + Error Jelas
Spinner Login Lebih Cepat — Loading spinner "Menghubungkan ke server" kini hilang dalam 5 detik (sebelumnya 15 detik). Jika sempat refresh sebelum spinner hilang, form login tidak akan pernah muncul — ini kemungkinan penyebab "tidak bisa klik apapun".
Error Login Lebih Jelas — Sebelumnya error koneksi database tampil sebagai "Username atau password salah" yang menyesatkan. Kini tampil pesan yang tepat: "Server database tidak bisa dijangkau" / "Koneksi internet bermasalah" / kode error spesifik.
Error Sesi Auto-Login — Jika sesi tersimpan di browser tapi gagal terverifikasi (Firestore error), kini muncul pesan di form login dengan kode error spesifik alih-alih diam tanpa feedback.
BARU
Pembaruan v8.9.22 — Versi Terlihat + Fix Notif Error Data Kosong
Versi Tampil di Topbar — Nomor versi kini terlihat langsung di header (pojok kiri, di samping "OPTIK ZADA") tanpa perlu buka Release Notes. Memudahkan konfirmasi apakah update terbaru sudah terpasang.
Fix: Notif Jika Config Cloud Tidak Ada — Sebelumnya jika dokumen konfigurasi di cloud kosong/tidak ada, app diam-diam menampilkan Rp0 tanpa pesan apa pun dan berisiko menimpa data cloud. Sekarang muncul notifikasi merah yang jelas agar bisa segera ditangani.
Diagnostik Load Firestore (v8.9.21) — Toast diagnostik ditambahkan di setiap jalur inisialisasi Firebase: meta dokumen gagal, format data lama, maupun Firestore tidak terjangkau — sehingga masalah koneksi lebih mudah diidentifikasi.
BARU
Pembaruan v8.9.20 — Hotfix: Revert IndexedDB (Penyebab Hang)
Hotfix: Revert IndexedDB Offline Cache — Kode initializeFirestore + persistentLocalCache yang ditambahkan di v8.9.18 menyebabkan app hang di beberapa browser karena setup IndexedDB memblokir koneksi Firestore. Direverted ke getFirestore() standar yang stabil.
BARU
Pembaruan v8.9.19 — Cache Lokal & Notif Error Firestore
Cache Lokal Otomatis — Setiap load berhasil, data disimpan ke localStorage browser. Jika Firestore tidak dapat dijangkau (kuota habis/no internet), aplikasi otomatis memuat data cache terakhir (maksimal 48 jam) alih-alih menampilkan halaman kosong.
Notif Error Jelas — Jika kuota Firestore habis, muncul notifikasi: "Kuota Firestore hari ini habis — kuota reset jam 07.00 pagi WIB". Sebelumnya hanya diam menampilkan Rp0 tanpa penjelasan.
Perbaikan Kode initializeFirestore — Disederhanakan agar lebih robust di semua browser; fallback otomatis ke mode standar jika offline cache tidak didukung.
BARU
Pembaruan v8.9.18 — Optimasi Performa & Efisiensi Firestore
Offline Cache (IndexedDB) — Data kini tersimpan di cache browser (IndexedDB). Setelah load pertama, halaman berikutnya terbuka instan dari cache — tidak perlu download ulang dari server. Data tetap sinkron di background.
Kuota Firestore Hemat 90%+ — Bug kritis diperbaiki: sebelumnya setiap perubahan kecil (tambah produk, edit customer, catat pengeluaran) memicu re-download SEMUA invoice dari server ke setiap perangkat yang login. Kini hanya perubahan yang relevan yang disinkron.
Sinkronisasi Invoice Real-Time — Invoice yang ditambah atau dilunasi di satu perangkat kini langsung muncul di perangkat lain secara inkremental — tanpa reload halaman dan tanpa re-download semua data.
BARU
Pembaruan v8.9.17 — Cashflow Transparan + Export PDF
Alur Kas Transparan di Cashflow — Kartu "Alur Kas" baru menampilkan waterfall lengkap: Penjualan Baru (per kategori) + Pelunasan Piutang → Total Kas Masuk → HPP → Profit Kotor → Pengeluaran → Profit Bersih.
Kartu Pelunasan Piutang di Modal Kas Masuk — Modal detail Kas Masuk (Dashboard & Laporan) kini menampilkan kartu khusus "Pelunasan Piutang" terpisah dari penjualan baru, lengkap dengan daftar invoice pelunasannya.
Export PDF Cashflow — Tombol export PDF baru menghasilkan laporan cashflow lengkap yang bisa langsung dicetak atau disimpan sebagai PDF melalui browser.
Export CSV Lebih Lengkap — File CSV Cashflow kini menyertakan ringkasan kas masuk, detail penjualan baru per invoice, daftar pelunasan piutang, dan catatan pengeluaran operasional.
v8.9.16
Pembaruan v8.9.16 — Cashflow Cash-Basis + Sinkronisasi 3 Modul
Cashflow Kini Cash-Basis — Halaman Cashflow sebelumnya menampilkan total billing invoice sebagai "Kas Masuk". Kini diperbaiki: DP masuk ke bulan invoice dibuat, pelunasan masuk ke bulan pelunasan dilakukan — konsisten dengan Laporan & Dashboard.
Profit Kotor Cashflow Proporsional — Profit Kotor di Cashflow kini dihitung proporsional sesuai uang yang masuk: jika hanya DP 30% yang sudah diterima, maka 30% profit yang diakui di bulan tersebut.
Dropdown Bulan Cashflow Lebih Lengkap — Bulan yang hanya berisi pelunasan (tanpa invoice baru) kini muncul di dropdown pilihan bulan Cashflow.
Grafik Dashboard Akurat — Bar chart di Dashboard kini juga menampilkan pelunasan dari invoice bulan sebelumnya yang diterima di bulan berjalan.
v8.9.15
Pembaruan v8.9.15 — Laporan Kas & Profit Cash-Basis
Kas Masuk Dicatat Sesuai Kapan Uang Diterima — DP masuk ke bulan invoice dibuat; pelunasan masuk ke bulan saat pelunasan dilakukan — bukan lagi ke bulan invoice. Dashboard & Laporan sudah diperbaiki.
Profit Proporsional Sesuai Pembayaran — Profit kini dibagi proporsional berdasarkan uang yang masuk. Contoh: invoice Rp1jt, profit Rp200rb, DP 30% → Rp60rb profit tercatat di bulan DP; sisa Rp140rb tercatat di bulan pelunasan.
Tabel Harian Lebih Akurat — Pelunasan dari invoice bulan sebelumnya kini muncul di tabel harian bulan yang tepat, bukan di bulan invoice dibuat.
v8.9.14
Pembaruan v8.9.14 — Item Bonus/GRATIS di Invoice
Item GRATIS Bisa Dimasukkan ke Invoice — Produk dengan kata "GRATIS" di nama (misal: "(GRATIS) Lap Micro-Fiber") kini bisa diinput di invoice meski harga jual Rp0. Stok tetap terpotong, modal tetap masuk ke kalkulasi profit.
Struk Tampilkan "GRATIS" — Item dengan harga Rp0 ditampilkan sebagai GRATIS (bukan "Rp0") di struk dan live preview, lebih jelas untuk customer.
BARU
Pembaruan v8.9.13 — Stabilisasi Data & Bug Fix
Error Cloud Kini Tampil, Bukan Ditelan Diam-Diam — Sebelumnya jika koneksi bermasalah saat simpan invoice, lunas DP, arsip, atau pengukuran — app diam saja. Sekarang muncul notifikasi merah agar bisa segera tindak lanjut.
Fix: Bug Import Historis Customer — Variabel deteksi baris sub-header Rx tidak pernah dideklarasikan (bug laten). Diperbaiki agar import Excel customer lebih andal untuk format header kompleks.
BARU
Pembaruan v8.9.12 — Template Import Customer
Template Excel untuk Import Customer — Tombol "Unduh Template" kini tersedia di panel Import Historis. Template menghasilkan file .xlsx siap pakai dengan format kolom yang tepat (termasuk sub-header mata kanan & kiri).
Klarifikasi Import — Data Customer, Bukan Transaksi — Deskripsi import diperjelas: data yang diimport dari Excel disimpan sebagai data customer + riwayat resep mata, bukan sebagai transaksi/invoice.
v8.9.11
Pembaruan v8.9.11 — Perbaikan UI & Bug Hapus Transaksi
Fix: Hapus Semua Transaksi Sekarang Benar-Benar Bersih — Riwayat Transaksi kini langsung kosong setelah penghapusan tanpa perlu refresh. Error Firestore juga kini ditampilkan jika ada masalah, bukan diam-diam gagal.
Zona Berbahaya Lebih Rapi — Tombol-tombol berbahaya dipisah ke kartu masing-masing dengan deskripsi jelas. Tombol "Reset Semua Data" dihapus karena redundan (sudah terwakili oleh dua tombol lainnya).
Form Tambah Customer Diperbaiki — Tombol "Tambah Customer" tidak lagi terpotong. Tata letak form lebih rapi dengan tombol di bawah baris input.
Release Notes Dihapus dari Pengaturan — Sudah tersedia via tombol versi di topbar kapan saja, jadi tidak perlu duplikasi di halaman Pengaturan.
v8.9.10
Pembaruan v8.9.10 — Role Baru: Keluarga
Role Keluarga — Peran baru antara Admin dan Staff. Punya akses penuh ke semua fitur (Dashboard, Laporan, Invoice, Produk, Customer, Profil, Pengaturan Info Toko & Supplier), kecuali Cashflow dan bagian pengaturan sensitif (Kelola Pengguna, Log Audit, Migrasi Data, Zona Berbahaya).
Pengaturan Terlindungi — Role Keluarga & Staff tidak bisa mengakses bagian berbahaya di Pengaturan meski halaman Pengaturan bisa dibuka untuk melihat Info Toko.
v8.9.9
Pembaruan v8.9.9 — Tampilan Peran & Topbar Baru
Penamaan Peran Diperbarui — Sebutan "Karyawan" diubah jadi Staff dan "Admin / Pemilik" jadi Admin di seluruh tampilan. Tidak ada perubahan data — nama internal tidak berubah.
Topbar Lebih Bersih — Pojok kanan atas kini menampilkan nama pengguna, tombol versi (klik untuk buka Release Notes), dan tombol logout. Indikator peran dihapus agar tampilan lebih rapi.
Release Notes di Topbar — Staff & Admin bisa buka Release Notes kapan saja via tombol versi di pojok kanan atas — tidak lagi muncul otomatis saat login.
Toast Login Lebih Ramah — Notifikasi masuk sekarang menampilkan "Selamat datang, [nama]!" alih-alih peran pengguna.
v8.9.8
Pembaruan v8.9.8 — Import Historis Tanpa Invoice Palsu
Import Hanya Simpan Resep Mata — Data historis yang diimport dari Excel kini disimpan sebagai riwayat resep di profil customer, bukan sebagai invoice. Tidak ada lagi transaksi Rp0 palsu di Riwayat.
Riwayat Customer Dipisah Dua Seksi — Profil customer kini menampilkan Transaksi (invoice nyata) dan Riwayat Resep Mata (Historis) (data import) secara terpisah dan rapi.
Laporan & Dashboard Akurat — Omzet, profit, dan filter bulan di Laporan hanya menghitung transaksi nyata — data historis tidak lagi masuk ke statistik keuangan.
v8.9.7
Pembaruan v8.9.7 — Fix Tanggal Historis & Filter Laporan
Fix: Tahun 2-Digit Tidak Lagi Jadi 1900-an — Tanggal berformat "14/03/26" kini dibaca sebagai 2026, bukan 1926. Filter bulan di Laporan tidak lagi menampilkan tahun-tahun aneh dari data lama.
Laporan Hanya Hitung Transaksi Nyata — Dashboard, Laporan, dan Cashflow kini menggunakan filter khusus yang mengecualikan data historis dari semua perhitungan keuangan.
v8.9.6
Pembaruan v8.9.6 — Fix Export Cashflow & Global Search
Fix: Export Cashflow Berfungsi Kembali — Tombol "Export Excel" di Cashflow sebelumnya tidak mengunduh file di semua browser. Kini diperbaiki — klik langsung mengunduh file .csv.
Fix: Global Search Kini Redirect dengan Benar — Klik hasil pencarian di kotak search kanan atas kini langsung membawa ke halaman, produk, atau invoice yang dicari — tidak lagi diam di tempat.
v8.9.5
Pembaruan v8.9.5 — Perbaikan Tombol Aksi & Navigasi Halaman
Tombol Aksi Master Data Berfungsi Kembali — Diperbaiki bug di mana tombol Edit/Hapus pada produk ke-113+ (Lensa) dan customer ke-147+ tidak bisa diklik akibat area transparan FAB yang menutupi tabel. Kini semua tombol aktif di semua role.
Keamanan Nama Produk & Customer — Karakter khusus (< > & ") pada nama produk atau customer kini di-escape dengan benar sehingga tidak merusak tampilan tabel.
Navigasi Paginasi Lebih Rapi — Tombol ← Hal X / Y → kini tampil tengah dan konsisten di semua tabel (Produk & Customer), tidak lagi terpotong atau tertutup FAB di sudut kanan bawah.
v8.9.4
Pembaruan v8.9.4 — Pengukuran Lensa Dipisah dari Invoice
Invoice Lebih Bersih untuk Customer — PD, Dm.A(T), Dm.B(L), DBL, dan TP dihapus dari form invoice. Struk yang dicetak ke customer tidak lagi memuat data pengukuran internal ini.
Pengukuran Lensa Diisi Setelah Struk Dicetak — Setelah invoice dibuat, buka invoice dari Riwayat dan isi bagian Pengukuran Lensa – Internal / Supplier (PD, Dm.A, Dm.B, DBL, TP) lalu klik Simpan. Data ini diteruskan ke supplier saat order via WhatsApp.
Tetap Tampil di Riwayat Customer — Pengukuran yang sudah diisi tetap terlihat di riwayat invoice customer untuk referensi staf, tapi tidak tampil di struk cetak.
v8.9.3
Pembaruan v8.9.3 — Perbaikan Struk & Tampilan Invoice
Fix: Detail Lensa Tidak Double — Jika lensa diinput dari katalog (item), baris "Lensa: ..." di struk tidak lagi muncul dobel. Detail hanya ditampilkan jika tidak ada item katalog yang sesuai.
Fix: Button Invoice Lebih Rapi — Tombol di modal invoice (WA, Order Supplier, Thermal) kini ikon-only dengan tooltip, sehingga tidak meluap di layar kecil. Hapus, Lunaskan, dan Cetak tetap berLabel teks.
v8.9.2
Pembaruan v8.9.2 — Manajemen Supplier & Order via WhatsApp
Daftar Supplier Lensa — Admin kini bisa tambah, edit, dan hapus supplier lensa dari halaman Pengaturan. Setiap supplier punya nama, nomor WhatsApp, dan catatan opsional.
Order ke Supplier via WA — Dari modal invoice (invoice dengan resep atau lensa), klik tombol ikon truk untuk memilih supplier. Aplikasi otomatis membuka WhatsApp dengan pesan order berisi detail resep Rx, ukuran lensa, dan info customer.
v8.9.1
Pembaruan v8.9.1 — Import Historis Customer dari Excel
Import Data Historis dari Excel — Admin bisa unggah file Excel lama (.xlsx/.xls) berisi data pasien. Aplikasi otomatis mendeteksi kolom (Bon, Nama, Usia, HP, Tipe, Rx) meski header multi-baris. Preview data muncul sebelum diimport.
Preview Sebelum Import — Sebelum data masuk ke database, tampil tabel preview dengan semua baris yang akan diimport. Konfirmasi manual untuk menghindari import data yang salah.
Badge "Historis" di Riwayat — Invoice hasil import ditandai badge abu-abu "Historis" di halaman Riwayat Transaksi, sehingga mudah dibedakan dari transaksi aktif.
v8.9.0
Pembaruan v8.9.0 — Fitur Karyawan: Profil, Transaksi Saya & Notif Stok
Halaman Profil Saya — Semua role kini punya halaman profil sendiri. Tampil nama, email, badge peran, dan info toko. Di mode Firebase, bisa kirim email ganti password langsung dari sini.
Filter "Transaksi Saya" di Riwayat — Karyawan bisa klik tombol Transaksi Saya di halaman Riwayat untuk hanya melihat invoice yang dibuat oleh akun mereka sendiri.
Notifikasi Stok Kritis untuk Karyawan — Banner peringatan stok menipis di Dashboard kini juga muncul untuk role karyawan, bukan hanya admin.
v8.8.0
Pembaruan v8.8.0 — Riwayat Customer, Dark Mode Otomatis & Tooltip Rx
Riwayat Transaksi & Resep per Customer (#27) — Tombol riwayat di tabel Customer kini menampilkan semua invoice, lengkap dengan item, total, dan resep Rx (ditandai badge biru) jika ada.
Dark Mode Otomatis (#38) — Jika belum pernah memilih tema manual, aplikasi otomatis mengikuti preferensi sistem (dark/light). Jika sistem berubah, tema ikut berubah secara real-time.
Tooltip Onboarding (#39) — Semua field Rx (Sph, Cyl, Axis, Visus, PD, Add, Dm.A, Dm.B, DBL, TP) kini punya tooltip penjelasan. Hover ikon ? di sebelah label untuk melihat panduan singkat.
v8.7.2
Pembaruan v8.7.2 — Cari Produk di Master Data & Import Aman
Filter/Cari di Master Data — Input pencarian di pojok kanan tabel (Frame, Lensa, Softlens, Aksesoris). Ketik nama, brand, atau kategori untuk filter langsung. Tersedia untuk semua role.
Import Excel: Stok Dipertahankan — Produk yang sudah ada di database: harga & detail tetap diperbarui dari Excel, tetapi stok terkini tidak akan dioverwrite. Produk baru tetap ditambahkan dengan stok dari Excel.
v8.7.1
Pembaruan v8.7.1 — Pencarian Produk di Invoice
Autocomplete Produk di Invoice — Dropdown pilih produk diganti dengan input pencarian. Ketik sebagian nama (brand, power, tipe, warna) dan hasil langsung terfilter. Harga jual & modal otomatis terisi saat item dipilih. Mendukung ribuan produk tanpa harus scroll.
Input Manual Tetap Didukung — Jika nama produk tidak ada di katalog, cukup ketik nama langsung — akan tersimpan sebagai nama manual.
v8.7
Pembaruan v8.7 — Mobile Responsive, Verifikasi Email & Laporan Profit
Mobile Responsive Audit — Form input otomatis kolaps ke 1 kolom di layar kecil (<600px). Modal dialog tidak lagi overflow keluar layar. Tampilan lebih rapi di HP.
Verifikasi Email Akun Baru (#35) — Akun karyawan yang baru dibuat wajib verifikasi email sebelum bisa masuk. Email verifikasi dikirim otomatis saat pertama login, dengan tombol resend dan opsi kembali ke login.
Laporan Profit per Produk (#36) — Section baru di halaman Laporan (admin): tabel semua produk yang pernah terjual, lengkap dengan kategori, qty, omzet, profit, dan margin per produk. Diurutkan berdasarkan omzet terbesar.
v8.6
Pembaruan v8.6 — Import Excel & View Karyawan
Import Data dari Excel — Admin bisa input massal produk (Frame/Lensa/Softlens/Aksesoris) dari file .xlsx. Data baru ditambahkan, nama yang sama otomatis diperbarui. Preview sebelum commit.
Template Excel per Kategori — Tombol "Unduh Template" per halaman menghasilkan file .xlsx siap pakai dengan contoh data dan kolom yang sesuai format app.
View Stok untuk Karyawan — Karyawan kini bisa akses halaman master data untuk cek stok terkini. Kolom Modal & Margin dihilangkan sepenuhnya dari tampilan karyawan (bukan sekadar diisi tanda —).
v8.5.2
Stok Produk untuk Karyawan
Karyawan bisa akses halaman master data untuk cek stok. Harga jual terlihat, harga modal & margin tidak.
v8.5.1
Hotfix Konfirmasi Hapus
Fix: Hapus Produk & Customer di Desktop — Dialog konfirmasi hapus produk dan hapus customer diganti dari confirm() native browser ke modal in-app. Sebelumnya, Chrome di desktop bisa memblokir dialog konfirmasi secara diam-diam sehingga tombol hapus terasa tidak berfungsi
Karyawan: harga modal tersembunyi — Role karyawan tidak bisa melihat harga modal, margin, dan kolom laba di semua halaman. Harga jual tetap terlihat
v8.5
Firestore Per-Dokumen
Struktur Per-Dokumen — Setiap invoice kini disimpan sebagai dokumen Firestore terpisah (invoices/{id}). Batas 1 MB tidak berlaku lagi!
Migrasi Satu Klik — Kartu migrasi di Pengaturan memandu perpindahan dari struktur lama ke baru. Backup dulu, lalu klik Mulai Migrasi
Backward Compatible — Aplikasi berjalan normal di kedua struktur. Sebelum migrasi, tetap pakai blob lama; setelah migrasi, otomatis pakai struktur baru
v8.4
Info Toko Dinamis
Info Toko dari Pengaturan — Nama toko, alamat, kota, HP, jam operasional, dan footer struk kini bisa diedit langsung dari halaman Pengaturan (Admin)
Struk & Print Otomatis Update — Struk modal, print thermal, dan pesan WA langsung pakai data terbaru dari Pengaturan — tidak perlu edit kode lagi
v8.3
Badge Siap Diambil & Fixes
Badge Siap Diambil — Badge emas di sidebar Riwayat menampilkan jumlah pesanan DP yang sudah lewat tanggal siap ambil — terpisah dari badge merah total DP
Reset Password Redirect — Setelah reset password berhasil, user langsung diarahkan ke optik-zada.store bukan halaman Firebase
v8.2
Filter Bulan & Monitor Data
Filter Bulan di Riwayat — Pilih bulan/tahun tertentu untuk menyaring daftar invoice langsung dari halaman Riwayat
Monitor Ukuran Data — Progress bar di Pengaturan menampilkan seberapa penuh penyimpanan Firestore (batas ~1 MB)
Peringatan Otomatis — Notifikasi muncul saat data mendekati 700 KB (⚠️) atau melampaui 900 KB (🚨) agar selalu ingat backup
v8.1
Username Login & Cloud Upgrade
Login via Username — Karyawan login pakai username (contoh: budi_kasir) tanpa perlu ingat email
Buat Akun Otomatis — Tambah karyawan lewat GUI langsung membuat akun Firebase Auth + kirim email set-password
Custom Domain — Aplikasi kini bisa diakses di optik-zada.store dengan SSL otomatis
Firebase Blaze Plan — Upgrade ke Blaze (pay-as-you-go) untuk mendukung pembuatan akun dari server & fitur lanjutan
Email Domain Custom — Email reset password akan dikirim dari noreply@optik-zada.store (proses verifikasi DNS)
Firebase CDN Retry — Koneksi ke Firebase dicoba ulang otomatis (3×) jika CDN lambat; tidak perlu refresh manual
Keamanan Username — Pesan error login digeneralisasi agar tidak bocorkan informasi username yang terdaftar
v8.0
Critical Fixes
Sesi Persisten — Tidak perlu login ulang setiap buka aplikasi. Sesi tersimpan otomatis di perangkat
Deteksi Koneksi — Banner merah otomatis saat internet terputus; hilang saat terhubung kembali
Format Rupiah — Semua input harga otomatis format ribuan (1.500.000) di seluruh halaman
Invoice — Nama Item Stabil — Nama frame/lensa tidak lagi hilang saat menambah item baru ke keranjang
Loading Sesi Diperbaiki — Spinner "Memeriksa sesi" tidak lagi macet saat buka app dalam kondisi offline
v7.9
Cashflow Module
Modul Cashflow — Halaman baru untuk monitoring keuangan & pengeluaran toko (Admin)
Stat Cards Admin — Kas Masuk, Profit Kotor, Total Pengeluaran, Profit Bersih per bulan
Catat Pengeluaran — 6 kategori: Listrik, WiFi, Gaji Karyawan, Sewa Ruko, Penyusutan Etalase, Lain-lain
Riwayat Pengeluaran — Tabel per bulan + breakdown per kategori (progress bar)
Tutup Buku Bulanan — Snapshot laporan terkunci permanen; arsip bisa dilihat kapan saja
Export CSV Pengeluaran — Download riwayat pengeluaran per bulan ke Excel
Akses Karyawan — Karyawan bisa input pengeluaran & lihat riwayat hari ini saja
Ringkasan di Laporan — Card Profit Kotor → Pengeluaran → Profit Bersih di halaman Laporan
v7.8
Foundation & Beta Features
Resep Mata Lengkap — Kolom Dm.A(T), Dm.B(L), DBL, TP pada form invoice & struk
Audit Log — Invoice mencatat nama pembuat
Karyawan Lunaskan DP — Tidak perlu admin untuk pelunasan
Reset Password — "Lupa password?" kirim email reset
Soft Delete / Arsip Invoice — Hapus tidak permanen, bisa dipulihkan
Pagination Riwayat — 25 transaksi per halaman
Export CSV — Langsung rapi di Excel tanpa Text to Columns manual
Keamanan Firestore — Security rules auto-deploy via GitHub Actions
Fitur Sebelum Beta
Buat & kelola invoice dengan resep mata, tipe kacamata, item, dan diskon
Pembayaran Lunas & Down Payment (DP) dengan tracking sisa
Print struk A4 & Thermal 80mm langsung dari browser
Kirim struk ke customer via WhatsApp
Laporan omzet, profit, & grafik bulanan
Manajemen produk: Frame, Lensa, Softlens, Aksesoris + stok & alert menipis
Database customer dengan histori pembelian
Multi-role: Admin (akses penuh) & Karyawan (akses terbatas)
Backup & Restore data (.json) + sync real-time antar perangkat
Dark mode & tampilan responsif