更新装配、销售、精工车间、技术中心、仓储多个模块,整理文档和SQL脚本

This commit is contained in:
Developer
2026-06-29 13:36:34 +08:00
parent 137e276340
commit be0ff91e24
54 changed files with 5066 additions and 723 deletions

View File

@@ -0,0 +1,392 @@
IF OBJECT_ID(N'dbo.仓储管理_入库记录_退货入库_验证', N'P') IS NOT NULL
DROP PROCEDURE dbo._入库记录_退货入库_验证
GO
CREATE PROCEDURE dbo._入库记录_退货入库_验证
@ INT = NULL,
@退 FLOAT = NULL,
@ INT = NULL,
@ INT = NULL,
@ INT = NULL,
@ DATETIME = NULL,
@ INT = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ FLOAT;
DECLARE @ NVARCHAR(50);
DECLARE @ NVARCHAR(50);
DECLARE @ NVARCHAR(50);
DECLARE @ INT;
SELECT
@ = ,
@ = ,
@ =
FROM dbo._物料主文件_基本
WHERE = @;
SELECT @ =
FROM dbo._外购件_入库记录
WHERE = @;
SET @ = RIGHT(ISNULL(@, N''), 2);
SET @ = LEFT(ISNULL(@, N''), 2);
IF @ = N'主轴'
BEGIN
SELECT @ = ISNULL(MAX(), 0)
FROM dbo._物料与货位对照表
WHERE = @
AND = @
AND = @
AND (@ IS NULL OR = @)
AND (@ IS NULL OR = @);
END
ELSE
BEGIN
SELECT @ = ISNULL(MAX(), 0)
FROM dbo._物料与货位对照表
WHERE = @
AND = @
AND = @
AND (@ IS NULL OR = @);
IF ISNULL(@, 0) < ISNULL(@退, 0)
AND (@ = N'MP' OR @ = N'毛坯库')
BEGIN
SELECT @ = ISNULL(MAX(), 0)
FROM dbo._物料与货位对照表
WHERE = @
AND IS NULL
AND IS NULL
AND (@ IS NULL OR = @);
END;
END;
IF ISNULL(@退, 0) > ISNULL(@, 0)
SELECT 0 AS ;
ELSE
SELECT 1 AS ;
END
GO
IF OBJECT_ID(N'dbo.仓储管理_入库记录_退货入库', N'P') IS NOT NULL
DROP PROCEDURE dbo._入库记录_退货入库
GO
CREATE PROCEDURE dbo._入库记录_退货入库
@ INT = NULL,
@退 FLOAT = NULL,
@退 NVARCHAR(500) = NULL,
@ INT = NULL,
@退 INT = NULL,
@ INT = NULL,
@ INT = NULL,
@ INT = NULL,
@ INT = NULL,
@ INT = NULL,
@ INT = NULL,
@ NVARCHAR(50) = NULL,
@ NVARCHAR(500) = NULL,
@ NVARCHAR(500) = NULL,
@ NVARCHAR(500) = NULL,
@ NVARCHAR(50) = NULL,
@ NVARCHAR(50) = NULL,
@ NVARCHAR(50) = NULL,
@ DATETIME,
@ FLOAT = NULL
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @ NVARCHAR(50);
DECLARE @ NVARCHAR(50);
DECLARE @ INT;
DECLARE @ INT;
BEGIN TRY
BEGIN TRANSACTION;
SELECT @ =
FROM dbo._外购件_入库记录
WHERE = @;
INSERT INTO dbo._入库记录_退货记录表
(退, 退, , 退, 退, , , , , , , , , , )
VALUES
(@退, @退, @, @退, GETDATE(), @, @, @, @, @, @, @, @, @, @);
UPDATE dbo._外购件累计库存
SET = ISNULL(, 0) - @退
WHERE = @;
SELECT @ = , @ =
FROM dbo._物料主文件_基本
WHERE = @;
SET @ = LEFT(ISNULL(@, N''), 2);
SET @ = LEFT(ISNULL(@, N''), 2);
SET @ = 0;
IF @ = N'主轴'
BEGIN
UPDATE dbo._物料与货位对照表
SET = - @退
WHERE = @
AND = @
AND = @
AND (@ IS NULL OR = @)
AND CONVERT(VARCHAR(10), @, 23) = CONVERT(VARCHAR(10), , 23)
AND = @
AND ISNULL(, 0) >= @退;
SET @ = @@ROWCOUNT;
END
ELSE
BEGIN
IF @ = N'MP'
BEGIN
UPDATE dbo._物料与货位对照表
SET = - @退
WHERE = @
AND (@ IS NULL OR = @)
AND IS NULL
AND IS NULL
AND ISNULL(, 0) >= @退;
SET @ = @@ROWCOUNT;
END
ELSE
BEGIN
UPDATE dbo._物料与货位对照表
SET = - @退
WHERE = @
AND = @
AND = @
AND (@ IS NULL OR = @)
AND CONVERT(VARCHAR(10), @, 23) = CONVERT(VARCHAR(10), , 23)
AND ISNULL(, 0) >= @退;
SET @ = @@ROWCOUNT;
END;
END;
IF @ = 0
BEGIN
RAISERROR(N'库存盘点对应库位库存不足或未找到对应库存记录', 16, 1);
END;
UPDATE dbo._外购件_入库记录
SET = - @退,
退 = ISNULL(退, 0) + @退
WHERE = @;
IF @ = N'主轴'
UPDATE dbo._采购批次
SET = - @退
WHERE = @
AND = @;
IF @ = 1
BEGIN
UPDATE dbo._采购合同明细
SET = - @退,
= NULL
WHERE = @;
UPDATE dbo._采购合同
SET = 1
WHERE = @;
END
ELSE
BEGIN
UPDATE dbo._耗材采购合同明细
SET = ISNULL(, 0) - @退,
= NULL
WHERE = @;
UPDATE dbo._采购合同
SET = 1
WHERE = @;
END;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
SELECT
@ = ,
@ = ,
@ =
FROM dbo.PDM_组件名称_视图
WHERE = @;
IF @ = 3
BEGIN
UPDATE dbo._订单信息_基础表
SET = 3,
= NULL
WHERE = @;
UPDATE dbo._外购件累计库存
SET = ISNULL(, 0) + @退
WHERE = @;
END;
IF @ = 1 AND @ = 1
BEGIN
UPDATE dbo.PDM_组件名称
SET = 2
WHERE = @;
END;
COMMIT TRANSACTION;
SELECT '1' AS result;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
SELECT '0' AS result, ERROR_MESSAGE() AS msg;
END CATCH;
END
GO
IF OBJECT_ID(N'dbo.仓储管理_自制件入库记录_退货入库', N'P') IS NOT NULL
DROP PROCEDURE dbo._自制件入库记录_退货入库
GO
CREATE PROCEDURE dbo._自制件入库记录_退货入库
@ INT = NULL,
@退 FLOAT = NULL,
@退 NVARCHAR(500) = NULL,
@ INT = NULL,
@退 INT = NULL,
@ INT = NULL,
@ DATETIME,
@ NVARCHAR(50)
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @ INT;
DECLARE @ NVARCHAR(50);
DECLARE @ INT;
DECLARE @ INT;
BEGIN TRY
BEGIN TRANSACTION;
SELECT
@ = ,
@ =
FROM dbo._自制件_入库记录
WHERE = @;
INSERT INTO dbo._自制件入库记录_退货记录表
(退, 退, 退, 退, )
VALUES
(@退, @退, @退, GETDATE(), @);
UPDATE dbo._外购件累计库存
SET = ISNULL(, 0) - @退
WHERE = @;
SELECT @ =
FROM dbo._物料主文件_基本
WHERE = @;
SET @ = LEFT(ISNULL(@, N''), 2);
IF @ = N'主轴'
BEGIN
UPDATE dbo._物料与货位对照表
SET = - @退
WHERE = @
AND = @
AND (@ IS NULL OR = @)
AND CONVERT(VARCHAR(10), @, 23) = CONVERT(VARCHAR(10), , 23)
AND = @
AND ISNULL(, 0) >= @退;
END
ELSE
BEGIN
UPDATE dbo._物料与货位对照表
SET = - @退
WHERE = @
AND = @
AND (@ IS NULL OR = @)
AND CONVERT(VARCHAR(10), @, 23) = CONVERT(VARCHAR(10), , 23)
AND ISNULL(, 0) >= @退;
END;
SET @ = @@ROWCOUNT;
IF @ = 0
BEGIN
RAISERROR(N'库存盘点对应库位库存不足或未找到对应库存记录', 16, 1);
END;
UPDATE dbo._自制件_入库记录
SET = - @退,
退 = ISNULL(退, 0) + @退
WHERE = @;
IF @ = N'主轴'
UPDATE dbo._零件批次
SET = - @退
WHERE = @
AND = @;
UPDATE dbo._零件工艺计划
SET = 3,
= - @退
WHERE = @;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
SELECT
@ = ,
@ = ,
@ =
FROM dbo.PDM_组件名称_视图
WHERE = @;
IF @ = 3
BEGIN
UPDATE dbo._订单信息_基础表
SET = 3,
= NULL
WHERE = @;
UPDATE dbo._外购件累计库存
SET = ISNULL(, 0) + @退
WHERE = @;
END;
IF @ = 1 AND @ = 1
BEGIN
UPDATE dbo.PDM_组件名称
SET = 2
WHERE = @;
END;
COMMIT TRANSACTION;
SELECT '1' AS result;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
SELECT '0' AS result, ERROR_MESSAGE() AS msg;
END CATCH;
END
GO

View File

@@ -0,0 +1,283 @@
IF OBJECT_ID(N'dbo.库存盘点_调拨记录', N'U') IS NULL
BEGIN
CREATE TABLE dbo._调拨记录
(
INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
NVARCHAR(50) NULL,
INT NULL,
INT NULL,
INT NULL,
INT NULL,
INT NULL,
FLOAT NULL,
FLOAT NULL,
FLOAT NULL,
FLOAT NULL,
FLOAT NULL,
NVARCHAR(200) NULL,
INT NULL,
DATETIME NULL
)
END
GO
IF OBJECT_ID(N'dbo.仓储管理_库存盘点_库存调拨', N'P') IS NOT NULL
DROP PROCEDURE dbo._库存盘点_库存调拨
GO
CREATE PROCEDURE dbo._库存盘点_库存调拨
@ INT = NULL,
@ INT = NULL,
@ INT = NULL,
@ INT = NULL,
@ FLOAT = NULL,
@ FLOAT = NULL,
@ NVARCHAR(200) = NULL,
@ INT = NULL,
@ NVARCHAR(50) = NULL
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ INT;
DECLARE @ NVARCHAR(50);
DECLARE @ FLOAT;
DECLARE @ NVARCHAR(200);
IF ISNULL(@, 0) = 0
BEGIN
SELECT '0' AS result, N'原库存记录不能为空' AS msg;
RETURN;
END;
IF ISNULL(@, 0) = 0
BEGIN
SELECT '0' AS result, N'目标库位不能为空' AS msg;
RETURN;
END;
IF ISNULL(@, 0) <= 0
BEGIN
SELECT '0' AS result, N'调拨数量必须大于0' AS msg;
RETURN;
END;
IF ISNULL(@, 0) = ISNULL(@, 0)
BEGIN
SELECT '0' AS result, N'目标库位不能与原库位相同' AS msg;
RETURN;
END;
BEGIN TRY
BEGIN TRANSACTION;
IF ISNULL(@, N'') = N'通用件'
BEGIN
SELECT
@ = ISNULL(, 0),
@ = ,
@ =
FROM dbo._半成品与货位对照表 WITH (UPDLOCK, ROWLOCK)
WHERE = @;
IF @ IS NULL
BEGIN
RAISERROR(N'原库存记录不存在', 16, 1);
END;
IF @ < @
BEGIN
RAISERROR(N'原库位库存不足', 16, 1);
END;
SET @ = @;
SET @ = @ - @;
UPDATE dbo._半成品与货位对照表
SET
= @,
= @,
= GETDATE()
WHERE = @;
SELECT
@ = ,
@ = ISNULL(, 0)
FROM dbo._半成品与货位对照表 WITH (UPDLOCK, ROWLOCK)
WHERE = @
AND = @;
SET @ = ISNULL(@, 0);
SET @ = @ + @;
IF @ IS NULL
BEGIN
INSERT INTO dbo._半成品与货位对照表
(, , , , )
VALUES
(@, @, @, @, GETDATE());
SET @ = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo._半成品与货位对照表
SET
= @,
= @,
= GETDATE()
WHERE = @;
END;
SELECT @ = SUM(ISNULL(, 0))
FROM dbo._半成品与货位对照表
WHERE = @;
UPDATE dbo._半成品累计库存
SET = @
WHERE = @;
INSERT INTO dbo._修改记录
(, , , , )
VALUES
(@, @, @, @, @);
INSERT INTO dbo._调拨记录
(, , , , , , , , , , , , , )
VALUES
(@, @, @, @, @, @, @, @, @, @, @, @, @, GETDATE());
END
ELSE
BEGIN
SELECT
@ = ISNULL(, 0),
@ = ,
@ = ,
@ =
FROM dbo._物料与货位对照表 WITH (UPDLOCK, ROWLOCK)
WHERE = @;
IF @ IS NULL
BEGIN
RAISERROR(N'原库存记录不存在', 16, 1);
END;
IF @ < @
BEGIN
RAISERROR(N'原库位库存不足', 16, 1);
END;
IF ISNULL(@, N'') = N''
BEGIN
SET @ = CONVERT(VARCHAR(10), GETDATE(), 23) + N'-PD' + CONVERT(NVARCHAR(50), @);
UPDATE dbo._物料与货位对照表
SET = @
WHERE = @;
END;
SET @ = @;
SET @ = @ - @;
UPDATE dbo._物料与货位对照表
SET
= @,
= @,
= GETDATE()
WHERE = @;
SELECT
@ = ,
@ = ISNULL(, 0)
FROM dbo._物料与货位对照表 WITH (UPDLOCK, ROWLOCK)
WHERE = @
AND = @
AND ISNULL(, 0) = 0
AND ISNULL(, 0) = 0;
SET @ = ISNULL(@, 0);
SET @ = @ + @;
IF @ IS NULL
BEGIN
INSERT INTO dbo._物料与货位对照表
(, , , , , )
VALUES
(@, @, @, @, GETDATE(), @);
SET @ = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo._物料与货位对照表
SET
= @,
= @,
= GETDATE()
WHERE = @;
END;
SELECT @ = SUM(ISNULL(, 0))
FROM dbo._物料与货位对照表
WHERE = @;
IF NOT EXISTS (
SELECT 1
FROM dbo._外购件累计库存
WHERE = @
)
BEGIN
INSERT INTO dbo._外购件累计库存
(, )
VALUES
(@, @);
END
ELSE
BEGIN
UPDATE dbo._外购件累计库存
SET = @
WHERE = @;
END;
INSERT INTO dbo._修改记录
(, , , , )
VALUES
(@, @, @, @, @);
INSERT INTO dbo._调拨记录
(, , , , , , , , , , , , , )
VALUES
(@, @, @, @, @, @, @, @, @, @, @, @, @, GETDATE());
END;
COMMIT TRANSACTION;
SELECT
'1' AS result,
N'调拨成功' AS msg,
@ AS ,
@ AS ,
@ AS ,
@ AS ,
@ AS ,
@ AS ;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
SET @ = ERROR_MESSAGE();
SELECT
'0' AS result,
@ AS msg;
END CATCH;
END
GO

View File

@@ -0,0 +1,156 @@
USE [ERPTOOL_JY_20250826Back]
GO
/*
目的:
1. 物料新增/编辑不再维护默认库位。
2. 新增物料不再写入 0 库存的“物料与货位对照表”记录。
3. 保留 @货位流水号 参数,兼容未同步发布的旧前端调用。
*/
ALTER PROCEDURE [dbo].[_增加]
@ int = null,
@ int = null,
@ int = null,
@ int = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ int = null
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ int;
IF @ = 0
SET @ = 3;
INSERT INTO _物料主文件_基本
(, , , , , , )
VALUES
(@, @, @, @, @, @, @);
SET @ = IDENT_CURRENT(N'库存管理_物料主文件_基本');
INSERT INTO _外购件累计库存(, )
VALUES(@, 0);
END
GO
ALTER PROCEDURE [dbo].[_增加新]
@ int = null,
@ int = null,
@ int = null,
@ int = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ nvarchar(MAX) = null,
@ int = null,
@ int = null
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ int,
@2 nvarchar(50) = null;
IF @ = 0
SET @ = 3;
IF @ = 1
BEGIN
SELECT @2 = 'LJ' + RIGHT(CAST(POWER(10, 8) AS varchar) + (SUBSTRING((SELECT FROM _物料主文件_基本 WHERE = (SELECT MAX() FROM _物料主文件_基本)), 3, 8) + 1), 8);
INSERT INTO _物料主文件_基本
(, , , , , , , , , )
VALUES
(@, @, @, @, @, @2, @, @, GETDATE(), @);
SET @ = IDENT_CURRENT(N'库存管理_物料主文件_基本');
INSERT INTO _外购件累计库存(, )
VALUES(@, 0);
END
IF @ = 2
BEGIN
SELECT @2 = 'LJ' + RIGHT(CAST(POWER(10, 8) AS varchar) + (SUBSTRING((SELECT FROM _物料主文件_基本 WHERE = (SELECT MAX() FROM _物料主文件_基本)), 3, 8) + 1), 8);
INSERT INTO _物料主文件_基本
(, , , , , , , , , )
VALUES
(@, @, @, @, @, @2, @, @, GETDATE(), @);
SET @ = IDENT_CURRENT(N'库存管理_物料主文件_基本');
INSERT INTO _外购件累计库存(, )
VALUES(@, 0);
SELECT @2 = 'MP' + RIGHT(CAST(POWER(10, 8) AS varchar) + (SUBSTRING((SELECT FROM _物料主文件_基本 WHERE = (SELECT MAX() FROM _物料主文件_基本)), 3, 8) + 1), 8);
INSERT INTO _物料主文件_基本
(, , , , , , , , , )
VALUES
(@ + 'MP', @ + 'MP', @, @, 1, @2, @, @, GETDATE(), @);
SET @ = IDENT_CURRENT(N'库存管理_物料主文件_基本');
INSERT INTO _外购件累计库存(, )
VALUES(@, 0);
END
END
GO
ALTER PROCEDURE [dbo].[_编辑]
@ int = null,
@ int = null,
@ int = null,
@ int = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ int = null,
@ int = null,
@ nvarchar(50) = null,
@ nvarchar(MAX) = null,
@ int = null,
@ int = null,
@ int = null,
@ int = null
AS
BEGIN
SET NOCOUNT ON;
UPDATE _物料主文件_基本
SET = @,
= @,
= @,
= @,
= @,
= @,
= GETDATE(),
= @,
= @,
= @
WHERE = @;
UPDATE dbo.PDM_零件明细表_基本件
SET = @
WHERE = @;
UPDATE dbo.PDM_零件明细表_标准件和外购件
SET = @
WHERE = @;
IF (SELECT COUNT(*) FROM PDM_零件明细表_基本件 WHERE = @) > 0
BEGIN
IF (SELECT COUNT(*) FROM _零件工艺计划 WHERE IN (SELECT FROM PDM_零件明细表_基本件 WHERE = @) AND < 4) > 0
BEGIN
UPDATE _零件工艺计划
SET = @
WHERE IN (SELECT FROM PDM_零件明细表_基本件 WHERE = @)
AND < 4;
END
END
END
GO