fix: 开票申请同步金蝶按发票张次拆分开票,提交sql

This commit is contained in:
刘泉佳
2026-09-24 19:47:54 +08:00
parent aa06379737
commit a2fd96da9d
@@ -0,0 +1,50 @@
-- ============================================================
-- blade_invoice_application_sheet_kingdee_bill_no_20260924.sql
-- ============================================================
-- 开票申请同步金蝶按发票张次拆分开票(A303-1 一张发票张次一张开票申请单)
-- blade_invoice_application_sheet.kingdee_bill_no 本张发票对应的金蝶开票申请单编号(A303-1 返回,A303-5 serialNo 查询入口)
-- blade_invoice_application.kingdee_bill_no 多张发票时逗号拼接全部金蝶单号,列加宽至 varchar(500) 防溢出
-- blade_invoice_application_record.kingdee_bill_no 操作记录的同一字段同步加宽,避免多张单号拼接超长导致插入失败
-- 以下结构升级支持重复执行
-- ① blade_invoice_application_sheet.kingdee_bill_no
SET @ddl_sql = (
SELECT IF(COUNT(*) = 0,
'ALTER TABLE `blade_invoice_application_sheet` ADD COLUMN `kingdee_bill_no` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶开票申请单编号(本张发票对应)'' AFTER `invoice_amount`',
'SELECT 1')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'blade_invoice_application_sheet'
AND COLUMN_NAME = 'kingdee_bill_no'
);
PREPARE ddl_stmt FROM @ddl_sql;
EXECUTE ddl_stmt;
DEALLOCATE PREPARE ddl_stmt;
-- ② blade_invoice_application.kingdee_bill_no 加宽
SET @ddl_sql = (
SELECT IF(CHARACTER_MAXIMUM_LENGTH < 500,
'ALTER TABLE `blade_invoice_application` MODIFY COLUMN `kingdee_bill_no` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶开票申请单编号(多张发票逗号拼接)''',
'SELECT 1')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'blade_invoice_application'
AND COLUMN_NAME = 'kingdee_bill_no'
);
PREPARE ddl_stmt FROM @ddl_sql;
EXECUTE ddl_stmt;
DEALLOCATE PREPARE ddl_stmt;
-- ③ blade_invoice_application_record.kingdee_bill_no 加宽
SET @ddl_sql = (
SELECT IF(CHARACTER_MAXIMUM_LENGTH < 500,
'ALTER TABLE `blade_invoice_application_record` MODIFY COLUMN `kingdee_bill_no` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶开票申请单编号(多张发票逗号拼接)''',
'SELECT 1')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'blade_invoice_application_record'
AND COLUMN_NAME = 'kingdee_bill_no'
);
PREPARE ddl_stmt FROM @ddl_sql;
EXECUTE ddl_stmt;
DEALLOCATE PREPARE ddl_stmt;