-- 修改人:Ld 修改时间:2026-07-28 15:26:14; 销售绩效组件测试数据,合同编号统一使用 TEST-JX- 前缀。 SET NOCOUNT ON; BEGIN TRY BEGIN TRANSACTION; DECLARE @待清理项目 TABLE (项目流水号 int PRIMARY KEY); INSERT INTO @待清理项目 (项目流水号) SELECT 项目流水号 FROM dbo.PDM_项目名称 WHERE 合同编号 LIKE N'TEST-JX-%'; DELETE r FROM dbo.财务管理_收款记录 r INNER JOIN @待清理项目 p ON r.项目流水号 = p.项目流水号; DELETE p FROM dbo.PDM_项目名称 p INNER JOIN @待清理项目 d ON p.项目流水号 = d.项目流水号; DECLARE @测试项目 TABLE ( 场景 nvarchar(50) NOT NULL, 项目流水号 int NOT NULL ); INSERT INTO dbo.PDM_项目名称 ( 合同编号, 客户流水号, 合同金额, 付款方式流水号, 客户要求, 签订日期, 交货日期, 签订人, 合同备注, 是否生成订单, 操作日期, 合同类型, 操作者, 税率, 交货人, 提交日期, 收货人员, 交货期限, 是否启用, 通知人, 通知日期, 合同协议, 是否审核, 未收款项, 收款日期, 提成类型 ) OUTPUT N'跨月达标模块首单', inserted.项目流水号 INTO @测试项目(场景, 项目流水号) VALUES ( N'TEST-JX-202607-A', 2507, 100000, 2, N'销售绩效测试:6月回款40%,7月累计达到90%,8月尾款。', '2026-06-20', '2026-08-20', 273, N'销售绩效测试数据,可按 TEST-JX- 前缀清理。', 1, GETDATE(), 1, 273, 0.13, 273, '2026-06-20', N'罗伟', N'付款后30日', 1, 273, GETDATE(), N'销售绩效测试合同', 1, 0, '2026-08-12', N'首单提成(模块)' ); INSERT INTO dbo.PDM_项目名称 ( 合同编号, 客户流水号, 合同金额, 付款方式流水号, 客户要求, 签订日期, 交货日期, 签订人, 合同备注, 是否生成订单, 操作日期, 合同类型, 操作者, 税率, 交货人, 提交日期, 收货人员, 交货期限, 是否启用, 通知人, 通知日期, 合同协议, 是否审核, 未收款项, 收款日期, 提成类型 ) OUTPUT N'当月达标专机首单', inserted.项目流水号 INTO @测试项目(场景, 项目流水号) VALUES ( N'TEST-JX-202607-B', 2506, 200000, 2, N'销售绩效测试:7月全额回款。', '2026-07-02', '2026-09-02', 5, N'销售绩效测试数据,可按 TEST-JX- 前缀清理。', 1, GETDATE(), 2, 5, 0.13, 5, '2026-07-02', N'最高管理员', N'付款后45日', 1, 5, GETDATE(), N'销售绩效测试合同', 1, 0, '2026-07-21', N'首单提成(专机)' ); INSERT INTO dbo.PDM_项目名称 ( 合同编号, 客户流水号, 合同金额, 付款方式流水号, 客户要求, 签订日期, 交货日期, 签订人, 合同备注, 是否生成订单, 操作日期, 合同类型, 操作者, 税率, 交货人, 提交日期, 收货人员, 交货期限, 是否启用, 通知人, 通知日期, 合同协议, 是否审核, 未收款项, 收款日期, 提成类型 ) OUTPUT N'复购当月达标', inserted.项目流水号 INTO @测试项目(场景, 项目流水号) VALUES ( N'TEST-JX-202608-C', 2505, 50000, 2, N'销售绩效测试:8月达到90%。', '2026-08-03', '2026-09-15', 28, N'销售绩效测试数据,可按 TEST-JX- 前缀清理。', 1, GETDATE(), 1, 28, 0.13, 28, '2026-08-03', N'章乐红', N'付款后20日', 1, 28, GETDATE(), N'销售绩效测试合同', 1, 0, '2026-08-28', N'复购提成' ); INSERT INTO dbo.PDM_项目名称 ( 合同编号, 客户流水号, 合同金额, 付款方式流水号, 客户要求, 签订日期, 交货日期, 签订人, 合同备注, 是否生成订单, 操作日期, 合同类型, 操作者, 税率, 交货人, 提交日期, 收货人员, 交货期限, 是否启用, 通知人, 通知日期, 合同协议, 是否审核, 未收款项, 收款日期, 提成类型 ) OUTPUT N'退款扣回绩效', inserted.项目流水号 INTO @测试项目(场景, 项目流水号) VALUES ( N'TEST-JX-202608-D', 2504, 80000, 2, N'销售绩效测试:8月达标,9月退款扣回。', '2026-08-10', '2026-10-10', 273, N'销售绩效测试数据,可按 TEST-JX- 前缀清理。', 1, GETDATE(), 2, 273, 0.13, 273, '2026-08-10', N'罗伟', N'付款后30日', 1, 273, GETDATE(), N'销售绩效测试合同', 1, 0, '2026-09-05', N'转介绍提成(专机)' ); INSERT INTO dbo.PDM_项目名称 ( 合同编号, 客户流水号, 合同金额, 付款方式流水号, 客户要求, 签订日期, 交货日期, 签订人, 合同备注, 是否生成订单, 操作日期, 合同类型, 操作者, 税率, 交货人, 提交日期, 收货人员, 交货期限, 是否启用, 通知人, 通知日期, 合同协议, 是否审核, 未收款项, 收款日期, 提成类型 ) OUTPUT N'未达90不计绩效', inserted.项目流水号 INTO @测试项目(场景, 项目流水号) VALUES ( N'TEST-JX-202609-E', 2503, 120000, 2, N'销售绩效测试:只回款60%,不应进入绩效。', '2026-09-01', '2026-11-01', 5, N'销售绩效测试数据,可按 TEST-JX- 前缀清理。', 1, GETDATE(), 1, 5, 0.13, 5, '2026-09-01', N'最高管理员', N'付款后30日', 1, 5, GETDATE(), N'销售绩效测试合同', 1, 48000, '2026-09-18', N'转介绍提成(模块)' ); INSERT INTO dbo.财务管理_收款记录 (项目流水号, 金额, 时间, 备注) SELECT 项目流水号, 40000, '2026-06-25T10:00:00', N'销售绩效测试:首付款40%' FROM @测试项目 WHERE 场景 = N'跨月达标模块首单' UNION ALL SELECT 项目流水号, 50000, '2026-07-10T15:30:00', N'销售绩效测试:累计达到90%' FROM @测试项目 WHERE 场景 = N'跨月达标模块首单' UNION ALL SELECT 项目流水号, 10000, '2026-08-12T09:20:00', N'销售绩效测试:尾款10%' FROM @测试项目 WHERE 场景 = N'跨月达标模块首单' UNION ALL SELECT 项目流水号, 120000, '2026-07-08T11:00:00', N'销售绩效测试:第一笔回款60%' FROM @测试项目 WHERE 场景 = N'当月达标专机首单' UNION ALL SELECT 项目流水号, 80000, '2026-07-21T16:45:00', N'销售绩效测试:第二笔回款40%' FROM @测试项目 WHERE 场景 = N'当月达标专机首单' UNION ALL SELECT 项目流水号, 45000, '2026-08-28T14:10:00', N'销售绩效测试:复购达到90%' FROM @测试项目 WHERE 场景 = N'复购当月达标' UNION ALL SELECT 项目流水号, 72000, '2026-08-18T10:10:00', N'销售绩效测试:转介绍专机达到90%' FROM @测试项目 WHERE 场景 = N'退款扣回绩效' UNION ALL SELECT 项目流水号, -8000, '2026-09-05T13:40:00', N'销售绩效测试:退款扣回绩效' FROM @测试项目 WHERE 场景 = N'退款扣回绩效' UNION ALL SELECT 项目流水号, 72000, '2026-09-18T09:35:00', N'销售绩效测试:未达到90%,不计绩效' FROM @测试项目 WHERE 场景 = N'未达90不计绩效'; COMMIT TRANSACTION; SELECT t.场景, p.项目流水号, p.合同编号, p.合同金额, p.提成类型, v.客户名称, v.经手人 AS 销售员 FROM @测试项目 t INNER JOIN dbo.PDM_项目名称 p ON t.项目流水号 = p.项目流水号 LEFT JOIN dbo.PDM_项目名称_视图 v ON p.项目流水号 = v.项目流水号 ORDER BY p.项目流水号; END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; -- 修改人:Ld 修改时间:2026-07-28 15:26:14; 测试库 SQL Server 兼容旧版本错误抛出方式。 DECLARE @错误信息 nvarchar(4000); DECLARE @错误级别 int; DECLARE @错误状态 int; SELECT @错误信息 = ERROR_MESSAGE(), @错误级别 = ERROR_SEVERITY(), @错误状态 = ERROR_STATE(); RAISERROR(@错误信息, @错误级别, @错误状态); END CATCH;