✨ 应收账单快照保存产品价和红线价
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
-- 应收账单订单/费用快照增加产品价和红线价,并从可匹配的计费来源回填历史数据。
|
||||
-- 字段保持可空:来源缺失或来源字段为空时,不将其伪造为 0。
|
||||
|
||||
SET @column_exists := (
|
||||
SELECT COUNT(1) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ar_bill_detail' AND COLUMN_NAME = 'product_amount'
|
||||
);
|
||||
SET @sql := IF(@column_exists = 0,
|
||||
'ALTER TABLE `ar_bill_detail` ADD COLUMN `product_amount` decimal(18,4) DEFAULT NULL COMMENT ''产品价合计快照'' AFTER `total_amount`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @column_exists := (
|
||||
SELECT COUNT(1) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ar_bill_detail' AND COLUMN_NAME = 'redline_amount'
|
||||
);
|
||||
SET @sql := IF(@column_exists = 0,
|
||||
'ALTER TABLE `ar_bill_detail` ADD COLUMN `redline_amount` decimal(18,4) DEFAULT NULL COMMENT ''红线价合计快照'' AFTER `product_amount`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @column_exists := (
|
||||
SELECT COUNT(1) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ar_bill_detail_fee' AND COLUMN_NAME = 'product_amount'
|
||||
);
|
||||
SET @sql := IF(@column_exists = 0,
|
||||
'ALTER TABLE `ar_bill_detail_fee` ADD COLUMN `product_amount` decimal(18,4) DEFAULT NULL COMMENT ''产品价快照'' AFTER `amount`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @column_exists := (
|
||||
SELECT COUNT(1) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ar_bill_detail_fee' AND COLUMN_NAME = 'redline_amount'
|
||||
);
|
||||
SET @sql := IF(@column_exists = 0,
|
||||
'ALTER TABLE `ar_bill_detail_fee` ADD COLUMN `redline_amount` decimal(18,4) DEFAULT NULL COMMENT ''红线价快照'' AFTER `product_amount`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 主表字段对应同一订单的整单合计;费用表字段对应同一来源费用 ID。
|
||||
UPDATE `ar_bill_detail` d
|
||||
INNER JOIN `prc_income_bill` p ON p.`bill_id` = d.`prc_order_bill_id`
|
||||
SET d.`product_amount` = IF(d.`product_amount` IS NULL, p.`product_amount`, d.`product_amount`),
|
||||
d.`redline_amount` = IF(d.`redline_amount` IS NULL, p.`redline_amount`, d.`redline_amount`)
|
||||
WHERE d.`product_amount` IS NULL OR d.`redline_amount` IS NULL;
|
||||
|
||||
UPDATE `ar_bill_detail_fee` d
|
||||
INNER JOIN `prc_income_bill_fee` p ON p.`fee_id` = d.`prc_income_bill_fee_id`
|
||||
SET d.`product_amount` = IF(d.`product_amount` IS NULL, p.`product_amount`, d.`product_amount`),
|
||||
d.`redline_amount` = IF(d.`redline_amount` IS NULL, p.`redline_amount`, d.`redline_amount`)
|
||||
WHERE d.`product_amount` IS NULL OR d.`redline_amount` IS NULL;
|
||||
@@ -125,6 +125,8 @@ CREATE TABLE `ar_bill_detail` (
|
||||
`pkg_height` decimal(10,2) DEFAULT NULL COMMENT '高度CM',
|
||||
`currency` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '币种快照',
|
||||
`total_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '订单费用合计',
|
||||
`product_amount` decimal(18,4) DEFAULT NULL COMMENT '产品价合计快照',
|
||||
`redline_amount` decimal(18,4) DEFAULT NULL COMMENT '红线价合计快照',
|
||||
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单账单备注',
|
||||
`create_by` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
@@ -151,6 +153,8 @@ CREATE TABLE `ar_bill_detail_fee` (
|
||||
`unit` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '计费单位',
|
||||
`unit_price` decimal(15,4) DEFAULT NULL COMMENT '费用单价',
|
||||
`amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '费用金额',
|
||||
`product_amount` decimal(18,4) DEFAULT NULL COMMENT '产品价快照',
|
||||
`redline_amount` decimal(18,4) DEFAULT NULL COMMENT '红线价快照',
|
||||
`currency` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '币种',
|
||||
`calculation_formula` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '计算公式或说明',
|
||||
`round_mode` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '取舍规则',
|
||||
|
||||
Reference in New Issue
Block a user