@apptimate/core-lib 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -62,142 +62,82 @@ export const MENU_ITEM_REGISTRY: RegistryItem[] = [
62
62
  { key: 'core__users', label: 'Users', path: '/users', module: 'Core', defaultGroup: 'User Management' },
63
63
  { key: 'core__roles', label: 'Roles', path: '/roles', module: 'Core', defaultGroup: 'User Management' },
64
64
  { key: 'core__organizations', label: 'Organizations', path: '/organizations', module: 'Core', defaultGroup: 'User Management' },
65
- { key: 'core__design_system', label: 'Design System', path: '/design-system', module: 'Core', defaultGroup: 'Temporary' },
65
+ { key: 'core__parties', label: 'Parties', path: '/parties', module: 'Core', defaultGroup: 'User Management' },
66
66
  { key: 'core__activity_logs', label: 'Activity Logs', path: '/activity-logs', module: 'Core', defaultGroup: 'System Auditing' },
67
67
  { key: 'core__api_requests', label: 'API Requests', path: '/system/api-requests', module: 'Core', defaultGroup: 'System Auditing' },
68
68
  { key: 'core__feature_access_logs', label: 'Feature Access Logs', path: '/system/feature-access-logs', module: 'Core', defaultGroup: 'System Auditing' },
69
69
  { key: 'core__issue_logs', label: 'Issue Logs', path: '/system/issue-logs', module: 'Core', defaultGroup: 'System Auditing' },
70
70
  { key: 'core__feature_registry', label: 'Feature Registry', path: '/system/features', module: 'Core', defaultGroup: 'System Auditing' },
71
71
  { key: 'core__menu_config', label: 'Menu Configuration', path: '/menu-config', module: 'Core', defaultGroup: 'System' },
72
+ { key: 'core__printables', label: 'Printable Templates', path: '/system/printables', module: 'Core', defaultGroup: 'System' },
73
+ { key: 'core__warehouses', label: 'Warehouses', path: '/warehouses', module: 'Core', defaultGroup: 'Resources' },
74
+ { key: 'core__terminals', label: 'Terminals', path: '/terminals', module: 'Core', defaultGroup: 'Resources' },
72
75
 
73
76
  // ── Inventory Module ──
74
- { key: 'inv__items', label: 'Items', path: '/inventory/items', module: 'Inventory', defaultGroup: 'Catalog' },
75
- { key: 'inv__categories', label: 'Categories', path: '/inventory/categories', module: 'Inventory', defaultGroup: 'Catalog' },
76
- { key: 'inv__units', label: 'Units', path: '/inventory/units', module: 'Inventory', defaultGroup: 'Catalog' },
77
- { key: 'inv__supplier_items', label: 'Supplier Items', path: '/inventory/supplier-items', module: 'Inventory', defaultGroup: 'Catalog' },
78
- { key: 'inv__documents', label: 'Stock Documents', path: '/inventory/documents', module: 'Inventory', defaultGroup: 'Stock Control' },
79
- { key: 'inv__warehouses', label: 'Warehouses', path: '/inventory/warehouses', module: 'Inventory', defaultGroup: 'Stock Control' },
80
- { key: 'inv__lots', label: 'Lots & Serials', path: '/inventory/lots', module: 'Inventory', defaultGroup: 'Stock Control' },
81
- { key: 'inv__stock_counts', label: 'Stock Counts', path: '/inventory/stock-counts', module: 'Inventory', defaultGroup: 'Stock Control' },
82
- { key: 'inv__reservations', label: 'Reservations', path: '/inventory/reservations', module: 'Inventory', defaultGroup: 'Stock Control' },
83
- { key: 'inv__inspection', label: 'Inspection', path: '/inventory/inspection', module: 'Inventory', defaultGroup: 'Quality & Alerts' },
84
- { key: 'inv__alerts', label: 'Stock Alerts', path: '/inventory/alerts', module: 'Inventory', defaultGroup: 'Quality & Alerts' },
85
- { key: 'inv__opening_balances', label: 'Opening Balances', path: '/inventory/opening-balances', module: 'Inventory', defaultGroup: 'Operations' },
86
- { key: 'inv__transfer_requests', label: 'Transfer Requests', path: '/inventory/transfer-requests', module: 'Inventory', defaultGroup: 'Transfers' },
87
- { key: 'inv__transfer_orders', label: 'Transfer Orders', path: '/inventory/transfer-orders', module: 'Inventory', defaultGroup: 'Transfers' },
88
- { key: 'inv__consignment', label: 'Consignment', path: '/inventory/consignment', module: 'Inventory', defaultGroup: 'Operations' },
89
- { key: 'inv__write_offs', label: 'Write-Offs', path: '/inventory/write-offs', module: 'Inventory', defaultGroup: 'Operations' },
90
- { key: 'inv__dashboard', label: 'Dashboard', path: '/inventory/dashboard', module: 'Inventory', defaultGroup: 'Reports' },
91
- { key: 'inv__balances', label: 'Stock Balances', path: '/inventory/balances', module: 'Inventory', defaultGroup: 'Reports' },
92
- { key: 'inv__reports', label: 'All Reports', path: '/inventory/reports', module: 'Inventory', defaultGroup: 'Reports' },
93
-
94
- // ── Sales Module: POS channel (current implementation) ──
95
- { key: 'pos__dashboard', label: 'POS Dashboard', path: '/pos', module: 'Sales', defaultGroup: 'POS Overview' },
96
- { key: 'pos__sell', label: 'Sell Screen', path: '/pos/sell', module: 'Sales', defaultGroup: 'POS Overview' },
97
- { key: 'pos__quick_sell', label: 'Quick Sell', path: '/pos/quick-sell', module: 'Sales', defaultGroup: 'POS Overview' },
98
- { key: 'pos__terminals', label: 'Terminals', path: '/pos/terminals', module: 'Sales', defaultGroup: 'POS Configuration' },
99
- { key: 'pos__sessions', label: 'Sessions', path: '/pos/sessions', module: 'Sales', defaultGroup: 'POS Operations' },
100
- { key: 'pos__invoices', label: 'Invoices', path: '/pos/invoices', module: 'Sales', defaultGroup: 'POS Transactions' },
101
- { key: 'pos__returns', label: 'Returns', path: '/pos/returns', module: 'Sales', defaultGroup: 'POS Transactions' },
102
- { key: 'pos__reports', label: 'Sales Reports', path: '/pos/reports', module: 'Sales', defaultGroup: 'POS Reports' },
103
-
104
- // ── Finance Module ──
105
- { key: 'fin__dashboard', label: 'Dashboard', path: '/finance', module: 'Finance', defaultGroup: 'Overview' },
106
- { key: 'fin__settings', label: 'Settings', path: '/finance/settings', module: 'Finance', defaultGroup: 'Setup' },
107
- { key: 'fin__chart_of_accounts', label: 'Chart of Accounts', path: '/finance/accounts', module: 'Finance', defaultGroup: 'General Ledger' },
108
- { key: 'fin__fiscal_periods', label: 'Fiscal Periods', path: '/finance/fiscal-periods', module: 'Finance', defaultGroup: 'General Ledger' },
109
- { key: 'fin__journal_entries', label: 'Journal Entries', path: '/finance/journals', module: 'Finance', defaultGroup: 'General Ledger' },
110
- { key: 'fin__gl_transactions', label: 'GL Transactions', path: '/finance/gl-transactions', module: 'Finance', defaultGroup: 'General Ledger' },
111
- { key: 'fin__receipts', label: 'Receipts', path: '/finance/receipts', module: 'Finance', defaultGroup: 'Receivables' },
112
- { key: 'fin__customers', label: 'Customers (AR)', path: '/finance/customers', module: 'Finance', defaultGroup: 'Receivables' },
113
- { key: 'fin__payments', label: 'Payments', path: '/finance/payments', module: 'Finance', defaultGroup: 'Payables' },
114
- { key: 'fin__vendors', label: 'Vendors (AP)', path: '/finance/vendors', module: 'Finance', defaultGroup: 'Payables' },
115
- { key: 'fin__bank_accounts', label: 'Bank Accounts', path: '/finance/bank/accounts', module: 'Finance', defaultGroup: 'Banking' },
116
- { key: 'fin__bank_transactions', label: 'Bank Transactions', path: '/finance/bank/transactions', module: 'Finance', defaultGroup: 'Banking' },
117
- { key: 'fin__bank_reconciliation', label: 'Bank Reconciliation', path: '/finance/bank/reconciliation', module: 'Finance', defaultGroup: 'Banking' },
118
- { key: 'fin__cheques', label: 'Cheque Management', path: '/finance/cheques', module: 'Finance', defaultGroup: 'Banking' },
119
- { key: 'fin__expense_income', label: 'Expense / Income', path: '/finance/expense-income', module: 'Finance', defaultGroup: 'Expense & Income' },
120
- { key: 'fin__tax_codes', label: 'Tax Codes', path: '/finance/tax/codes', module: 'Finance', defaultGroup: 'Tax' },
121
- { key: 'fin__tax_returns', label: 'Tax Returns', path: '/finance/tax/returns', module: 'Finance', defaultGroup: 'Tax' },
122
- { key: 'fin__events', label: 'Accounting Events', path: '/finance/events', module: 'Finance', defaultGroup: 'System' },
123
- { key: 'fin__reports', label: 'Reports', path: '/finance/reports', module: 'Finance', defaultGroup: 'Reports' },
124
- { key: 'fin__assets', label: 'Fixed Assets', path: '/finance/assets', module: 'Finance', defaultGroup: 'Assets' },
125
- { key: 'fin__budgets', label: 'Budgets', path: '/finance/budgets', module: 'Finance', defaultGroup: 'Budgets' },
126
- { key: 'fin__period_close', label: 'Period Close', path: '/finance/period-close', module: 'Finance', defaultGroup: 'System' },
127
-
128
- // ── Sales Module (umbrella / back-office) ──
77
+ { key: 'inventory__items', label: 'Items', path: '/inventory/items', module: 'Inventory', defaultGroup: 'Catalog' },
78
+ { key: 'inventory__categories', label: 'Categories', path: '/inventory/categories', module: 'Inventory', defaultGroup: 'Catalog' },
79
+ { key: 'inventory__brands', label: 'Brands', path: '/inventory/brands', module: 'Inventory', defaultGroup: 'Catalog' },
80
+ { key: 'inventory__uom', label: 'Units of Measure', path: '/inventory/uom', module: 'Inventory', defaultGroup: 'Catalog' },
81
+
82
+ { key: 'inventory__stock', label: 'Stock Overview', path: '/inventory/stock', module: 'Inventory', defaultGroup: 'Stock' },
83
+ { key: 'inventory__ledger', label: 'Stock Movements', path: '/inventory/ledger', module: 'Inventory', defaultGroup: 'Stock' },
84
+ { key: 'inventory__adjustments', label: 'Adjustments', path: '/inventory/adjustments', module: 'Inventory', defaultGroup: 'Operations' },
85
+ { key: 'inventory__transfers', label: 'Transfers', path: '/inventory/transfers', module: 'Inventory', defaultGroup: 'Operations' },
86
+ { key: 'inventory__serials', label: 'Serial Numbers', path: '/inventory/serials', module: 'Inventory', defaultGroup: 'Operations' },
87
+
88
+ // ── Sales Module ──
89
+ { key: 'sales__price_lists', label: 'Price Lists', path: '/sales/price-lists', module: 'Sales', defaultGroup: 'Master Data' },
90
+ { key: 'sales__quotations', label: 'Quotations', path: '/sales/quotations', module: 'Sales', defaultGroup: 'Orders' },
129
91
  { key: 'sales__orders', label: 'Sales Orders', path: '/sales/orders', module: 'Sales', defaultGroup: 'Orders' },
130
- { key: 'sales__invoices', label: 'Sales Invoices', path: '/sales/invoices', module: 'Sales', defaultGroup: 'Billing' },
131
- { key: 'sales__customers', label: 'Customers', path: '/sales/customers', module: 'Sales', defaultGroup: 'Customers' },
132
- { key: 'sales__quotations', label: 'Quotations', path: '/sales/quotations', module: 'Sales', defaultGroup: 'Pre-Sales' },
133
- { key: 'sales__pos', label: 'POS Workspace', path: '/pos', module: 'Sales', defaultGroup: 'Channels' },
134
- { key: 'sales__returns', label: 'Returns', path: '/sales/returns', module: 'Sales', defaultGroup: 'Returns' },
135
- { key: 'sales__reports', label: 'Sales Reports', path: '/sales/reports', module: 'Sales', defaultGroup: 'Reports' },
92
+ { key: 'sales__goods_issue_notes', label: 'Goods Issue Notes', path: '/sales/delivery-notes', module: 'Sales', defaultGroup: 'Fulfillment' },
93
+ { key: 'sales__returns', label: 'Sales Returns', path: '/sales/returns', module: 'Sales', defaultGroup: 'Post-Sales' },
94
+ { key: 'sales__credit_notes', label: 'Credit Notes', path: '/sales/credit-notes', module: 'Sales', defaultGroup: 'Post-Sales' },
95
+ { key: 'sales__pos', label: 'POS Terminal', path: '/sales/pos', module: 'Sales', defaultGroup: 'POS' },
136
96
 
137
- // ── Procurement Module ──
138
- { key: 'purch__dashboard', label: 'Dashboard', path: '/procurement', module: 'Procurement', defaultGroup: 'Overview' },
139
- { key: 'purch__suppliers', label: 'Suppliers', path: '/procurement/suppliers', module: 'Procurement', defaultGroup: 'Suppliers' },
140
- { key: 'purch__requisitions', label: 'Requisitions', path: '/procurement/requisitions', module: 'Procurement', defaultGroup: 'Purchasing' },
141
- { key: 'purch__orders', label: 'Purchase Orders', path: '/procurement/purchase-orders', module: 'Procurement', defaultGroup: 'Purchasing' },
142
- { key: 'purch__grn', label: 'Goods Receipts (GRN)', path: '/procurement/grns', module: 'Procurement', defaultGroup: 'Receiving' },
143
- { key: 'purch__returns', label: 'Purchase Returns', path: '/procurement/returns', module: 'Procurement', defaultGroup: 'Receiving' },
144
- { key: 'purch__invoices', label: 'Supplier Invoices', path: '/procurement/invoices', module: 'Procurement', defaultGroup: 'Invoicing' },
145
- { key: 'purch__consignment', label: 'Consignment', path: '/procurement/consignment', module: 'Procurement', defaultGroup: 'Consignment' },
146
- { key: 'purch__settlements', label: 'Settlements', path: '/procurement/consignment/settlements', module: 'Procurement', defaultGroup: 'Consignment' },
97
+ { key: 'sales__pos_sessions', label: 'Terminal Sessions', path: '/sales/pos/sessions', module: 'Sales', defaultGroup: 'POS' },
98
+ { key: 'sales__reports', label: 'Sales Reports', path: '/sales/reports', module: 'Sales', defaultGroup: 'Analytics' },
147
99
 
148
- // ── Manufacturing Module (future) ──
149
- { key: 'mfg__bom', label: 'Bill of Materials', path: '/manufacturing/bom', module: 'Manufacturing', defaultGroup: 'Engineering' },
150
- { key: 'mfg__work_orders', label: 'Work Orders', path: '/manufacturing/work-orders', module: 'Manufacturing', defaultGroup: 'Production' },
151
- { key: 'mfg__routing', label: 'Routing', path: '/manufacturing/routing', module: 'Manufacturing', defaultGroup: 'Engineering' },
152
- { key: 'mfg__reports', label: 'Production Reports', path: '/manufacturing/reports', module: 'Manufacturing', defaultGroup: 'Reports' },
100
+ // ── Procurement Module ──
101
+ { key: 'procurement__orders', label: 'Purchase Orders', path: '/procurement/orders', module: 'Procurement', defaultGroup: 'Orders' },
102
+ { key: 'procurement__grn', label: 'Goods Receipt', path: '/procurement/grns', module: 'Procurement', defaultGroup: 'Receiving' },
103
+ { key: 'procurement__invoices', label: 'Invoices', path: '/finance/invoices', module: 'Procurement', defaultGroup: 'Finance' },
104
+ { key: 'procurement__payments', label: 'Payments', path: '/finance/payments', module: 'Procurement', defaultGroup: 'Finance' },
153
105
 
154
- // ── HR Module (future) ──
155
- { key: 'hr__employees', label: 'Employees', path: '/hr/employees', module: 'HR', defaultGroup: 'Workforce' },
156
- { key: 'hr__attendance', label: 'Attendance', path: '/hr/attendance', module: 'HR', defaultGroup: 'Workforce' },
157
- { key: 'hr__payroll', label: 'Payroll', path: '/hr/payroll', module: 'HR', defaultGroup: 'Compensation' },
158
- { key: 'hr__leave', label: 'Leave Management', path: '/hr/leave', module: 'HR', defaultGroup: 'Workforce' },
159
- { key: 'hr__reports', label: 'HR Reports', path: '/hr/reports', module: 'HR', defaultGroup: 'Reports' },
106
+ // ── Finance Module ──
107
+ { key: 'finance__invoices', label: 'Invoices', path: '/finance/invoices', module: 'Finance', defaultGroup: 'Transactions' },
108
+ { key: 'finance__payments', label: 'Payments', path: '/finance/payments', module: 'Finance', defaultGroup: 'Transactions' },
109
+ { key: 'finance__chart_of_accounts', label: 'Chart of Accounts', path: '/finance/chart-of-accounts', module: 'Finance', defaultGroup: 'Accounting' },
110
+ { key: 'finance__journal_entries', label: 'Journal Entries', path: '/finance/journal-entries', module: 'Finance', defaultGroup: 'Accounting' },
111
+ { key: 'finance__fiscal_years', label: 'Fiscal Years', path: '/finance/fiscal-years', module: 'Finance', defaultGroup: 'Accounting' },
112
+ { key: 'finance__trial_balance', label: 'Trial Balance', path: '/finance/reports/trial-balance', module: 'Finance', defaultGroup: 'Reports' },
113
+ { key: 'finance__profit_loss', label: 'Profit & Loss', path: '/finance/reports/profit-loss', module: 'Finance', defaultGroup: 'Reports' },
114
+ { key: 'finance__balance_sheet', label: 'Balance Sheet', path: '/finance/reports/balance-sheet', module: 'Finance', defaultGroup: 'Reports' },
115
+ { key: 'finance__account_ledger', label: 'Account Ledger', path: '/finance/reports/account-ledger', module: 'Finance', defaultGroup: 'Reports' },
116
+ { key: 'finance__payment_modes', label: 'Payment Modes', path: '/finance/payment-modes', module: 'Finance', defaultGroup: 'Settings' },
117
+ { key: 'finance__bank_accounts', label: 'Bank Accounts', path: '/finance/bank-accounts', module: 'Finance', defaultGroup: 'Settings' },
118
+ { key: 'finance__account_mappings', label: 'Account Mappings', path: '/finance/account-mappings', module: 'Finance', defaultGroup: 'Settings' },
160
119
 
161
120
  // ── Jewelry Module ──
162
- { key: 'jwl__dashboard', label: 'Dashboard', path: '/jewelry', module: 'Jewelry', defaultGroup: 'Overview' },
163
- { key: 'jwl__metal_rates', label: 'Metal Rates', path: '/jewelry/metal-rates', module: 'Jewelry', defaultGroup: 'Setup' },
164
- { key: 'jwl__master_metals', label: 'Metal Types', path: '/jewelry/master/metals', module: 'Jewelry', defaultGroup: 'Setup' },
165
- { key: 'jwl__master_purities', label: 'Purity Master', path: '/jewelry/master/purities', module: 'Jewelry', defaultGroup: 'Setup' },
166
- { key: 'jwl__items', label: 'Jewelry Items', path: '/jewelry/items', module: 'Jewelry', defaultGroup: 'Catalog' },
167
- { key: 'jwl__stones', label: 'Loose Stones', path: '/jewelry/stones', module: 'Jewelry', defaultGroup: 'Catalog' },
168
- { key: 'jwl__certifications', label: 'Certifications', path: '/jewelry/certifications', module: 'Jewelry', defaultGroup: 'Catalog' },
169
- { key: 'jwl__karigars', label: 'Karigars', path: '/jewelry/karigars', module: 'Jewelry', defaultGroup: 'Operations' },
170
- { key: 'jwl__custom_orders', label: 'Custom Orders', path: '/jewelry/custom-orders', module: 'Jewelry', defaultGroup: 'Operations' },
171
- { key: 'jwl__repairs', label: 'Repairs', path: '/jewelry/repairs', module: 'Jewelry', defaultGroup: 'Operations' },
172
- { key: 'jwl__melting', label: 'Old Gold / Melting', path: '/jewelry/melting', module: 'Jewelry', defaultGroup: 'Operations' },
173
- { key: 'jwl__tags', label: 'Tag Printing', path: '/jewelry/tags', module: 'Jewelry', defaultGroup: 'Operations' },
174
- { key: 'jwl__refinery', label: 'Refinery Batches', path: '/jewelry/refinery', module: 'Jewelry', defaultGroup: 'Manufacturing' },
175
- { key: 'jwl__metal_issues', label: 'Metal Issues', path: '/jewelry/metal-issues', module: 'Jewelry', defaultGroup: 'Manufacturing' },
176
- { key: 'jwl__designs', label: 'Design Library', path: '/jewelry/designs', module: 'Jewelry', defaultGroup: 'Manufacturing' },
177
- { key: 'jwl__dealers', label: 'Wholesale Dealers', path: '/jewelry/dealers', module: 'Jewelry', defaultGroup: 'Sales & Billing' },
178
- { key: 'jwl__installments', label: 'Installments', path: '/jewelry/installments', module: 'Jewelry', defaultGroup: 'Sales & Billing' },
179
- { key: 'jwl__vouchers', label: 'Gift Vouchers', path: '/jewelry/vouchers', module: 'Jewelry', defaultGroup: 'Sales & Billing' },
180
- { key: 'jwl__reservations', label: 'Reservations', path: '/jewelry/reservations', module: 'Jewelry', defaultGroup: 'Sales & Billing' },
181
- { key: 'jwl__warranties', label: 'Warranties', path: '/jewelry/warranties', module: 'Jewelry', defaultGroup: 'Sales & Billing' },
182
- { key: 'jwl__notifications', label: 'Notifications Queue', path: '/jewelry/notifications', module: 'Jewelry', defaultGroup: 'System' },
183
- { key: 'jwl__reports', label: 'Reports', path: '/jewelry/reports', module: 'Jewelry', defaultGroup: 'Reports' },
184
- { key: 'jwl__pos_sell', label: 'POS Sell', path: '/jewelry/pos/sell', module: 'Jewelry', defaultGroup: 'Sales & Billing' },
185
- { key: 'jwl__pos_sales', label: 'View Sales', path: '/jewelry/pos/sales', module: 'Jewelry', defaultGroup: 'Sales & Billing' },
186
- { key: 'jwl__stone_procurement', label: 'Stone Procurement', path: '/jewelry/stone-procurement', module: 'Jewelry', defaultGroup: 'Procurement' },
187
- { key: 'jwl__consignment', label: 'Consignment Stock', path: '/jewelry/consignment', module: 'Jewelry', defaultGroup: 'Procurement' },
188
- { key: 'jwl__procurement', label: 'Purchase Orders', path: '/jewelry/procurement', module: 'Jewelry', defaultGroup: 'Procurement' },
189
- { key: 'jwl__purchase_pos', label: 'Purchase POS', path: '/jewelry/purchases', module: 'Jewelry', defaultGroup: 'Procurement' },
190
- { key: 'jwl__processing', label: 'Inventory Processing', path: '/jewelry/purchases/processing', module: 'Jewelry', defaultGroup: 'Procurement' },
191
- { key: 'jwl__purchase_returns', label: 'Purchase Returns', path: '/jewelry/purchases/returns', module: 'Jewelry', defaultGroup: 'Procurement' },
192
- { key: 'jwl__repositories', label: 'Metal Repositories', path: '/jewelry/repositories', module: 'Jewelry', defaultGroup: 'Operations' },
193
- { key: 'jwl__repository_settings', label: 'Repository Settings', path: '/jewelry/repository-settings', module: 'Jewelry', defaultGroup: 'Setup' },
194
-
195
- // ── AI Intelligence Module ──
196
- { key: 'ai__recommendations', label: 'Recommendations', path: '/jewelry/ai/recommendations', module: 'AI', defaultGroup: 'Intelligence' },
197
- { key: 'ai__reports', label: 'AI Reports', path: '/jewelry/ai/reports', module: 'AI', defaultGroup: 'Intelligence' },
198
- { key: 'ai__anomalies', label: 'Anomalies', path: '/jewelry/ai/anomalies', module: 'AI', defaultGroup: 'Intelligence' },
199
- { key: 'ai__predictions', label: 'Predictions', path: '/jewelry/ai/predictions', module: 'AI', defaultGroup: 'Intelligence' },
200
- { key: 'ai__usage', label: 'Usage', path: '/jewelry/ai/usage', module: 'AI', defaultGroup: 'Intelligence' },
121
+ { key: 'jewelry__items', label: 'Jewelry Items', path: '/jewelry/items', module: 'Jewelry', defaultGroup: 'Catalog' },
122
+ { key: 'jewelry__services', label: 'Services', path: '/jewelry/services', module: 'Jewelry', defaultGroup: 'Catalog' },
123
+ { key: 'jewelry__categories', label: 'Categories', path: '/jewelry/categories', module: 'Jewelry', defaultGroup: 'Catalog' },
124
+ { key: 'jewelry__material_types', label: 'Material Types', path: '/jewelry/material-types', module: 'Jewelry', defaultGroup: 'Master Data' },
125
+ { key: 'jewelry__purities', label: 'Purities', path: '/jewelry/purities', module: 'Jewelry', defaultGroup: 'Master Data' },
126
+ { key: 'jewelry__metal_rates', label: 'Metal Rates', path: '/jewelry/metal-rates', module: 'Jewelry', defaultGroup: 'Master Data' },
127
+ { key: 'jewelry__purchase_orders', label: 'Purchase Orders', path: '/jewelry/procurement/orders', module: 'Jewelry', defaultGroup: 'Procurement' },
128
+ { key: 'jewelry__grn', label: 'Goods Receipt', path: '/jewelry/procurement/grn', module: 'Jewelry', defaultGroup: 'Procurement' },
129
+ { key: 'jewelry__custom_orders', label: 'Custom Orders', path: '/jewelry/custom-orders', module: 'Jewelry', defaultGroup: 'Procurement' },
130
+ { key: 'jewelry__transformations', label: 'Transformations', path: '/jewelry/procurement/transformations', module: 'Jewelry', defaultGroup: 'Procurement' },
131
+ { key: 'jewelry__old_gold_purchases', label: 'Old Material Purchases', path: '/jewelry/old-gold-purchases', module: 'Jewelry', defaultGroup: 'Buying' },
132
+ { key: 'jewelry__sales', label: 'Sales', path: '/jewelry/sales', module: 'Jewelry', defaultGroup: 'Sales' },
133
+ { key: 'jewelry__sales_orders', label: 'Sales Orders', path: '/jewelry/sales/orders', module: 'Jewelry', defaultGroup: 'Sales' },
134
+ { key: 'jewelry__stock_balances', label: 'Stock Balances', path: '/jewelry/stock/balances', module: 'Jewelry', defaultGroup: 'Stock' },
135
+ { key: 'jewelry__stock_movements', label: 'Stock Movements', path: '/jewelry/stock/movements', module: 'Jewelry', defaultGroup: 'Stock' },
136
+ { key: 'jewelry__stock_transfers', label: 'Transfers', path: '/jewelry/stock-transfers', module: 'Jewelry', defaultGroup: 'Stock' },
137
+ { key: 'jewelry__party_transactions', label: 'Party Transactions', path: '/jewelry/party-transactions', module: 'Jewelry', defaultGroup: 'Karigar' },
138
+ { key: 'jewelry__karigar_scrap_returns', label: 'Karigar Dust Returns', path: '/jewelry/karigar-scrap-returns', module: 'Jewelry', defaultGroup: 'Karigar' },
139
+ { key: 'jewelry__settings', label: 'Settings', path: '/jewelry/settings', module: 'Jewelry', defaultGroup: 'Configuration' },
140
+ { key: 'jewelry__reports', label: 'Reports & Dashboards', path: '/reports/jewelry', module: 'Jewelry', defaultGroup: 'Analytics' },
201
141
  ];
202
142
 
203
143
  /**
@@ -269,17 +209,19 @@ export interface MenuPreset {
269
209
  export const MENU_PRESETS: MenuPreset[] = [
270
210
  {
271
211
  id: 'default_full',
272
- label: 'Full ERP',
273
- description: 'All modules visible — suitable for large enterprises',
212
+ label: 'Core Only',
213
+ description: 'System modules only',
274
214
  primaryMenus: [
275
215
  {
276
216
  id: 'core',
277
217
  label: 'Core',
278
218
  iconName: 'Settings',
279
219
  secondaryItems: [
280
- 'core__users', 'core__roles', 'core__organizations',
220
+ 'core__users', 'core__roles', 'core__organizations', 'core__parties',
221
+ 'core__warehouses', 'core__terminals',
281
222
  'core__activity_logs', 'core__api_requests', 'core__feature_access_logs',
282
223
  'core__issue_logs', 'core__feature_registry', 'core__menu_config',
224
+ 'core__printables',
283
225
  ],
284
226
  },
285
227
  {
@@ -287,118 +229,20 @@ export const MENU_PRESETS: MenuPreset[] = [
287
229
  label: 'Inventory',
288
230
  iconName: 'Package',
289
231
  secondaryItems: [
290
- 'inv__items', 'inv__categories', 'inv__units', 'inv__supplier_items',
291
- 'inv__documents', 'inv__warehouses', 'inv__lots', 'inv__stock_counts', 'inv__reservations',
292
- 'inv__inspection', 'inv__alerts',
293
- 'inv__opening_balances',
294
- 'inv__dashboard', 'inv__balances', 'inv__reports',
295
- ],
296
- },
297
- {
298
- id: 'sales',
299
- label: 'Sales',
300
- iconName: 'ShoppingCart',
301
- secondaryItems: [
302
- 'pos__dashboard', 'pos__sell',
303
- 'pos__terminals', 'pos__sessions',
304
- 'pos__invoices', 'pos__returns',
305
- 'pos__reports',
306
- ],
307
- },
308
- {
309
- id: 'finance',
310
- label: 'Finance',
311
- iconName: 'Landmark',
312
- secondaryItems: [
313
- 'fin__dashboard', 'fin__settings',
314
- 'fin__chart_of_accounts', 'fin__fiscal_periods', 'fin__journal_entries', 'fin__gl_transactions',
315
- 'fin__customers', 'fin__vendors',
316
- 'fin__bank_accounts', 'fin__tax_codes',
317
- ],
318
- },
319
- {
320
- id: 'procurement',
321
- label: 'Procurement',
322
- iconName: 'Truck',
323
- secondaryItems: [
324
- 'purch__dashboard', 'purch__suppliers',
325
- 'purch__requisitions', 'purch__orders',
326
- 'purch__grn', 'purch__returns',
327
- 'purch__invoices',
328
- 'purch__consignment', 'purch__settlements',
232
+ 'inventory__items', 'inventory__categories', 'inventory__brands', 'inventory__uom',
233
+ 'inventory__stock', 'inventory__ledger',
234
+ 'inventory__adjustments', 'inventory__transfers', 'inventory__serials',
329
235
  ],
330
236
  },
331
- ],
332
- },
333
- {
334
- id: 'small_retail',
335
- label: 'Small Retail / Jewelry Shop',
336
- description: 'Sales, stock, finance — simplified for small retail businesses',
337
- primaryMenus: [
338
237
  {
339
238
  id: 'sales',
340
239
  label: 'Sales',
341
240
  iconName: 'ShoppingCart',
342
241
  secondaryItems: [
343
- 'sales__orders', 'sales__invoices', 'sales__customers',
344
- 'sales__returns', 'sales__reports',
345
- 'pos__dashboard', 'pos__sell',
346
- 'pos__terminals', 'pos__sessions',
347
- 'pos__invoices', 'pos__returns',
348
- 'pos__reports',
349
- ],
350
- },
351
- {
352
- id: 'stock',
353
- label: 'Stock',
354
- iconName: 'Package',
355
- secondaryItems: [
356
- 'inv__items', 'inv__categories',
357
- 'inv__documents', 'inv__warehouses',
358
- 'inv__alerts', 'inv__balances',
359
- ],
360
- },
361
- {
362
- id: 'purchases',
363
- label: 'Purchases',
364
- iconName: 'Truck',
365
- secondaryItems: [
366
- 'purch__orders', 'purch__grn', 'purch__suppliers', 'purch__reports',
367
- ],
368
- },
369
- {
370
- id: 'finance',
371
- label: 'Finance',
372
- iconName: 'Landmark',
373
- secondaryItems: [
374
- 'fin__chart_of_accounts', 'fin__journal_entries',
375
- 'fin__invoices', 'fin__payments', 'fin__reports',
376
- ],
377
- },
378
- {
379
- id: 'settings',
380
- label: 'Settings',
381
- iconName: 'Settings',
382
- secondaryItems: [
383
- 'core__users', 'core__roles', 'core__organizations', 'core__menu_config',
384
- ],
385
- },
386
- ],
387
- },
388
- {
389
- id: 'enterprise_mfg',
390
- label: 'Enterprise / Manufacturing',
391
- description: 'Full modules with procurement, manufacturing, and inventory',
392
- primaryMenus: [
393
- {
394
- id: 'inventory',
395
- label: 'Inventory',
396
- iconName: 'Warehouse',
397
- secondaryItems: [
398
- 'inv__items', 'inv__categories', 'inv__units', 'inv__supplier_items',
399
- 'inv__documents', 'inv__warehouses', 'inv__lots', 'inv__stock_counts', 'inv__reservations',
400
- 'inv__inspection', 'inv__alerts', 'inv__opening_balances',
401
- 'inv__dashboard', 'inv__balances', 'inv__reports',
242
+ 'sales__price_lists',
243
+ 'sales__quotations', 'sales__orders', 'sales__goods_issue_notes',
244
+ 'sales__returns', 'sales__credit_notes',
245
+ 'sales__pos', 'sales__pos_sessions', 'sales__reports',
402
246
  ],
403
247
  },
404
248
  {
@@ -406,179 +250,36 @@ export const MENU_PRESETS: MenuPreset[] = [
406
250
  label: 'Procurement',
407
251
  iconName: 'Truck',
408
252
  secondaryItems: [
409
- 'purch__requisitions', 'purch__orders', 'purch__grn',
410
- 'purch__suppliers', 'purch__contracts', 'purch__reports',
411
- ],
412
- },
413
- {
414
- id: 'manufacturing',
415
- label: 'Manufacturing',
416
- iconName: 'Factory',
417
- secondaryItems: [
418
- 'mfg__bom', 'mfg__work_orders', 'mfg__routing', 'mfg__reports',
419
- ],
420
- },
421
- {
422
- id: 'finance',
423
- label: 'Finance',
424
- iconName: 'Landmark',
425
- secondaryItems: [
426
- 'fin__chart_of_accounts', 'fin__journal_entries',
427
- 'fin__bank_accounts', 'fin__reconciliation',
428
- 'fin__invoices', 'fin__payments', 'fin__reports',
429
- ],
430
- },
431
- {
432
- id: 'hr',
433
- label: 'HR',
434
- iconName: 'Users',
435
- secondaryItems: [
436
- 'hr__employees', 'hr__attendance', 'hr__payroll', 'hr__leave', 'hr__reports',
437
- ],
438
- },
439
- {
440
- id: 'admin',
441
- label: 'Admin',
442
- iconName: 'Settings',
443
- secondaryItems: [
444
- 'core__users', 'core__roles', 'core__organizations',
445
- 'core__activity_logs', 'core__menu_config',
446
- ],
447
- },
448
- ],
449
- },
450
- {
451
- id: 'services_company',
452
- label: 'Services Company',
453
- description: 'HR, finance, and client management for service businesses',
454
- primaryMenus: [
455
- {
456
- id: 'clients',
457
- label: 'Clients',
458
- iconName: 'Handshake',
459
- secondaryItems: [
460
- 'sales__customers', 'sales__quotations', 'sales__orders',
461
- 'sales__invoices', 'sales__reports',
462
- ],
463
- },
464
- {
465
- id: 'team',
466
- label: 'Team',
467
- iconName: 'Users',
468
- secondaryItems: [
469
- 'hr__employees', 'hr__attendance', 'hr__leave', 'hr__payroll', 'hr__reports',
253
+ 'procurement__orders', 'procurement__grn',
254
+ 'procurement__invoices', 'procurement__payments',
470
255
  ],
471
256
  },
472
257
  {
473
258
  id: 'finance',
474
259
  label: 'Finance',
475
- iconName: 'Landmark',
476
- secondaryItems: [
477
- 'fin__chart_of_accounts', 'fin__journal_entries',
478
- 'fin__invoices', 'fin__payments', 'fin__reports',
479
- ],
480
- },
481
- {
482
- id: 'settings',
483
- label: 'Settings',
484
- iconName: 'Settings',
485
- secondaryItems: [
486
- 'core__users', 'core__roles', 'core__organizations', 'core__menu_config',
487
- ],
488
- },
489
- ],
490
- },
491
- {
492
- id: 'jewelry_shop',
493
- label: 'Jewelry Shop',
494
- description: 'Specialized for jewelry retail with metal rates, stones, karigars, and custom orders',
495
- primaryMenus: [
496
- {
497
- id: 'dashboard',
498
- label: 'Dashboard',
499
- iconName: 'LayoutDashboard',
260
+ iconName: 'Wallet',
500
261
  secondaryItems: [
501
- 'jwl__dashboard', 'jwl__metal_rates',
502
- 'jwl__reports', 'jwl__notifications',
503
- 'ai__recommendations', 'ai__reports', 'ai__anomalies', 'ai__predictions', 'ai__usage',
262
+ 'finance__invoices', 'finance__payments',
263
+ 'finance__chart_of_accounts', 'finance__journal_entries', 'finance__fiscal_years',
264
+ 'finance__trial_balance', 'finance__profit_loss', 'finance__balance_sheet', 'finance__account_ledger',
265
+ 'finance__payment_modes', 'finance__bank_accounts', 'finance__account_mappings',
504
266
  ],
505
267
  },
506
268
  {
507
- id: 'catalog',
508
- label: 'Catalog',
269
+ id: 'jewelry',
270
+ label: 'Jewelry',
509
271
  iconName: 'Gem',
510
272
  secondaryItems: [
511
- 'jwl__items', 'jwl__stones', 'jwl__certifications',
512
- 'jwl__master_metals', 'jwl__master_purities',
513
- 'jwl__tags', 'jwl__designs',
514
- 'inv__categories', 'inv__units',
515
- ],
516
- },
517
- {
518
- id: 'sales',
519
- label: 'Sales & POS',
520
- iconName: 'ShoppingCart',
521
- secondaryItems: [
522
- 'jwl__pos_sell', 'jwl__pos_sales',
523
- 'jwl__dealers', 'jwl__installments',
524
- 'jwl__vouchers', 'jwl__reservations',
525
- 'jwl__warranties', 'jwl__melting',
526
- ],
527
- },
528
- {
529
- id: 'orders',
530
- label: 'Orders',
531
- iconName: 'ClipboardList',
532
- secondaryItems: [
533
- 'jwl__custom_orders', 'jwl__repairs',
534
- 'jwl__karigars',
535
- ],
536
- },
537
- {
538
- id: 'manufacturing',
539
- label: 'Manufacturing',
540
- iconName: 'Factory',
541
- secondaryItems: [
542
- 'jwl__refinery', 'jwl__metal_issues', 'jwl__repositories',
543
- ],
544
- },
545
- {
546
- id: 'procurement',
547
- label: 'Procurement',
548
- iconName: 'Truck',
549
- secondaryItems: [
550
- 'jwl__purchase_pos', 'jwl__processing', 'jwl__purchase_returns',
551
- 'jwl__stone_procurement', 'jwl__consignment', 'jwl__procurement',
552
- 'purch__suppliers', 'purch__orders', 'purch__grn',
553
- 'purch__consignment', 'purch__settlements',
554
- ],
555
- },
556
- {
557
- id: 'stock',
558
- label: 'Stock',
559
- iconName: 'Package',
560
- secondaryItems: [
561
- 'inv__items', 'inv__documents', 'inv__warehouses', 'inv__lots',
562
- 'inv__alerts', 'inv__balances', 'inv__reports',
563
- ],
564
- },
565
- {
566
- id: 'finance',
567
- label: 'Finance',
568
- iconName: 'Landmark',
569
- secondaryItems: [
570
- 'fin__chart_of_accounts', 'fin__journal_entries',
571
- 'fin__customers', 'fin__vendors',
572
- 'fin__bank_accounts', 'fin__tax_codes',
573
- ],
574
- },
575
- {
576
- id: 'settings',
577
- label: 'Settings',
578
- iconName: 'Settings',
579
- secondaryItems: [
580
- 'core__users', 'core__roles', 'core__organizations', 'core__menu_config',
581
- 'jwl__repository_settings',
273
+ 'jewelry__items', 'jewelry__categories',
274
+ 'jewelry__material_types', 'jewelry__purities', 'jewelry__metal_rates',
275
+ 'jewelry__purchase_orders', 'jewelry__grn', 'jewelry__custom_orders', 'jewelry__transformations',
276
+ 'jewelry__old_gold_purchases',
277
+ 'jewelry__sales', 'jewelry__sales_orders',
278
+ 'jewelry__stock_balances', 'jewelry__stock_movements', 'jewelry__stock_transfers',
279
+ 'jewelry__party_transactions',
280
+ 'jewelry__karigar_scrap_returns',
281
+ 'jewelry__reports',
282
+ 'jewelry__settings',
582
283
  ],
583
284
  },
584
285
  ],
@@ -593,7 +294,7 @@ export const APP_MENUS: MainMenuItem[] = [
593
294
  {
594
295
  id: "core",
595
296
  label: "Core",
596
- iconName: "Settings", // Translates to Settings icon from lucide-react
297
+ iconName: "Settings",
597
298
  groups: [
598
299
  {
599
300
  id: "core_users",
@@ -602,6 +303,7 @@ export const APP_MENUS: MainMenuItem[] = [
602
303
  { id: "users", label: "Users", path: "/users" },
603
304
  { id: "roles", label: "Roles", path: "/roles" },
604
305
  { id: "organizations", label: "Organizations", path: "/organizations" },
306
+ { id: "parties", label: "Parties", path: "/parties" },
605
307
  ],
606
308
  },
607
309
  {
@@ -609,6 +311,15 @@ export const APP_MENUS: MainMenuItem[] = [
609
311
  label: "System",
610
312
  items: [
611
313
  { id: "menu_config", label: "Menu Configuration", path: "/menu-config" },
314
+ { id: "printables", label: "Printable Templates", path: "/system/printables" },
315
+ ],
316
+ },
317
+ {
318
+ id: "core_resources",
319
+ label: "Resources",
320
+ items: [
321
+ { id: "warehouses", label: "Warehouses", path: "/warehouses" },
322
+ { id: "terminals", label: "Terminals", path: "/terminals" },
612
323
  ],
613
324
  },
614
325
  {
@@ -627,61 +338,33 @@ export const APP_MENUS: MainMenuItem[] = [
627
338
  {
628
339
  id: "inventory",
629
340
  label: "Inventory",
630
- iconName: "Package", // Translates to Package icon from lucide-react
341
+ iconName: "Package",
631
342
  groups: [
632
343
  {
633
- id: "inv_catalog",
344
+ id: "inventory_catalog",
634
345
  label: "Catalog",
635
346
  items: [
636
347
  { id: "items", label: "Items", path: "/inventory/items" },
637
348
  { id: "categories", label: "Categories", path: "/inventory/categories" },
638
- { id: "units", label: "Units", path: "/inventory/units" },
639
- { id: "supplier_items", label: "Supplier Items", path: "/inventory/supplier-items" },
640
- ],
641
- },
642
- {
643
- id: "inv_stock",
644
- label: "Stock Control",
645
- items: [
646
- { id: "documents", label: "Stock Documents", path: "/inventory/documents" },
647
- { id: "warehouses", label: "Warehouses", path: "/inventory/warehouses" },
648
- { id: "lots", label: "Lots & Serials", path: "/inventory/lots" },
649
- { id: "stock_counts", label: "Stock Counts", path: "/inventory/stock-counts" },
650
- { id: "reservations", label: "Reservations", path: "/inventory/reservations" },
651
- ],
652
- },
653
- {
654
- id: "inv_transfers",
655
- label: "Transfers",
656
- items: [
657
- { id: "transfer_requests", label: "Transfer Requests", path: "/inventory/transfer-requests" },
658
- { id: "transfer_orders", label: "Transfer Orders", path: "/inventory/transfer-orders" },
349
+ { id: "brands", label: "Brands", path: "/inventory/brands" },
350
+ { id: "uom", label: "Units of Measure", path: "/inventory/uom" },
659
351
  ],
660
352
  },
661
353
  {
662
- id: "inv_quality",
663
- label: "Quality & Alerts",
354
+ id: "inventory_stock",
355
+ label: "Stock",
664
356
  items: [
665
- { id: "inspection", label: "Inspection", path: "/inventory/inspection" },
666
- { id: "alerts", label: "Stock Alerts", path: "/inventory/alerts" },
357
+ { id: "stock", label: "Stock Overview", path: "/inventory/stock" },
358
+ { id: "ledger", label: "Stock Movements", path: "/inventory/ledger" },
667
359
  ],
668
360
  },
669
361
  {
670
- id: "inv_operations",
362
+ id: "inventory_operations",
671
363
  label: "Operations",
672
364
  items: [
673
- { id: "opening_balances", label: "Opening Balances", path: "/inventory/opening-balances" },
674
- { id: "write_offs", label: "Write-Offs", path: "/inventory/write-offs" },
675
- { id: "consignment", label: "Consignment", path: "/inventory/consignment" },
676
- ],
677
- },
678
- {
679
- id: "inv_reports",
680
- label: "Reports",
681
- items: [
682
- { id: "dashboard", label: "Dashboard", path: "/inventory/dashboard" },
683
- { id: "balances", label: "Stock Balances", path: "/inventory/balances" },
684
- { id: "reports", label: "All Reports", path: "/inventory/reports" },
365
+ { id: "adjustments", label: "Adjustments", path: "/inventory/adjustments" },
366
+ { id: "transfers", label: "Transfers", path: "/inventory/transfers" },
367
+ { id: "serials", label: "Serial Numbers", path: "/inventory/serials" },
685
368
  ],
686
369
  },
687
370
  ],
@@ -692,164 +375,120 @@ export const APP_MENUS: MainMenuItem[] = [
692
375
  iconName: "ShoppingCart",
693
376
  groups: [
694
377
  {
695
- id: "sales_pos_overview",
696
- label: "POS Overview",
697
- items: [
698
- { id: "pos_dashboard", label: "POS Dashboard", path: "/pos" },
699
- { id: "pos_sell", label: "Sell Screen", path: "/pos/sell" },
700
- { id: "pos_quick_sell", label: "Quick Sell", path: "/pos/quick-sell" },
701
- ],
702
- },
703
- {
704
- id: "sales_pos_ops",
705
- label: "POS Operations",
706
- items: [
707
- { id: "pos_terminals", label: "Terminals", path: "/pos/terminals" },
708
- { id: "pos_sessions", label: "Sessions", path: "/pos/sessions" },
709
- ],
710
- },
711
- {
712
- id: "sales_pos_transactions",
713
- label: "POS Transactions",
714
- items: [
715
- { id: "pos_invoices", label: "Invoices", path: "/pos/invoices" },
716
- { id: "pos_returns", label: "Returns", path: "/pos/returns" },
717
- ],
718
- },
719
- {
720
- id: "sales_pos_reports",
721
- label: "POS Reports",
378
+ id: "sales_master_data",
379
+ label: "Master Data",
722
380
  items: [
723
- { id: "pos_reports", label: "Sales Reports", path: "/pos/reports" },
381
+ { id: "price_lists", label: "Price Lists", path: "/sales/price-lists" },
724
382
  ],
725
383
  },
726
- ],
727
- },
728
- {
729
- id: "finance",
730
- label: "Finance",
731
- iconName: "Landmark",
732
- groups: [
733
384
  {
734
- id: "fin_overview",
735
- label: "Overview",
385
+ id: "sales_orders",
386
+ label: "Orders",
736
387
  items: [
737
- { id: "fin_dashboard", label: "Dashboard", path: "/finance" },
738
- { id: "fin_settings", label: "Settings", path: "/finance/settings" },
388
+ { id: "quotations", label: "Quotations", path: "/sales/quotations" },
389
+ { id: "sales_orders", label: "Sales Orders", path: "/sales/orders" },
739
390
  ],
740
391
  },
741
392
  {
742
- id: "fin_gl",
743
- label: "General Ledger",
393
+ id: "sales_fulfillment",
394
+ label: "Fulfillment",
744
395
  items: [
745
- { id: "chart_of_accounts", label: "Chart of Accounts", path: "/finance/accounts" },
746
- { id: "fiscal_periods", label: "Fiscal Periods", path: "/finance/fiscal-periods" },
747
- { id: "journals", label: "Journal Entries", path: "/finance/journals" },
748
- { id: "gl_transactions", label: "GL Transactions", path: "/finance/gl-transactions" },
396
+ { id: "goods_issue_notes", label: "Goods Issue Notes", path: "/sales/delivery-notes" },
749
397
  ],
750
398
  },
751
399
  {
752
- id: "fin_receivables",
753
- label: "Receivables (AR)",
400
+ id: "sales_post_sales",
401
+ label: "Post-Sales",
754
402
  items: [
755
- { id: "receipts", label: "Receipts", path: "/finance/receipts" },
756
- { id: "customers", label: "Customers", path: "/finance/customers" },
403
+ { id: "returns", label: "Sales Returns", path: "/sales/returns" },
404
+ { id: "credit_notes", label: "Credit Notes", path: "/sales/credit-notes" },
757
405
  ],
758
406
  },
759
407
  {
760
- id: "fin_payables",
761
- label: "Payables (AP)",
408
+ id: "sales_pos",
409
+ label: "POS",
762
410
  items: [
763
- { id: "payments", label: "Payments", path: "/finance/payments" },
764
- { id: "vendors", label: "Vendors", path: "/finance/vendors" },
411
+ { id: "pos_terminal", label: "POS Terminal", path: "/sales/pos" },
412
+ { id: "pos_sessions", label: "Terminal Sessions", path: "/sales/pos/sessions" },
765
413
  ],
766
414
  },
767
415
  {
768
- id: "fin_banking",
769
- label: "Banking",
416
+ id: "sales_analytics",
417
+ label: "Analytics",
770
418
  items: [
771
- { id: "bank_accounts", label: "Bank Accounts", path: "/finance/bank/accounts" },
772
- { id: "bank_transactions", label: "Bank Transactions", path: "/finance/bank/transactions" },
773
- { id: "bank_reconciliation", label: "Reconciliation", path: "/finance/bank/reconciliation" },
774
- { id: "cheques", label: "Cheque Management", path: "/finance/cheques" },
419
+ { id: "sales_reports", label: "Sales Reports", path: "/sales/reports" },
775
420
  ],
776
421
  },
422
+ ],
423
+ },
424
+ {
425
+ id: "procurement",
426
+ label: "Procurement",
427
+ iconName: "Truck",
428
+ groups: [
777
429
  {
778
- id: "fin_expense_income",
779
- label: "Expense & Income",
430
+ id: "procurement_orders",
431
+ label: "Orders",
780
432
  items: [
781
- { id: "expense_income", label: "Categories & Transactions", path: "/finance/expense-income" },
433
+ { id: "purchase_orders", label: "Purchase Orders", path: "/procurement/orders" },
782
434
  ],
783
435
  },
784
436
  {
785
- id: "fin_tax",
786
- label: "Tax",
437
+ id: "procurement_receiving",
438
+ label: "Receiving",
787
439
  items: [
788
- { id: "tax_codes", label: "Tax Codes", path: "/finance/tax/codes" },
789
- { id: "tax_returns", label: "Tax Returns", path: "/finance/tax/returns" },
440
+ { id: "goods_receipt", label: "Goods Receipt", path: "/procurement/grns" },
790
441
  ],
791
442
  },
792
443
  {
793
- id: "fin_advanced",
794
- label: "Advanced",
444
+ id: "procurement_finance",
445
+ label: "Finance",
795
446
  items: [
796
- { id: "assets", label: "Fixed Assets", path: "/finance/assets" },
797
- { id: "budgets", label: "Budgets", path: "/finance/budgets" },
798
- { id: "events", label: "Accounting Events", path: "/finance/events" },
799
- { id: "reports", label: "Reports", path: "/finance/reports" },
800
- { id: "period_close", label: "Period Close", path: "/finance/period-close" },
447
+ { id: "ap_invoices", label: "Invoices", path: "/finance/invoices" },
448
+ { id: "outgoing_payments", label: "Payments", path: "/finance/payments" },
801
449
  ],
802
450
  },
803
451
  ],
804
452
  },
805
453
  {
806
- id: "procurement",
807
- label: "Procurement",
808
- iconName: "Truck",
454
+ id: "finance",
455
+ label: "Finance",
456
+ iconName: "Wallet",
809
457
  groups: [
810
458
  {
811
- id: "purch_overview",
812
- label: "Overview",
813
- items: [
814
- { id: "purch_dashboard", label: "Dashboard", path: "/procurement" },
815
- ],
816
- },
817
- {
818
- id: "purch_suppliers",
819
- label: "Suppliers",
459
+ id: "finance_transactions",
460
+ label: "Transactions",
820
461
  items: [
821
- { id: "suppliers", label: "Suppliers", path: "/procurement/suppliers" },
822
- ],
823
- },
824
- {
825
- id: "purch_purchasing",
826
- label: "Purchasing",
827
- items: [
828
- { id: "requisitions", label: "Requisitions", path: "/procurement/requisitions" },
829
- { id: "purchase_orders", label: "Purchase Orders", path: "/procurement/purchase-orders" },
462
+ { id: "invoices", label: "Invoices", path: "/finance/invoices" },
463
+ { id: "payments", label: "Payments", path: "/finance/payments" },
830
464
  ],
831
465
  },
832
466
  {
833
- id: "purch_receiving",
834
- label: "Receiving",
467
+ id: "finance_accounting",
468
+ label: "Accounting",
835
469
  items: [
836
- { id: "grns", label: "Goods Receipts (GRN)", path: "/procurement/grns" },
837
- { id: "returns", label: "Purchase Returns", path: "/procurement/returns" },
470
+ { id: "chart_of_accounts", label: "Chart of Accounts", path: "/finance/chart-of-accounts" },
471
+ { id: "journal_entries", label: "Journal Entries", path: "/finance/journal-entries" },
472
+ { id: "fiscal_years", label: "Fiscal Years", path: "/finance/fiscal-years" },
838
473
  ],
839
474
  },
840
475
  {
841
- id: "purch_invoicing",
842
- label: "Invoicing",
476
+ id: "finance_reports",
477
+ label: "Reports",
843
478
  items: [
844
- { id: "invoices", label: "Supplier Invoices", path: "/procurement/invoices" },
479
+ { id: "trial_balance", label: "Trial Balance", path: "/finance/reports/trial-balance" },
480
+ { id: "profit_loss", label: "Profit & Loss", path: "/finance/reports/profit-loss" },
481
+ { id: "balance_sheet", label: "Balance Sheet", path: "/finance/reports/balance-sheet" },
482
+ { id: "account_ledger", label: "Account Ledger", path: "/finance/reports/account-ledger" },
845
483
  ],
846
484
  },
847
485
  {
848
- id: "purch_consignment",
849
- label: "Consignment",
486
+ id: "finance_settings",
487
+ label: "Settings",
850
488
  items: [
851
- { id: "consignment", label: "Agreements", path: "/procurement/consignment" },
852
- { id: "settlements", label: "Settlements", path: "/procurement/consignment/settlements" },
489
+ { id: "payment_modes", label: "Payment Modes", path: "/finance/payment-modes" },
490
+ { id: "bank_accounts", label: "Bank Accounts", path: "/finance/bank-accounts" },
491
+ { id: "account_mappings", label: "Account Mappings", path: "/finance/account-mappings" },
853
492
  ],
854
493
  },
855
494
  ],
@@ -860,99 +499,108 @@ export const APP_MENUS: MainMenuItem[] = [
860
499
  iconName: "Gem",
861
500
  groups: [
862
501
  {
863
- id: "jwl_overview",
864
- label: "Overview",
502
+ id: "jewelry_catalog",
503
+ label: "Catalog",
865
504
  items: [
866
- { id: "jwl_dashboard", label: "Dashboard", path: "/jewelry" },
867
- { id: "jwl_metal_rates", label: "Metal Rates", path: "/jewelry/metal-rates" },
505
+ { id: "jewelry_items", label: "Jewelry Items", path: "/jewelry/items" },
506
+ { id: "jewelry_services", label: "Services", path: "/jewelry/services" },
507
+ { id: "jewelry_categories", label: "Categories", path: "/jewelry/categories" },
868
508
  ],
869
509
  },
870
510
  {
871
- id: "jwl_setup",
511
+ id: "jewelry_master_data",
872
512
  label: "Master Data",
873
513
  items: [
874
- { id: "jwl_master_metals", label: "Metal Types", path: "/jewelry/master/metals" },
875
- { id: "jwl_master_purities", label: "Purity Master", path: "/jewelry/master/purities" },
876
- { id: "jwl_repo_settings", label: "Repository Settings", path: "/jewelry/repository-settings" },
514
+ { id: "material_types", label: "Material Types", path: "/jewelry/material-types" },
515
+ { id: "purities", label: "Purities", path: "/jewelry/purities" },
516
+ { id: "metal_rates", label: "Metal Rates", path: "/jewelry/metal-rates" },
877
517
  ],
878
518
  },
879
519
  {
880
- id: "jwl_catalog",
881
- label: "Catalog",
520
+ id: "jewelry_procurement",
521
+ label: "Procurement",
882
522
  items: [
883
- { id: "jwl_items", label: "Jewelry Items", path: "/jewelry/items" },
884
- { id: "jwl_stones", label: "Loose Stones", path: "/jewelry/stones" },
885
- { id: "jwl_certifications", label: "Certifications", path: "/jewelry/certifications" },
523
+ { id: "purchase_orders", label: "Purchase Orders", path: "/jewelry/procurement/orders" },
524
+ { id: "goods_receipt", label: "Goods Receipt", path: "/jewelry/procurement/grn" },
525
+ { id: "custom_orders", label: "Custom Orders", path: "/jewelry/custom-orders" },
526
+ { id: "transformations", label: "Transformations", path: "/jewelry/procurement/transformations" },
886
527
  ],
887
528
  },
888
529
  {
889
- id: "jwl_operations",
890
- label: "Operations",
530
+ id: "jewelry_buying",
531
+ label: "Buying",
891
532
  items: [
892
- { id: "jwl_karigars", label: "Karigars", path: "/jewelry/karigars" },
893
- { id: "jwl_custom_orders", label: "Custom Orders", path: "/jewelry/custom-orders" },
894
- { id: "jwl_repairs", label: "Repairs", path: "/jewelry/repairs" },
895
- { id: "jwl_melting", label: "Old Gold / Melting", path: "/jewelry/melting" },
533
+ { id: "old_gold_purchases", label: "Old Material Purchases", path: "/jewelry/old-gold-purchases" },
896
534
  ],
897
535
  },
898
536
  {
899
- id: "jwl_manufacturing",
900
- label: "Manufacturing",
537
+ id: "jewelry_sales",
538
+ label: "Sales",
901
539
  items: [
902
- { id: "jwl_refinery", label: "Refinery Batches", path: "/jewelry/refinery" },
903
- { id: "jwl_metal_issues", label: "Metal Issues", path: "/jewelry/metal-issues" },
904
- { id: "jwl_designs", label: "Design Library", path: "/jewelry/designs" },
905
- { id: "jwl_repositories", label: "Metal Repositories", path: "/jewelry/repositories" },
540
+ { id: "jewelry_sales_main", label: "Sales", path: "/jewelry/sales" },
541
+ { id: "sales_orders", label: "Sales Orders", path: "/jewelry/sales/orders" },
906
542
  ],
907
543
  },
908
544
  {
909
- id: "jwl_procurement",
910
- label: "Procurement",
545
+ id: "jewelry_stock",
546
+ label: "Stock",
911
547
  items: [
912
- { id: "jwl_purchase_pos", label: "Purchase POS", path: "/jewelry/purchases" },
913
- { id: "jwl_processing", label: "Inventory Processing", path: "/jewelry/purchases/processing" },
914
- { id: "jwl_purchase_returns", label: "Purchase Returns", path: "/jewelry/purchases/returns" },
915
- { id: "jwl_stone_procurement", label: "Stone Procurement", path: "/jewelry/stone-procurement" },
916
- { id: "jwl_consignment", label: "Consignment Stock", path: "/jewelry/consignment" },
917
- { id: "jwl_procurement_orders", label: "Purchase Orders", path: "/jewelry/procurement" },
548
+ { id: "stock_balances", label: "Stock Balances", path: "/jewelry/stock/balances" },
549
+ { id: "stock_movements", label: "Stock Movements", path: "/jewelry/stock/movements" },
550
+ { id: "stock_transfers", label: "Transfers", path: "/jewelry/stock-transfers" },
918
551
  ],
919
552
  },
920
553
  {
921
- id: "jwl_sales_billing",
922
- label: "Sales & Billing",
554
+ id: "jewelry_karigar",
555
+ label: "Karigar",
923
556
  items: [
924
- { id: "jwl_pos_sell", label: "POS Sell", path: "/jewelry/pos/sell" },
925
- { id: "jwl_pos_sales", label: "View Sales", path: "/jewelry/pos/sales" },
926
- { id: "jwl_dealers", label: "Wholesale Dealers", path: "/jewelry/dealers" },
927
- { id: "jwl_installments", label: "Installments", path: "/jewelry/installments" },
928
- { id: "jwl_vouchers", label: "Gift Vouchers", path: "/jewelry/vouchers" },
929
- { id: "jwl_reservations", label: "Reservations", path: "/jewelry/reservations" },
930
- { id: "jwl_warranties", label: "Warranties", path: "/jewelry/warranties" },
557
+ { id: "party_transactions", label: "Party Transactions", path: "/jewelry/party-transactions" },
558
+ { id: "karigar_scrap_returns", label: "Karigar Dust Returns", path: "/jewelry/karigar-scrap-returns" },
931
559
  ],
932
560
  },
933
561
  {
934
- id: "jwl_reports",
935
- label: "Reports",
562
+ id: "jewelry_analytics",
563
+ label: "Analytics",
936
564
  items: [
937
- { id: "jwl_reports", label: "Reports & Analytics", path: "/jewelry/reports" },
565
+ { id: "jewelry_reports", label: "Reports & Dashboards", path: "/reports/jewelry" },
938
566
  ],
939
567
  },
940
568
  {
941
- id: "jwl_system",
942
- label: "System",
569
+ id: "jewelry_configuration",
570
+ label: "Configuration",
571
+ items: [
572
+ { id: "jewelry_settings", label: "Settings", path: "/jewelry/settings" },
573
+ ],
574
+ },
575
+ ],
576
+ },
577
+ {
578
+ id: "reports",
579
+ label: "Reports",
580
+ iconName: "BarChart3",
581
+ groups: [
582
+ {
583
+ id: "reports_dashboards",
584
+ label: "Dashboards",
585
+ items: [
586
+ { id: "reports_jewelry", label: "Jewelry", path: "/reports/jewelry" },
587
+ { id: "reports_inventory", label: "Inventory", path: "/reports/inventory" },
588
+ { id: "reports_finance", label: "Finance", path: "/reports/finance" },
589
+ ],
590
+ },
591
+ {
592
+ id: "reports_home",
593
+ label: "General",
943
594
  items: [
944
- { id: "jwl_notifications", label: "Notifications Queue", path: "/jewelry/notifications" },
595
+ { id: "reports_all", label: "All Reports", path: "/reports" },
945
596
  ],
946
597
  },
947
598
  {
948
- id: "jwl_ai",
949
- label: "AI Intelligence",
599
+ id: "reports_admin",
600
+ label: "Administration",
950
601
  items: [
951
- { id: "ai_recommendations", label: "Recommendations", path: "/jewelry/ai/recommendations" },
952
- { id: "ai_reports", label: "AI Reports", path: "/jewelry/ai/reports" },
953
- { id: "ai_anomalies", label: "Anomalies", path: "/jewelry/ai/anomalies" },
954
- { id: "ai_predictions", label: "Predictions", path: "/jewelry/ai/predictions" },
955
- { id: "ai_usage", label: "Usage", path: "/jewelry/ai/usage" },
602
+ { id: "reports_builder", label: "Report Builder", path: "/reports/admin/reports" },
603
+ { id: "reports_configurator", label: "Dashboard Configurator", path: "/reports/admin/dashboards" },
956
604
  ],
957
605
  },
958
606
  ],