| 35966 |
amit |
1 |
-- Migration: Add "Bulk Order Approval Report" menu item
|
|
|
2 |
-- Visible to the same categories/roles as "Transaction Approval" (action_class = 'transaction-approval')
|
|
|
3 |
|
|
|
4 |
-- Step 1: Find the parent_menu_id and sequence of existing "Transaction Approval" menu
|
|
|
5 |
-- SELECT id, display_text, parent_menu_id, sequence, action_class FROM auth.menu WHERE action_class = 'transaction-approval';
|
|
|
6 |
|
|
|
7 |
-- Step 2: Insert the new menu item under the same parent, next sequence
|
|
|
8 |
INSERT INTO auth.menu (display_text, description, parent_menu_id, sequence, action_class, icon_class)
|
|
|
9 |
SELECT 'Approval Report', 'Bulk Order Approval Report', m.parent_menu_id, m.sequence + 1, 'bulk-order-approval-report', m.icon_class
|
|
|
10 |
FROM (SELECT * FROM auth.menu WHERE action_class = 'transaction-approval') m
|
|
|
11 |
WHERE NOT EXISTS (SELECT 1 FROM auth.menu WHERE action_class = 'bulk-order-approval-report');
|
|
|
12 |
|
|
|
13 |
-- Step 3: Copy menu_category mappings so it's visible to the same roles
|
|
|
14 |
INSERT INTO auth.menu_category (menu_id, category_id, escalation_type)
|
|
|
15 |
SELECT new_menu.id, mc.category_id, mc.escalation_type
|
|
|
16 |
FROM auth.menu_category mc
|
|
|
17 |
JOIN auth.menu old_menu ON old_menu.id = mc.menu_id AND old_menu.action_class = 'transaction-approval'
|
|
|
18 |
JOIN auth.menu new_menu ON new_menu.action_class = 'bulk-order-approval-report'
|
|
|
19 |
WHERE NOT EXISTS (
|
|
|
20 |
SELECT 1 FROM auth.menu_category mc2
|
|
|
21 |
WHERE mc2.menu_id = new_menu.id AND mc2.category_id = mc.category_id AND mc2.escalation_type = mc.escalation_type
|
|
|
22 |
);
|
|
|
23 |
|
|
|
24 |
-- Step 4: Add API access for non-admin roles (same as pendingApprovals)
|
|
|
25 |
INSERT INTO api (uri, description)
|
|
|
26 |
SELECT '/transaction/bulkOrderApprovalReport', 'Bulk Order Approval Report'
|
|
|
27 |
WHERE NOT EXISTS (SELECT 1 FROM api WHERE uri = '/transaction/bulkOrderApprovalReport');
|
|
|
28 |
|
|
|
29 |
INSERT INTO role_api (role_id, api_id)
|
|
|
30 |
SELECT ra.role_id, new_api.id
|
|
|
31 |
FROM role_api ra
|
|
|
32 |
JOIN api old_api ON old_api.id = ra.api_id AND old_api.uri = '/transaction/pendingApprovals'
|
|
|
33 |
JOIN api new_api ON new_api.uri = '/transaction/bulkOrderApprovalReport'
|
|
|
34 |
WHERE NOT EXISTS (
|
|
|
35 |
SELECT 1 FROM role_api ra2 WHERE ra2.role_id = ra.role_id AND ra2.api_id = new_api.id
|
|
|
36 |
);
|