更新销售合同/提成/业绩、精工工序工价/生产审核/工时统计、仓储盘点/库存/补货/入库/库房管理,新增提成设置/销售业绩/库房管理/入库单移动端等模块及SQL脚本

This commit is contained in:
Developer
2026-08-05 08:13:08 +08:00
parent 33549c3787
commit fd84f9d3ca
94 changed files with 14531 additions and 345 deletions

View 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