更新销售合同/提成/业绩、精工工序工价/生产审核/工时统计、仓储盘点/库存/补货/入库/库房管理,新增提成设置/销售业绩/库房管理/入库单移动端等模块及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,354 @@
USE [ERPTOOL_JY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- 补齐正式库截图中的工价计算字段;修改人:Ld 修改时间:2026-08-04 09:49:39;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'工作时间(时)') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [()] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_工作时间时] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'宽放时间(时)') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [()] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_宽放时间时] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'日工资(元)') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [()] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_日工资元] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'标准产能(件/天)') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [(/)] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_标准产能件天] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'工价定额') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_工价定额] DEFAULT ((0));
GO
-- 保护正式库旧数据:按已有日产能和最终单价反推新公式输入字段;修改人:Ld 修改时间:2026-08-04 09:49:39;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL
BEGIN
UPDATE price
SET [s] = ISNULL([s], 0) + ISNULL([s], 0),
[(/)] = ISNULL([()], 0),
[] = ISNULL([(/)], 0),
[()] = CASE
WHEN ISNULL([()], 0) <> 0 THEN [()]
WHEN ISNULL([()], 0) <> 0 AND ISNULL([s], 0) + ISNULL([s], 0) <> 0
THEN ISNULL([()], 0) * (ISNULL([s], 0) + ISNULL([s], 0)) / 3600
ELSE 0
END,
[()] = CASE
WHEN ISNULL([()], 0) <> 0 THEN [()]
WHEN ISNULL([(/)], 0) <> 0 AND ISNULL([()], 0) <> 0
THEN ISNULL([(/)], 0) * ISNULL([()], 0)
ELSE 0
END
FROM [dbo].[_工序工价] price;
END
GO
-- 用完整字段公式触发器替代之前仅计算总时间的触发器;修改人:Ld 修改时间:2026-08-04 09:49:39;
IF OBJECT_ID(N'[dbo].[TR_车间生产管理工艺_工序工价_总时间自动计算]', N'TR') IS NOT NULL
DROP TRIGGER [dbo].[TR_车间生产管理工艺_工序工价_总时间自动计算];
GO
IF OBJECT_ID(N'[dbo].[TR_车间生产管理工艺_工序工价_字段公式计算]', N'TR') IS NOT NULL
DROP TRIGGER [dbo].[TR_车间生产管理工艺_工序工价_字段公式计算];
GO
CREATE TRIGGER [dbo].[TR_车间生产管理工艺_工序工价_字段公式计算]
ON [dbo].[_工序工价]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF TRIGGER_NESTLEVEL() > 1
RETURN;
;WITH FormulaSource AS (
SELECT
price.,
ISNULL(price.[s], 0) AS s,
ISNULL(price.[s], 0) AS s,
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS s,
-- 修改人:Ld 修改时间:2026-08-04 09:49:39; 前端编辑过程仍通过旧字段提交,优先按日产能反推工作时间。
CASE
WHEN ISNULL(price.[()], 0) <> 0 AND ISNULL(price.[s], 0) + ISNULL(price.[s], 0) <> 0
THEN ISNULL(price.[()], 0) * (ISNULL(price.[s], 0) + ISNULL(price.[s], 0)) / 3600
ELSE 0
END AS ,
ISNULL(price.[()], 0) AS ,
-- 修改人:Ld 修改时间:2026-08-04 09:49:39; 前端编辑过程仍通过旧字段提交,优先按工价定额和标准产能反推日工资。
CASE
WHEN ISNULL(price.[(/)], 0) <> 0 AND ISNULL(price.[()], 0) <> 0
THEN ISNULL(price.[(/)], 0) * ISNULL(price.[()], 0)
ELSE 0
END AS
FROM [dbo].[_工序工价] price
INNER JOIN inserted i ON price. = i.
),
FormulaResult AS (
SELECT
,
s,
,
,
,
CASE WHEN s <> 0 THEN * 3600 / s ELSE 0 END AS
FROM FormulaSource
)
UPDATE price
SET price.[s] = calc.s,
price.[()] = calc.,
price.[()] = calc.,
price.[()] = calc.,
price.[(/)] = calc.,
price.[] = CASE WHEN calc. <> 0 THEN calc. / calc. ELSE 0 END,
-- 修改人:Ld 修改时间:2026-08-04 09:49:39; 旧字段继续同步,兼容现有页面和历史接口。
price.[()] = calc.,
price.[(/)] = CASE WHEN calc. <> 0 THEN calc. / calc. ELSE 0 END,
price. = CASE WHEN calc. <> 0 THEN calc. / calc. ELSE 0 END
FROM [dbo].[_工序工价] price
INNER JOIN FormulaResult calc ON price. = calc.;
END
GO
-- 触发一次计算,确保正式库现有数据按公式同步;修改人:Ld 修改时间:2026-08-04 09:49:39;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL
BEGIN
UPDATE [dbo].[_工序工价]
SET [s] = [s];
END
GO
-- 工序工价分页查询增加截图字段,并保留旧字段兼容前端;修改人:Ld 修改时间:2026-08-04 09:49:39;
ALTER PROCEDURE [dbo].[_工序工价_查询数据]
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(20) = N'',
@PageCurrent INT = 1,
@PageSize INT = 1000
AS
BEGIN
SET NOCOUNT ON;
IF @PageCurrent IS NULL OR @PageCurrent < 1 SET @PageCurrent = 1;
IF @PageSize IS NULL OR @PageSize < 1 SET @PageSize = 1000;
;WITH PlanData AS (
-- 与制定工艺组件订单、产品、零件选择保持同一工艺计划来源口径;修改人:Ld 修改时间:2026-08-04 09:49:39;
SELECT gp.*
FROM [dbo].[_零件工艺计划_视图] gp
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
),
ProcessData AS (
SELECT
ROW_NUMBER() OVER (
ORDER BY gp. DESC, gp. DESC, gx. ASC, gx. ASC
) AS RowNum,
price.,
gx.,
gx.,
gp.,
gp.,
base. AS ,
base. AS ,
gp.,
gp. AS ,
gx.,
gx.,
gx.,
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[], 0) AS [],
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS [s],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[(/)], 0) AS [(/)],
ISNULL(price.[], 0) AS ,
ISNULL(price.[(/)], ISNULL(price.[()], 0)) AS [()],
ISNULL(price.[], ISNULL(price.[(/)], 0)) AS [(/)],
CONVERT(VARCHAR(10), price., 23) AS ,
ISNULL(price., 0) AS ,
ISNULL(price., 1) AS ,
price.,
price.,
CONVERT(VARCHAR(19), price., 120) AS ,
price.,
CONVERT(VARCHAR(19), price., 120) AS
FROM PlanData gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @)
)
SELECT
,
,
,
,
,
,
,
,
,
,
,
,
[()],
,
[s],
[s],
[s],
[()],
[()],
[()],
[(/)],
,
[()],
[(/)],
,
,
,
,
,
,
,
FROM ProcessData
WHERE RowNum BETWEEN ((@PageCurrent - 1) * @PageSize + 1) AND (@PageCurrent * @PageSize)
ORDER BY RowNum;
SELECT COUNT(1) AS total
FROM [dbo].[_零件工艺计划_视图] gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @);
END
GO
-- 工序工价导出增加截图字段;修改人:Ld 修改时间:2026-08-04 09:49:39;
ALTER PROCEDURE [dbo].[_工序工价_导出表格_查询]
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(20) = N''
AS
BEGIN
SET NOCOUNT ON;
SELECT N'工序工价_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT
256 * 20 AS ,
256 * 28 AS ,
256 * 16 AS [()],
256 * 18 AS [(/)],
256 * 16 AS [()],
256 * 16 AS [()],
256 * 14 AS [()],
256 * 16 AS [()],
256 * 16 AS [()],
256 * 14 AS [()],
256 * 20 AS [(/)],
256 * 14 AS ;
SELECT
0 AS ,
0 AS ,
1 AS [()],
1 AS [(/)],
1 AS [()],
1 AS [()],
1 AS [()],
1 AS [()],
1 AS [()],
1 AS [()],
1 AS [(/)],
1 AS ;
;WITH PlanData AS (
-- 页面查询同源工艺计划数据源,确保导出与列表一致;修改人:Ld 修改时间:2026-08-04 09:49:39;
SELECT gp.*
FROM [dbo].[_零件工艺计划_视图] gp
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
)
SELECT
base. AS ,
gp. + N' ' + gp. AS ,
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[], 0) AS [(/)],
ISNULL(price.[s], 0) AS [()],
ISNULL(price.[s], 0) AS [()],
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[(/)], 0) AS [(/)],
ISNULL(price.[], 0) AS
FROM PlanData gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @)
ORDER BY gp. DESC, gp. DESC, gx. ASC, gx. ASC;
END
GO