Blame | Last modification | View Log | RSS feed
-- Migration: Add "Bulk Order Approval Report" menu item-- Visible to the same categories/roles as "Transaction Approval" (action_class = 'transaction-approval')-- Step 1: Find the parent_menu_id and sequence of existing "Transaction Approval" menu-- SELECT id, display_text, parent_menu_id, sequence, action_class FROM auth.menu WHERE action_class = 'transaction-approval';-- Step 2: Insert the new menu item under the same parent, next sequenceINSERT INTO auth.menu (display_text, description, parent_menu_id, sequence, action_class, icon_class)SELECT 'Approval Report', 'Bulk Order Approval Report', m.parent_menu_id, m.sequence + 1, 'bulk-order-approval-report', m.icon_classFROM (SELECT * FROM auth.menu WHERE action_class = 'transaction-approval') mWHERE NOT EXISTS (SELECT 1 FROM auth.menu WHERE action_class = 'bulk-order-approval-report');-- Step 3: Copy menu_category mappings so it's visible to the same rolesINSERT INTO auth.menu_category (menu_id, category_id, escalation_type)SELECT new_menu.id, mc.category_id, mc.escalation_typeFROM auth.menu_category mcJOIN auth.menu old_menu ON old_menu.id = mc.menu_id AND old_menu.action_class = 'transaction-approval'JOIN auth.menu new_menu ON new_menu.action_class = 'bulk-order-approval-report'WHERE NOT EXISTS (SELECT 1 FROM auth.menu_category mc2WHERE mc2.menu_id = new_menu.id AND mc2.category_id = mc.category_id AND mc2.escalation_type = mc.escalation_type);-- Step 4: Add API access for non-admin roles (same as pendingApprovals)INSERT INTO api (uri, description)SELECT '/transaction/bulkOrderApprovalReport', 'Bulk Order Approval Report'WHERE NOT EXISTS (SELECT 1 FROM api WHERE uri = '/transaction/bulkOrderApprovalReport');INSERT INTO role_api (role_id, api_id)SELECT ra.role_id, new_api.idFROM role_api raJOIN api old_api ON old_api.id = ra.api_id AND old_api.uri = '/transaction/pendingApprovals'JOIN api new_api ON new_api.uri = '/transaction/bulkOrderApprovalReport'WHERE NOT EXISTS (SELECT 1 FROM role_api ra2 WHERE ra2.role_id = ra.role_id AND ra2.api_id = new_api.id);