62 lines
2.1 KiB
SQL
62 lines
2.1 KiB
SQL
-- 开票申请商品行补齐不含税金额与含税合计字段。
|
|
-- 使用 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);
|