更新销售合同/提成/业绩、精工工序工价/生产审核/工时统计、仓储盘点/库存/补货/入库/库房管理,新增提成设置/销售业绩/库房管理/入库单移动端等模块及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,818 @@
/*
库房管理隔离实施脚本(测试库 ERPTOOL_JY_20250826Back
修改人:Ld 修改时间:2026-07-30 09:23:13;
说明:
1. 新增库房、库区、库房业务记录表。
2. 对库存管理_货位主文件仅补充可空字段不改变原字段和原存储过程。
3. 新增存储过程全部使用“库房管理_”前缀不覆盖现有“仓储管理_”过程。
*/
SET NOCOUNT ON;
GO
IF OBJECT_ID(N'dbo.库房管理_库房主文件', N'U') IS NULL
BEGIN
CREATE TABLE dbo._库房主文件
(
INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_库房管理_库房主文件 PRIMARY KEY,
NVARCHAR(50) NOT NULL,
NVARCHAR(100) NOT NULL,
NVARCHAR(50) NULL,
NVARCHAR(200) NULL,
INT NULL,
NVARCHAR(20) NOT NULL CONSTRAINT DF_库房管理_库房主文件_状态 DEFAULT(N'启用'),
INT NOT NULL CONSTRAINT DF_库房管理_库房主文件_排数 DEFAULT(8),
INT NOT NULL CONSTRAINT DF_库房管理_库房主文件_每排列数 DEFAULT(24),
INT NOT NULL CONSTRAINT DF_库房管理_库房主文件_层数 DEFAULT(3),
NVARCHAR(500) NULL,
INT NULL,
DATETIME NOT NULL CONSTRAINT DF_库房管理_库房主文件_创建时间 DEFAULT(GETDATE()),
INT NULL,
DATETIME NULL,
CONSTRAINT UQ_库房管理_库房主文件_库房编号 UNIQUE()
);
END
GO
IF OBJECT_ID(N'dbo.库房管理_库区主文件', N'U') IS NULL
BEGIN
CREATE TABLE dbo._库区主文件
(
INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_库房管理_库区主文件 PRIMARY KEY,
INT NOT NULL,
NVARCHAR(50) NOT NULL,
NVARCHAR(100) NOT NULL,
NVARCHAR(50) NULL,
NVARCHAR(20) NOT NULL CONSTRAINT DF_库房管理_库区主文件_状态 DEFAULT(N'启用'),
INT NULL,
NVARCHAR(500) NULL,
INT NULL,
DATETIME NOT NULL CONSTRAINT DF_库房管理_库区主文件_创建时间 DEFAULT(GETDATE()),
INT NULL,
DATETIME NULL,
CONSTRAINT FK_库房管理_库区主文件_库房 FOREIGN KEY() REFERENCES dbo._库房主文件(),
CONSTRAINT UQ_库房管理_库区主文件_库房库区编号 UNIQUE(, )
);
END
GO
IF OBJECT_ID(N'dbo.库房管理_业务记录', N'U') IS NULL
BEGIN
CREATE TABLE dbo._业务记录
(
INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_库房管理_业务记录 PRIMARY KEY,
NVARCHAR(50) NOT NULL,
NVARCHAR(100) NULL,
INT NULL,
INT NULL,
INT NULL,
INT NULL,
INT NULL,
FLOAT NULL,
FLOAT NULL,
FLOAT NULL,
NVARCHAR(500) NULL,
INT NULL,
DATETIME NOT NULL CONSTRAINT DF_库房管理_业务记录_操作时间 DEFAULT(GETDATE()),
CONSTRAINT FK_库房管理_业务记录_库房 FOREIGN KEY() REFERENCES dbo._库房主文件(),
CONSTRAINT FK_库房管理_业务记录_库区 FOREIGN KEY() REFERENCES dbo._库区主文件()
);
END
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'库房流水号') IS NULL
ALTER TABLE dbo._货位主文件 ADD INT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'库区流水号') IS NULL
ALTER TABLE dbo._货位主文件 ADD INT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'排号') IS NULL
ALTER TABLE dbo._货位主文件 ADD INT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'列号') IS NULL
ALTER TABLE dbo._货位主文件 ADD INT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'层号') IS NULL
ALTER TABLE dbo._货位主文件 ADD INT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'库位状态') IS NULL
ALTER TABLE dbo._货位主文件 ADD NVARCHAR(20) NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'库位容量') IS NULL
ALTER TABLE dbo._货位主文件 ADD FLOAT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'是否启用') IS NULL
ALTER TABLE dbo._货位主文件 ADD BIT NOT NULL CONSTRAINT DF_库存管理_货位主文件_是否启用 DEFAULT(1);
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'修改人') IS NULL
ALTER TABLE dbo._货位主文件 ADD INT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'修改时间') IS NULL
ALTER TABLE dbo._货位主文件 ADD DATETIME NULL;
GO
IF NOT EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = N'FK_库存管理_货位主文件_库房管理库房')
BEGIN
ALTER TABLE dbo._货位主文件 WITH CHECK
ADD CONSTRAINT FK_库存管理_货位主文件_库房管理库房 FOREIGN KEY() REFERENCES dbo._库房主文件();
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = N'FK_库存管理_货位主文件_库房管理库区')
BEGIN
ALTER TABLE dbo._货位主文件 WITH CHECK
ADD CONSTRAINT FK_库存管理_货位主文件_库房管理库区 FOREIGN KEY() REFERENCES dbo._库区主文件();
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.库存管理_货位主文件') AND name = N'IX_库存管理_货位主文件_库房库区排列层')
CREATE INDEX IX_库存管理_货位主文件_库房库区排列层 ON dbo._货位主文件(, , , , );
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.库房管理_业务记录') AND name = N'IX_库房管理_业务记录_库位物料时间')
CREATE INDEX IX_库房管理_业务记录_库位物料时间 ON dbo._业务记录(, , DESC);
GO
IF NOT EXISTS (SELECT 1 FROM dbo._库房主文件 WHERE = N'KF-2F')
BEGIN
INSERT INTO dbo._库房主文件(, , , , , , , , , )
VALUES(N'KF-2F', N'二楼隔层仓库', N'隔层仓库', N'二楼隔层', N'启用', 1, 99, 1, N'库位格式:字母数字-数字,例如 A1-1', 0);
END
GO
IF NOT EXISTS (SELECT 1 FROM dbo._库房主文件 WHERE = N'KF-LK')
BEGIN
INSERT INTO dbo._库房主文件(, , , , , , , , , )
VALUES(N'KF-LK', N'立库仓库', N'立库仓库', N'立库区域', N'启用', 99, 99, 99, N'库位格式xx-xx-xx例如 01-01-01', 0);
END
GO
IF NOT EXISTS (SELECT 1 FROM dbo._库房主文件 WHERE = N'KF-3F')
BEGIN
INSERT INTO dbo._库房主文件(, , , , , , , , , )
VALUES(N'KF-3F', N'三楼仓库', N'三楼可视化仓库', N'三楼仓库', N'启用', 8, 24, 3, N'库位格式x-xx-xx-xx可视化界面按三楼布局展示', 0);
END
GO
;WITH DefaultArea AS
(
SELECT N'KF-2F' AS , N'2F' AS , N'二楼隔层库区' AS , N'隔层库区' AS , N'字母数字-数字库位区' AS
UNION ALL SELECT N'KF-LK', N'LK', N'立库库区', N'立库库区', N'xx-xx-xx 库位区'
UNION ALL SELECT N'KF-3F', N'3F', N'三楼可视化库区', N'三楼库区', N'x-xx-xx-xx 可视化库位区'
)
INSERT INTO dbo._库区主文件(, , , , , , )
SELECT k., a., a., a., 1, a., 0
FROM DefaultArea a
INNER JOIN dbo._库房主文件 k ON a. = k.
WHERE NOT EXISTS
(
SELECT 1
FROM dbo._库区主文件 x
WHERE x. = k.
AND x. = a.
);
GO
IF EXISTS (SELECT 1 FROM dbo._货位主文件 WHERE = N'KF-A-01-01-1')
BEGIN
UPDATE dbo._货位主文件
SET = N'1-01-01-01',
= 0,
= GETDATE()
WHERE = N'KF-A-01-01-1';
END
GO
IF OBJECT_ID(N'dbo.库房管理_库位编码归属_同步', N'P') IS NOT NULL
DROP PROCEDURE dbo._库位编码归属_同步;
GO
CREATE PROCEDURE dbo._库位编码归属_同步
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
SELECT @ = FROM dbo._库房主文件 WHERE = N'KF-2F';
SELECT @ = FROM dbo._库区主文件 WHERE = @ AND = N'2F';
SELECT @ = FROM dbo._库房主文件 WHERE = N'KF-LK';
SELECT @ = FROM dbo._库区主文件 WHERE = @ AND = N'LK';
SELECT @ = FROM dbo._库房主文件 WHERE = N'KF-3F';
SELECT @ = FROM dbo._库区主文件 WHERE = @ AND = N'3F';
UPDATE h
SET = @,
= @,
= NULL,
= NULL,
= NULL,
= ISNULL(h., N'空库位'),
= GETDATE()
FROM dbo._货位主文件 h
WHERE h. LIKE N'[A-Za-z][0-9]%-[0-9]%'
AND LEN(h.) - LEN(REPLACE(h., N'-', N'')) = 1;
UPDATE h
SET = @,
= @,
= CONVERT(INT, PARSENAME(REPLACE(h., N'-', N'.'), 3)),
= CONVERT(INT, PARSENAME(REPLACE(h., N'-', N'.'), 2)),
= CONVERT(INT, PARSENAME(REPLACE(h., N'-', N'.'), 1)),
= ISNULL(h., N'空库位'),
= GETDATE()
FROM dbo._货位主文件 h
WHERE LEN(h.) - LEN(REPLACE(h., N'-', N'')) = 2
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 3)) = 1
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 2)) = 1
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 1)) = 1;
UPDATE h
SET = @,
= @,
= CONVERT(INT, PARSENAME(REPLACE(h., N'-', N'.'), 4)),
= CONVERT(INT, PARSENAME(REPLACE(h., N'-', N'.'), 3)),
= CONVERT(INT, PARSENAME(REPLACE(h., N'-', N'.'), 2)),
= ISNULL(h., N'空库位'),
= GETDATE()
FROM dbo._货位主文件 h
WHERE LEN(h.) - LEN(REPLACE(h., N'-', N'')) = 3
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 4)) = 1
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 3)) = 1
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 2)) = 1
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 1)) = 1;
SELECT
SUM(CASE WHEN = @ THEN 1 ELSE 0 END) AS ,
SUM(CASE WHEN = @ THEN 1 ELSE 0 END) AS ,
SUM(CASE WHEN = @ THEN 1 ELSE 0 END) AS
FROM dbo._货位主文件;
END
GO
EXEC dbo._库位编码归属_同步;
GO
IF OBJECT_ID(N'dbo.库房管理_库房_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._库房_查询;
GO
CREATE PROCEDURE dbo._库房_查询
@_check BIT = 0,
@ NVARCHAR(100) = NULL,
@_check BIT = 0,
@ NVARCHAR(20) = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
k.,
k.,
k.,
k.,
k.,
k.,
k.,
k.,
k.,
k.,
k.,
ISNULL(q., 0) AS ,
ISNULL(h., 0) AS ,
ISNULL(s., 0) AS ,
ISNULL(s., 0) AS ,
k.,
k.
FROM dbo._库房主文件 k
LEFT JOIN
(
SELECT , COUNT(1) AS
FROM dbo._库区主文件
GROUP BY
) q ON k. = q.
LEFT JOIN
(
SELECT , COUNT(1) AS
FROM dbo._货位主文件
WHERE IS NOT NULL
GROUP BY
) h ON k. = h.
LEFT JOIN
(
SELECT
h.,
COUNT(DISTINCT h.) AS ,
SUM(ISNULL(m., 0)) AS
FROM dbo._货位主文件 h
INNER JOIN dbo._物料与货位对照表 m ON h. = m. AND ISNULL(m., 0) > 0
WHERE h. IS NOT NULL
GROUP BY h.
) s ON k. = s.
WHERE (@_check = 0 OR k. LIKE N'%' + ISNULL(@, N'') + N'%' OR k. LIKE N'%' + ISNULL(@, N'') + N'%')
AND (@_check = 0 OR k. = @)
ORDER BY k.;
END
GO
IF OBJECT_ID(N'dbo.库房管理_库房_保存', N'P') IS NOT NULL
DROP PROCEDURE dbo._库房_保存;
GO
CREATE PROCEDURE dbo._库房_保存
@ INT = NULL,
@ NVARCHAR(50),
@ NVARCHAR(100),
@ NVARCHAR(50) = NULL,
@ NVARCHAR(200) = NULL,
@ INT = NULL,
@ NVARCHAR(20) = N'启用',
@ INT = 8,
@ INT = 24,
@ INT = 3,
@ NVARCHAR(500) = NULL,
@UserID INT = NULL
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (SELECT 1 FROM dbo._库房主文件 WHERE = @ AND ISNULL(@, 0) <> )
BEGIN
SELECT '0' AS result, N'库房编号已存在' AS msg;
RETURN;
END
IF ISNULL(@, 0) = 0
BEGIN
INSERT INTO dbo._库房主文件(, , , , , , , , , , )
VALUES(@, @, @, @, @, ISNULL(@, N'启用'), ISNULL(@, 8), ISNULL(@, 24), ISNULL(@, 3), @, @UserID);
SELECT '1' AS result, SCOPE_IDENTITY() AS , N'新增成功' AS msg;
END
ELSE
BEGIN
UPDATE dbo._库房主文件
SET = @,
= @,
= @,
= @,
= @,
= ISNULL(@, ),
= ISNULL(@, ),
= ISNULL(@, ),
= ISNULL(@, ),
= @,
= @UserID,
= GETDATE()
WHERE = @;
SELECT '1' AS result, @ AS , N'编辑成功' AS msg;
END
END
GO
IF OBJECT_ID(N'dbo.库房管理_库房_停用', N'P') IS NOT NULL
DROP PROCEDURE dbo._库房_停用;
GO
CREATE PROCEDURE dbo._库房_停用
@ INT,
@UserID INT = NULL
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS
(
SELECT 1
FROM dbo._货位主文件 h
INNER JOIN dbo._物料与货位对照表 m ON h. = m.
WHERE h. = @ AND ISNULL(m., 0) > 0
)
BEGIN
SELECT '0' AS result, N'库房下仍有库存,不能停用' AS msg;
RETURN;
END
UPDATE dbo._库房主文件
SET = N'停用', = @UserID, = GETDATE()
WHERE = @;
UPDATE dbo._货位主文件
SET = 0, = @UserID, = GETDATE()
WHERE = @;
SELECT '1' AS result, N'停用成功' AS msg;
END
GO
IF OBJECT_ID(N'dbo.库房管理_库区_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._库区_查询;
GO
CREATE PROCEDURE dbo._库区_查询
@ INT = NULL,
@_check BIT = 0,
@ NVARCHAR(20) = NULL
AS
BEGIN
SET NOCOUNT ON;
SET @ = NULLIF(@, 0);
SELECT
q.,
q.,
k.,
q.,
q.,
q.,
q.,
q.,
q.,
ISNULL(h., 0) AS
FROM dbo._库区主文件 q
INNER JOIN dbo._库房主文件 k ON q. = k.
LEFT JOIN
(
SELECT , COUNT(1) AS
FROM dbo._货位主文件
WHERE IS NOT NULL
GROUP BY
) h ON q. = h.
WHERE (@ IS NULL OR q. = @)
AND (@_check = 0 OR q. = @)
ORDER BY q., q.;
END
GO
IF OBJECT_ID(N'dbo.库房管理_库区_保存', N'P') IS NOT NULL
DROP PROCEDURE dbo._库区_保存;
GO
CREATE PROCEDURE dbo._库区_保存
@ INT = NULL,
@ INT,
@ NVARCHAR(50),
@ NVARCHAR(100),
@ NVARCHAR(50) = NULL,
@ NVARCHAR(20) = N'启用',
@ INT = NULL,
@ NVARCHAR(500) = NULL,
@UserID INT = NULL
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (SELECT 1 FROM dbo._库区主文件 WHERE = @ AND = @ AND ISNULL(@, 0) <> )
BEGIN
SELECT '0' AS result, N'库区编号已存在' AS msg;
RETURN;
END
IF ISNULL(@, 0) = 0
BEGIN
INSERT INTO dbo._库区主文件(, , , , , , , )
VALUES(@, @, @, @, ISNULL(@, N'启用'), @, @, @UserID);
SELECT '1' AS result, SCOPE_IDENTITY() AS , N'新增成功' AS msg;
END
ELSE
BEGIN
UPDATE dbo._库区主文件
SET = @,
= @,
= @,
= @,
= ISNULL(@, ),
= @,
= @,
= @UserID,
= GETDATE()
WHERE = @;
SELECT '1' AS result, @ AS , N'编辑成功' AS msg;
END
END
GO
IF OBJECT_ID(N'dbo.库房管理_库位_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._库位_查询;
GO
CREATE PROCEDURE dbo._库位_查询
@ INT = NULL,
@ INT = NULL,
@_check BIT = 0,
@ NVARCHAR(50) = NULL,
@_check BIT = 0,
@ NVARCHAR(20) = NULL
AS
BEGIN
SET NOCOUNT ON;
SET @ = NULLIF(@, 0);
SET @ = NULLIF(@, 0);
SELECT
h. AS ,
h. AS ,
h.,
k.,
h.,
q.,
h.,
h.,
h.,
CASE
WHEN ISNULL(h., 1) = 0 THEN N'停用'
WHEN ISNULL(s., 0) > 0 AND ISNULL(h., 0) > 0 AND ISNULL(s., 0) >= ISNULL(h., 0) THEN N'满库位'
WHEN ISNULL(s., 0) > 0 THEN N'有库存'
ELSE ISNULL(h., N'空库位')
END AS ,
ISNULL(h., 0) AS ,
ISNULL(s., 0) AS ,
ISNULL(s., 0) AS ,
h.,
h.
FROM dbo._货位主文件 h
LEFT JOIN dbo._库房主文件 k ON h. = k.
LEFT JOIN dbo._库区主文件 q ON h. = q.
LEFT JOIN
(
SELECT , COUNT(DISTINCT ) AS , SUM(ISNULL(, 0)) AS
FROM dbo._物料与货位对照表
WHERE ISNULL(, 0) > 0
GROUP BY
) s ON h. = s.
WHERE (@ IS NULL OR h. = @)
AND (@ IS NULL OR h. = @)
AND (@_check = 0 OR h. LIKE N'%' + ISNULL(@, N'') + N'%')
AND (@_check = 0 OR
CASE
WHEN ISNULL(h., 1) = 0 THEN N'停用'
WHEN ISNULL(s., 0) > 0 AND ISNULL(h., 0) > 0 AND ISNULL(s., 0) >= ISNULL(h., 0) THEN N'满库位'
WHEN ISNULL(s., 0) > 0 THEN N'有库存'
ELSE ISNULL(h., N'空库位')
END = @)
ORDER BY h., h., h., h.;
END
GO
IF OBJECT_ID(N'dbo.库房管理_库位_保存', N'P') IS NOT NULL
DROP PROCEDURE dbo._库位_保存;
GO
CREATE PROCEDURE dbo._库位_保存
@ INT = NULL,
@ NVARCHAR(50),
@ INT,
@ INT = NULL,
@ INT = NULL,
@ INT = NULL,
@ INT = NULL,
@ NVARCHAR(20) = N'空库位',
@ FLOAT = NULL,
@ BIT = 1,
@UserID INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SET @ = NULLIF(@, 0);
IF EXISTS (SELECT 1 FROM dbo._货位主文件 WHERE = @ AND ISNULL(@, 0) <> )
BEGIN
SELECT '0' AS result, N'库位名称已存在' AS msg;
RETURN;
END
IF ISNULL(@, 0) = 0
BEGIN
INSERT INTO dbo._货位主文件(, , , , , , , , , , , )
VALUES(@, @, @, @, @, @, ISNULL(@, N'空库位'), @, ISNULL(@, 1), GETDATE(), @UserID, GETDATE());
SELECT '1' AS result, SCOPE_IDENTITY() AS , N'新增成功' AS msg;
END
ELSE
BEGIN
UPDATE dbo._货位主文件
SET = @,
= @,
= @,
= @,
= @,
= @,
= ISNULL(@, ),
= @,
= ISNULL(@, ),
= @UserID,
= GETDATE()
WHERE = @;
SELECT '1' AS result, @ AS , N'编辑成功' AS msg;
END
END
GO
IF OBJECT_ID(N'dbo.库房管理_可视化库位_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._可视化库位_查询;
GO
CREATE PROCEDURE dbo._可视化库位_查询
@ INT = NULL,
@ INT = NULL,
@ INT = 1
AS
BEGIN
SET NOCOUNT ON;
SET @ = NULLIF(@, 0);
SET @ = NULLIF(@, 0);
IF @ IS NULL
SELECT @ = FROM dbo._库房主文件 WHERE = N'KF-3F';
DECLARE @ INT = 8;
DECLARE @ INT = 24;
DECLARE @ INT = 3;
DECLARE @ NVARCHAR(50) = N'KF';
SELECT TOP 1
@ = ISNULL(, 8),
@ = ISNULL(, 24),
@ = ISNULL(, 3),
@ = ISNULL(, N'KF')
FROM dbo._库房主文件
WHERE (@ IS NULL OR = @)
ORDER BY ;
;WITH row_num AS
(
SELECT 1 AS n
UNION ALL SELECT n + 1 FROM row_num WHERE n < @
),
col_num AS
(
SELECT 1 AS n
UNION ALL SELECT n + 1 FROM col_num WHERE n < @
),
cell AS
(
SELECT r.n AS , c.n AS , @ AS
FROM row_num r
CROSS JOIN col_num c
),
stock AS
(
SELECT , COUNT(DISTINCT ) AS , SUM(ISNULL(, 0)) AS
FROM dbo._物料与货位对照表
WHERE ISNULL(, 0) > 0
GROUP BY
)
SELECT
cell.,
cell.,
cell.,
ISNULL(h., CONVERT(NVARCHAR(10), cell.) + N'-' + RIGHT(N'00' + CONVERT(NVARCHAR(10), cell.), 2) + N'-' + RIGHT(N'00' + CONVERT(NVARCHAR(10), cell.), 2) + N'-01') AS ,
h. AS ,
CASE
WHEN h. IS NULL THEN N'未建库位'
WHEN ISNULL(h., 1) = 0 THEN N'停用'
WHEN ISNULL(stock., 0) > 0 AND ISNULL(h., 0) > 0 AND ISNULL(stock., 0) >= ISNULL(h., 0) THEN N'满库位'
WHEN ISNULL(stock., 0) > 0 THEN N'有库存'
ELSE ISNULL(h., N'空库位')
END AS ,
ISNULL(stock., 0) AS ,
ISNULL(stock., 0) AS ,
ISNULL(h., 0) AS
FROM cell
LEFT JOIN dbo._货位主文件 h
ON h. = cell.
AND h. = cell.
AND h. = cell.
AND (@ IS NULL OR h. = @)
AND (@ IS NULL OR h. = @)
AND LEN(h.) - LEN(REPLACE(h., N'-', N'')) = 3
LEFT JOIN stock ON h. = stock.
ORDER BY cell., cell.
OPTION (MAXRECURSION 0);
END
GO
IF OBJECT_ID(N'dbo.库房管理_物料库位_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._物料库位_查询;
GO
CREATE PROCEDURE dbo._物料库位_查询
@ NVARCHAR(10) = N'综合',
@_check BIT = 0,
@ NVARCHAR(100) = NULL,
@ INT = NULL,
@ INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SET @ = NULLIF(@, 0);
SET @ = NULLIF(@, 0);
SELECT
m.,
m.,
m. AS ,
m. AS ,
h. AS ,
h. AS ,
h.,
k.,
h.,
q.,
h.,
h.,
h.,
d. AS ,
d.,
CASE
WHEN ISNULL(d., 0) > 0 THEN N'有库存'
ELSE N'无库存'
END AS ,
d.,
@ AS
FROM dbo._物料与货位对照表 d
INNER JOIN dbo._物料主文件_基本 m ON d. = m.
INNER JOIN dbo._货位主文件 h ON d. = h.
LEFT JOIN dbo._库房主文件 k ON h. = k.
LEFT JOIN dbo._库区主文件 q ON h. = q.
WHERE ISNULL(d., 0) > 0
AND (@ IS NULL OR h. = @)
AND (@ IS NULL OR h. = @)
AND
(
@_check = 0
OR m. LIKE N'%' + ISNULL(@, N'') + N'%'
OR m. LIKE N'%' + ISNULL(@, N'') + N'%'
OR m. LIKE N'%' + ISNULL(@, N'') + N'%'
OR h. LIKE N'%' + ISNULL(@, N'') + N'%'
)
ORDER BY k., h., h., h., m.;
END
GO
IF OBJECT_ID(N'dbo.库房管理_库存流水_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._库存流水_查询;
GO
CREATE PROCEDURE dbo._库存流水_查询
@_check BIT = 0,
@ NVARCHAR(100) = NULL,
@ INT = NULL,
@ DATE = NULL,
@ DATE = NULL
AS
BEGIN
SET NOCOUNT ON;
SET @ = NULLIF(@, 0);
SELECT TOP 500 *
FROM
(
SELECT
N'入库' AS ,
r. AS ,
m.,
m. AS ,
m. AS ,
h. AS ,
k.,
CONVERT(FLOAT, r.) AS ,
r. AS
FROM dbo._外购件_入库记录 r
LEFT JOIN dbo._物料主文件_基本 m ON r. = m.
LEFT JOIN dbo._货位主文件 h ON r. = h.
LEFT JOIN dbo._库房主文件 k ON h. = k.
UNION ALL
SELECT
N'出库' AS ,
r. AS ,
m.,
m. AS ,
m. AS ,
h. AS ,
k.,
CONVERT(FLOAT, r.) AS ,
r. AS
FROM dbo._物料出库_出库记录 r
LEFT JOIN dbo._物料主文件_基本 m ON r. = m.
LEFT JOIN dbo._货位主文件 h ON r. = h.
LEFT JOIN dbo._库房主文件 k ON h. = k.
UNION ALL
SELECT
N'盘点' AS ,
r. AS ,
m.,
m. AS ,
m. AS ,
h. AS ,
k.,
CONVERT(FLOAT, ISNULL(r., 0) - ISNULL(r., 0)) AS ,
r. AS
FROM dbo._修改记录 r
LEFT JOIN dbo._物料主文件_基本 m ON r. = m.
LEFT JOIN dbo._物料与货位对照表 d ON r. = d.
LEFT JOIN dbo._货位主文件 h ON d. = h.
LEFT JOIN dbo._库房主文件 k ON h. = k.
) x
WHERE (@ IS NULL OR x. IN (SELECT FROM dbo._库房主文件 WHERE = @))
AND (@ IS NULL OR x. >= @)
AND (@ IS NULL OR x. < DATEADD(DAY, 1, @))
AND
(
@_check = 0
OR x. LIKE N'%' + ISNULL(@, N'') + N'%'
OR x. LIKE N'%' + ISNULL(@, N'') + N'%'
OR x. LIKE N'%' + ISNULL(@, N'') + N'%'
OR x. LIKE N'%' + ISNULL(@, N'') + N'%'
)
ORDER BY x. DESC;
END
GO