title: “Company Settings” description: “Konfigurasi company profile 12 tab: informasi umum, members & roles, pembayaran, WhatsApp, struk, absensi, landing page, printer, menu access, modul, backup, dan audit trail.”
Company Settings

updateCompanyProfile dan di-broadcast ke semua tab browser yang terbuka via BroadcastChannel('snishop_company_change') dan CustomEvent('companyChanged'), memastikan konsistensi state secara real-time.
Owner verification menggunakan dual check: company.owner_email === currentUser.email DAN CompanyMember record dengan role='owner'.
Arsitektur Komponen
Entity & Model
Company
CompanyMember
12 Tab Konfigurasi
1. Informasi Umum
Profile company dengan field lengkap:2. Members & Roles
RBAC management viaCompanyAccessControl.jsx (273 baris) dan RoleManager.jsx (1398 baris):
9 Role Templates:
Permission Groups (~40+ individual permissions):
3. Pembayaran Customer
Kelola akun pembayaran untuk customer top-up:4. WhatsApp
Integrasi WhatsApp via Wablas:5. Struk/Receipt
Template struk kasir:6. Pengaturan Absensi
Konfigurasi attendance viaAttendanceSettingsForm:
7. Landing Page
Konfigurasi landing page company viaLandingPageSettings:
8. Printer Kasir
Manajemen Bluetooth printer viaBluetoothPrinterManager:
9. Kontrol Menu
Kontrol visibilitas menu viaMenuAccessManager:
10. Modul & Fitur
Toggle modul dan fitur viaCompanyModulesForm:
11. Backup & Keamanan
Data backup dan restore viaCompanyBackupManager:
12. Audit Trail
View audit logs viaAuditTrailViewer.jsx (388 baris):
16+ Action Types:
Audit Log Detail:
Cara Akses
Menu: Settings > Company Settings Akses terbatas: Hanya company owner yang bisa mengakses halaman ini.Owner Verification
Dual Check: Email match + member role verification untuk keamanan maksimal.Cross-Tab Synchronization
Integrasi Cross-Module
Tips
- Dual owner verification memastikan hanya owner asli yang bisa mengubah konfigurasi company
- Gunakan BroadcastChannel sync untuk memastikan semua tab mendapat update real-time
- Audit trail bersifat append-only — tidak bisa dihapus atau diubah, memastikan forensic integrity
- Grace period 3 hari untuk membership expired — user masih bisa akses read-only sebelum benar-benar terblokir
- Test Bluetooth printer connection sebelum digunakan di produksi untuk menghindari masalah saat transaksi
- Review audit trail secara berkala untuk mendeteksi aktivitas mencurigakan
Diagram Relasi Entitas (ERD)
Tabel Schema Entitas Lengkap
Company
CompanyMember
CompanyMember Permissions (35+ Flags)
User
CompanyAttendanceSettings
CompanyModuleSettings
CompanyReceiptSettings
CompanyWablasSettings
CompanyPOSSettings
CompanyInvitation
CompanyBackup
PrinterSettings
MenuAccessProfile
Subscription
Diagram State — Status CompanyMember
Diagram State — Status CompanyInvitation
Diagram State — Status CompanyBackup
Diagram State — Status Subscription
Diagram Sequence — Alur Undangan Member Baru
Diagram Sequence — Alur Backup & Restore
Diagram Sequence — Konfigurasi Multi-Tab & Sinkronisasi
Tabel Enum Lengkap
Enum: Company.industry
Enum: Company.owner_subscription_plan & User.subscription_plan
Enum: CompanyMember.role & CompanyInvitation.role
Enum: CompanyMember.status
Enum: CompanyInvitation.status
Enum: CompanyBackup.backup_type
Enum: CompanyBackup.backup_scope
Enum: CompanyBackup.status
Enum: CompanyBackup.drive_integration_status
Enum: CompanyModuleSettings.business_type
Enum: CompanyModuleSettings.inventory_method
Enum: User.role
Enum: User.admin_type
Enum: User.admin_tier
Enum: User.membership_duration_type
Enum: Subscription.billing_cycle
Enum: Subscription.status
Enum: PrinterSettings.paper_width
Enum: PrinterSettings.encoding
Enum: PrinterSettings.font_size
Enum: MenuAccessProfile.dashboard_type
Enum: Company.settings.batch_allocation_strategy
Enum: Company.settings.spoilage_default_treatment
Enum: Company.settings.tax.mode
Enum: Company.settings.tax.rounding
Tabel RBAC — Hak Akses per Role
Catatan RBAC: Owner memiliki SEMUA permission aktif. Role template di atas adalah default — owner dapat mengkustomisasi permission individual per member melaluiRoleManager.jsx(1398 baris). Permissioncan_edit_settingsdancan_manage_roleshanya aktif untuk Owner.
