@apptimate/core-lib 3.0.0 → 3.2.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/constants/menus.ts +132 -130
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apptimate/core-lib",
3
- "version": "3.0.0",
3
+ "version": "3.2.0",
4
4
  "main": "src/index.ts",
5
5
  "types": "src/index.ts",
6
6
  "publishConfig": {
@@ -55,156 +55,158 @@ export interface RegistryItem {
55
55
  module: string;
56
56
  /** Default group label when added to a menu */
57
57
  defaultGroup: string;
58
+ /** Optional permission required to view this menu item */
59
+ permission?: string | null;
58
60
  }
59
61
 
60
62
  export const MENU_ITEM_REGISTRY: RegistryItem[] = [
61
63
  // ── Core Module ──
62
- { key: 'core__users', label: 'Users', path: '/users', module: 'Core', defaultGroup: 'User Management' },
63
- { key: 'core__roles', label: 'Roles', path: '/roles', module: 'Core', defaultGroup: 'User Management' },
64
- { key: 'core__organizations', label: 'Organizations', path: '/organizations', module: 'Core', defaultGroup: 'User Management' },
65
- { key: 'core__parties', label: 'Parties', path: '/parties', module: 'Core', defaultGroup: 'User Management' },
66
- { key: 'core__activity_logs', label: 'Activity Logs', path: '/activity-logs', module: 'Core', defaultGroup: 'System Auditing' },
67
- { key: 'core__api_requests', label: 'API Requests', path: '/system/api-requests', module: 'Core', defaultGroup: 'System Auditing' },
68
- { key: 'core__feature_access_logs', label: 'Feature Access Logs', path: '/system/feature-access-logs', module: 'Core', defaultGroup: 'System Auditing' },
69
- { key: 'core__issue_logs', label: 'Issue Logs', path: '/system/issue-logs', module: 'Core', defaultGroup: 'System Auditing' },
70
- { key: 'core__feature_registry', label: 'Feature Registry', path: '/system/features', module: 'Core', defaultGroup: 'System Auditing' },
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__template_groups', label: 'Template Groups', path: '/system/template-groups', module: 'Core', defaultGroup: 'System' },
74
- { key: 'core__warehouses', label: 'Warehouses', path: '/warehouses', module: 'Core', defaultGroup: 'Resources' },
75
- { key: 'core__terminals', label: 'Terminals', path: '/terminals', module: 'Core', defaultGroup: 'Resources' },
76
- { key: 'core__currencies', label: 'Currencies', path: '/currencies', module: 'Core', defaultGroup: 'Resources' },
77
- { key: 'core__settings', label: 'Settings', path: '/settings', module: 'Core', defaultGroup: 'Configuration' },
64
+ { key: 'core__users', label: 'Users', path: '/users', module: 'Core', defaultGroup: 'User Management', permission: 'user.view' },
65
+ { key: 'core__roles', label: 'Roles', path: '/roles', module: 'Core', defaultGroup: 'User Management', permission: 'role.view' },
66
+ { key: 'core__organizations', label: 'Organizations', path: '/organizations', module: 'Core', defaultGroup: 'User Management', permission: 'organization.view' },
67
+ { key: 'core__parties', label: 'Parties', path: '/parties', module: 'Core', defaultGroup: 'User Management', permission: 'party.view' },
68
+ { key: 'core__activity_logs', label: 'Activity Logs', path: '/activity-logs', module: 'Core', defaultGroup: 'System Auditing', permission: 'activity_log.view' },
69
+ { key: 'core__api_requests', label: 'API Requests', path: '/system/api-requests', module: 'Core', defaultGroup: 'System Auditing', permission: 'api_request_log.view' },
70
+ { key: 'core__feature_access_logs', label: 'Feature Access Logs', path: '/system/feature-access-logs', module: 'Core', defaultGroup: 'System Auditing', permission: 'feature_access_log.view' },
71
+ { key: 'core__issue_logs', label: 'Issue Logs', path: '/system/issue-logs', module: 'Core', defaultGroup: 'System Auditing', permission: 'issue_log.view' },
72
+ { key: 'core__feature_registry', label: 'Feature Registry', path: '/system/features', module: 'Core', defaultGroup: 'System Auditing', permission: 'feature.view' },
73
+ { key: 'core__menu_config', label: 'Menu Configuration', path: '/menu-config', module: 'Core', defaultGroup: 'System', permission: 'menu_config.view' },
74
+ { key: 'core__printables', label: 'Printable Templates', path: '/system/printables', module: 'Core', defaultGroup: 'System', permission: 'printable_template.view' },
75
+ { key: 'core__template_groups', label: 'Template Groups', path: '/system/template-groups', module: 'Core', defaultGroup: 'System', permission: 'template_group.view' },
76
+ { key: 'core__warehouses', label: 'Warehouses', path: '/warehouses', module: 'Core', defaultGroup: 'Resources', permission: 'warehouse.view' },
77
+ { key: 'core__terminals', label: 'Terminals', path: '/terminals', module: 'Core', defaultGroup: 'Resources', permission: 'terminal.view' },
78
+ { key: 'core__currencies', label: 'Currencies', path: '/currencies', module: 'Core', defaultGroup: 'Resources', permission: 'currency.view' },
79
+ { key: 'core__settings', label: 'Settings', path: '/settings', module: 'Core', defaultGroup: 'Configuration', permission: 'core_setting.view' },
78
80
 
79
81
  // ── Inventory Module ──
80
- { key: 'inventory__items', label: 'Items', path: '/inventory/items', module: 'Inventory', defaultGroup: 'Catalog' },
81
- { key: 'inventory__categories', label: 'Categories', path: '/inventory/categories', module: 'Inventory', defaultGroup: 'Catalog' },
82
- { key: 'inventory__brands', label: 'Brands', path: '/inventory/brands', module: 'Inventory', defaultGroup: 'Catalog' },
83
- { key: 'inventory__uom', label: 'Units of Measure', path: '/inventory/uom', module: 'Inventory', defaultGroup: 'Catalog' },
82
+ { key: 'inventory__items', label: 'Items', path: '/inventory/items', module: 'Inventory', defaultGroup: 'Catalog', permission: null },
83
+ { key: 'inventory__categories', label: 'Categories', path: '/inventory/categories', module: 'Inventory', defaultGroup: 'Catalog', permission: null },
84
+ { key: 'inventory__brands', label: 'Brands', path: '/inventory/brands', module: 'Inventory', defaultGroup: 'Catalog', permission: null },
85
+ { key: 'inventory__uom', label: 'Units of Measure', path: '/inventory/uom', module: 'Inventory', defaultGroup: 'Catalog', permission: null },
84
86
 
85
- { key: 'inventory__stock', label: 'Stock Overview', path: '/inventory/stock', module: 'Inventory', defaultGroup: 'Stock' },
86
- { key: 'inventory__ledger', label: 'Stock Movements', path: '/inventory/ledger', module: 'Inventory', defaultGroup: 'Stock' },
87
- { key: 'inventory__adjustments', label: 'Adjustments', path: '/inventory/adjustments', module: 'Inventory', defaultGroup: 'Operations' },
88
- { key: 'inventory__transfers', label: 'Transfers', path: '/inventory/transfers', module: 'Inventory', defaultGroup: 'Operations' },
89
- { key: 'inventory__serials', label: 'Serial Numbers', path: '/inventory/serials', module: 'Inventory', defaultGroup: 'Operations' },
87
+ { key: 'inventory__stock', label: 'Stock Overview', path: '/inventory/stock', module: 'Inventory', defaultGroup: 'Stock', permission: null },
88
+ { key: 'inventory__ledger', label: 'Stock Movements', path: '/inventory/ledger', module: 'Inventory', defaultGroup: 'Stock', permission: null },
89
+ { key: 'inventory__adjustments', label: 'Adjustments', path: '/inventory/adjustments', module: 'Inventory', defaultGroup: 'Operations', permission: null },
90
+ { key: 'inventory__transfers', label: 'Transfers', path: '/inventory/transfers', module: 'Inventory', defaultGroup: 'Operations', permission: null },
91
+ { key: 'inventory__serials', label: 'Serial Numbers', path: '/inventory/serials', module: 'Inventory', defaultGroup: 'Operations', permission: null },
90
92
 
91
93
  // ── Sales Module ──
92
- { key: 'sales__price_lists', label: 'Price Lists', path: '/sales/price-lists', module: 'Sales', defaultGroup: 'Master Data' },
93
- { key: 'sales__quotations', label: 'Quotations', path: '/sales/quotations', module: 'Sales', defaultGroup: 'Orders' },
94
- { key: 'sales__orders', label: 'Sales Orders', path: '/sales/orders', module: 'Sales', defaultGroup: 'Orders' },
95
- { key: 'sales__goods_issue_notes', label: 'Goods Issue Notes', path: '/sales/delivery-notes', module: 'Sales', defaultGroup: 'Fulfillment' },
96
- { key: 'sales__returns', label: 'Sales Returns', path: '/sales/returns', module: 'Sales', defaultGroup: 'Post-Sales' },
97
- { key: 'sales__credit_notes', label: 'Credit Notes', path: '/sales/credit-notes', module: 'Sales', defaultGroup: 'Post-Sales' },
98
- { key: 'sales__pos', label: 'POS Terminal', path: '/sales/pos', module: 'Sales', defaultGroup: 'POS' },
94
+ { key: 'sales__price_lists', label: 'Price Lists', path: '/sales/price-lists', module: 'Sales', defaultGroup: 'Master Data', permission: null },
95
+ { key: 'sales__quotations', label: 'Quotations', path: '/sales/quotations', module: 'Sales', defaultGroup: 'Orders', permission: null },
96
+ { key: 'sales__orders', label: 'Sales Orders', path: '/sales/orders', module: 'Sales', defaultGroup: 'Orders', permission: null },
97
+ { key: 'sales__goods_issue_notes', label: 'Goods Issue Notes', path: '/sales/delivery-notes', module: 'Sales', defaultGroup: 'Fulfillment', permission: null },
98
+ { key: 'sales__returns', label: 'Sales Returns', path: '/sales/returns', module: 'Sales', defaultGroup: 'Post-Sales', permission: null },
99
+ { key: 'sales__credit_notes', label: 'Credit Notes', path: '/sales/credit-notes', module: 'Sales', defaultGroup: 'Post-Sales', permission: null },
100
+ { key: 'sales__pos', label: 'POS Terminal', path: '/sales/pos', module: 'Sales', defaultGroup: 'POS', permission: null },
99
101
 
100
- { key: 'sales__pos_sessions', label: 'Terminal Sessions', path: '/sales/pos/sessions', module: 'Sales', defaultGroup: 'POS' },
101
- { key: 'sales__reports', label: 'Sales Reports', path: '/sales/reports', module: 'Sales', defaultGroup: 'Analytics' },
102
+ { key: 'sales__pos_sessions', label: 'Terminal Sessions', path: '/sales/pos/sessions', module: 'Sales', defaultGroup: 'POS', permission: null },
103
+ { key: 'sales__reports', label: 'Sales Reports', path: '/sales/reports', module: 'Sales', defaultGroup: 'Analytics', permission: null },
102
104
 
103
105
  // ── Procurement Module ──
104
- { key: 'procurement__orders', label: 'Purchase Orders', path: '/procurement/orders', module: 'Procurement', defaultGroup: 'Orders' },
105
- { key: 'procurement__grn', label: 'Goods Receipt', path: '/procurement/grns', module: 'Procurement', defaultGroup: 'Receiving' },
106
- { key: 'procurement__invoices', label: 'Invoices', path: '/finance/invoices', module: 'Procurement', defaultGroup: 'Finance' },
107
- { key: 'procurement__payments', label: 'Payments', path: '/finance/payments', module: 'Procurement', defaultGroup: 'Finance' },
106
+ { key: 'procurement__orders', label: 'Purchase Orders', path: '/procurement/orders', module: 'Procurement', defaultGroup: 'Orders', permission: null },
107
+ { key: 'procurement__grn', label: 'Goods Receipt', path: '/procurement/grns', module: 'Procurement', defaultGroup: 'Receiving', permission: null },
108
+ { key: 'procurement__invoices', label: 'Invoices', path: '/finance/invoices', module: 'Procurement', defaultGroup: 'Finance', permission: null },
109
+ { key: 'procurement__payments', label: 'Payments', path: '/finance/payments', module: 'Procurement', defaultGroup: 'Finance', permission: null },
108
110
 
109
111
  // ── Finance Module ──
110
- { key: 'finance__invoices', label: 'Invoices', path: '/finance/invoices', module: 'Finance', defaultGroup: 'Transactions' },
111
- { key: 'finance__payments', label: 'Payments', path: '/finance/payments', module: 'Finance', defaultGroup: 'Transactions' },
112
- { key: 'finance__chart_of_accounts', label: 'Chart of Accounts', path: '/finance/chart-of-accounts', module: 'Finance', defaultGroup: 'Accounting' },
113
- { key: 'finance__journal_entries', label: 'Journal Entries', path: '/finance/journal-entries', module: 'Finance', defaultGroup: 'Accounting' },
114
- { key: 'finance__fiscal_years', label: 'Fiscal Years', path: '/finance/fiscal-years', module: 'Finance', defaultGroup: 'Accounting' },
115
- { key: 'finance__trial_balance', label: 'Trial Balance', path: '/finance/reports/trial-balance', module: 'Finance', defaultGroup: 'Reports' },
116
- { key: 'finance__profit_loss', label: 'Profit & Loss', path: '/finance/reports/profit-loss', module: 'Finance', defaultGroup: 'Reports' },
117
- { key: 'finance__balance_sheet', label: 'Balance Sheet', path: '/finance/reports/balance-sheet', module: 'Finance', defaultGroup: 'Reports' },
118
- { key: 'finance__account_ledger', label: 'Account Ledger', path: '/finance/reports/account-ledger', module: 'Finance', defaultGroup: 'Reports' },
119
- { key: 'finance__party_statement', label: 'Party Statement', path: '/finance/reports/party-statement', module: 'Finance', defaultGroup: 'Reports' },
120
- { key: 'finance__payment_modes', label: 'Payment Modes', path: '/finance/payment-modes', module: 'Finance', defaultGroup: 'Settings' },
121
- { key: 'finance__bank_accounts', label: 'Bank Accounts', path: '/finance/bank-accounts', module: 'Finance', defaultGroup: 'Settings' },
122
- { key: 'finance__account_mappings', label: 'Account Mappings', path: '/finance/account-mappings', module: 'Finance', defaultGroup: 'Settings' },
123
- { key: 'finance__opening_balances', label: 'Opening Balances', path: '/finance/opening-balances', module: 'Finance', defaultGroup: 'Settings' },
124
- { key: 'finance__transaction_ledger', label: 'Transaction Ledger', path: '/finance/transactions', module: 'Finance', defaultGroup: 'Transactions' },
125
- { key: 'finance__bank_statements', label: 'Bank Statements', path: '/finance/bank-statements', module: 'Finance', defaultGroup: 'Reports' },
112
+ { key: 'finance__invoices', label: 'Invoices', path: '/finance/invoices', module: 'Finance', defaultGroup: 'Transactions', permission: null },
113
+ { key: 'finance__payments', label: 'Payments', path: '/finance/payments', module: 'Finance', defaultGroup: 'Transactions', permission: null },
114
+ { key: 'finance__direct_transactions', label: 'Direct Transactions', path: '/finance/direct-transactions', module: 'Finance', defaultGroup: 'Transactions', permission: null },
115
+ { key: 'finance__chart_of_accounts', label: 'Chart of Accounts', path: '/finance/chart-of-accounts', module: 'Finance', defaultGroup: 'Accounting', permission: null },
116
+ { key: 'finance__journal_entries', label: 'Journal Entries', path: '/finance/journal-entries', module: 'Finance', defaultGroup: 'Accounting', permission: null },
117
+ { key: 'finance__fiscal_years', label: 'Fiscal Years', path: '/finance/fiscal-years', module: 'Finance', defaultGroup: 'Accounting', permission: null },
118
+ { key: 'finance__trial_balance', label: 'Trial Balance', path: '/finance/reports/trial-balance', module: 'Finance', defaultGroup: 'Reports', permission: null },
119
+ { key: 'finance__profit_loss', label: 'Profit & Loss', path: '/finance/reports/profit-loss', module: 'Finance', defaultGroup: 'Reports', permission: null },
120
+ { key: 'finance__balance_sheet', label: 'Balance Sheet', path: '/finance/reports/balance-sheet', module: 'Finance', defaultGroup: 'Reports', permission: null },
121
+ { key: 'finance__account_ledger', label: 'Account Ledger', path: '/finance/reports/account-ledger', module: 'Finance', defaultGroup: 'Reports', permission: null },
122
+ { key: 'finance__party_statement', label: 'Party Statement', path: '/finance/reports/party-statement', module: 'Finance', defaultGroup: 'Reports', permission: null },
123
+ { key: 'finance__payment_modes', label: 'Payment Modes', path: '/finance/payment-modes', module: 'Finance', defaultGroup: 'Settings', permission: null },
124
+ { key: 'finance__bank_accounts', label: 'Bank Accounts', path: '/finance/bank-accounts', module: 'Finance', defaultGroup: 'Settings', permission: null },
125
+ { key: 'finance__account_mappings', label: 'Account Mappings', path: '/finance/account-mappings', module: 'Finance', defaultGroup: 'Settings', permission: null },
126
+ { key: 'finance__opening_balances', label: 'Opening Balances', path: '/finance/opening-balances', module: 'Finance', defaultGroup: 'Settings', permission: null },
127
+ { key: 'finance__transaction_ledger', label: 'Transaction Ledger', path: '/finance/transactions', module: 'Finance', defaultGroup: 'Transactions', permission: null },
128
+ { key: 'finance__bank_statements', label: 'Bank Statements', path: '/finance/bank-statements', module: 'Finance', defaultGroup: 'Reports', permission: null },
126
129
 
127
130
  // ── Jewelry Module ──
128
- { key: 'jewelry__items', label: 'Jewelry Items', path: '/jewelry/items', module: 'Jewelry', defaultGroup: 'Catalog' },
129
-
130
- { key: 'jewelry__categories', label: 'Categories', path: '/jewelry/categories', module: 'Jewelry', defaultGroup: 'Catalog' },
131
- { key: 'jewelry__material_types', label: 'Material Types', path: '/jewelry/material-types', module: 'Jewelry', defaultGroup: 'Master Data' },
132
- { key: 'jewelry__purities', label: 'Purities', path: '/jewelry/purities', module: 'Jewelry', defaultGroup: 'Master Data' },
133
- { key: 'jewelry__metal_rates', label: 'Metal Rates', path: '/jewelry/metal-rates', module: 'Jewelry', defaultGroup: 'Master Data' },
134
- { key: 'jewelry__purchase_orders', label: 'Purchase Orders', path: '/jewelry/procurement/orders', module: 'Jewelry', defaultGroup: 'Procurement' },
135
- { key: 'jewelry__grn', label: 'Goods Receipt', path: '/jewelry/procurement/grn', module: 'Jewelry', defaultGroup: 'Procurement' },
136
- { key: 'jewelry__custom_orders', label: 'Custom Orders', path: '/jewelry/custom-orders', module: 'Jewelry', defaultGroup: 'Procurement' },
137
- { key: 'jewelry__service_orders', label: 'Service Orders', path: '/jewelry/service-orders', module: 'Jewelry', defaultGroup: 'Procurement' },
138
- { key: 'jewelry__opening_stock', label: 'Opening Stock', path: '/jewelry/procurement/opening_stock', module: 'Jewelry', defaultGroup: 'Procurement' },
139
- { key: 'jewelry__transformations', label: 'Transformations', path: '/jewelry/procurement/transformations', module: 'Jewelry', defaultGroup: 'Procurement' },
140
- { key: 'jewelry__old_gold_purchases', label: 'Old Material Purchases', path: '/jewelry/old-gold-purchases', module: 'Jewelry', defaultGroup: 'Buying' },
141
- { key: 'jewelry__sales', label: 'Sales', path: '/jewelry/sales', module: 'Jewelry', defaultGroup: 'Sales' },
142
- { key: 'jewelry__sales_returns', label: 'Sales Returns', path: '/jewelry/sales-returns', module: 'Jewelry', defaultGroup: 'Sales' },
143
-
144
- { key: 'jewelry__stock_balances', label: 'Stock Balances', path: '/jewelry/stock/balances', module: 'Jewelry', defaultGroup: 'Stock' },
145
- { key: 'jewelry__stock_movements', label: 'Stock Movements', path: '/jewelry/stock/movements', module: 'Jewelry', defaultGroup: 'Stock' },
146
- { key: 'jewelry__stock_transfers', label: 'Transfers', path: '/jewelry/stock-transfers', module: 'Jewelry', defaultGroup: 'Stock' },
147
- { key: 'jewelry__party_transactions', label: 'Party Transactions', path: '/jewelry/party-transactions', module: 'Jewelry', defaultGroup: 'Karigar' },
148
-
149
- { key: 'jewelry__karigar_making_charges', label: 'Making Charges', path: '/jewelry/karigar-making-charges', module: 'Jewelry', defaultGroup: 'Karigar' },
150
- { key: 'jewelry__party_metal_balances', label: 'Party Metal Balances', path: '/jewelry/party-metal-balances', module: 'Jewelry', defaultGroup: 'Karigar' },
151
- { key: 'jewelry__metal_settlements', label: 'Metal Settlements', path: '/jewelry/metal-settlements', module: 'Jewelry', defaultGroup: 'Karigar' },
152
- { key: 'jewelry__settings', label: 'Settings', path: '/jewelry/settings', module: 'Jewelry', defaultGroup: 'Configuration' },
153
- { key: 'jewelry__billing_templates', label: 'Billing Templates', path: '/jewelry/billing-templates', module: 'Jewelry', defaultGroup: 'Configuration' },
154
- { key: 'jewelry__reports', label: 'Reports & Dashboards', path: '/reports/jewelry', module: 'Jewelry', defaultGroup: 'Analytics' },
131
+ { key: 'jewelry__items', label: 'Jewelry Items', path: '/jewelry/items', module: 'Jewelry', defaultGroup: 'Catalog', permission: null },
132
+
133
+ { key: 'jewelry__categories', label: 'Categories', path: '/jewelry/categories', module: 'Jewelry', defaultGroup: 'Catalog', permission: null },
134
+ { key: 'jewelry__material_types', label: 'Material Types', path: '/jewelry/material-types', module: 'Jewelry', defaultGroup: 'Master Data', permission: null },
135
+ { key: 'jewelry__purities', label: 'Purities', path: '/jewelry/purities', module: 'Jewelry', defaultGroup: 'Master Data', permission: null },
136
+ { key: 'jewelry__metal_rates', label: 'Metal Rates', path: '/jewelry/metal-rates', module: 'Jewelry', defaultGroup: 'Master Data', permission: null },
137
+ { key: 'jewelry__purchase_orders', label: 'Purchase Orders', path: '/jewelry/procurement/orders', module: 'Jewelry', defaultGroup: 'Procurement', permission: null },
138
+ { key: 'jewelry__grn', label: 'Goods Receipt', path: '/jewelry/procurement/grn', module: 'Jewelry', defaultGroup: 'Procurement', permission: null },
139
+ { key: 'jewelry__custom_orders', label: 'Custom Orders', path: '/jewelry/custom-orders', module: 'Jewelry', defaultGroup: 'Procurement', permission: null },
140
+ { key: 'jewelry__service_orders', label: 'Service Orders', path: '/jewelry/service-orders', module: 'Jewelry', defaultGroup: 'Procurement', permission: null },
141
+ { key: 'jewelry__opening_stock', label: 'Opening Stock', path: '/jewelry/procurement/opening_stock', module: 'Jewelry', defaultGroup: 'Procurement', permission: null },
142
+ { key: 'jewelry__transformations', label: 'Transformations', path: '/jewelry/procurement/transformations', module: 'Jewelry', defaultGroup: 'Procurement', permission: null },
143
+ { key: 'jewelry__old_gold_purchases', label: 'Old Material Purchases', path: '/jewelry/old-gold-purchases', module: 'Jewelry', defaultGroup: 'Buying', permission: null },
144
+ { key: 'jewelry__sales', label: 'Sales', path: '/jewelry/sales', module: 'Jewelry', defaultGroup: 'Sales', permission: null },
145
+ { key: 'jewelry__sales_returns', label: 'Sales Returns', path: '/jewelry/sales-returns', module: 'Jewelry', defaultGroup: 'Sales', permission: null },
146
+
147
+ { key: 'jewelry__stock_balances', label: 'Stock Balances', path: '/jewelry/stock/balances', module: 'Jewelry', defaultGroup: 'Stock', permission: null },
148
+ { key: 'jewelry__stock_movements', label: 'Stock Movements', path: '/jewelry/stock/movements', module: 'Jewelry', defaultGroup: 'Stock', permission: null },
149
+ { key: 'jewelry__stock_transfers', label: 'Transfers', path: '/jewelry/stock-transfers', module: 'Jewelry', defaultGroup: 'Stock', permission: null },
150
+ { key: 'jewelry__party_transactions', label: 'Party Transactions', path: '/jewelry/party-transactions', module: 'Jewelry', defaultGroup: 'Karigar', permission: null },
151
+
152
+ { key: 'jewelry__karigar_making_charges', label: 'Making Charges', path: '/jewelry/karigar-making-charges', module: 'Jewelry', defaultGroup: 'Karigar', permission: null },
153
+ { key: 'jewelry__party_metal_balances', label: 'Party Metal Balances', path: '/jewelry/party-metal-balances', module: 'Jewelry', defaultGroup: 'Karigar', permission: null },
154
+ { key: 'jewelry__metal_settlements', label: 'Metal Settlements', path: '/jewelry/metal-settlements', module: 'Jewelry', defaultGroup: 'Karigar', permission: null },
155
+ { key: 'jewelry__settings', label: 'Settings', path: '/jewelry/settings', module: 'Jewelry', defaultGroup: 'Configuration', permission: null },
156
+ { key: 'jewelry__billing_templates', label: 'Billing Templates', path: '/jewelry/billing-templates', module: 'Jewelry', defaultGroup: 'Configuration', permission: null },
157
+ { key: 'jewelry__reports', label: 'Reports & Dashboards', path: '/reports/jewelry', module: 'Jewelry', defaultGroup: 'Analytics', permission: null },
155
158
 
156
159
  // ── HR Module ──
157
- { key: 'hr__employees', label: 'Employees', path: '/hr/employees', module: 'HR', defaultGroup: 'Core' },
158
-
159
-
160
- { key: 'hr__employee_calendar', label: 'Employee Calendar', path: '/hr/employee-calendar', module: 'HR', defaultGroup: 'Time' },
161
- { key: 'hr__my_calendar', label: 'My Calendar', path: '/hr/my-calendar', module: 'HR', defaultGroup: 'Time' },
162
-
163
- { key: 'hr__attendance', label: 'Attendance', path: '/hr/attendance', module: 'HR', defaultGroup: 'Time' },
164
- { key: 'hr__regularisation', label: 'Regularisation', path: '/hr/regularisation', module: 'HR', defaultGroup: 'Time' },
165
- { key: 'hr__shift_templates', label: 'Shift Templates', path: '/hr/shift-templates', module: 'HR', defaultGroup: 'Time' },
166
- { key: 'hr__rosters', label: 'Roster Builder', path: '/hr/rosters', module: 'HR', defaultGroup: 'Time' },
167
- { key: 'hr__shift_exchanges', label: 'Shift Exchanges', path: '/hr/shift-exchanges', module: 'HR', defaultGroup: 'Time' },
168
- { key: 'hr__shift_allowances', label: 'Shift Allowances', path: '/hr/shift-allowances', module: 'HR', defaultGroup: 'Time' },
169
- { key: 'hr__leave_types', label: 'Leave Types', path: '/hr/leave-types', module: 'HR', defaultGroup: 'Time' },
170
- { key: 'hr__holidays', label: 'Holidays', path: '/hr/holidays', module: 'HR', defaultGroup: 'Time' },
171
- { key: 'hr__leave', label: 'Leave Management', path: '/hr/leave', module: 'HR', defaultGroup: 'Time' },
172
- { key: 'hr__designations', label: 'Designations', path: '/hr/designations', module: 'HR', defaultGroup: 'Admin' },
173
- { key: 'hr__teams', label: 'Teams', path: '/hr/teams', module: 'HR', defaultGroup: 'Core' },
174
- { key: 'hr__skills', label: 'Skills', path: '/hr/skills', module: 'HR', defaultGroup: 'Masters' },
175
- { key: 'hr__qualifications', label: 'Qualifications', path: '/hr/qualifications', module: 'HR', defaultGroup: 'Masters' },
176
- { key: 'hr__holiday_types', label: 'Holiday Types', path: '/hr/holiday-types', module: 'HR', defaultGroup: 'Masters' },
177
- { key: 'hr__break_types', label: 'Break Types', path: '/hr/break-types', module: 'HR', defaultGroup: 'Masters' },
178
- { key: 'hr__option_sets', label: 'Option Sets', path: '/hr/option-sets', module: 'HR', defaultGroup: 'Masters' },
179
- { key: 'hr__ot', label: 'Overtime', path: '/hr/ot', module: 'HR', defaultGroup: 'Payroll' },
180
- { key: 'hr__ot_policies', label: 'OT Policies', path: '/hr/ot-policies', module: 'HR', defaultGroup: 'Payroll' },
181
- { key: 'hr__ot_rate_templates', label: 'OT Rate Templates', path: '/hr/ot-rate-templates', module: 'HR', defaultGroup: 'Payroll' },
160
+ { key: 'hr__employees', label: 'Employees', path: '/hr/employees', module: 'HR', defaultGroup: 'Core', permission: null },
161
+
162
+
163
+ { key: 'hr__employee_calendar', label: 'Employee Calendar', path: '/hr/employee-calendar', module: 'HR', defaultGroup: 'Time', permission: null },
164
+ { key: 'hr__my_calendar', label: 'My Calendar', path: '/hr/my-calendar', module: 'HR', defaultGroup: 'Time', permission: null },
165
+
166
+ { key: 'hr__attendance', label: 'Attendance', path: '/hr/attendance', module: 'HR', defaultGroup: 'Time', permission: null },
167
+ { key: 'hr__regularisation', label: 'Regularisation', path: '/hr/regularisation', module: 'HR', defaultGroup: 'Time', permission: null },
168
+ { key: 'hr__shift_templates', label: 'Shift Templates', path: '/hr/shift-templates', module: 'HR', defaultGroup: 'Time', permission: null },
169
+ { key: 'hr__rosters', label: 'Roster Builder', path: '/hr/rosters', module: 'HR', defaultGroup: 'Time', permission: null },
170
+ { key: 'hr__shift_exchanges', label: 'Shift Exchanges', path: '/hr/shift-exchanges', module: 'HR', defaultGroup: 'Time', permission: null },
171
+ { key: 'hr__shift_allowances', label: 'Shift Allowances', path: '/hr/shift-allowances', module: 'HR', defaultGroup: 'Time', permission: null },
172
+ { key: 'hr__leave_types', label: 'Leave Types', path: '/hr/leave-types', module: 'HR', defaultGroup: 'Time', permission: null },
173
+ { key: 'hr__holidays', label: 'Holidays', path: '/hr/holidays', module: 'HR', defaultGroup: 'Time', permission: null },
174
+ { key: 'hr__leave', label: 'Leave Management', path: '/hr/leave', module: 'HR', defaultGroup: 'Time', permission: null },
175
+ { key: 'hr__designations', label: 'Designations', path: '/hr/designations', module: 'HR', defaultGroup: 'Admin', permission: null },
176
+ { key: 'hr__teams', label: 'Teams', path: '/hr/teams', module: 'HR', defaultGroup: 'Core', permission: null },
177
+ { key: 'hr__skills', label: 'Skills', path: '/hr/skills', module: 'HR', defaultGroup: 'Masters', permission: null },
178
+ { key: 'hr__qualifications', label: 'Qualifications', path: '/hr/qualifications', module: 'HR', defaultGroup: 'Masters', permission: null },
179
+ { key: 'hr__holiday_types', label: 'Holiday Types', path: '/hr/holiday-types', module: 'HR', defaultGroup: 'Masters', permission: null },
180
+ { key: 'hr__break_types', label: 'Break Types', path: '/hr/break-types', module: 'HR', defaultGroup: 'Masters', permission: null },
181
+ { key: 'hr__option_sets', label: 'Option Sets', path: '/hr/option-sets', module: 'HR', defaultGroup: 'Masters', permission: null },
182
+ { key: 'hr__ot', label: 'Overtime', path: '/hr/ot', module: 'HR', defaultGroup: 'Payroll', permission: null },
183
+ { key: 'hr__ot_policies', label: 'OT Policies', path: '/hr/ot-policies', module: 'HR', defaultGroup: 'Payroll', permission: null },
184
+ { key: 'hr__ot_rate_templates', label: 'OT Rate Templates', path: '/hr/ot-rate-templates', module: 'HR', defaultGroup: 'Payroll', permission: null },
182
185
  // ── Money Exchange Module ──
183
- { key: 'money_exchange__dashboard', label: 'Dashboard', path: '/money-exchange', module: 'Money Exchange', defaultGroup: 'Overview' },
184
- { key: 'money_exchange__rates', label: 'Rates Management', path: '/money-exchange/rates', module: 'Money Exchange', defaultGroup: 'Overview' },
185
- { key: 'money_exchange__pos', label: 'Point of Sale', path: '/money-exchange/pos', module: 'Money Exchange', defaultGroup: 'Operations' },
186
- { key: 'money_exchange__transactions', label: 'Transactions', path: '/money-exchange/transactions', module: 'Money Exchange', defaultGroup: 'Operations' },
187
- { key: 'money_exchange__till', label: 'Till', path: '/money-exchange/till', module: 'Money Exchange', defaultGroup: 'Inventory & Stock' },
188
- { key: 'money_exchange__branch_stock', label: 'Vault', path: '/money-exchange/branch-stock', module: 'Money Exchange', defaultGroup: 'Inventory & Stock' },
189
- { key: 'money_exchange__opening_stock', label: 'Opening Stock', path: '/money-exchange/opening-stock', module: 'Money Exchange', defaultGroup: 'Config' },
190
- { key: 'money_exchange__internal_transfers', label: 'Internal Transfers', path: '/money-exchange/internal-transfers', module: 'Money Exchange', defaultGroup: 'Inventory & Stock' },
191
- { key: 'money_exchange__wholesale', label: 'Wholesale Operations', path: '/money-exchange/wholesale', module: 'Money Exchange', defaultGroup: 'Wholesale' },
192
- { key: 'money_exchange__suppliers', label: 'Supplier Registry', path: '/money-exchange/suppliers', module: 'Money Exchange', defaultGroup: 'Wholesale' },
193
- // { key: 'money_exchange__remittance_agents', label: 'Agent Registry', path: '/money-exchange/agents', module: 'Money Exchange', defaultGroup: 'Remittances' },
194
- // { key: 'money_exchange__remittance_corridors', label: 'Corridors', path: '/money-exchange/corridors', module: 'Money Exchange', defaultGroup: 'Remittances' },
195
- // { key: 'money_exchange__remittances', label: 'Transactions', path: '/money-exchange/remittances', module: 'Money Exchange', defaultGroup: 'Remittances' },
196
- // { key: 'money_exchange__remittance_settlements', label: 'Settlements', path: '/money-exchange/settlements', module: 'Money Exchange', defaultGroup: 'Remittances' },
197
- { key: 'money_exchange__denominations', label: 'Denomination', path: '/money-exchange/denominations', module: 'Money Exchange', defaultGroup: 'Config' },
198
- { key: 'money_exchange__till_thresholds', label: 'Till Thresholds', path: '/money-exchange/till-thresholds', module: 'Money Exchange', defaultGroup: 'Config' },
199
- { key: 'money_exchange__cross_currency', label: 'Margin Rate', path: '/money-exchange/cross-currency', module: 'Money Exchange', defaultGroup: 'Config' },
186
+ { key: 'money_exchange__dashboard', label: 'Dashboard', path: '/money-exchange', module: 'Money Exchange', defaultGroup: 'Overview', permission: null },
187
+ { key: 'money_exchange__rates', label: 'Rates Management', path: '/money-exchange/rates', module: 'Money Exchange', defaultGroup: 'Overview', permission: null },
188
+ { key: 'money_exchange__pos', label: 'Point of Sale', path: '/money-exchange/pos', module: 'Money Exchange', defaultGroup: 'Operations', permission: null },
189
+ { key: 'money_exchange__transactions', label: 'Transactions', path: '/money-exchange/transactions', module: 'Money Exchange', defaultGroup: 'Operations', permission: null },
190
+ { key: 'money_exchange__till', label: 'Till', path: '/money-exchange/till', module: 'Money Exchange', defaultGroup: 'Inventory & Stock', permission: null },
191
+ { key: 'money_exchange__branch_stock', label: 'Vault', path: '/money-exchange/branch-stock', module: 'Money Exchange', defaultGroup: 'Inventory & Stock', permission: null },
192
+ { key: 'money_exchange__opening_stock', label: 'Opening Stock', path: '/money-exchange/opening-stock', module: 'Money Exchange', defaultGroup: 'Config', permission: null },
193
+ { key: 'money_exchange__internal_transfers', label: 'Internal Transfers', path: '/money-exchange/internal-transfers', module: 'Money Exchange', defaultGroup: 'Inventory & Stock', permission: null },
194
+ { key: 'money_exchange__wholesale', label: 'Wholesale Operations', path: '/money-exchange/wholesale', module: 'Money Exchange', defaultGroup: 'Wholesale', permission: null },
195
+ // { key: 'money_exchange__remittance_agents', label: 'Agent Registry', path: '/money-exchange/agents', module: 'Money Exchange', defaultGroup: 'Remittances', permission: null },
196
+ // { key: 'money_exchange__remittance_corridors', label: 'Corridors', path: '/money-exchange/corridors', module: 'Money Exchange', defaultGroup: 'Remittances', permission: null },
197
+ // { key: 'money_exchange__remittances', label: 'Transactions', path: '/money-exchange/remittances', module: 'Money Exchange', defaultGroup: 'Remittances', permission: null },
198
+ // { key: 'money_exchange__remittance_settlements', label: 'Settlements', path: '/money-exchange/settlements', module: 'Money Exchange', defaultGroup: 'Remittances', permission: null },
199
+ { key: 'money_exchange__denominations', label: 'Denomination', path: '/money-exchange/denominations', module: 'Money Exchange', defaultGroup: 'Config', permission: null },
200
+ { key: 'money_exchange__till_thresholds', label: 'Till Thresholds', path: '/money-exchange/till-thresholds', module: 'Money Exchange', defaultGroup: 'Config', permission: null },
201
+ { key: 'money_exchange__cross_currency', label: 'Margin Rate', path: '/money-exchange/cross-currency', module: 'Money Exchange', defaultGroup: 'Config', permission: null },
200
202
 
201
203
  // ── Reports Module (Admin/General) ──
202
- { key: 'reports__jewelry', label: 'Jewelry', path: '/reports/jewelry', module: 'Reporting', defaultGroup: 'Dashboards' },
203
- { key: 'reports__inventory', label: 'Inventory', path: '/reports/inventory', module: 'Reporting', defaultGroup: 'Dashboards' },
204
- { key: 'reports__finance', label: 'Finance', path: '/reports/finance', module: 'Reporting', defaultGroup: 'Dashboards' },
205
- { key: 'reports__all', label: 'All Reports', path: '/reports', module: 'Reporting', defaultGroup: 'General' },
206
- { key: 'reports__builder', label: 'Report Builder', path: '/reports/admin/reports', module: 'Reporting', defaultGroup: 'Administration' },
207
- { key: 'reports__configurator', label: 'Dashboard Configurator', path: '/reports/admin/dashboards', module: 'Reporting', defaultGroup: 'Administration' },
204
+ { key: 'reports__jewelry', label: 'Jewelry', path: '/reports/jewelry', module: 'Reporting', defaultGroup: 'Dashboards', permission: null },
205
+ { key: 'reports__inventory', label: 'Inventory', path: '/reports/inventory', module: 'Reporting', defaultGroup: 'Dashboards', permission: null },
206
+ { key: 'reports__finance', label: 'Finance', path: '/reports/finance', module: 'Reporting', defaultGroup: 'Dashboards', permission: null },
207
+ { key: 'reports__all', label: 'All Reports', path: '/reports', module: 'Reporting', defaultGroup: 'General', permission: null },
208
+ { key: 'reports__builder', label: 'Report Builder', path: '/reports/admin/reports', module: 'Reporting', defaultGroup: 'Administration', permission: null },
209
+ { key: 'reports__configurator', label: 'Dashboard Configurator', path: '/reports/admin/dashboards', module: 'Reporting', defaultGroup: 'Administration', permission: null },
208
210
  ];
209
211
 
210
212
  /**
@@ -326,7 +328,7 @@ export const MENU_PRESETS: MenuPreset[] = [
326
328
  label: 'Finance',
327
329
  iconName: 'Wallet',
328
330
  secondaryItems: [
329
- 'finance__invoices', 'finance__payments', 'finance__transaction_ledger',
331
+ 'finance__invoices', 'finance__payments', 'finance__direct_transactions', 'finance__transaction_ledger',
330
332
  'finance__chart_of_accounts', 'finance__journal_entries', 'finance__fiscal_years',
331
333
  'finance__trial_balance', 'finance__profit_loss', 'finance__balance_sheet', 'finance__account_ledger', 'finance__party_statement',
332
334
  'finance__payment_modes', 'finance__bank_accounts', 'finance__bank_statements', 'finance__account_mappings', 'finance__opening_balances',