154 lines
9.0 KiB
SQL
154 lines
9.0 KiB
SQL
-- 应付账单。订单应付仍用 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);
|