Skip to main content

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

Company Settings Company Settings adalah halaman konfigurasi level company yang hanya bisa diakses oleh owner. CompanySettings.jsx (812 baris) mengelola 12 tab konfigurasi yang mencakup seluruh aspek operasional company — dari profil dasar, member management, payment accounts, WhatsApp integration, receipt templates, attendance settings, landing page, Bluetooth printer, menu access control, module toggles, backup & security, hingga audit trail. Setiap perubahan di-save melalui server function 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 via CompanyAccessControl.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 via AttendanceSettingsForm:

7. Landing Page

Konfigurasi landing page company via LandingPageSettings:

8. Printer Kasir

Manajemen Bluetooth printer via BluetoothPrinterManager:

9. Kontrol Menu

Kontrol visibilitas menu via MenuAccessManager:

10. Modul & Fitur

Toggle modul dan fitur via CompanyModulesForm:

11. Backup & Keamanan

Data backup dan restore via CompanyBackupManager:

12. Audit Trail

View audit logs via AuditTrailViewer.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

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 melalui RoleManager.jsx (1398 baris). Permission can_edit_settings dan can_manage_roles hanya aktif untuk Owner.