更新销售合同/提成/业绩、精工工序工价/生产审核/工时统计、仓储盘点/库存/补货/入库/库房管理,新增提成设置/销售业绩/库房管理/入库单移动端等模块及SQL脚本
This commit is contained in:
229
sql/replenishment_contract_link_test_20260803.sql
Normal file
229
sql/replenishment_contract_link_test_20260803.sql
Normal file
@@ -0,0 +1,229 @@
|
||||
-- 方案一补货关联合同测试库增量脚本;修改人:Ld 修改时间:2026-08-03 16:06:00;
|
||||
USE [ERPTOOL_JY_20250826Back];
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'[dbo].[仓储管理_补货关联合同_查询数据]', N'P') IS NOT NULL
|
||||
DROP PROCEDURE [dbo].[仓储管理_补货关联合同_查询数据];
|
||||
GO
|
||||
|
||||
-- 补货创建时查询可关联的销售合同/订单;修改人:Ld 修改时间:2026-08-03 16:06:00;
|
||||
CREATE PROCEDURE [dbo].[仓储管理_补货关联合同_查询数据]
|
||||
@关键字 NVARCHAR(100) = NULL,
|
||||
@合同编号 NVARCHAR(100) = NULL,
|
||||
@客户 NVARCHAR(100) = NULL,
|
||||
@订单编号 NVARCHAR(100) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT TOP 50
|
||||
p.项目流水号,
|
||||
p.合同编号,
|
||||
ISNULL(c.客户名称, N'') AS 客户名称,
|
||||
ISNULL(c.简称, c.客户名称) AS 客户简称,
|
||||
o.订单流水号,
|
||||
o.订单编号,
|
||||
CONVERT(VARCHAR(10), p.签订日期, 23) AS 签订日期,
|
||||
CONVERT(VARCHAR(10), ISNULL(o.完成期限, p.交货日期), 23) AS 交货日期
|
||||
FROM dbo.PDM_项目名称 AS p
|
||||
LEFT JOIN dbo.客户关系管理系统_客户名称 AS c
|
||||
ON p.客户流水号 = c.客户流水号
|
||||
LEFT JOIN dbo.合同管理_订单信息_基础表 AS o
|
||||
ON p.项目流水号 = o.项目流水号
|
||||
WHERE ISNULL(p.是否启用, 1) = 1
|
||||
AND ISNULL(p.合同编号, N'') <> N''
|
||||
AND (ISNULL(@关键字, N'') = N''
|
||||
OR p.合同编号 LIKE N'%' + @关键字 + N'%'
|
||||
OR ISNULL(c.客户名称, N'') LIKE N'%' + @关键字 + N'%'
|
||||
OR ISNULL(c.简称, N'') LIKE N'%' + @关键字 + N'%'
|
||||
OR ISNULL(o.订单编号, N'') LIKE N'%' + @关键字 + N'%')
|
||||
AND (ISNULL(@合同编号, N'') = N'' OR p.合同编号 LIKE N'%' + @合同编号 + N'%')
|
||||
AND (ISNULL(@客户, N'') = N'' OR ISNULL(c.客户名称, N'') LIKE N'%' + @客户 + N'%' OR ISNULL(c.简称, N'') LIKE N'%' + @客户 + N'%')
|
||||
AND (ISNULL(@订单编号, N'') = N'' OR ISNULL(o.订单编号, N'') LIKE N'%' + @订单编号 + N'%')
|
||||
ORDER BY p.项目流水号 DESC, o.订单流水号 DESC;
|
||||
END;
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'[dbo].[报缺补货_提交_关联合同]', N'P') IS NOT NULL
|
||||
DROP PROCEDURE [dbo].[报缺补货_提交_关联合同];
|
||||
GO
|
||||
|
||||
-- 补货提交时挂到选定销售合同/订单或仓库备货合同;不改原报缺补货_提交;修改人:Ld 修改时间:2026-08-03 16:06:00;
|
||||
-- 仓库备货提交时自动生成CKBH前缀合同号,并写入仓库补货合同明细;修改人:Ld 修改时间:2026-08-04 08:29:13;
|
||||
CREATE PROCEDURE [dbo].[报缺补货_提交_关联合同]
|
||||
@是否外购 INT = NULL,
|
||||
@操作者 INT = NULL,
|
||||
@订单备注 NVARCHAR(200) = NULL,
|
||||
@补货期限 DATETIME = NULL,
|
||||
@来源类型 NVARCHAR(20) = NULL,
|
||||
@项目流水号 INT = NULL,
|
||||
@订单流水号 INT = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
DECLARE @单号 VARCHAR(100);
|
||||
DECLARE @单号前缀 VARCHAR(20);
|
||||
DECLARE @序号 INT;
|
||||
DECLARE @机床流水号 INT;
|
||||
DECLARE @组件流水号 INT;
|
||||
DECLARE @仓库备货合同编号 NVARCHAR(50);
|
||||
DECLARE @补货类型名称 NVARCHAR(50);
|
||||
DECLARE @订单类型 INT = 3;
|
||||
|
||||
IF @补货期限 IS NULL
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'请选择补货期限' AS message;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF ISNULL(@来源类型, N'') = N''
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'请选择补货来源' AS message;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF @是否外购 = 1
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.外购件补货明细中间表)
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'外购补货单为空' AS message;
|
||||
RETURN;
|
||||
END;
|
||||
SET @单号前缀 = 'BHWG-';
|
||||
SET @补货类型名称 = N'外购补货';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.自制件补货明细中间表)
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'自制补货单为空' AS message;
|
||||
RETURN;
|
||||
END;
|
||||
SET @单号前缀 = 'BHZZ-';
|
||||
SET @补货类型名称 = N'自制补货';
|
||||
END;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
IF @来源类型 = N'仓库备货'
|
||||
BEGIN
|
||||
-- 仓库备货每次创建独立CKBH合同,编号规则按补货单日期+三位序号生成;修改人:Ld 修改时间:2026-08-04 08:29:13;
|
||||
SET @序号 = 1;
|
||||
SET @仓库备货合同编号 = N'CKBH-' + CONVERT(VARCHAR(8), GETDATE(), 112) + RIGHT('000' + CONVERT(VARCHAR(10), @序号), 3);
|
||||
|
||||
WHILE EXISTS (SELECT 1 FROM dbo.PDM_项目名称 WITH (UPDLOCK, HOLDLOCK) WHERE 合同编号 = @仓库备货合同编号)
|
||||
BEGIN
|
||||
SET @序号 = @序号 + 1;
|
||||
SET @仓库备货合同编号 = N'CKBH-' + CONVERT(VARCHAR(8), GETDATE(), 112) + RIGHT('000' + CONVERT(VARCHAR(10), @序号), 3);
|
||||
END;
|
||||
|
||||
INSERT INTO dbo.PDM_项目名称(合同编号, 合同类型, 操作者, 税率, 签订日期, 交货日期, 是否生成订单, 提交日期, 客户流水号, 是否审核, 合同备注, 是否启用, 收货人员, 合同金额, 未收款项)
|
||||
VALUES(@仓库备货合同编号, 3, @操作者, 0.13, GETDATE(), @补货期限, 1, GETDATE(), 8, 1, N'仓库发起备货补货合同', 1, N'仓库', 0, 0);
|
||||
|
||||
SET @项目流水号 = SCOPE_IDENTITY();
|
||||
|
||||
-- 合同明细视图规格品名来源于机床名称+详情,此处写入仓库补货、单价0;修改人:Ld 修改时间:2026-08-04 08:29:13;
|
||||
INSERT INTO dbo.PDM_机床名称(项目流水号, 机床名称, 数量, 单价, 单位)
|
||||
VALUES(@项目流水号, N'仓库补货', 1, 0, N'项');
|
||||
SET @机床流水号 = SCOPE_IDENTITY();
|
||||
END;
|
||||
ELSE
|
||||
BEGIN
|
||||
IF @项目流水号 IS NULL
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'请选择关联销售合同' AS message;
|
||||
ROLLBACK TRANSACTION;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.PDM_项目名称 WHERE 项目流水号 = @项目流水号 AND ISNULL(是否启用, 1) = 1)
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'关联销售合同不存在或已停用' AS message;
|
||||
ROLLBACK TRANSACTION;
|
||||
RETURN;
|
||||
END;
|
||||
END;
|
||||
|
||||
SET @序号 = 1;
|
||||
SET @单号 = @单号前缀 + CONVERT(VARCHAR(8), GETDATE(), 112) + RIGHT('000' + CONVERT(VARCHAR(10), @序号), 3);
|
||||
|
||||
WHILE EXISTS (SELECT 1 FROM dbo.合同管理_订单信息_基础表 WHERE 订单编号 = @单号)
|
||||
BEGIN
|
||||
SET @序号 = @序号 + 1;
|
||||
SET @单号 = @单号前缀 + CONVERT(VARCHAR(8), GETDATE(), 112) + RIGHT('000' + CONVERT(VARCHAR(10), @序号), 3);
|
||||
END;
|
||||
|
||||
IF @机床流水号 IS NULL
|
||||
BEGIN
|
||||
INSERT INTO dbo.PDM_机床名称(项目流水号)
|
||||
VALUES(@项目流水号);
|
||||
SET @机床流水号 = SCOPE_IDENTITY();
|
||||
END;
|
||||
|
||||
INSERT INTO dbo.PDM_组件名称(机床流水号, 是否合同创建, 产品名称, 产品流水号, 数量, 配置数)
|
||||
VALUES(@机床流水号, 1, @补货类型名称, 0, 1, 1);
|
||||
SET @组件流水号 = SCOPE_IDENTITY();
|
||||
|
||||
IF @是否外购 = 1
|
||||
BEGIN
|
||||
INSERT INTO dbo.合同管理_订单信息_基础表(项目流水号, 订单编号, 订单类型, 是否提交, 下单人, 下单日期, 采购期限, 订单备注)
|
||||
VALUES(@项目流水号, @单号, @订单类型, 1, @操作者, GETDATE(), @补货期限,
|
||||
ISNULL(@订单备注, N'') + CASE WHEN ISNULL(@来源类型, N'') <> N'' THEN N';补货来源:' + @来源类型 ELSE N'' END);
|
||||
|
||||
INSERT INTO dbo.PDM_零件明细表_标准件和外购件(组件流水号, 物料流水号, 零件数量, 零件类型, 材料流水号, 导入人员编号)
|
||||
SELECT @组件流水号, 物料流水号, 补货数量, 2, 材料流水号, @操作者
|
||||
FROM dbo.外购件补货明细中间表;
|
||||
|
||||
INSERT INTO dbo.外购件补货单_图片(标准件和外购件流水号, [文件标识], [文件名称], [文件后缀], [是否启用], [文件内容])
|
||||
SELECT 标准件和外购件流水号, [文件标识], [文件名称], [文件后缀], 补货单_图片.[是否启用], [文件内容]
|
||||
FROM dbo.补货单_图片
|
||||
INNER JOIN dbo.外购件补货明细中间表
|
||||
ON dbo.补货单_图片.补货单明细中间表流水号 = dbo.外购件补货明细中间表.补货单明细中间表流水号
|
||||
INNER JOIN dbo.PDM_零件明细表_标准件和外购件
|
||||
ON dbo.外购件补货明细中间表.物料流水号 = dbo.PDM_零件明细表_标准件和外购件.物料流水号
|
||||
WHERE 组件流水号 = @组件流水号
|
||||
AND 是否外购 = 1;
|
||||
|
||||
DELETE FROM dbo.外购件补货明细中间表;
|
||||
DELETE FROM dbo.补货单_图片 WHERE 是否外购 = 1;
|
||||
END;
|
||||
ELSE
|
||||
BEGIN
|
||||
INSERT INTO dbo.合同管理_订单信息_基础表(项目流水号, 订单编号, 订单类型, 是否提交, 下单人, 下单日期, 精工期限, 订单备注)
|
||||
VALUES(@项目流水号, @单号, @订单类型, 1, @操作者, GETDATE(), @补货期限,
|
||||
ISNULL(@订单备注, N'') + CASE WHEN ISNULL(@来源类型, N'') <> N'' THEN N';补货来源:' + @来源类型 ELSE N'' END);
|
||||
|
||||
INSERT INTO dbo.PDM_零件明细表_基本件(组件流水号, 物料流水号, 零件数量, 零件类型, 材料流水号, 导入人员编号, 是否投产, 投产数)
|
||||
SELECT @组件流水号, 物料流水号, 补货数量, 3, 材料流水号, @操作者, 1, 补货数量
|
||||
FROM dbo.自制件补货明细中间表;
|
||||
|
||||
INSERT INTO dbo.自制件补货单_图片(基本件流水号, [文件标识], [文件名称], [文件后缀], [是否启用], [文件内容])
|
||||
SELECT 基本件流水号, [文件标识], [文件名称], [文件后缀], [是否启用], [文件内容]
|
||||
FROM dbo.补货单_图片
|
||||
INNER JOIN dbo.自制件补货明细中间表
|
||||
ON dbo.补货单_图片.补货单明细中间表流水号 = dbo.自制件补货明细中间表.补货单明细中间表流水号
|
||||
INNER JOIN dbo.PDM_零件明细表_基本件
|
||||
ON dbo.自制件补货明细中间表.物料流水号 = dbo.PDM_零件明细表_基本件.物料流水号
|
||||
WHERE 组件流水号 = @组件流水号
|
||||
AND 是否外购 = 0;
|
||||
|
||||
DELETE FROM dbo.自制件补货明细中间表;
|
||||
DELETE FROM dbo.补货单_图片 WHERE 是否外购 = 0;
|
||||
END;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
|
||||
SELECT '1' AS result, @单号 AS 订单编号, @项目流水号 AS 项目流水号, @仓库备货合同编号 AS 合同编号, N'提交成功' AS message;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0
|
||||
ROLLBACK TRANSACTION;
|
||||
|
||||
SELECT '0' AS result, ERROR_MESSAGE() AS message;
|
||||
END CATCH;
|
||||
END;
|
||||
GO
|
||||
|
||||
Reference in New Issue
Block a user