USE baiyue_iam; SET NAMES utf8mb4; -- 五期海外排车、出库与派送权限。列表权限同时覆盖列表和详情只读,写操作保持独立授权。 DROP PROCEDURE IF EXISTS guard_phase5_delivery_permission_ids; DELIMITER $$ CREATE PROCEDURE guard_phase5_delivery_permission_ids() BEGIN IF EXISTS ( SELECT 1 FROM iam_permission WHERE (id = 5107064 AND permission_code <> 'platform:overseas-warehouse:dispatch:list') OR (id = 5107065 AND permission_code <> 'platform:overseas-warehouse:dispatch:create') OR (id = 5107066 AND permission_code <> 'platform:overseas-warehouse:dispatch:loading-complete') OR (id = 5107067 AND permission_code <> 'platform:overseas-warehouse:dispatch:depart') OR (id = 5107016 AND permission_code <> 'platform:overseas-warehouse:dispatch:edit') OR (id = 5107017 AND permission_code <> 'platform:overseas-warehouse:dispatch:cancel') OR (id = 5107018 AND permission_code <> 'platform:overseas-warehouse:dispatch:transfer-delivery') OR (id = 5107090 AND permission_code <> 'platform:overseas-warehouse:outbound:list') OR (id = 5107091 AND permission_code <> 'platform:overseas-warehouse:outbound:create') OR (id = 5107092 AND permission_code <> 'platform:overseas-warehouse:delivery:list') OR (id = 5107094 AND permission_code <> 'platform:overseas-warehouse:delivery:documents') OR (id = 5107093 AND permission_code <> 'platform:overseas-warehouse:outbound:cancel') OR (id = 5107070 AND permission_code <> 'platform:overseas-warehouse:exception-order:list') OR (id = 5107071 AND permission_code <> 'platform:overseas-warehouse:exception-order:create') OR (id = 5107073 AND permission_code <> 'platform:overseas-warehouse:exception-order:process') OR (id = 5107072 AND permission_code <> 'platform:overseas-warehouse:delivery:return') OR (id = 5107080 AND permission_code <> 'platform:overseas-warehouse:customer-visit:list') OR (id = 5107081 AND permission_code <> 'platform:overseas-warehouse:customer-visit:edit') OR (id = 5107082 AND permission_code <> 'platform:overseas-warehouse:delivery:status') OR (id = 5306000 AND permission_code <> 'merchant:warehouse:delivery:list') ) OR EXISTS ( SELECT 1 FROM iam_permission WHERE (permission_code = 'platform:overseas-warehouse:dispatch:list' AND id <> 5107064) OR (permission_code = 'platform:overseas-warehouse:dispatch:create' AND id <> 5107065) OR (permission_code = 'platform:overseas-warehouse:dispatch:loading-complete' AND id <> 5107066) OR (permission_code = 'platform:overseas-warehouse:dispatch:depart' AND id <> 5107067) OR (permission_code = 'platform:overseas-warehouse:dispatch:edit' AND id <> 5107016) OR (permission_code = 'platform:overseas-warehouse:dispatch:cancel' AND id <> 5107017) OR (permission_code = 'platform:overseas-warehouse:dispatch:transfer-delivery' AND id <> 5107018) OR (permission_code = 'platform:overseas-warehouse:outbound:list' AND id <> 5107090) OR (permission_code = 'platform:overseas-warehouse:outbound:create' AND id <> 5107091) OR (permission_code = 'platform:overseas-warehouse:delivery:list' AND id <> 5107092) OR (permission_code = 'platform:overseas-warehouse:delivery:documents' AND id <> 5107094) OR (permission_code = 'platform:overseas-warehouse:outbound:cancel' AND id <> 5107093) OR (permission_code = 'platform:overseas-warehouse:exception-order:list' AND id <> 5107070) OR (permission_code = 'platform:overseas-warehouse:exception-order:create' AND id <> 5107071) OR (permission_code = 'platform:overseas-warehouse:exception-order:process' AND id <> 5107073) OR (permission_code = 'platform:overseas-warehouse:delivery:return' AND id <> 5107072) OR (permission_code = 'platform:overseas-warehouse:customer-visit:list' AND id <> 5107080) OR (permission_code = 'platform:overseas-warehouse:customer-visit:edit' AND id <> 5107081) OR (permission_code = 'platform:overseas-warehouse:delivery:status' AND id <> 5107082) OR (permission_code = 'merchant:warehouse:delivery:list' AND id <> 5306000) ) THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:权限ID或编码冲突'; END IF; END$$ DELIMITER ; CALL guard_phase5_delivery_permission_ids(); DROP PROCEDURE guard_phase5_delivery_permission_ids; INSERT INTO iam_permission (id, tenant_id, app_code, permission_type, parent_id, permission_code, permission_name, route_path, http_method, sort_no, status, built_in, deleted) VALUES (5107064,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:dispatch:list','海外排车单','/overseas-warehouse/dispatches','GET',764,'ACTIVE',1,0), (5107065,0,'PLATFORM','BUTTON',5107064,'platform:overseas-warehouse:dispatch:create','新增排车单',NULL,'POST',765,'ACTIVE',1,0), (5107066,0,'PLATFORM','BUTTON',5107064,'platform:overseas-warehouse:dispatch:loading-complete','确认装车完成',NULL,'POST',766,'ACTIVE',1,0), (5107067,0,'PLATFORM','BUTTON',5107064,'platform:overseas-warehouse:dispatch:depart','确认实际发车',NULL,'POST',767,'ACTIVE',1,0), (5107016,0,'PLATFORM','BUTTON',5107064,'platform:overseas-warehouse:dispatch:edit','编辑海外排车',NULL,'PUT',716,'ACTIVE',1,0), (5107017,0,'PLATFORM','BUTTON',5107064,'platform:overseas-warehouse:dispatch:cancel','取消海外排车',NULL,'POST',717,'ACTIVE',1,0), (5107018,0,'PLATFORM','BUTTON',5107064,'platform:overseas-warehouse:dispatch:transfer-delivery','排车转派送',NULL,'POST',718,'ACTIVE',1,0), (5107070,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:exception-order:list','海外异常订单','/overseas-warehouse/exception-orders','GET',770,'ACTIVE',1,0), (5107071,0,'PLATFORM','BUTTON',5107070,'platform:overseas-warehouse:exception-order:create','新增海外异常订单',NULL,'POST',771,'ACTIVE',1,0), (5107073,0,'PLATFORM','BUTTON',5107070,'platform:overseas-warehouse:exception-order:process','处理海外异常订单',NULL,'POST',773,'ACTIVE',1,0), (5107072,0,'PLATFORM','BUTTON',5107092,'platform:overseas-warehouse:delivery:return','派送单标记退货',NULL,'POST',772,'ACTIVE',1,0), (5107080,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:customer-visit:list','客户回访','/overseas-warehouse/customer-visits','GET',780,'ACTIVE',1,0), (5107081,0,'PLATFORM','BUTTON',5107080,'platform:overseas-warehouse:customer-visit:edit','保存客户回访',NULL,'PUT',781,'ACTIVE',1,0), (5107082,0,'PLATFORM','BUTTON',5107092,'platform:overseas-warehouse:delivery:status','编辑派送单状态',NULL,'PUT',782,'ACTIVE',1,0), (5107090,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:outbound:list','海外出库单','/overseas-warehouse/outbounds','GET',765,'ACTIVE',1,0), (5107091,0,'PLATFORM','BUTTON',5107090,'platform:overseas-warehouse:outbound:create','创建海外出库单',NULL,'POST',766,'ACTIVE',1,0), (5107092,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:delivery:list','海外派送单','/overseas-warehouse/delivery-orders','GET',767,'ACTIVE',1,0), (5107094,0,'PLATFORM','BUTTON',5107092,'platform:overseas-warehouse:delivery:documents','管理派送资料',NULL,'POST',769,'ACTIVE',1,0), (5107093,0,'PLATFORM','BUTTON',5107090,'platform:overseas-warehouse:outbound:cancel','取消海外出库单',NULL,'POST',768,'ACTIVE',1,0), (5306000,0,'MERCHANT','MENU',0,'merchant:warehouse:delivery:list','海外仓派送单','/orders/delivery','GET',60,'ACTIVE',1,0) ON DUPLICATE KEY UPDATE permission_type=VALUES(permission_type), parent_id=VALUES(parent_id), permission_name=VALUES(permission_name), route_path=VALUES(route_path), http_method=VALUES(http_method), sort_no=VALUES(sort_no), status='ACTIVE', built_in=1, deleted=0; -- 平台管理员默认拥有五期全部后台动作;已有的平台自定义管理员保持同等五期操作能力。 INSERT IGNORE INTO iam_role_permission (tenant_id, role_id, permission_id, created_at) SELECT 0, role.id, permission.id, CURRENT_TIMESTAMP(3) FROM iam_role role JOIN iam_permission permission ON permission.tenant_id=0 AND permission.app_code='PLATFORM' WHERE role.tenant_id=0 AND role.app_code='PLATFORM' AND UPPER(role.role_code) IN ('PLATFORM_ADMIN','PLATFORM_CUSTOM_ADMIN') AND role.status='ACTIVE' AND role.deleted=0 AND permission.permission_code IN ( 'platform:overseas-warehouse:dispatch:list', 'platform:overseas-warehouse:dispatch:create', 'platform:overseas-warehouse:dispatch:loading-complete', 'platform:overseas-warehouse:dispatch:depart', 'platform:overseas-warehouse:dispatch:edit', 'platform:overseas-warehouse:dispatch:cancel', 'platform:overseas-warehouse:dispatch:transfer-delivery', 'platform:overseas-warehouse:outbound:list', 'platform:overseas-warehouse:outbound:create', 'platform:overseas-warehouse:outbound:cancel', 'platform:overseas-warehouse:delivery:list', 'platform:overseas-warehouse:exception-order:list', 'platform:overseas-warehouse:exception-order:create', 'platform:overseas-warehouse:exception-order:process', 'platform:overseas-warehouse:delivery:return', 'platform:overseas-warehouse:delivery:status', 'platform:overseas-warehouse:delivery:documents', 'platform:overseas-warehouse:customer-visit:list', 'platform:overseas-warehouse:customer-visit:edit') AND permission.status='ACTIVE' AND permission.deleted=0; -- 已创建的客户拥有租户级默认管理员角色;权限资源仍引用 tenant_id=0 的公共目录。 INSERT IGNORE INTO iam_role_permission (tenant_id, role_id, permission_id, created_at) SELECT role.tenant_id, role.id, permission.id, CURRENT_TIMESTAMP(3) FROM iam_role role JOIN iam_permission permission ON permission.tenant_id=0 AND permission.app_code='MERCHANT' WHERE role.tenant_id>0 AND role.app_code='MERCHANT' AND role.role_code='MERCHANT_OWNER' AND role.status='ACTIVE' AND role.deleted=0 AND permission.permission_code IN ( 'merchant:warehouse:delivery:list') AND permission.status='ACTIVE' AND permission.deleted=0; -- 仓库后台岗位按最小职责授权;PDA 岗位不得获得后台排车、出库或派送权限。 DROP TEMPORARY TABLE IF EXISTS tmp_phase5_delivery_role_permission; CREATE TEMPORARY TABLE tmp_phase5_delivery_role_permission ( role_code VARCHAR(64) NOT NULL, permission_code VARCHAR(160) NOT NULL, PRIMARY KEY (role_code, permission_code) ) ENGINE=MEMORY; INSERT INTO tmp_phase5_delivery_role_permission (role_code, permission_code) VALUES ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:dispatch:list'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:dispatch:create'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:dispatch:loading-complete'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:dispatch:depart'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:dispatch:edit'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:dispatch:cancel'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:dispatch:transfer-delivery'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:outbound:list'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:outbound:create'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:outbound:cancel'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:delivery:list'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:exception-order:list'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:exception-order:create'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:exception-order:process'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:delivery:return'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:delivery:status'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:delivery:documents'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:customer-visit:list'), ('WAREHOUSE_OPERATOR','platform:overseas-warehouse:customer-visit:edit'), ('WAREHOUSE_TALLY','platform:overseas-warehouse:dispatch:list'), ('WAREHOUSE_TALLY','platform:overseas-warehouse:outbound:list'), ('WAREHOUSE_TALLY','platform:overseas-warehouse:delivery:list'), ('WAREHOUSE_TALLY','platform:overseas-warehouse:exception-order:list'), ('WAREHOUSE_TALLY','platform:overseas-warehouse:customer-visit:list'); DELETE grant_row FROM iam_role_permission grant_row JOIN iam_role role ON role.id=grant_row.role_id AND role.tenant_id=grant_row.tenant_id JOIN iam_permission permission ON permission.id=grant_row.permission_id AND permission.tenant_id=grant_row.tenant_id LEFT JOIN tmp_phase5_delivery_role_permission expected ON expected.role_code=role.role_code AND expected.permission_code=permission.permission_code WHERE role.tenant_id=0 AND role.app_code='PLATFORM' AND role.role_code IN ('WAREHOUSE_OPERATOR','WAREHOUSE_TALLY','OVERSEAS_WAREHOUSE_PDA_OPERATOR','CN_FIRSTLEG_PDA_OPERATOR') AND permission.permission_code IN ( 'platform:overseas-warehouse:dispatch:list', 'platform:overseas-warehouse:dispatch:create', 'platform:overseas-warehouse:dispatch:loading-complete', 'platform:overseas-warehouse:dispatch:depart', 'platform:overseas-warehouse:dispatch:edit', 'platform:overseas-warehouse:dispatch:cancel', 'platform:overseas-warehouse:dispatch:transfer-delivery', 'platform:overseas-warehouse:outbound:list', 'platform:overseas-warehouse:outbound:create', 'platform:overseas-warehouse:outbound:cancel', 'platform:overseas-warehouse:delivery:list', 'platform:overseas-warehouse:exception-order:list', 'platform:overseas-warehouse:exception-order:create', 'platform:overseas-warehouse:exception-order:process', 'platform:overseas-warehouse:delivery:return', 'platform:overseas-warehouse:delivery:status', 'platform:overseas-warehouse:delivery:documents', 'platform:overseas-warehouse:customer-visit:list', 'platform:overseas-warehouse:customer-visit:edit') AND expected.permission_code IS NULL; INSERT IGNORE INTO iam_role_permission (tenant_id, role_id, permission_id, created_at) SELECT 0, role.id, permission.id, CURRENT_TIMESTAMP(3) FROM tmp_phase5_delivery_role_permission expected JOIN iam_role role ON role.tenant_id=0 AND role.app_code='PLATFORM' AND role.role_code=expected.role_code AND role.status='ACTIVE' AND role.deleted=0 JOIN iam_permission permission ON permission.tenant_id=0 AND permission.app_code='PLATFORM' AND permission.permission_code=expected.permission_code AND permission.status='ACTIVE' AND permission.deleted=0; -- 客户默认管理员只获得派送列表和详情读取;整车派送由平台统一安排。 INSERT IGNORE INTO iam_role_permission (tenant_id, role_id, permission_id, created_at) SELECT 0, role.id, permission.id, CURRENT_TIMESTAMP(3) FROM iam_role role JOIN iam_permission permission ON permission.tenant_id=0 AND permission.app_code='MERCHANT' WHERE role.tenant_id=0 AND role.app_code='MERCHANT' AND role.role_code='MERCHANT_OWNER' AND role.status='ACTIVE' AND role.deleted=0 AND permission.permission_code IN ( 'merchant:warehouse:delivery:list') AND permission.status='ACTIVE' AND permission.deleted=0; DROP PROCEDURE IF EXISTS assert_phase5_delivery_permissions; DELIMITER $$ CREATE PROCEDURE assert_phase5_delivery_permissions() BEGIN DECLARE v_warehouse_operator_permission_count INT DEFAULT 0; DECLARE v_warehouse_tally_permission_count INT DEFAULT 0; IF (SELECT COUNT(*) FROM iam_permission WHERE tenant_id=0 AND status='ACTIVE' AND deleted=0 AND permission_code IN ( 'platform:overseas-warehouse:dispatch:list', 'platform:overseas-warehouse:dispatch:create', 'platform:overseas-warehouse:dispatch:loading-complete', 'platform:overseas-warehouse:dispatch:depart', 'platform:overseas-warehouse:dispatch:edit', 'platform:overseas-warehouse:dispatch:cancel', 'platform:overseas-warehouse:dispatch:transfer-delivery', 'platform:overseas-warehouse:outbound:list', 'platform:overseas-warehouse:outbound:create', 'platform:overseas-warehouse:outbound:cancel', 'platform:overseas-warehouse:delivery:list', 'platform:overseas-warehouse:exception-order:list', 'platform:overseas-warehouse:exception-order:create', 'platform:overseas-warehouse:exception-order:process', 'platform:overseas-warehouse:delivery:return', 'platform:overseas-warehouse:delivery:status', 'platform:overseas-warehouse:delivery:documents', 'platform:overseas-warehouse:customer-visit:list', 'platform:overseas-warehouse:customer-visit:edit', 'merchant:warehouse:delivery:list')) <> 20 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:权限目录不完整'; END IF; IF (SELECT COUNT(*) FROM iam_role_permission grant_row JOIN iam_role role ON role.id=grant_row.role_id AND role.tenant_id=grant_row.tenant_id JOIN iam_permission permission ON permission.id=grant_row.permission_id WHERE role.role_code='PLATFORM_ADMIN' AND permission.permission_code IN ( 'platform:overseas-warehouse:dispatch:list', 'platform:overseas-warehouse:dispatch:create', 'platform:overseas-warehouse:dispatch:loading-complete', 'platform:overseas-warehouse:dispatch:depart', 'platform:overseas-warehouse:dispatch:edit', 'platform:overseas-warehouse:dispatch:cancel', 'platform:overseas-warehouse:dispatch:transfer-delivery', 'platform:overseas-warehouse:outbound:list', 'platform:overseas-warehouse:outbound:create', 'platform:overseas-warehouse:outbound:cancel', 'platform:overseas-warehouse:delivery:list', 'platform:overseas-warehouse:exception-order:list', 'platform:overseas-warehouse:exception-order:create', 'platform:overseas-warehouse:exception-order:process', 'platform:overseas-warehouse:delivery:return', 'platform:overseas-warehouse:delivery:status', 'platform:overseas-warehouse:delivery:documents', 'platform:overseas-warehouse:customer-visit:list', 'platform:overseas-warehouse:customer-visit:edit')) <> 19 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:平台管理员授权不完整'; END IF; IF EXISTS (SELECT 1 FROM iam_role role WHERE role.tenant_id=0 AND role.app_code='PLATFORM' AND UPPER(role.role_code)='PLATFORM_CUSTOM_ADMIN' AND role.status='ACTIVE' AND role.deleted=0 AND (SELECT COUNT(*) FROM iam_role_permission grant_row JOIN iam_permission permission ON permission.id=grant_row.permission_id WHERE grant_row.role_id=role.id AND grant_row.tenant_id=role.tenant_id AND permission.permission_code IN ( 'platform:overseas-warehouse:dispatch:list', 'platform:overseas-warehouse:dispatch:create', 'platform:overseas-warehouse:dispatch:loading-complete', 'platform:overseas-warehouse:dispatch:depart', 'platform:overseas-warehouse:dispatch:edit', 'platform:overseas-warehouse:dispatch:cancel', 'platform:overseas-warehouse:dispatch:transfer-delivery', 'platform:overseas-warehouse:outbound:list', 'platform:overseas-warehouse:outbound:create', 'platform:overseas-warehouse:outbound:cancel', 'platform:overseas-warehouse:delivery:list', 'platform:overseas-warehouse:exception-order:list', 'platform:overseas-warehouse:exception-order:create', 'platform:overseas-warehouse:exception-order:process', 'platform:overseas-warehouse:delivery:return', 'platform:overseas-warehouse:delivery:status', 'platform:overseas-warehouse:delivery:documents', 'platform:overseas-warehouse:customer-visit:list', 'platform:overseas-warehouse:customer-visit:edit')) <> 19) THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:平台自定义管理员授权不完整'; END IF; SELECT COALESCE(SUM(role_code='WAREHOUSE_OPERATOR'),0), COALESCE(SUM(role_code='WAREHOUSE_TALLY'),0) INTO v_warehouse_operator_permission_count, v_warehouse_tally_permission_count FROM tmp_phase5_delivery_role_permission; IF v_warehouse_operator_permission_count <> 19 OR v_warehouse_tally_permission_count <> 5 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:仓库岗位最小权限矩阵异常'; END IF; IF EXISTS (SELECT 1 FROM iam_role_permission grant_row JOIN iam_role role ON role.id=grant_row.role_id AND role.tenant_id=grant_row.tenant_id JOIN iam_permission permission ON permission.id=grant_row.permission_id WHERE role.role_code IN ('OVERSEAS_WAREHOUSE_PDA_OPERATOR','CN_FIRSTLEG_PDA_OPERATOR') AND permission.permission_code IN ( 'platform:overseas-warehouse:dispatch:list', 'platform:overseas-warehouse:dispatch:create', 'platform:overseas-warehouse:dispatch:loading-complete', 'platform:overseas-warehouse:dispatch:depart', 'platform:overseas-warehouse:dispatch:edit', 'platform:overseas-warehouse:dispatch:cancel', 'platform:overseas-warehouse:dispatch:transfer-delivery', 'platform:overseas-warehouse:outbound:list', 'platform:overseas-warehouse:outbound:create', 'platform:overseas-warehouse:outbound:cancel', 'platform:overseas-warehouse:delivery:list', 'platform:overseas-warehouse:exception-order:list', 'platform:overseas-warehouse:exception-order:create', 'platform:overseas-warehouse:exception-order:process', 'platform:overseas-warehouse:delivery:return', 'platform:overseas-warehouse:delivery:status', 'platform:overseas-warehouse:delivery:documents', 'platform:overseas-warehouse:customer-visit:list', 'platform:overseas-warehouse:customer-visit:edit')) THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:PDA岗位错误获得后台权限'; END IF; IF EXISTS (SELECT role.id FROM iam_role role LEFT JOIN iam_role_permission grant_row ON grant_row.role_id=role.id AND grant_row.tenant_id=role.tenant_id LEFT JOIN iam_permission permission ON permission.id=grant_row.permission_id AND permission.permission_code IN ( 'merchant:warehouse:delivery:list') WHERE role.role_code='MERCHANT_OWNER' AND role.app_code='MERCHANT' AND role.status='ACTIVE' AND role.deleted=0 GROUP BY role.id HAVING COUNT(DISTINCT permission.permission_code) <> 1) THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='五期海外派送权限初始化失败:客户默认管理员授权不完整'; END IF; END$$ DELIMITER ; CALL assert_phase5_delivery_permissions(); DROP PROCEDURE assert_phase5_delivery_permissions; DROP TEMPORARY TABLE tmp_phase5_delivery_role_permission;