更新销售合同/提成/业绩、精工工序工价/生产审核/工时统计、仓储盘点/库存/补货/入库/库房管理,新增提成设置/销售业绩/库房管理/入库单移动端等模块及SQL脚本
This commit is contained in:
234
sql/采购明细_PDM源跟随变更_测试库.sql
Normal file
234
sql/采购明细_PDM源跟随变更_测试库.sql
Normal 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
|
||||
Reference in New Issue
Block a user