@@ -0,0 +1,357 @@
-- 应付附加费一键脚本(可重复执行)。
-- 合并自:
-- sql/price/pay_product.sql
-- sql/price/migrate_surcharge_type_to_prc_surcharge.sql
-- sql/price/pay_surcharge_sc_id.sql
-- sql/data/bms_surcharge_type.sql(字典已废弃,改迁 prc_surcharge)
-- 步骤:1)建表/菜单 2)补 sc_id 3)字典迁入 prc_surcharge 并删字典 4)回填 sc_id/币种
SET NAMES utf8mb4 ;
-- ========== 1. 应付价卡表与菜单 ==========
-- 应付价卡配置。目录里的一个产品一行,重量段和附加费挂在产品下面。
-- 表名使用 pay_ 前缀。可重复执行。
CREATE TABLE IF NOT EXISTS ` pay_product ` (
` product_id ` bigint ( 20 ) NOT NULL AUTO_INCREMENT COMMENT ' 产品ID ' ,
` product_name ` varchar ( 200 ) NOT NULL COMMENT ' 目录中的产品名称 ' ,
` product_type ` varchar ( 30 ) DEFAULT NULL COMMENT ' 产品类型:AR:应收、AP:应付 ' ,
` country_scope ` varchar ( 200 ) DEFAULT NULL COMMENT ' 目录中的国家或口岸 ' ,
` service_type ` varchar ( 100 ) DEFAULT NULL COMMENT ' 服务类型 ' ,
` classification ` varchar ( 100 ) DEFAULT NULL COMMENT ' 目录分类 ' ,
` catalog_remark ` varchar ( 1000 ) DEFAULT NULL COMMENT ' 目录备注 ' ,
` update_content ` varchar ( 500 ) DEFAULT NULL COMMENT ' 目录更新内容 ' ,
` weight_limit ` varchar ( 100 ) DEFAULT NULL COMMENT ' 目录重量限制 ' ,
` sheet_name ` varchar ( 200 ) NOT NULL COMMENT ' 报价工作表 ' ,
` related_sheet ` varchar ( 500 ) DEFAULT NULL COMMENT ' 目录里一并指向的分区或附加表,不单独入库 ' ,
` source_file ` varchar ( 500 ) NOT NULL COMMENT ' 来源文件名 ' ,
` file_path ` varchar ( 500 ) DEFAULT NULL COMMENT ' 源文件OSS地址,oss://bucket/key ' ,
` file_md5 ` char ( 32 ) NOT NULL COMMENT ' 来源文件MD5 ' ,
` supplier_name ` varchar ( 100 ) DEFAULT NULL COMMENT ' 价卡归属,如威狮、易德、GWE ' ,
` effective_date ` date DEFAULT NULL COMMENT ' 价卡生效日 ' ,
` currency ` varchar ( 20 ) DEFAULT NULL COMMENT ' 报价币种 ' ,
` service_note ` varchar ( 4000 ) DEFAULT NULL COMMENT ' 报价表中的服务说明 ' ,
` parse_status ` varchar ( 20 ) NOT NULL DEFAULT ' OK ' COMMENT ' 识别结果:OK已识别 EMPTY未识别到配置 MISSING缺少工作表 ' ,
` weight_count ` int ( 11 ) NOT NULL DEFAULT 0 COMMENT ' 重量段行数 ' ,
` surcharge_count ` int ( 11 ) NOT NULL DEFAULT 0 COMMENT ' 附加费行数 ' ,
` extra_count ` int ( 11 ) NOT NULL DEFAULT 0 COMMENT ' 邮编或其他配置行数 ' ,
` created_by ` varchar ( 64 ) DEFAULT ' ' COMMENT ' 创建者 ' ,
` create_time ` datetime DEFAULT NULL COMMENT ' 创建时间 ' ,
` updated_by ` varchar ( 64 ) DEFAULT ' ' COMMENT ' 更新者 ' ,
` update_time ` datetime DEFAULT NULL COMMENT ' 更新时间 ' ,
` remark ` varchar ( 500 ) DEFAULT NULL COMMENT ' 备注 ' ,
PRIMARY KEY ( ` product_id ` ) ,
KEY ` idx_pay_product_name ` ( ` product_name ` ) ,
KEY ` idx_pay_product_file ` ( ` file_md5 ` , ` sheet_name ` ) ,
KEY ` idx_pay_product_effective ` ( ` effective_date ` ) ,
KEY ` idx_pay_product_supplier ` ( ` supplier_name ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 应付价卡产品 ' ;
CREATE TABLE IF NOT EXISTS ` pay_weight_band ` (
` band_id ` bigint ( 20 ) NOT NULL AUTO_INCREMENT COMMENT ' 重量段ID ' ,
` product_id ` bigint ( 20 ) NOT NULL COMMENT ' 产品ID ' ,
` version_no ` int ( 11 ) NOT NULL DEFAULT 1 COMMENT ' 价卡版本,随产品版本变更 ' ,
` section_name ` varchar ( 200 ) DEFAULT NULL COMMENT ' 报价区块,如派送费、偏远、额外线路 ' ,
` country_name ` varchar ( 200 ) DEFAULT NULL COMMENT ' 国家 ' ,
` country_code ` varchar ( 32 ) DEFAULT NULL COMMENT ' 国家二字码,多个用逗号 ' ,
` zone_name ` varchar ( 200 ) DEFAULT NULL COMMENT ' 分区或价格列 ' ,
` weight_label ` varchar ( 100 ) DEFAULT NULL COMMENT ' 重量段原文,如0< W≤1、首重1 Kg ' ,
` weight_min ` decimal ( 10 , 3 ) DEFAULT NULL COMMENT ' 重量下限KG ' ,
` weight_max ` decimal ( 10 , 3 ) DEFAULT NULL COMMENT ' 重量上限KG ' ,
` volume_text ` varchar ( 40 ) DEFAULT NULL COMMENT ' 体积上限,数字加单位,如10000cm³ ' ,
` charge_name ` varchar ( 200 ) DEFAULT NULL COMMENT ' 费用项,如处理费、派送费、续重 ' ,
` price ` decimal ( 12 , 4 ) DEFAULT NULL COMMENT ' 单价 ' ,
` price_unit ` varchar ( 40 ) DEFAULT NULL COMMENT ' 单位,如EUR/ITEM、EUR/KG ' ,
` sort_no ` int ( 11 ) NOT NULL DEFAULT 0 COMMENT ' 排序 ' ,
PRIMARY KEY ( ` band_id ` ) ,
KEY ` idx_pay_weight_product ` ( ` product_id ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 应付产品重量段和起重配置 ' ;
CREATE TABLE IF NOT EXISTS ` pay_surcharge ` (
` surcharge_id ` bigint ( 20 ) NOT NULL AUTO_INCREMENT COMMENT ' 附加费ID ' ,
` product_id ` bigint ( 20 ) NOT NULL COMMENT ' 产品ID ' ,
` version_no ` int ( 11 ) NOT NULL DEFAULT 1 COMMENT ' 价卡版本,随产品版本变更 ' ,
` section_name ` varchar ( 200 ) DEFAULT NULL COMMENT ' 附加费区块 ' ,
` fee_name ` varchar ( 200 ) NOT NULL COMMENT ' 费用名称 ' ,
` sc_id ` bigint ( 20 ) DEFAULT NULL COMMENT ' 附加费配置ID,对应 prc_surcharge.sc_id ' ,
` zone_name ` varchar ( 200 ) DEFAULT NULL COMMENT ' 适用分区,没有则空 ' ,
` charge_text ` varchar ( 500 ) DEFAULT NULL COMMENT ' 收费标准原文 ' ,
` amount ` decimal ( 12 , 4 ) DEFAULT NULL COMMENT ' 能解析出的金额或百分比 ' ,
` currency ` varchar ( 20 ) DEFAULT NULL COMMENT ' 币种 ' ,
` price_unit ` varchar ( 40 ) DEFAULT NULL COMMENT ' 货币和计费单位,如EUR/ITEM、RMB/KG、% ' ,
` fee_desc ` varchar ( 2000 ) DEFAULT NULL COMMENT ' 费用说明 ' ,
` period_text ` varchar ( 500 ) DEFAULT NULL COMMENT ' 时效原文 ' ,
` effective_start ` date DEFAULT NULL COMMENT ' 生效开始,空表示价卡期内一直有效 ' ,
` effective_end ` date DEFAULT NULL COMMENT ' 生效结束 ' ,
` charge_timing ` varchar ( 40 ) DEFAULT NULL COMMENT ' 收取时点:固定收取、产生时收取、旺季期间 ' ,
` sort_no ` int ( 11 ) NOT NULL DEFAULT 0 COMMENT ' 排序 ' ,
PRIMARY KEY ( ` surcharge_id ` ) ,
KEY ` idx_pay_surcharge_product ` ( ` product_id ` ) ,
KEY ` idx_pay_surcharge_sc ` ( ` sc_id ` ) ,
KEY ` idx_pay_surcharge_period ` ( ` effective_start ` , ` effective_end ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 应付产品附加费,含时效 ' ;
CREATE TABLE IF NOT EXISTS ` pay_extra_line ` (
` line_id ` bigint ( 20 ) NOT NULL AUTO_INCREMENT COMMENT ' 配置行ID ' ,
` product_id ` bigint ( 20 ) NOT NULL COMMENT ' 产品ID ' ,
` line_type ` varchar ( 20 ) NOT NULL COMMENT ' 行类型:邮编、配置 ' ,
` line_text ` varchar ( 1000 ) NOT NULL COMMENT ' 原文,列之间用 | 分隔 ' ,
` sort_no ` int ( 11 ) NOT NULL DEFAULT 0 COMMENT ' 排序 ' ,
PRIMARY KEY ( ` line_id ` ) ,
KEY ` idx_pay_extra_product ` ( ` product_id ` )
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 应付产品上的邮编或其他配置原文 ' ;
-- 菜单挂在价格基础下面
SET @ parentId : = (
SELECT menu_id FROM sys_menu
WHERE path = ' basic ' AND menu_type = ' M '
ORDER BY menu_id ASC LIMIT 1
) ;
SET @ parentId : = IFNULL ( @ parentId , (
SELECT parent_id FROM sys_menu
WHERE perms = ' price:product:list ' OR component LIKE ' %price/basic/product% '
ORDER BY menu_id ASC LIMIT 1
) ) ;
INSERT INTO sys_menu ( menu_name , parent_id , order_num , path , component , is_frame , is_cache , menu_type , visible , status , perms , icon , create_by , create_time , remark )
SELECT ' 应付配置 ' , @ parentId , 16 , ' pay ' , ' price/basic/pay/index ' , 1 , 0 , ' C ' , ' 0 ' , ' 0 ' , ' price:pay:list ' , ' money ' , ' admin ' , sysdate ( ) , ' 应付价卡产品、重量段和附加费 '
WHERE @ parentId IS NOT NULL
AND NOT EXISTS ( SELECT 1 FROM sys_menu WHERE perms = ' price:pay:list ' OR component = ' price/basic/pay/index ' ) ;
SET @ menuId : = ( SELECT menu_id FROM sys_menu WHERE perms = ' price:pay:list ' LIMIT 1 ) ;
INSERT INTO sys_menu ( menu_name , parent_id , order_num , path , component , is_frame , is_cache , menu_type , visible , status , perms , icon , create_by , create_time )
SELECT ' 应付配置查询 ' , @ menuId , 1 , ' ' , ' ' , 1 , 0 , ' F ' , ' 0 ' , ' 0 ' , ' price:pay:query ' , ' # ' , ' admin ' , sysdate ( )
WHERE @ menuId IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM sys_menu WHERE perms = ' price:pay:query ' ) ;
INSERT INTO sys_menu ( menu_name , parent_id , order_num , path , component , is_frame , is_cache , menu_type , visible , status , perms , icon , create_by , create_time )
SELECT ' 应付配置导入 ' , @ menuId , 2 , ' ' , ' ' , 1 , 0 , ' F ' , ' 0 ' , ' 0 ' , ' price:pay:import ' , ' # ' , ' admin ' , sysdate ( )
WHERE @ menuId IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM sys_menu WHERE perms = ' price:pay:import ' ) ;
INSERT INTO sys_menu ( menu_name , parent_id , order_num , path , component , is_frame , is_cache , menu_type , visible , status , perms , icon , create_by , create_time )
SELECT ' 应付配置删除 ' , @ menuId , 3 , ' ' , ' ' , 1 , 0 , ' F ' , ' 0 ' , ' 0 ' , ' price:pay:remove ' , ' # ' , ' admin ' , sysdate ( )
WHERE @ menuId IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM sys_menu WHERE perms = ' price:pay:remove ' ) ;
INSERT INTO sys_menu ( menu_name , parent_id , order_num , path , component , is_frame , is_cache , menu_type , visible , status , perms , icon , create_by , create_time )
SELECT ' 应付配置导出 ' , @ menuId , 4 , ' ' , ' ' , 1 , 0 , ' F ' , ' 0 ' , ' 0 ' , ' price:pay:export ' , ' # ' , ' admin ' , sysdate ( )
WHERE @ menuId IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM sys_menu WHERE perms = ' price:pay:export ' ) ;
-- 已经能维护价格基础的角色,同步拿到应付配置菜单
INSERT INTO sys_role_menu ( role_id , menu_id )
SELECT DISTINCT rm . role_id , m . menu_id
FROM sys_role_menu rm
JOIN sys_menu src ON src . menu_id = rm . menu_id AND src . perms = ' price:product:list '
JOIN sys_menu m ON m . perms LIKE ' price:pay:% '
WHERE NOT EXISTS (
SELECT 1 FROM sys_role_menu x WHERE x . role_id = rm . role_id AND x . menu_id = m . menu_id
) ;
INSERT INTO sys_role_menu ( role_id , menu_id )
SELECT 1 , m . menu_id
FROM sys_menu m
WHERE m . perms LIKE ' price:pay:% '
AND NOT EXISTS (
SELECT 1 FROM sys_role_menu x WHERE x . role_id = 1 AND x . menu_id = m . menu_id
) ;
-- ========== 2. pay_surcharge 补 sc_id(已有表时) ==========
SET @ sql = (
SELECT IF (
COUNT ( * ) = 0 ,
' ALTER TABLE pay_surcharge ADD COLUMN sc_id bigint(20) DEFAULT NULL COMMENT '' 附加费配置ID,对应 prc_surcharge.sc_id '' AFTER fee_name, ADD KEY idx_pay_surcharge_sc (sc_id) ' ,
' SELECT 1 '
)
FROM information_schema . COLUMNS
WHERE TABLE_SCHEMA = DATABASE ( ) AND TABLE_NAME = ' pay_surcharge ' AND COLUMN_NAME = ' sc_id '
) ;
PREPARE stmt FROM @ sql ;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt ;
-- ========== 3. 字典 bms_surcharge_type 迁入 prc_surcharge,并删除字典 ==========
-- 已存在同名且未作废的附加费不覆盖;新增行默认 FIXED/0、币种 EUR
INSERT INTO prc_surcharge (
sc_name , fee_type , charge_type , charge_value , currency , round_mode , ss_code , is_del ,
sc_note , created_by , create_time
)
SELECT v . sc_name , ' SURCHARGE ' , ' FIXED ' , 0 , ' EUR ' , ' HALF_UP ' , ' on ' , ' 0 ' ,
' 从附加费类型字典迁移 ' , ' admin ' , sysdate ( )
FROM (
SELECT ' 疫情附加费 ' AS sc_name
UNION ALL SELECT ' 燃油附加费 ' AS sc_name
UNION ALL SELECT ' 地址及联系方式修正费 ' AS sc_name
UNION ALL SELECT ' 城市邮编不匹配 ' AS sc_name
UNION ALL SELECT ' 分拣机不可操作费 ' AS sc_name
UNION ALL SELECT ' 超重超尺寸费 ' AS sc_name
UNION ALL SELECT ' 脱碳附加费 ' AS sc_name
UNION ALL SELECT ' 非法国电话联系费 ' AS sc_name
UNION ALL SELECT ' 换面单费 ' AS sc_name
UNION ALL SELECT ' 交错仓罚金 ' AS sc_name
UNION ALL SELECT ' 乡村邮编单量占比过大罚金 ' AS sc_name
UNION ALL SELECT ' 仿牌侵权罚款 ' AS sc_name
UNION ALL SELECT ' 危险品罚款 ' AS sc_name
UNION ALL SELECT ' 燃油费 ' AS sc_name
UNION ALL SELECT ' 重派费 ' AS sc_name
UNION ALL SELECT ' 退件仓库操作费 ' AS sc_name
UNION ALL SELECT ' 重派仓库操作费 ' AS sc_name
UNION ALL SELECT ' 旺季附加费 ' AS sc_name
UNION ALL SELECT ' 高峰旺季附加费 ' AS sc_name
UNION ALL SELECT ' 超尺寸超重费 ' AS sc_name
UNION ALL SELECT ' 路由码选择附加费 ' AS sc_name
UNION ALL SELECT ' 未预报附加费 ' AS sc_name
UNION ALL SELECT ' 托收附加费 ' AS sc_name
UNION ALL SELECT ' 提供虚假信息罚款费 ' AS sc_name
UNION ALL SELECT ' 零售网点路线 ' AS sc_name
UNION ALL SELECT ' 退件费 ' AS sc_name
UNION ALL SELECT ' 退件重派费 ' AS sc_name
UNION ALL SELECT ' 退件操作费 ' AS sc_name
UNION ALL SELECT ' 重派操作费 ' AS sc_name
UNION ALL SELECT ' 道路通行费 ' AS sc_name
UNION ALL SELECT ' 重量信息修正附加费 ' AS sc_name
UNION ALL SELECT ' 高风险地区附加费 ' AS sc_name
UNION ALL SELECT ' 取还服务 ' AS sc_name
UNION ALL SELECT ' 取货发货服务 ' AS sc_name
UNION ALL SELECT ' 现金服务 ' AS sc_name
UNION ALL SELECT ' 灵活配送服务 ' AS sc_name
UNION ALL SELECT ' 安全费 ' AS sc_name
UNION ALL SELECT ' 危机燃油附加费 ' AS sc_name
UNION ALL SELECT ' 能源附加费 ' AS sc_name
UNION ALL SELECT ' 异形费 ' AS sc_name
UNION ALL SELECT ' 漏预报或漏发货 ' AS sc_name
UNION ALL SELECT ' 标签费 ' AS sc_name
UNION ALL SELECT ' 无法派送费 ' AS sc_name
UNION ALL SELECT ' 变更服务费 ' AS sc_name
UNION ALL SELECT ' 二次派送费 ' AS sc_name
UNION ALL SELECT ' 签名费 ' AS sc_name
UNION ALL SELECT ' 危险货物费 ' AS sc_name
UNION ALL SELECT ' 特殊产品加收 ' AS sc_name
UNION ALL SELECT ' 岛屿附加费 ' AS sc_name
UNION ALL SELECT ' 陆运能源附加费 ' AS sc_name
UNION ALL SELECT ' 空运能源附加费 ' AS sc_name
UNION ALL SELECT ' 带电附加费 ' AS sc_name
UNION ALL SELECT ' 特货费 ' AS sc_name
UNION ALL SELECT ' 偏远费 ' AS sc_name
UNION ALL SELECT ' 偏远地区附加费 ' AS sc_name
UNION ALL SELECT ' 超大附加费(包裹) ' AS sc_name
UNION ALL SELECT ' 超重附加费(包裹) ' AS sc_name
UNION ALL SELECT ' 重复单号 ' AS sc_name
UNION ALL SELECT ' 未预报 ' AS sc_name
UNION ALL SELECT ' 无法投递或其他原因退件运费 ' AS sc_name
UNION ALL SELECT ' 航司可持续性附加费 ' AS sc_name
UNION ALL SELECT ' 退件处理费 ' AS sc_name
UNION ALL SELECT ' 超尺寸费 ' AS sc_name
UNION ALL SELECT ' 周末服务费 ' AS sc_name
UNION ALL SELECT ' 空气清洁费 ' AS sc_name
UNION ALL SELECT ' 拖车附加费 ' AS sc_name
UNION ALL SELECT ' 派送附加费 ' AS sc_name
UNION ALL SELECT ' 自送海外仓运费 ' AS sc_name
UNION ALL SELECT ' 操作费 ' AS sc_name
UNION ALL SELECT ' 仓库操作费 ' AS sc_name
UNION ALL SELECT ' 重新包装费 ' AS sc_name
UNION ALL SELECT ' 换包装费 ' AS sc_name
UNION ALL SELECT ' 去碳附加费 ' AS sc_name
UNION ALL SELECT ' 超重费 ' AS sc_name
UNION ALL SELECT ' 地址修正费 ' AS sc_name
UNION ALL SELECT ' 邮编城市不对应费 ' AS sc_name
UNION ALL SELECT ' 邮箱和电话缺失费 ' AS sc_name
UNION ALL SELECT ' 人工处理费 ' AS sc_name
UNION ALL SELECT ' 海外省费 ' AS sc_name
UNION ALL SELECT ' 错误送仓罚款 ' AS sc_name
UNION ALL SELECT ' 更换面单费 ' AS sc_name
UNION ALL SELECT ' 乡村地区占比超标准罚款 ' AS sc_name
UNION ALL SELECT ' COD ' AS sc_name
UNION ALL SELECT ' 重新贴标附加费 ' AS sc_name
UNION ALL SELECT ' 重派运费 ' AS sc_name
UNION ALL SELECT ' 短期能源附加费 ' AS sc_name
UNION ALL SELECT ' 旺季高峰期附加费 ' AS sc_name
UNION ALL SELECT ' 面单错误附加费 ' AS sc_name
UNION ALL SELECT ' 零售网点自提费 ' AS sc_name
UNION ALL SELECT ' 异形件费 ' AS sc_name
UNION ALL SELECT ' 重量差异附加费 ' AS sc_name
UNION ALL SELECT ' 换单费 ' AS sc_name
UNION ALL SELECT ' 无法投递处理费 ' AS sc_name
UNION ALL SELECT ' 无法投递处理费-陆运 ' AS sc_name
UNION ALL SELECT ' 无法投递处理费-空运 ' AS sc_name
UNION ALL SELECT ' 战争附加费 ' AS sc_name
UNION ALL SELECT ' 超尺寸附加费 ' AS sc_name
UNION ALL SELECT ' 偏远附加费 ' AS sc_name
UNION ALL SELECT ' 空气减排费 ' AS sc_name
UNION ALL SELECT ' 面单无法识别费 ' AS sc_name
UNION ALL SELECT ' 无法派送或退件费 ' AS sc_name
UNION ALL SELECT ' 超重附加费 ' AS sc_name
UNION ALL SELECT ' 重复单号费 ' AS sc_name
UNION ALL SELECT ' 使用取消单号发货费 ' AS sc_name
UNION ALL SELECT ' 面单不符费 ' AS sc_name
UNION ALL SELECT ' 面单粘贴不合规范 ' AS sc_name
UNION ALL SELECT ' 未经允许乱交邮费 ' AS sc_name
UNION ALL SELECT ' 异形件附加费 ' AS sc_name
UNION ALL SELECT ' 退件费(陆运) ' AS sc_name
UNION ALL SELECT ' 退件费(空运) ' AS sc_name
UNION ALL SELECT ' 邮编城市不对应 ' AS sc_name
UNION ALL SELECT ' 收件人信息错误处理费 ' AS sc_name
UNION ALL SELECT ' 无法过机操作费 ' AS sc_name
UNION ALL SELECT ' 不可达地址费 ' AS sc_name
UNION ALL SELECT ' 销毁费 ' AS sc_name
UNION ALL SELECT ' 仓储费 ' AS sc_name
UNION ALL SELECT ' CO₂附加费 ' AS sc_name
UNION ALL SELECT ' 退回件处理费 ' AS sc_name
UNION ALL SELECT ' 异形件/超尺寸处理费 ' AS sc_name
UNION ALL SELECT ' 重量申报错误操作费 ' AS sc_name
UNION ALL SELECT ' 垃圾处理费 ' AS sc_name
UNION ALL SELECT ' 绿色附加费 ' AS sc_name
UNION ALL SELECT ' 无法投递费 ' AS sc_name
UNION ALL SELECT ' 额外处理费 ' AS sc_name
UNION ALL SELECT ' 超大件 ' AS sc_name
UNION ALL SELECT ' 超限制 ' AS sc_name
UNION ALL SELECT ' 地址更正 ' AS sc_name
UNION ALL SELECT ' 扩展区域收货和送货服务 ' AS sc_name
UNION ALL SELECT ' 偏远地区收货和送货服务 ' AS sc_name
UNION ALL SELECT ' 私人地址派送费 ' AS sc_name
UNION ALL SELECT ' 包裹信息缺失 ' AS sc_name
UNION ALL SELECT ' 高峰附加费 ' AS sc_name
UNION ALL SELECT ' 更改地址费 ' AS sc_name
UNION ALL SELECT ' 空气减排附加费 ' AS sc_name
UNION ALL SELECT ' 异地取货费 ' AS sc_name
UNION ALL SELECT ' 包裹退件运费 ' AS sc_name
UNION ALL SELECT ' 退件入仓处理费 ' AS sc_name
UNION ALL SELECT ' 退件重派操作费 ' AS sc_name
UNION ALL SELECT ' 退件重派运费 ' AS sc_name
UNION ALL SELECT ' 退件销毁费 ' AS sc_name
UNION ALL SELECT ' Bulky goods Fee ' AS sc_name
UNION ALL SELECT ' 地址校验费 ' AS sc_name
UNION ALL SELECT ' Labeling fee ' AS sc_name
UNION ALL SELECT ' 瑞典和芬兰门到门派送费 ' AS sc_name
UNION ALL SELECT ' 特别旺季附加费 ' AS sc_name
UNION ALL SELECT ' 脱欧手续费 ' AS sc_name
) v
WHERE NOT EXISTS (
SELECT 1 FROM prc_surcharge s
WHERE s . sc_name = v . sc_name
AND ifnull ( s . is_del , ' 0 ' ) = ' 0 '
AND lower ( ifnull ( s . ss_code , ' ' ) ) < > ' vd '
) ;
DELETE FROM sys_dict_data WHERE dict_type = ' bms_surcharge_type ' ;
DELETE FROM sys_dict_type WHERE dict_type = ' bms_surcharge_type ' ;
-- ========== 4. 回填 pay_surcharge.sc_id 与空币种 ==========
-- 按名称回填未绑定的 sc_id(取未作废最新一条)
UPDATE pay_surcharge ps
INNER JOIN (
SELECT s . sc_name , MAX ( s . sc_id ) AS sc_id
FROM prc_surcharge s
WHERE ifnull ( s . is_del , ' 0 ' ) = ' 0 '
AND lower ( ifnull ( s . ss_code , ' ' ) ) < > ' vd '
GROUP BY s . sc_name
) m ON m . sc_name = ps . fee_name
SET ps . sc_id = m . sc_id
WHERE ps . sc_id IS NULL ;
-- 币种为空:先取价卡币种,再默认 EUR
UPDATE pay_surcharge ps
LEFT JOIN pay_product p ON p . product_id = ps . product_id
SET ps . currency = ifnull ( nullif ( trim ( p . currency ) , ' ' ) , ' EUR ' )
WHERE ps . currency IS NULL OR trim ( ps . currency ) = ' ' ;