调整业务问题

This commit is contained in:
2026-09-02 03:22:22 +08:00
parent 3edfb72d7d
commit e5b8ff5d4c
21 changed files with 249 additions and 63 deletions
@@ -104,10 +104,12 @@ CREATE TABLE IF NOT EXISTS `blade_invoice_application_line` (
`goods_name` varchar(100) NOT NULL,
`unit` varchar(30) DEFAULT NULL,
`quantity` decimal(18,4) DEFAULT NULL,
`unit_price_no_tax` decimal(18,4) DEFAULT NULL,
`amount_with_tax` decimal(18,2) NOT NULL DEFAULT '0.00',
`unit_price_no_tax` decimal(18,2) DEFAULT NULL,
`amount_no_tax` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '不含税金额',
`amount_with_tax` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '含税金额(兼容历史字段)',
`tax_rate` decimal(8,4) NOT NULL DEFAULT '0.0000',
`tax_amount` decimal(18,2) NOT NULL DEFAULT '0.00',
`total_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '含税合计',
`remark` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_invoice_sheet_line` (`invoice_sheet_id`,`line_no`),
@@ -0,0 +1,61 @@
-- 开票申请商品行补齐不含税金额与含税合计字段。
-- 使用 information_schema 判断字段是否存在,重复执行不会报重复列错误。
SET @invoice_line_schema = DATABASE();
SET @invoice_line_sql = (
SELECT IF(
COUNT(*) > 0,
'ALTER TABLE `blade_invoice_application_line` MODIFY COLUMN `unit_price_no_tax` decimal(18,2) DEFAULT NULL',
'SELECT 1'
)
FROM information_schema.columns
WHERE table_schema = @invoice_line_schema
AND table_name = 'blade_invoice_application_line'
AND column_name = 'unit_price_no_tax'
AND (numeric_precision <> 18 OR numeric_scale <> 2)
);
PREPARE invoice_line_stmt FROM @invoice_line_sql;
EXECUTE invoice_line_stmt;
DEALLOCATE PREPARE invoice_line_stmt;
SET @invoice_line_sql = (
SELECT IF(
COUNT(*) = 0,
'ALTER TABLE `blade_invoice_application_line` ADD COLUMN `amount_no_tax` decimal(18,2) NOT NULL DEFAULT ''0.00'' COMMENT ''不含税金额'' AFTER `unit_price_no_tax`',
'SELECT 1'
)
FROM information_schema.columns
WHERE table_schema = @invoice_line_schema
AND table_name = 'blade_invoice_application_line'
AND column_name = 'amount_no_tax'
);
PREPARE invoice_line_stmt FROM @invoice_line_sql;
EXECUTE invoice_line_stmt;
DEALLOCATE PREPARE invoice_line_stmt;
SET @invoice_line_sql = (
SELECT IF(
COUNT(*) = 0,
'ALTER TABLE `blade_invoice_application_line` ADD COLUMN `total_amount` decimal(18,2) NOT NULL DEFAULT ''0.00'' COMMENT ''含税合计'' AFTER `tax_amount`',
'SELECT 1'
)
FROM information_schema.columns
WHERE table_schema = @invoice_line_schema
AND table_name = 'blade_invoice_application_line'
AND column_name = 'total_amount'
);
PREPARE invoice_line_stmt FROM @invoice_line_sql;
EXECUTE invoice_line_stmt;
DEALLOCATE PREPARE invoice_line_stmt;
UPDATE `blade_invoice_application_line`
SET `amount_no_tax` = ROUND(
`amount_with_tax` / (1 + `tax_rate` / 100),
2
)
WHERE `amount_no_tax` = 0
AND `amount_with_tax` > 0;
UPDATE `blade_invoice_application_line`
SET `total_amount` = ROUND(`amount_no_tax` + `tax_amount`, 2),
`amount_with_tax` = ROUND(`amount_no_tax` + `tax_amount`, 2);
+1 -1
View File
@@ -196,7 +196,7 @@ CREATE TABLE `blade_transport_plan` (
`goods_json` text DEFAULT NULL COMMENT '货物信息',
`freight_json` text DEFAULT NULL COMMENT '费用信息',
`attachments_json` text DEFAULT NULL COMMENT '附件',
`data_source` varchar(100) DEFAULT NULL COMMENT '数据来源',
`data_source` varchar(100) DEFAULT '手工创建' COMMENT '数据来源',
`business_status` varchar(100) DEFAULT NULL COMMENT '业务状态',
`dispatcher_user_id` bigint(20) DEFAULT NULL COMMENT '调度人ID',
`dispatcher_user_name` varchar(100) DEFAULT NULL COMMENT '调度人姓名',
@@ -0,0 +1,17 @@
-- 运输计划数据来源统一为:批量导入、手工创建、外部系统
ALTER TABLE `blade_transport_plan`
MODIFY COLUMN `data_source` varchar(100) DEFAULT '手工创建' COMMENT '数据来源';
UPDATE `blade_transport_plan`
SET `data_source` = CASE
WHEN TRIM(COALESCE(`data_source`, '')) = '批量导入' THEN '批量导入'
WHEN TRIM(COALESCE(`data_source`, '')) IN (
'手工创建', '手动创建', '手动录入', '手工录入', '手动',
'模板生成', '计划调度', '多联总单调度'
) THEN '手工创建'
WHEN TRIM(COALESCE(`data_source`, '')) = '外部系统' THEN '外部系统'
ELSE '外部系统'
END
WHERE `data_source` IS NULL
OR TRIM(`data_source`) = ''
OR TRIM(`data_source`) NOT IN ('批量导入', '手工创建', '外部系统');