gaoluyang
2026-11-05 d39e4f7d839167c16425086dfa2f8747bccfdff9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
-- =============================================
-- 采购台账改造 + 销售订单收款日期
-- 目标库:mom-ntsh(MySQL 8.4)
-- 说明:
--   1. 脚本可重复执行:列用 information_schema 预检查 + PREPARE,字典/菜单用先查后插
--   2. 不包含 tenant_id(本项目不使用多租户)
--   3. 历史采购单 payment_date 允许为空,编辑时由前端要求补填
-- =============================================
 
-- ---------------------------------------------
-- 一、erp_purchase_order 采购台账表头字段
-- ---------------------------------------------
 
SET @exists = (SELECT COUNT(*) FROM information_schema.columns
               WHERE table_schema = DATABASE() AND table_name = 'erp_purchase_order' AND column_name = 'purchase_type');
SET @sql = IF(@exists = 0,
    'ALTER TABLE erp_purchase_order ADD COLUMN purchase_type TINYINT NULL COMMENT ''采购类型:1生产 2办公用品 3其他'' AFTER remark',
    'SELECT 1');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
 
SET @exists = (SELECT COUNT(*) FROM information_schema.columns
               WHERE table_schema = DATABASE() AND table_name = 'erp_purchase_order' AND column_name = 'contract_no');
SET @sql = IF(@exists = 0,
    'ALTER TABLE erp_purchase_order ADD COLUMN contract_no VARCHAR(64) NULL COMMENT ''合同号(客户手工输入,不自动生成)'' AFTER purchase_type',
    'SELECT 1');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
 
SET @exists = (SELECT COUNT(*) FROM information_schema.columns
               WHERE table_schema = DATABASE() AND table_name = 'erp_purchase_order' AND column_name = 'project_name');
SET @sql = IF(@exists = 0,
    'ALTER TABLE erp_purchase_order ADD COLUMN project_name VARCHAR(255) NULL COMMENT ''项目名称(非必填)'' AFTER contract_no',
    'SELECT 1');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
 
SET @exists = (SELECT COUNT(*) FROM information_schema.columns
               WHERE table_schema = DATABASE() AND table_name = 'erp_purchase_order' AND column_name = 'payment_date');
SET @sql = IF(@exists = 0,
    'ALTER TABLE erp_purchase_order ADD COLUMN payment_date DATETIME NULL COMMENT ''付款日期'' AFTER project_name',
    'SELECT 1');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
 
SET @exists = (SELECT COUNT(*) FROM information_schema.columns
               WHERE table_schema = DATABASE() AND table_name = 'erp_purchase_order' AND column_name = 'payment_method');
SET @sql = IF(@exists = 0,
    'ALTER TABLE erp_purchase_order ADD COLUMN payment_method TINYINT NULL COMMENT ''付款方式:1电汇 2汇票 3现金 4手机支付'' AFTER payment_date',
    'SELECT 1');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
 
-- ---------------------------------------------
-- 二、erp_purchase_order_items 产品编号(MDM 物料编码快照)
-- ---------------------------------------------
 
SET @exists = (SELECT COUNT(*) FROM information_schema.columns
               WHERE table_schema = DATABASE() AND table_name = 'erp_purchase_order_items' AND column_name = 'product_code');
SET @sql = IF(@exists = 0,
    'ALTER TABLE erp_purchase_order_items ADD COLUMN product_code VARCHAR(64) NULL COMMENT ''产品编号(MDM 物料编码快照)'' AFTER product_id',
    'SELECT 1');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
 
-- ---------------------------------------------
-- 三、erp_sale_order 收款日期
-- ---------------------------------------------
 
SET @exists = (SELECT COUNT(*) FROM information_schema.columns
               WHERE table_schema = DATABASE() AND table_name = 'erp_sale_order' AND column_name = 'receipt_date');
SET @sql = IF(@exists = 0,
    'ALTER TABLE erp_sale_order ADD COLUMN receipt_date DATETIME NULL COMMENT ''收款日期'' AFTER order_time',
    'SELECT 1');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
 
-- ---------------------------------------------
-- 四、字典:采购类型、付款方式
-- ---------------------------------------------
 
INSERT INTO system_dict_type (name, type, status, remark)
SELECT 'ERP 采购类型', 'erp_purchase_type', 0, '采购台账-采购类型:1生产 2办公用品 3其他'
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM system_dict_type WHERE type = 'erp_purchase_type' AND deleted = 0);
 
INSERT INTO system_dict_type (name, type, status, remark)
SELECT 'ERP 付款方式', 'erp_payment_method', 0, '采购台账-付款方式:1电汇 2汇票 3现金 4手机支付'
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM system_dict_type WHERE type = 'erp_payment_method' AND deleted = 0);
 
INSERT INTO system_dict_data (sort, label, value, dict_type, status, color_type, css_class)
SELECT 0, '生产', '1', 'erp_purchase_type', 0, '', ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM system_dict_data WHERE dict_type = 'erp_purchase_type' AND value = '1' AND deleted = 0);
INSERT INTO system_dict_data (sort, label, value, dict_type, status, color_type, css_class)
SELECT 1, '办公用品', '2', 'erp_purchase_type', 0, '', ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM system_dict_data WHERE dict_type = 'erp_purchase_type' AND value = '2' AND deleted = 0);
INSERT INTO system_dict_data (sort, label, value, dict_type, status, color_type, css_class)
SELECT 2, '其他', '3', 'erp_purchase_type', 0, '', ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM system_dict_data WHERE dict_type = 'erp_purchase_type' AND value = '3' AND deleted = 0);
 
INSERT INTO system_dict_data (sort, label, value, dict_type, status, color_type, css_class)
SELECT 0, '电汇', '1', 'erp_payment_method', 0, '', ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM system_dict_data WHERE dict_type = 'erp_payment_method' AND value = '1' AND deleted = 0);
INSERT INTO system_dict_data (sort, label, value, dict_type, status, color_type, css_class)
SELECT 1, '汇票', '2', 'erp_payment_method', 0, '', ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM system_dict_data WHERE dict_type = 'erp_payment_method' AND value = '2' AND deleted = 0);
INSERT INTO system_dict_data (sort, label, value, dict_type, status, color_type, css_class)
SELECT 2, '现金', '3', 'erp_payment_method', 0, '', ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM system_dict_data WHERE dict_type = 'erp_payment_method' AND value = '3' AND deleted = 0);
INSERT INTO system_dict_data (sort, label, value, dict_type, status, color_type, css_class)
SELECT 3, '手机支付', '4', 'erp_payment_method', 0, '', ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM system_dict_data WHERE dict_type = 'erp_payment_method' AND value = '4' AND deleted = 0);
 
-- ---------------------------------------------
-- 五、菜单名称:采购订单 -> 采购台账(权限串保持不变,避免角色权限失效)
-- ---------------------------------------------
 
UPDATE system_menu SET name = '采购台账' WHERE id = 2666;
UPDATE system_menu SET name = '采购台账创建' WHERE id = 2668;
UPDATE system_menu SET name = '采购台账更新' WHERE id = 2669;
UPDATE system_menu SET name = '采购台账删除' WHERE id = 2670;
UPDATE system_menu SET name = '采购台账导出' WHERE id = 2671;
UPDATE system_menu SET name = '采购台账审批' WHERE id = 2672;