应付账单初始化
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
-- 收付类型。字典 bms_pay_type。可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
|
||||
SELECT '收付类型', 'bms_pay_type', '0', 'admin', sysdate(), 'AR应收,AP应付'
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'bms_pay_type');
|
||||
|
||||
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
|
||||
SELECT v.dict_sort, v.dict_label, v.dict_value, 'bms_pay_type', '', 'default', v.is_default, '0', 'admin', sysdate(), v.remark
|
||||
FROM (
|
||||
SELECT 1 AS dict_sort, '应收' AS dict_label, 'AR' AS dict_value, 'N' AS is_default, '应收' AS remark
|
||||
UNION ALL SELECT 2, '应付', 'AP', 'Y', '应付'
|
||||
) v
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict_data d
|
||||
WHERE d.dict_type = 'bms_pay_type' AND d.dict_value = v.dict_value
|
||||
);
|
||||
@@ -0,0 +1,18 @@
|
||||
-- 订单收费类型。字典 order_charge_type。可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
|
||||
SELECT '订单收费类型', 'order_charge_type', '0', 'admin', sysdate(), '订单收费类型'
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'order_charge_type');
|
||||
|
||||
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
|
||||
SELECT v.dict_sort, v.dict_label, v.dict_value, 'order_charge_type', '', 'default', 'N', '0', 'admin', sysdate(), v.remark
|
||||
FROM (
|
||||
SELECT 1 AS dict_sort, '续重计费' AS dict_label, '续重计费' AS dict_value, '首重之外按每公斤续重' AS remark
|
||||
UNION ALL SELECT 2, '单票价', '单票价', '每个重量段收一票价格'
|
||||
UNION ALL SELECT 3, '常规计重价', '常规计重价', '单价乘公斤再加挂号费'
|
||||
) v
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict_data d
|
||||
WHERE d.dict_type = 'order_charge_type' AND d.dict_value = v.dict_value
|
||||
);
|
||||
@@ -0,0 +1,140 @@
|
||||
-- 应付邮编配置。挂在数据管理下面。可重复执行。
|
||||
-- 附加费按国家、费用名称、金额原文合并成一条;邮编行仍按 Excel 逐条保存。
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `pay_postcode_group` (
|
||||
`group_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '配置ID',
|
||||
`source_file` varchar(500) NOT NULL COMMENT '来源文件名',
|
||||
`file_md5` char(32) NOT NULL COMMENT '来源文件MD5',
|
||||
`sheet_name` varchar(200) NOT NULL COMMENT '工作表',
|
||||
`block_title` varchar(200) DEFAULT NULL COMMENT '表内区块标题,按Excel原文',
|
||||
`config_kind` varchar(20) NOT NULL COMMENT 'ZONE邮编分区 FEE附加费',
|
||||
`channel_name` varchar(100) DEFAULT NULL COMMENT '渠道名称,从Excel表头识别',
|
||||
`country_name` varchar(100) DEFAULT NULL COMMENT '国家',
|
||||
`country_code` varchar(20) DEFAULT NULL COMMENT '国家二字码',
|
||||
`fee_name` varchar(200) DEFAULT NULL COMMENT '附加费名称,邮编分区可空',
|
||||
`fee_text` varchar(200) DEFAULT NULL COMMENT '附加费金额原文。同国家同费用同原文只保留一条',
|
||||
`line_count` int(11) NOT NULL DEFAULT 0 COMMENT '邮编行数',
|
||||
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`group_id`),
|
||||
KEY `idx_pay_postcode_group_file` (`file_md5`, `sheet_name`),
|
||||
KEY `idx_pay_postcode_group_country` (`country_code`),
|
||||
KEY `idx_pay_postcode_group_fee` (`fee_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付邮编配置:分区或合并后的附加费';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `pay_postcode_line` (
|
||||
`line_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '邮编行ID',
|
||||
`group_id` bigint(20) NOT NULL COMMENT '配置ID',
|
||||
`country_name` varchar(100) DEFAULT NULL COMMENT '国家',
|
||||
`country_code` varchar(20) DEFAULT NULL COMMENT '国家二字码',
|
||||
`region_name` varchar(200) DEFAULT NULL COMMENT '州或地区,Excel原文',
|
||||
`region_name_cn` varchar(200) DEFAULT NULL COMMENT '地区中文',
|
||||
`city_name` varchar(200) DEFAULT NULL COMMENT '城市',
|
||||
`region_code` varchar(50) DEFAULT NULL COMMENT '地区代码',
|
||||
`zone_name` varchar(200) DEFAULT NULL COMMENT '分区,Excel原文',
|
||||
`postcode` varchar(200) NOT NULL COMMENT '邮编,已去掉末尾星号',
|
||||
`postcode_raw` varchar(200) DEFAULT NULL COMMENT '邮编原文',
|
||||
`postcode_end` varchar(200) DEFAULT NULL COMMENT '截止邮编,已去掉末尾星号',
|
||||
`extra_text` varchar(500) DEFAULT NULL COMMENT '其余列,从左到右用 | 连接',
|
||||
`sort_no` int(11) NOT NULL DEFAULT 0 COMMENT 'Excel中的先后顺序',
|
||||
PRIMARY KEY (`line_id`),
|
||||
KEY `idx_pay_postcode_line_group` (`group_id`),
|
||||
KEY `idx_pay_postcode_line_code` (`postcode`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付邮编明细,一行对应Excel一条邮编';
|
||||
|
||||
SET @parentId := (
|
||||
SELECT menu_id FROM sys_menu
|
||||
WHERE path = 'data' AND menu_type = 'M' AND parent_id = 0
|
||||
ORDER BY menu_id ASC LIMIT 1
|
||||
);
|
||||
|
||||
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
SELECT '应付邮编配置', @parentId, 8, 'payPostcode', 'data/payPostcode/index', '', 'PayPostcode', 1, 0, 'C', '0', '0', 'data:payPostcode:list', 'international', 'admin', sysdate(), '按Excel导入应付邮编和附加费邮编'
|
||||
FROM DUAL WHERE @parentId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'data:payPostcode:list');
|
||||
|
||||
SET @menuId := (SELECT menu_id FROM sys_menu WHERE perms = 'data:payPostcode: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', 'data:payPostcode:query', '#', 'admin', sysdate()
|
||||
FROM DUAL WHERE @menuId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'data:payPostcode: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', 'data:payPostcode:import', '#', 'admin', sysdate()
|
||||
FROM DUAL WHERE @menuId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'data:payPostcode: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', 'data:payPostcode:edit', '#', 'admin', sysdate()
|
||||
FROM DUAL WHERE @menuId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'data:payPostcode:edit');
|
||||
|
||||
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', 'data:payPostcode:remove', '#', 'admin', sysdate()
|
||||
FROM DUAL WHERE @menuId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'data:payPostcode:remove');
|
||||
|
||||
SET @has_channel_name := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pay_postcode_group' AND COLUMN_NAME = 'channel_name'
|
||||
);
|
||||
SET @add_channel_name := IF(
|
||||
@has_channel_name = 0,
|
||||
'ALTER TABLE pay_postcode_group ADD COLUMN channel_name varchar(100) DEFAULT NULL COMMENT ''渠道名称,从Excel表头识别'' AFTER config_kind',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE add_channel_name_stmt FROM @add_channel_name;
|
||||
EXECUTE add_channel_name_stmt;
|
||||
DEALLOCATE PREPARE add_channel_name_stmt;
|
||||
|
||||
SET @has_coverage := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pay_postcode_group' AND COLUMN_NAME = 'coverage'
|
||||
);
|
||||
SET @add_coverage := IF(
|
||||
@has_coverage = 0,
|
||||
'ALTER TABLE pay_postcode_group ADD COLUMN coverage varchar(20) DEFAULT NULL COMMENT ''REACH可达 UNREACH不可达 REMOTE偏远,普通分区为空'' AFTER config_kind',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE add_coverage_stmt FROM @add_coverage;
|
||||
EXECUTE add_coverage_stmt;
|
||||
DEALLOCATE PREPARE add_coverage_stmt;
|
||||
|
||||
SET @has_service_type := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pay_postcode_group' AND COLUMN_NAME = 'service_type'
|
||||
);
|
||||
SET @add_service_type := IF(
|
||||
@has_service_type = 0,
|
||||
'ALTER TABLE pay_postcode_group ADD COLUMN service_type varchar(100) DEFAULT NULL COMMENT ''目录服务类型'' AFTER country_code, ADD COLUMN catalog_country varchar(100) DEFAULT NULL COMMENT ''目录国家,和邮编目的国分开'' AFTER service_type, ADD COLUMN product_name varchar(200) DEFAULT NULL COMMENT ''目录销售产品'' AFTER catalog_country, ADD COLUMN quote_sheet varchar(200) DEFAULT NULL COMMENT ''目录报价工作表'' AFTER product_name',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE add_service_type_stmt FROM @add_service_type;
|
||||
EXECUTE add_service_type_stmt;
|
||||
DEALLOCATE PREPARE add_service_type_stmt;
|
||||
|
||||
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT 1, m.menu_id
|
||||
FROM sys_menu m
|
||||
WHERE m.perms LIKE 'data:payPostcode:%'
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_role_menu x WHERE x.role_id = 1 AND x.menu_id = m.menu_id);
|
||||
|
||||
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT DISTINCT rm.role_id, dst.menu_id
|
||||
FROM sys_role_menu rm
|
||||
JOIN sys_menu src ON src.menu_id = rm.menu_id AND src.perms = 'data:region:list'
|
||||
JOIN sys_menu dst ON dst.perms IN ('data:payPostcode:list', 'data:payPostcode:query')
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu x WHERE x.role_id = rm.role_id AND x.menu_id = dst.menu_id);
|
||||
|
||||
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT DISTINCT rm.role_id, dst.menu_id
|
||||
FROM sys_role_menu rm
|
||||
JOIN sys_menu src ON src.menu_id = rm.menu_id AND src.perms = 'data:region:edit'
|
||||
JOIN sys_menu dst ON dst.perms IN ('data:payPostcode:import', 'data:payPostcode:edit')
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu x WHERE x.role_id = rm.role_id AND x.menu_id = dst.menu_id);
|
||||
|
||||
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT DISTINCT rm.role_id, dst.menu_id
|
||||
FROM sys_role_menu rm
|
||||
JOIN sys_menu src ON src.menu_id = rm.menu_id AND src.perms = 'data:region:remove'
|
||||
JOIN sys_menu dst ON dst.perms = 'data:payPostcode:remove'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu x WHERE x.role_id = rm.role_id AND x.menu_id = dst.menu_id);
|
||||
@@ -0,0 +1,43 @@
|
||||
-- 应付渠道产品。字典类型 payment_product_type,字典项为价卡文件名。
|
||||
-- 可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
|
||||
SELECT '应付渠道产品', 'payment_product_type', '0', 'admin', sysdate(), '应付渠道产品'
|
||||
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'payment_product_type');
|
||||
|
||||
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
|
||||
SELECT v.dict_sort, v.dict_label, v.dict_value, 'payment_product_type', '', 'default', 'N', '0', 'admin', sysdate(), '应付价卡文件名'
|
||||
FROM (
|
||||
SELECT 1 AS dict_sort, 'Colissimo' AS dict_label, 'Colissimo' AS dict_value
|
||||
UNION ALL SELECT 2, 'Corres Express', 'Corres Express'
|
||||
UNION ALL SELECT 3, 'CTT 48H', 'CTT 48H'
|
||||
UNION ALL SELECT 4, 'DE-iMile', 'DE-iMile'
|
||||
UNION ALL SELECT 5, 'DHL International', 'DHL International'
|
||||
UNION ALL SELECT 6, 'DHL Paket', 'DHL Paket'
|
||||
UNION ALL SELECT 7, 'DHL泛欧', 'DHL泛欧'
|
||||
UNION ALL SELECT 8, 'Evri 48H', 'Evri 48H'
|
||||
UNION ALL SELECT 9, 'IT-iMile', 'IT-iMile'
|
||||
UNION ALL SELECT 10, 'NL-DHL', 'NL-DHL'
|
||||
UNION ALL SELECT 11, 'PosteItaliane', 'PosteItaliane'
|
||||
UNION ALL SELECT 12, 'Royal Mail 48H', 'Royal Mail 48H'
|
||||
UNION ALL SELECT 13, '德国DHL', '德国DHL'
|
||||
UNION ALL SELECT 14, '德国DPD挂号 (DEDPD)', '德国DPD挂号 (DEDPD)'
|
||||
UNION ALL SELECT 15, '德国DPD挂号-国际件', '德国DPD挂号-国际件'
|
||||
UNION ALL SELECT 16, '德国UPS', '德国UPS'
|
||||
UNION ALL SELECT 17, '法国Cirro', '法国Cirro'
|
||||
UNION ALL SELECT 18, '法国Colissimo', '法国Colissimo'
|
||||
UNION ALL SELECT 19, '法国GOFO', '法国GOFO'
|
||||
UNION ALL SELECT 20, '西班牙CTT', '西班牙CTT'
|
||||
UNION ALL SELECT 21, '西班牙CTT带电专线(岛屿+其他地区)', '西班牙CTT带电专线(岛屿+其他地区)'
|
||||
UNION ALL SELECT 22, '西班牙CTT带电专线(主要地区)', '西班牙CTT带电专线(主要地区)'
|
||||
UNION ALL SELECT 23, '西班牙GLS', '西班牙GLS'
|
||||
UNION ALL SELECT 24, '西邮-西班牙(全境)', '西邮-西班牙(全境)'
|
||||
UNION ALL SELECT 25, '西邮-西班牙(主岛)', '西邮-西班牙(主岛)'
|
||||
UNION ALL SELECT 26, '英国evri', '英国evri'
|
||||
UNION ALL SELECT 27, '英国RM', '英国RM'
|
||||
) v
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict_data d
|
||||
WHERE d.dict_type = 'payment_product_type' AND d.dict_value = v.dict_value
|
||||
);
|
||||
@@ -0,0 +1,153 @@
|
||||
-- 应付账单。订单应付仍用 prc_pay_bill、prc_pay_bill_fee,不改这两张表的名字。可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @fee_source = (
|
||||
SELECT IF(
|
||||
EXISTS (SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prc_pay_bill_fee' AND COLUMN_NAME = 'fee_source'),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE prc_pay_bill_fee ADD COLUMN fee_source varchar(20) NOT NULL DEFAULT ''CALC'' COMMENT ''CALC计算 LADING提单分摊 MANUAL人工'' AFTER remark'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @fee_source;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `pay_lading` (
|
||||
`lading_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '提单ID',
|
||||
`lading_no` varchar(64) NOT NULL COMMENT '提单号或航空主单号',
|
||||
`supplier_id` bigint(20) DEFAULT NULL COMMENT '供应商ID',
|
||||
`channel_id` varchar(64) DEFAULT NULL COMMENT '渠道ID',
|
||||
`biz_date` date DEFAULT NULL COMMENT '出运日期',
|
||||
`pieces` int(11) DEFAULT NULL COMMENT '件数',
|
||||
`charge_weight` decimal(12,3) DEFAULT NULL COMMENT '计费重',
|
||||
`currency` varchar(10) DEFAULT NULL COMMENT '币种',
|
||||
`status` varchar(20) NOT NULL DEFAULT 'OPEN' COMMENT 'OPEN可改 ALLOCATED已分摊 SETTLED已进账单',
|
||||
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`lading_id`),
|
||||
UNIQUE KEY `uk_pay_lading_no` (`lading_no`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付提单';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `pay_lading_fee` (
|
||||
`lading_fee_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '提单费用ID',
|
||||
`lading_id` bigint(20) NOT NULL COMMENT '提单ID',
|
||||
`fee_name` varchar(100) NOT NULL COMMENT '费用名称',
|
||||
`amount` decimal(18,4) NOT NULL COMMENT '金额',
|
||||
`currency` varchar(10) NOT NULL COMMENT '币种',
|
||||
`alloc_rule` varchar(20) NOT NULL DEFAULT 'NONE' COMMENT 'WEIGHT按计费重 PIECE按件数 ORDER按票 NONE留在主单',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '说明',
|
||||
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`lading_fee_id`),
|
||||
KEY `idx_pay_lading_fee_lading` (`lading_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='提单费用';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `pay_bill` (
|
||||
`bill_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '应付账单ID',
|
||||
`bill_no` varchar(50) NOT NULL COMMENT '账单号',
|
||||
`supplier_id` bigint(20) NOT NULL COMMENT '供应商ID',
|
||||
`supplier_name` varchar(100) DEFAULT NULL COMMENT '供应商名称',
|
||||
`currency` varchar(10) NOT NULL COMMENT '币种',
|
||||
`source_type` varchar(20) NOT NULL COMMENT 'ORDER订单号 TIME计费日 LADING提单',
|
||||
`period_start` date DEFAULT NULL COMMENT '计费日起',
|
||||
`period_end` date DEFAULT NULL COMMENT '计费日止',
|
||||
`order_count` int(11) NOT NULL DEFAULT '0' COMMENT '订单数',
|
||||
`total_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '应付总额',
|
||||
`status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT 'DRAFT草稿 CONFIRMED已确认 PAID已付款 VOID已作废',
|
||||
`void_reason` varchar(500) DEFAULT NULL COMMENT '作废原因',
|
||||
`void_by` varchar(64) DEFAULT NULL COMMENT '作废人',
|
||||
`void_time` datetime DEFAULT NULL COMMENT '作废时间',
|
||||
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`bill_id`),
|
||||
UNIQUE KEY `uk_pay_bill_no` (`bill_no`),
|
||||
KEY `idx_pay_bill_status` (`status`, `create_time`),
|
||||
KEY `idx_pay_bill_supplier` (`supplier_id`, `currency`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付账单,作废后保留';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `pay_bill_line` (
|
||||
`line_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '账单行ID',
|
||||
`bill_id` bigint(20) NOT NULL COMMENT '应付账单ID',
|
||||
`order_bill_id` varchar(36) DEFAULT NULL COMMENT '订单ID',
|
||||
`order_no` varchar(64) DEFAULT NULL COMMENT '订单号',
|
||||
`lading_no` varchar(64) DEFAULT NULL COMMENT '提单号',
|
||||
`lading_fee_id` bigint(20) DEFAULT NULL COMMENT '留在主单上的费用',
|
||||
`fee_name` varchar(100) NOT NULL COMMENT '费用名称',
|
||||
`amount` decimal(18,4) NOT NULL COMMENT '金额快照',
|
||||
`currency` varchar(10) NOT NULL COMMENT '币种',
|
||||
`price_date` date DEFAULT NULL COMMENT '取价日',
|
||||
`version_no` int(11) DEFAULT NULL COMMENT '价卡版本',
|
||||
`remote_flag` char(1) DEFAULT NULL COMMENT 'Y偏远 N非偏远',
|
||||
`density_level` varchar(20) DEFAULT NULL COMMENT 'HIGH MEDIUM LOW',
|
||||
`line_source` varchar(20) NOT NULL COMMENT 'ORDER订单费用 LADING主单费用',
|
||||
PRIMARY KEY (`line_id`),
|
||||
KEY `idx_pay_bill_line_bill` (`bill_id`),
|
||||
KEY `idx_pay_bill_line_order` (`order_bill_id`),
|
||||
KEY `idx_pay_bill_line_lading_fee` (`lading_fee_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付账单费用快照';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `pay_bill_log` (
|
||||
`log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID',
|
||||
`bill_id` bigint(20) NOT NULL COMMENT '应付账单ID',
|
||||
`operation_type` varchar(20) NOT NULL COMMENT 'CREATE CONFIRM PAY VOID',
|
||||
`from_status` varchar(20) DEFAULT NULL COMMENT '变更前状态',
|
||||
`to_status` varchar(20) DEFAULT NULL COMMENT '变更后状态',
|
||||
`operation_desc` varchar(500) DEFAULT NULL COMMENT '说明',
|
||||
`operator_name` varchar(64) DEFAULT NULL COMMENT '操作人',
|
||||
`create_time` datetime NOT NULL COMMENT '操作时间',
|
||||
PRIMARY KEY (`log_id`),
|
||||
KEY `idx_pay_bill_log_bill` (`bill_id`, `create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付账单操作日志';
|
||||
|
||||
SET @lading_col = (
|
||||
SELECT IF(
|
||||
EXISTS (SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prc_order_bill_ext' AND COLUMN_NAME = 'lading_id'),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE prc_order_bill_ext ADD COLUMN lading_id bigint(20) DEFAULT NULL COMMENT ''应付提单ID'' AFTER air_no_old'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @lading_col;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
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 '应付账单', parent.menu_id, 8, 'payBill', 'price/billing/payBill/index', 1, 0, 'C', '0', '0', 'price:payBill:list', 'money', 'admin', sysdate(), '按订单号、计费日或提单生成应付账单,作废留痕'
|
||||
FROM (
|
||||
SELECT menu_id FROM sys_menu WHERE menu_name = '账单管理' AND menu_type = 'M' ORDER BY menu_id LIMIT 1
|
||||
) parent
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'price:payBill:list');
|
||||
|
||||
SET @payBillMenu = (SELECT menu_id FROM sys_menu WHERE perms = 'price:payBill: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 '应付账单查询', @payBillMenu, 1, '', '', 1, 0, 'F', '0', '0', 'price:payBill:query', '#', 'admin', sysdate()
|
||||
FROM DUAL WHERE @payBillMenu IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'price:payBill: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 '应付账单生成', @payBillMenu, 2, '', '', 1, 0, 'F', '0', '0', 'price:payBill:add', '#', 'admin', sysdate()
|
||||
FROM DUAL WHERE @payBillMenu IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'price:payBill:add');
|
||||
|
||||
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 '应付账单确认', @payBillMenu, 3, '', '', 1, 0, 'F', '0', '0', 'price:payBill:confirm', '#', 'admin', sysdate()
|
||||
FROM DUAL WHERE @payBillMenu IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'price:payBill:confirm');
|
||||
|
||||
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 '应付账单作废', @payBillMenu, 4, '', '', 1, 0, 'F', '0', '0', 'price:payBill:void', '#', 'admin', sysdate()
|
||||
FROM DUAL WHERE @payBillMenu IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'price:payBill:void');
|
||||
|
||||
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||
SELECT DISTINCT rm.role_id, dst.menu_id
|
||||
FROM sys_role_menu rm
|
||||
JOIN sys_menu src ON src.menu_id = rm.menu_id AND src.component = 'price/billing/bill'
|
||||
JOIN sys_menu dst ON dst.perms LIKE 'price:payBill:%'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu x WHERE x.role_id = rm.role_id AND x.menu_id = dst.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:payBill:%'
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_role_menu x WHERE x.role_id = 1 AND x.menu_id = m.menu_id);
|
||||
@@ -0,0 +1,36 @@
|
||||
-- 重量段、附加费记录所属价卡版本。已有库可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @band_sql = (
|
||||
SELECT IF(
|
||||
COUNT(*) = 0,
|
||||
'ALTER TABLE pay_weight_band ADD COLUMN version_no int(11) NOT NULL DEFAULT 1 COMMENT ''价卡版本,随产品版本变更'' AFTER product_id',
|
||||
'SELECT 1'
|
||||
)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pay_weight_band' AND COLUMN_NAME = 'version_no'
|
||||
);
|
||||
PREPARE stmt FROM @band_sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @fee_sql = (
|
||||
SELECT IF(
|
||||
COUNT(*) = 0,
|
||||
'ALTER TABLE pay_surcharge ADD COLUMN version_no int(11) NOT NULL DEFAULT 1 COMMENT ''价卡版本,随产品版本变更'' AFTER product_id',
|
||||
'SELECT 1'
|
||||
)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pay_surcharge' AND COLUMN_NAME = 'version_no'
|
||||
);
|
||||
PREPARE stmt FROM @fee_sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
UPDATE pay_weight_band b
|
||||
INNER JOIN pay_product p ON p.product_id = b.product_id
|
||||
SET b.version_no = IFNULL(p.version_no, 1);
|
||||
|
||||
UPDATE pay_surcharge s
|
||||
INNER JOIN pay_product p ON p.product_id = s.product_id
|
||||
SET s.version_no = IFNULL(p.version_no, 1);
|
||||
@@ -0,0 +1,140 @@
|
||||
-- 应付价卡配置。目录里的一个产品一行,重量段和附加费挂在产品下面。
|
||||
-- 表名使用 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_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 '费用名称',
|
||||
`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 '币种',
|
||||
`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_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
|
||||
);
|
||||
@@ -0,0 +1,22 @@
|
||||
-- 应付产品按字典导入,渠道另存一版,不改模板。可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
COUNT(*) = 0,
|
||||
'ALTER TABLE pay_product
|
||||
ADD COLUMN dict_value varchar(100) DEFAULT NULL COMMENT ''字典 payment_product_type'' AFTER product_name,
|
||||
ADD COLUMN origin_id bigint(20) DEFAULT NULL COMMENT ''复制来源,空表示模板'' AFTER dict_value,
|
||||
ADD COLUMN channel_id varchar(64) DEFAULT NULL COMMENT ''服务渠道ID,空表示公共模板'' AFTER origin_id,
|
||||
ADD COLUMN version_no int(11) NOT NULL DEFAULT 1 COMMENT ''版本,模板为1'' AFTER channel_id,
|
||||
ADD KEY idx_pay_product_dict (dict_value, channel_id)',
|
||||
'SELECT 1'
|
||||
)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pay_product' AND COLUMN_NAME = 'dict_value'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 渠道和产品的绑定在 srv_channel_product_map,不再使用 srv_channel_pay。
|
||||
@@ -0,0 +1,16 @@
|
||||
-- 应付产品增加订单收费类型,对应字典 order_charge_type。可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @ddl = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pay_product' AND COLUMN_NAME = 'charge_type'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE pay_product ADD COLUMN charge_type varchar(50) DEFAULT NULL COMMENT ''订单收费类型,字典 order_charge_type'' AFTER country_scope'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @ddl;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -0,0 +1,16 @@
|
||||
-- 应付产品增加续重每公斤加价。分区价格相同存一个金额,不同存最小~最大。可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @ddl = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pay_product' AND COLUMN_NAME = 'extra_per_kg'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE pay_product ADD COLUMN extra_per_kg varchar(40) DEFAULT NULL COMMENT ''续重每公斤加价,分区不同时为最小到最大'' AFTER charge_type'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @ddl;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -0,0 +1,53 @@
|
||||
-- 应付产品有效期。同一产品多次导入各留一版,用这张表记录生效区间和是否生效。可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `pay_product_term` (
|
||||
`term_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '有效期ID',
|
||||
`dict_value` varchar(100) NOT NULL COMMENT '产品字典值,同一产品的各版本归在一起',
|
||||
`product_id` bigint(20) NOT NULL COMMENT '这一版价格',
|
||||
`version_no` int(11) NOT NULL DEFAULT 1 COMMENT '版本号',
|
||||
`effective_start` date DEFAULT NULL COMMENT '生效开始',
|
||||
`effective_end` date DEFAULT NULL COMMENT '生效结束,空表示不限',
|
||||
`status` char(1) NOT NULL DEFAULT '0' COMMENT '0生效 1失效',
|
||||
`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 (`term_id`),
|
||||
UNIQUE KEY `uk_pay_term_product` (`product_id`),
|
||||
KEY `idx_pay_term_dict` (`dict_value`, `status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付产品价格有效期';
|
||||
|
||||
-- 已有模板补一条生效记录,不覆盖后来手工改过的有效期
|
||||
INSERT INTO pay_product_term (
|
||||
dict_value, product_id, version_no, effective_start, status, created_by, create_time
|
||||
)
|
||||
SELECT ifnull(nullif(dict_value, ''), product_name), product_id, ifnull(version_no, 1), effective_date, '0',
|
||||
ifnull(created_by, ''), ifnull(create_time, sysdate())
|
||||
FROM pay_product p
|
||||
WHERE (p.channel_id IS NULL OR p.channel_id = '')
|
||||
AND NOT EXISTS (SELECT 1 FROM pay_product_term t WHERE t.product_id = p.product_id);
|
||||
|
||||
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, 5, '', '', 1, 0, 'F', '0', '0', 'price:pay:edit', '#', 'admin', sysdate()
|
||||
WHERE @menuId IS NOT NULL AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'price:pay:edit');
|
||||
|
||||
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:pay:list'
|
||||
JOIN sys_menu m ON m.perms = 'price:pay:edit'
|
||||
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 = 'price:pay:edit'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_menu x WHERE x.role_id = 1 AND x.menu_id = m.menu_id
|
||||
);
|
||||
@@ -0,0 +1,15 @@
|
||||
-- 应付价卡产品增加支付类型。已有库可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
COUNT(*) = 0,
|
||||
'ALTER TABLE pay_product ADD COLUMN product_type varchar(30) DEFAULT NULL COMMENT ''产品类型:AR:应收、AP:应付'' AFTER product_name',
|
||||
'SELECT 1'
|
||||
)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pay_product' AND COLUMN_NAME = 'product_type'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -0,0 +1,17 @@
|
||||
-- 附加费增加可计算条件。已有库可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
COUNT(*) = 0,
|
||||
'ALTER TABLE pay_surcharge
|
||||
ADD COLUMN calc_rule varchar(20) NOT NULL DEFAULT ''MANUAL'' COMMENT ''计费条件:ALWAYS每票、POSTCODE邮编、WEIGHT超重、SIZE超尺寸、RETURN退件、MANUAL人工'' AFTER charge_timing,
|
||||
ADD COLUMN calc_param varchar(1000) DEFAULT NULL COMMENT ''条件参数,如邮编、重量阈值、尺寸表达式'' AFTER calc_rule',
|
||||
'SELECT 1'
|
||||
)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pay_surcharge' AND COLUMN_NAME = 'calc_rule'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -0,0 +1,16 @@
|
||||
-- 重量段增加体积上限。长x宽x高记在这一档上,不记成费用。可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @ddl = (
|
||||
SELECT IF(
|
||||
EXISTS (
|
||||
SELECT 1 FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pay_weight_band' AND COLUMN_NAME = 'volume_text'
|
||||
),
|
||||
'SELECT 1',
|
||||
'ALTER TABLE pay_weight_band ADD COLUMN volume_text varchar(40) DEFAULT NULL COMMENT ''体积上限,数字加单位,如10000cm³'' AFTER weight_max'
|
||||
)
|
||||
);
|
||||
PREPARE stmt FROM @ddl;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -0,0 +1,52 @@
|
||||
-- 渠道与产品的收付关系。一个渠道同一收付类型只保留一条。可重复执行。
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `srv_channel_product_map` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`channel_id` varchar(50) NOT NULL COMMENT '渠道ID,对应 srv_service_channel.id',
|
||||
`product_id` bigint(20) NOT NULL COMMENT '产品ID,应付时为价卡产品编号',
|
||||
`price_set_id` bigint(20) DEFAULT NULL COMMENT '应收套餐ID,对应 prc_price_set.price_set_id',
|
||||
`pay_type` varchar(10) NOT NULL COMMENT '收付类型,字典 bms_pay_type:AR应收 AP应付',
|
||||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_channel_pay_type` (`channel_id`, `pay_type`),
|
||||
KEY `idx_channel_product_map_product` (`product_id`),
|
||||
KEY `idx_channel_product_map_price_set` (`price_set_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='渠道产品关系映射';
|
||||
|
||||
SET @sql = (
|
||||
SELECT IF(
|
||||
COUNT(*) = 0,
|
||||
'ALTER TABLE srv_channel_product_map ADD COLUMN price_set_id bigint(20) DEFAULT NULL COMMENT ''应收套餐ID,对应 prc_price_set.price_set_id'' AFTER product_id, ADD KEY idx_channel_product_map_price_set (price_set_id)',
|
||||
'SELECT 1'
|
||||
)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'srv_channel_product_map' AND COLUMN_NAME = 'price_set_id'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @copy_sql = (
|
||||
SELECT IF(
|
||||
COUNT(*) > 0,
|
||||
'INSERT INTO srv_channel_product_map (channel_id, product_id, pay_type, create_time, update_time)
|
||||
SELECT c.channel_id, IFNULL(c.origin_id, c.product_id), ''AP'', c.update_time, c.update_time
|
||||
FROM srv_channel_pay c
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM srv_channel_product_map m
|
||||
WHERE m.channel_id = c.channel_id AND m.pay_type = ''AP''
|
||||
)',
|
||||
'SELECT 1'
|
||||
)
|
||||
FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'srv_channel_pay'
|
||||
);
|
||||
PREPARE stmt FROM @copy_sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
DROP TABLE IF EXISTS srv_channel_pay;
|
||||
Reference in New Issue
Block a user