更新销售合同/提成/业绩、精工工序工价/生产审核/工时统计、仓储盘点/库存/补货/入库/库房管理,新增提成设置/销售业绩/库房管理/入库单移动端等模块及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,234 @@
/* 采购合同明细跟随PDM标准外购件源流水号变更测试库
修改人:Ld 修改时间:2026-07-24 10:48:00;
*/
SET NOCOUNT ON;
IF OBJECT_ID(N'dbo.GPT_采购明细PDM跟随变更_待处理', N'U') IS NULL
BEGIN
CREATE TABLE dbo.GPT_采购明细PDM跟随变更_待处理
(
ID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
int NULL,
int NULL,
int NULL,
int NULL,
nvarchar(200) NULL,
int NULL,
int NOT NULL,
int NOT NULL,
int NOT NULL,
int NULL,
int NULL,
int NULL,
int NOT NULL CONSTRAINT DF_GPT_采购明细PDM跟随变更_待处理_处理状态 DEFAULT(0),
nvarchar(400) NULL,
datetime NOT NULL CONSTRAINT DF_GPT_采购明细PDM跟随变更_待处理_创建时间 DEFAULT(GETDATE()),
datetime NULL,
nvarchar(50) NULL,
datetime NULL
);
END;
GO
IF OBJECT_ID(N'dbo.GPT_采购明细PDM跟随变更_执行', N'P') IS NOT NULL
DROP PROCEDURE dbo.GPT_采购明细PDM跟随变更_执行;
GO
CREATE PROCEDURE dbo.GPT_采购明细PDM跟随变更_执行
@ int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ int;
DECLARE @ int;
DECLARE @ int;
SELECT TOP 1
@ = v.,
@ = v.,
@ = c.
FROM dbo.PDM_组件名称 c
LEFT JOIN dbo.PDM_组件名称_视图 v ON v. = c.
WHERE c. = @;
DECLARE @Map TABLE
(
ID int PRIMARY KEY,
int NOT NULL,
int NOT NULL
);
;WITH MatchRows AS
(
SELECT
p.ID,
p.,
n. AS ,
ROW_NUMBER() OVER(PARTITION BY p.ID ORDER BY n.) AS rn
FROM dbo.GPT_采购明细PDM跟随变更_待处理 p
INNER JOIN dbo._采购合同明细 d
ON d. = p.
AND d. = p.
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 n
ON n. = @
AND n. = p.
WHERE p. = 0
AND ISNULL(p., 0) = ISNULL(@, 0)
AND ISNULL(p., 0) = ISNULL(@, 0)
AND ISNULL(p., 0) = ISNULL(@, 0)
AND ISNULL(d., 0) = 0
AND NOT EXISTS (SELECT 1 FROM dbo._外购件_入库记录 r WHERE r. = d.)
AND NOT EXISTS (SELECT 1 FROM dbo._质检记录_主表 q WHERE q. = d. AND ISNULL(q., 0) = 0)
AND NOT EXISTS (SELECT 1 FROM dbo._采购批次 b WHERE b. = d. AND (ISNULL(b., 0) <> 0 OR ISNULL(b., 0) <> 0))
AND NOT EXISTS (SELECT 1 FROM dbo._采购合同明细 d2 WHERE d2. = d. AND d2. = n. AND d2. <> d.)
)
INSERT INTO @Map(ID, , )
SELECT ID, ,
FROM MatchRows
WHERE rn = 1;
-- 采购明细未发生到货、入库、质检时允许跟随到同项目同机床同物料的新PDM源流水号修改人:Ld 修改时间:2026-07-24 10:48:00;
UPDATE d
SET d. = m.
FROM dbo._采购合同明细 d
INNER JOIN @Map m ON m. = d.;
UPDATE p
SET p. = @,
p. = m.,
p. = 1,
p. = N'已按同项目同机床同物料自动跟随到新PDM标准外购件流水号',
p. = GETDATE(),
p. = N'Ld',
p. = GETDATE()
FROM dbo.GPT_采购明细PDM跟随变更_待处理 p
INNER JOIN @Map m ON m.ID = p.ID;
END;
GO
DECLARE @def nvarchar(max);
SELECT @def = OBJECT_DEFINITION(OBJECT_ID(N'dbo.PDM_组件名称_确认更改新'));
IF @def NOT LIKE N'%GPT_采购明细PDM跟随变更_待处理%'
BEGIN
SET @def = REPLACE(@def, N'CREATE PROCEDURE [dbo].[PDM_组件名称_确认更改新]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_确认更改新]');
SET @def = REPLACE(@def, N'CREATE PROCEDURE [dbo].[PDM_组件名称_确认更改新]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_确认更改新]');
SET @def = REPLACE(@def, N'CREATE PROCEDURE [dbo].[PDM_组件名称_确认更改新]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_确认更改新]');
SET @def = REPLACE(@def,
N' if @产品流水号临时 <> @产品流水号
begin
update dbo.PDM_组件名称 set 修改状态 = 2,是否分配 = 0 where 组件流水号 = @orderN',
N' if @产品流水号临时 <> @产品流水号
begin
-- 记录被产品替换影响且已加入采购合同的PDM标准外购件后续新BOM生成后自动跟随修改人:Ld 修改时间:2026-07-24 10:48:00;
INSERT INTO dbo.GPT_采购明细PDM跟随变更_待处理(项目流水号,订单流水号,机床流水号,旧组件流水号,旧产品名称,采购合同流水号,采购合同明细流水号,旧标准件和外购件流水号,物料流水号,旧零件数量,修改人,修改时间)
SELECT DISTINCT @项目流水号,@订单流水号,@机床流水号,@orderN,@产品名称,d.采购合同流水号,d.采购合同明细流水号,s.标准件和外购件流水号,s.物料流水号,s.零件数量,N''Ld'',GETDATE()
FROM dbo.PDM_零件明细表_标准件和外购件 s
INNER JOIN dbo.采购管理_采购合同明细 d ON d.标准件和外购件流水号 = s.标准件和外购件流水号
WHERE s.组件流水号 = @orderN
AND NOT EXISTS (SELECT 1 FROM dbo.GPT_采购明细PDM跟随变更_待处理 p WHERE p.处理状态 = 0 AND p.采购合同明细流水号 = d.采购合同明细流水号 AND p.旧标准件和外购件流水号 = s.标准件和外购件流水号);
update dbo.PDM_组件名称 set 修改状态 = 2,是否分配 = 0 where 组件流水号 = @orderN');
SET @def = REPLACE(@def,
N'delete from 车间装配管理_装配任务 where 组件流水号 in (select 组件流水号 from PDM_组件名称 where 组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null) and 机床流水号=@机床流水号 and 是否合同创建 = 1 and 产品状态 = 0)',
N'-- 记录删除组件影响且已加入采购合同的PDM标准外购件后续新BOM生成后自动跟随修改人:Ld 修改时间:2026-07-24 10:48:00;
insert into dbo.GPT_采购明细PDM跟随变更_待处理(项目流水号,订单流水号,机床流水号,旧组件流水号,旧产品名称,采购合同流水号,采购合同明细流水号,旧标准件和外购件流水号,物料流水号,旧零件数量,修改人,修改时间)
select distinct @项目流水号,@订单流水号,@机床流水号,c.组件流水号,c.产品名称,d.采购合同流水号,d.采购合同明细流水号,s.标准件和外购件流水号,s.物料流水号,s.零件数量,N''Ld'',GETDATE()
from dbo.PDM_组件名称 c
inner join dbo.PDM_零件明细表_标准件和外购件 s on s.组件流水号 = c.组件流水号
inner join dbo.采购管理_采购合同明细 d on d.标准件和外购件流水号 = s.标准件和外购件流水号
where c.组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null)
and c.机床流水号=@机床流水号 and c.是否合同创建 = 1 and c.产品状态 = 0
and not exists (select 1 from dbo.GPT_采购明细PDM跟随变更_待处理 p where p.处理状态 = 0 and p.采购合同明细流水号 = d.采购合同明细流水号 and p.旧标准件和外购件流水号 = s.标准件和外购件流水号);
delete from 车间装配管理_装配任务 where 组件流水号 in (select 组件流水号 from PDM_组件名称 where 组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null) and 机床流水号=@机床流水号 and 是否合同创建 = 1 and 产品状态 = 0)');
EXEC(@def);
END;
GO
DECLARE @def2 nvarchar(max);
SELECT @def2 = OBJECT_DEFINITION(OBJECT_ID(N'dbo.技术确认_刷新BOM'));
IF @def2 NOT LIKE N'%GPT_采购明细PDM跟随变更_执行%'
BEGIN
SET @def2 = REPLACE(@def2, N'CREATE PROCEDURE [dbo].[技术确认_刷新BOM]', N'ALTER PROCEDURE [dbo].[技术确认_刷新BOM]');
SET @def2 = REPLACE(@def2, N'CREATE PROCEDURE [dbo].[技术确认_刷新BOM]', N'ALTER PROCEDURE [dbo].[技术确认_刷新BOM]');
SET @def2 = @def2 + N'
-- 新BOM标准外购件生成后回填采购合同明细PDM源流水号修改人:Ld 修改时间:2026-07-24 10:48:00;
EXEC dbo.GPT_采购明细PDM跟随变更_执行 @新组件流水号 = @组件流水号
';
EXEC(@def2);
END;
GO
DECLARE @def3 nvarchar(max);
SELECT @def3 = OBJECT_DEFINITION(OBJECT_ID(N'dbo.PDM_组件名称_老组件_增加数据_批量零件'));
IF @def3 NOT LIKE N'%GPT_采购明细PDM跟随变更_执行%'
BEGIN
SET @def3 = REPLACE(@def3, N'CREATE PROCEDURE [dbo].[PDM_组件名称_老组件_增加数据_批量零件]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_老组件_增加数据_批量零件]');
SET @def3 = @def3 + N'
-- 批量新增标准外购件后回填采购合同明细PDM源流水号修改人:Ld 修改时间:2026-07-24 10:48:00;
EXEC dbo.GPT_采购明细PDM跟随变更_执行 @新组件流水号 = @组件流水号
';
EXEC(@def3);
END;
GO
DECLARE @def4 nvarchar(max);
SELECT @def4 = OBJECT_DEFINITION(OBJECT_ID(N'dbo.PDM_组件名称_增加数据_批量零件'));
IF @def4 NOT LIKE N'%GPT_采购明细PDM跟随变更_执行%'
BEGIN
SET @def4 = REPLACE(@def4, N'CREATE PROCEDURE [dbo].[PDM_组件名称_增加数据_批量零件]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_增加数据_批量零件]');
SET @def4 = @def4 + N'
-- 新组件批量新增标准外购件后回填采购合同明细PDM源流水号修改人:Ld 修改时间:2026-07-24 10:48:00;
EXEC dbo.GPT_采购明细PDM跟随变更_执行 @新组件流水号 = @组件流水号
';
EXEC(@def4);
END;
GO
DECLARE @def5 nvarchar(max);
SELECT @def5 = OBJECT_DEFINITION(OBJECT_ID(N'dbo.物料管理_专机_新增物料'));
IF @def5 NOT LIKE N'%GPT_采购明细PDM跟随变更_执行%'
BEGIN
SET @def5 = REPLACE(@def5, N'CREATE PROCEDURE [dbo].[物料管理_专机_新增物料]', N'ALTER PROCEDURE [dbo].[物料管理_专机_新增物料]');
SET @def5 = @def5 + N'
-- 专机新增标准外购件后回填采购合同明细PDM源流水号修改人:Ld 修改时间:2026-07-24 10:48:00;
EXEC dbo.GPT_采购明细PDM跟随变更_执行 @新组件流水号 = @组件流水号
';
EXEC(@def5);
END;
GO
DECLARE @def6 nvarchar(max);
SELECT @def6 = OBJECT_DEFINITION(OBJECT_ID(N'dbo.订单信息_下达订单'));
IF @def6 NOT LIKE N'%GPT_采购明细PDM跟随变更_执行%'
BEGIN
SET @def6 = REPLACE(@def6, N'CREATE PROCEDURE [dbo].[订单信息_下达订单]', N'ALTER PROCEDURE [dbo].[订单信息_下达订单]');
SET @def6 = REPLACE(@def6,
N'insert into PDM_零件明细表_标准件和外购件(组件流水号,物料流水号,零件数量,零件类型,材料流水号)
select @组件流水号,物料流水号,零件数量,零件类型,材料流水号 from 产品信息_外购件_基础表 where 产品流水号=@产品流水号
set @id = @id + 1',
N'insert into PDM_零件明细表_标准件和外购件(组件流水号,物料流水号,零件数量,零件类型,材料流水号)
select @组件流水号,物料流水号,零件数量,零件类型,材料流水号 from 产品信息_外购件_基础表 where 产品流水号=@产品流水号
-- 下达订单生成标准外购件后回填采购合同明细PDM源流水号修改人:Ld 修改时间:2026-07-24 10:48:00;
EXEC dbo.GPT_采购明细PDM跟随变更_执行 @新组件流水号 = @组件流水号
set @id = @id + 1');
EXEC(@def6);
END;
GO