调整业务问题

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
@@ -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);