From 55d694aaae4e421b5e55cd941500e08f85cb5d4d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 27 八月 2026 18:21:33 +0800
Subject: [PATCH] feat(sales): 添加框架合同订单功能并优化销售台账管理

---
 sql/migration_framework_contract.sql |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/sql/migration_framework_contract.sql b/sql/migration_framework_contract.sql
new file mode 100644
index 0000000..0a7a328
--- /dev/null
+++ b/sql/migration_framework_contract.sql
@@ -0,0 +1,51 @@
+-- 妗嗘灦鍚堝悓涓庢鏋惰鍗曞叧绯伙紙骞傜瓑锛氬凡瀛樺湪鐨勫垪/瀛楁璺宠繃锛屽彲瀹夊叏閲嶅鎵ц锛�
+
+-- sales_ledger.contract_type / parent_contract_id
+SET @c1 = (SELECT COUNT(*) FROM information_schema.COLUMNS
+    WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sales_ledger' AND COLUMN_NAME = 'contract_type');
+SET @ddl1 = IF(@c1 = 0,
+    'ALTER TABLE `sales_ledger` ADD COLUMN `contract_type` tinyint NOT NULL DEFAULT 1 COMMENT ''鍚堝悓绫诲瀷锛�1鏅�氶攢鍞悎鍚岋紝2妗嗘灦鍚堝悓锛�3妗嗘灦璁㈠崟'' AFTER `sales_contract_no`',
+    'SELECT 1');
+PREPARE stmt1 FROM @ddl1;
+EXECUTE stmt1;
+DEALLOCATE PREPARE stmt1;
+
+SET @c2 = (SELECT COUNT(*) FROM information_schema.COLUMNS
+    WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sales_ledger' AND COLUMN_NAME = 'parent_contract_id');
+SET @ddl2 = IF(@c2 = 0,
+    'ALTER TABLE `sales_ledger` ADD COLUMN `parent_contract_id` bigint NULL COMMENT ''鐖舵鏋跺悎鍚孖D'' AFTER `contract_type`',
+    'SELECT 1');
+PREPARE stmt2 FROM @ddl2;
+EXECUTE stmt2;
+DEALLOCATE PREPARE stmt2;
+
+-- sales_ledger_product.quantity 鍏佽涓虹┖
+SET @c3 = (SELECT COUNT(*) FROM information_schema.COLUMNS
+    WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sales_ledger_product' AND COLUMN_NAME = 'quantity'
+      AND IS_NULLABLE = 'NO');
+SET @ddl3 = IF(@c3 = 1,
+    'ALTER TABLE `sales_ledger_product` MODIFY COLUMN `quantity` decimal(18, 2) NULL COMMENT ''鏁伴噺锛屾鏋跺悎鍚屽拰妗嗘灦璁㈠崟涓嶈褰曟暟閲忥紝瀹為檯鍙戣揣鏁伴噺璁板綍鍦ㄥ彂璐ф槑缁�''',
+    'SELECT 1');
+PREPARE stmt3 FROM @ddl3;
+EXECUTE stmt3;
+DEALLOCATE PREPARE stmt3;
+
+-- sales_ledger_product.parent_product_id
+SET @c4 = (SELECT COUNT(*) FROM information_schema.COLUMNS
+    WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sales_ledger_product' AND COLUMN_NAME = 'parent_product_id');
+SET @ddl4 = IF(@c4 = 0,
+    'ALTER TABLE `sales_ledger_product` ADD COLUMN `parent_product_id` bigint NULL COMMENT ''鐖舵鏋跺悎鍚屼骇鍝両D'' AFTER `sales_ledger_id`',
+    'SELECT 1');
+PREPARE stmt4 FROM @ddl4;
+EXECUTE stmt4;
+DEALLOCATE PREPARE stmt4;
+
+-- sales_ledger_product.delivery_date
+SET @c5 = (SELECT COUNT(*) FROM information_schema.COLUMNS
+    WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sales_ledger_product' AND COLUMN_NAME = 'delivery_date');
+SET @ddl5 = IF(@c5 = 0,
+    'ALTER TABLE `sales_ledger_product` ADD COLUMN `delivery_date` date NULL COMMENT ''妗嗘灦璁㈠崟浜よ揣鏃ユ湡'' AFTER `parent_product_id`',
+    'SELECT 1');
+PREPARE stmt5 FROM @ddl5;
+EXECUTE stmt5;
+DEALLOCATE PREPARE stmt5;

--
Gitblit v1.9.3