修改计费信息表结构
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
-- prc_bill / prc_bill_fee: receivable billing from synced orders
|
||||
-- prc_order_bill: order info header
|
||||
-- prc_income_bill_fee: receivable fee lines
|
||||
-- prc_pay_bill_fee: payable fee lines
|
||||
-- fields follow prc_quote / prc_quote_fee; extra order_no + customer_code
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS prc_bill (
|
||||
CREATE TABLE IF NOT EXISTS prc_order_bill (
|
||||
bill_id VARCHAR(36) NOT NULL COMMENT '计费ID',
|
||||
bill_key CHAR(32) NOT NULL COMMENT 'MD5(order_no)',
|
||||
order_no VARCHAR(64) NOT NULL COMMENT '订单号',
|
||||
@@ -50,7 +52,8 @@ CREATE TABLE IF NOT EXISTS prc_bill (
|
||||
registration_fee DECIMAL(10,2) DEFAULT NULL COMMENT '挂号费',
|
||||
freight_amount DECIMAL(10,2) DEFAULT NULL COMMENT '运费金额',
|
||||
surcharge_amount DECIMAL(10,2) DEFAULT NULL COMMENT '附加费合计',
|
||||
payable_total DECIMAL(10,2) DEFAULT NULL COMMENT '应收总额',
|
||||
income_total DECIMAL(10,2) DEFAULT NULL COMMENT '应收总额',
|
||||
pay_total DECIMAL(10,2) DEFAULT NULL COMMENT '应付总额',
|
||||
currency VARCHAR(10) NOT NULL DEFAULT 'CNY' COMMENT '币种',
|
||||
round_mode VARCHAR(20) NOT NULL DEFAULT 'HALF_UP' COMMENT '取值方式',
|
||||
created_by VARCHAR(64) DEFAULT '' COMMENT '创建人',
|
||||
@@ -62,9 +65,9 @@ CREATE TABLE IF NOT EXISTS prc_bill (
|
||||
UNIQUE KEY uk_bill_key (bill_key),
|
||||
INDEX idx_bill_customer (customer_code, biz_date),
|
||||
INDEX idx_bill_product (product_code, country_code)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='计费应收主表-订单同步计费';
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单信息主表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS prc_bill_fee (
|
||||
CREATE TABLE IF NOT EXISTS prc_income_bill_fee (
|
||||
fee_id VARCHAR(36) NOT NULL COMMENT '费用明细ID',
|
||||
bill_id VARCHAR(36) NOT NULL COMMENT '计费ID',
|
||||
fee_type VARCHAR(30) NOT NULL COMMENT '费用类型(字典bms_fee_type)',
|
||||
@@ -76,7 +79,24 @@ CREATE TABLE IF NOT EXISTS prc_bill_fee (
|
||||
remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
|
||||
create_time DATETIME DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (fee_id),
|
||||
UNIQUE KEY uk_bill_fee_item (bill_id, fee_type, sc_id),
|
||||
INDEX idx_bill_fee_type (fee_type),
|
||||
CONSTRAINT fk_bill_fee_bill FOREIGN KEY (bill_id) REFERENCES prc_bill (bill_id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='计费应收费用明细';
|
||||
UNIQUE KEY uk_income_bill_fee_item (bill_id, fee_type, sc_id),
|
||||
INDEX idx_income_bill_fee_type (fee_type),
|
||||
CONSTRAINT fk_income_bill_fee_order FOREIGN KEY (bill_id) REFERENCES prc_order_bill (bill_id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应收费用明细';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS prc_pay_bill_fee (
|
||||
fee_id VARCHAR(36) NOT NULL COMMENT '费用明细ID',
|
||||
bill_id VARCHAR(36) NOT NULL COMMENT '计费ID',
|
||||
fee_type VARCHAR(30) NOT NULL COMMENT '费用类型(字典bms_fee_type)',
|
||||
fee_name VARCHAR(100) DEFAULT NULL COMMENT '费用名称',
|
||||
sc_id BIGINT(20) NOT NULL DEFAULT 0 COMMENT '附加费配置ID',
|
||||
amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '金额',
|
||||
currency VARCHAR(10) NOT NULL DEFAULT 'CNY' COMMENT '币种',
|
||||
round_mode VARCHAR(20) DEFAULT 'HALF_UP' COMMENT '取值方式',
|
||||
remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
|
||||
create_time DATETIME DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (fee_id),
|
||||
UNIQUE KEY uk_pay_bill_fee_item (bill_id, fee_type, sc_id),
|
||||
INDEX idx_pay_bill_fee_type (fee_type),
|
||||
CONSTRAINT fk_pay_bill_fee_order FOREIGN KEY (bill_id) REFERENCES prc_order_bill (bill_id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付费用明细';
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
-- prc_order_bill: income_total + pay_total
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @db := DATABASE();
|
||||
|
||||
SET @has_income := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_order_bill' AND COLUMN_NAME = 'income_total'
|
||||
);
|
||||
SET @has_payable := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_order_bill' AND COLUMN_NAME = 'payable_total'
|
||||
);
|
||||
SET @sql := IF(@has_income = 0 AND @has_payable > 0,
|
||||
'ALTER TABLE prc_order_bill CHANGE COLUMN payable_total income_total DECIMAL(10,2) DEFAULT NULL COMMENT \'应收总额\'',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @has_income2 := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_order_bill' AND COLUMN_NAME = 'income_total'
|
||||
);
|
||||
SET @sql := IF(@has_income2 = 0,
|
||||
'ALTER TABLE prc_order_bill ADD COLUMN income_total DECIMAL(10,2) DEFAULT NULL COMMENT \'应收总额\' AFTER surcharge_amount',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @has_pay := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_order_bill' AND COLUMN_NAME = 'pay_total'
|
||||
);
|
||||
SET @sql := IF(@has_pay = 0,
|
||||
'ALTER TABLE prc_order_bill ADD COLUMN pay_total DECIMAL(10,2) DEFAULT NULL COMMENT \'应付总额\' AFTER income_total',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
@@ -0,0 +1,68 @@
|
||||
-- rename prc_bill -> prc_order_bill, prc_bill_fee -> prc_income_bill_fee, add prc_pay_bill_fee
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
SET @db := DATABASE();
|
||||
|
||||
SET @fk := (
|
||||
SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS
|
||||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_bill_fee' AND CONSTRAINT_TYPE = 'FOREIGN KEY'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@fk IS NOT NULL,
|
||||
CONCAT('ALTER TABLE prc_bill_fee DROP FOREIGN KEY `', @fk, '`'),
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @has_old := (
|
||||
SELECT COUNT(*) FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_bill'
|
||||
);
|
||||
SET @has_new := (
|
||||
SELECT COUNT(*) FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_order_bill'
|
||||
);
|
||||
SET @sql := IF(@has_old > 0 AND @has_new = 0, 'RENAME TABLE prc_bill TO prc_order_bill', 'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @has_old_fee := (
|
||||
SELECT COUNT(*) FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_bill_fee'
|
||||
);
|
||||
SET @has_new_fee := (
|
||||
SELECT COUNT(*) FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_income_bill_fee'
|
||||
);
|
||||
SET @sql := IF(@has_old_fee > 0 AND @has_new_fee = 0, 'RENAME TABLE prc_bill_fee TO prc_income_bill_fee', 'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @fk2 := (
|
||||
SELECT CONSTRAINT_NAME FROM information_schema.TABLE_CONSTRAINTS
|
||||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'prc_income_bill_fee'
|
||||
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
|
||||
LIMIT 1
|
||||
);
|
||||
SET @sql := IF(@fk2 IS NULL,
|
||||
'ALTER TABLE prc_income_bill_fee ADD CONSTRAINT fk_income_bill_fee_order FOREIGN KEY (bill_id) REFERENCES prc_order_bill (bill_id) ON DELETE CASCADE',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
ALTER TABLE prc_order_bill COMMENT = '订单信息主表';
|
||||
ALTER TABLE prc_income_bill_fee COMMENT = '应收费用明细';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS prc_pay_bill_fee (
|
||||
fee_id VARCHAR(36) NOT NULL COMMENT '费用明细ID',
|
||||
bill_id VARCHAR(36) NOT NULL COMMENT '计费ID',
|
||||
fee_type VARCHAR(30) NOT NULL COMMENT '费用类型(字典bms_fee_type)',
|
||||
fee_name VARCHAR(100) DEFAULT NULL COMMENT '费用名称',
|
||||
sc_id BIGINT(20) NOT NULL DEFAULT 0 COMMENT '附加费配置ID',
|
||||
amount DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '金额',
|
||||
currency VARCHAR(10) NOT NULL DEFAULT 'CNY' COMMENT '币种',
|
||||
round_mode VARCHAR(20) DEFAULT 'HALF_UP' COMMENT '取值方式',
|
||||
remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
|
||||
create_time DATETIME DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (fee_id),
|
||||
UNIQUE KEY uk_pay_bill_fee_item (bill_id, fee_type, sc_id),
|
||||
INDEX idx_pay_bill_fee_type (fee_type),
|
||||
CONSTRAINT fk_pay_bill_fee_order FOREIGN KEY (bill_id) REFERENCES prc_order_bill (bill_id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应付费用明细';
|
||||
Reference in New Issue
Block a user