S-HR 报500错误 创建加班单ID问题
金蝶云社区-空白的一页
空白的一页
0人赞赏了该文章 706次浏览 未经作者许可,禁止转载编辑于2020年02月13日 08:41:06
创建加班单ID,存储过程如下
/* ==脚本参数==
源服务器版本 : SQL Server 2012 (11.0.2100)
源数据库引擎版本 : Microsoft SQL Server Enterprise Edition
源数据库引擎类型 : 独立的 SQL Server
目标服务器版本 : SQL Server 2012
目标数据库引擎版本 : Microsoft SQL Server Enterprise Edition
目标数据库引擎类型 : 独立的 SQL Server
*/
USE [EAS201708230915]
GO
/****** Object: StoredProcedure [dbo].[CreateAtsOverTimeBill] Script Date: 2017/10/9 10:25:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[CreateAtsOverTimeBill]
@BillNo NVARCHAR(MAX),@WorkCode NVARCHAR(50),@StartTime DATETIME,@EndTime DATETIME,@RestTime INT = 0,@Remark NVARCHAR(MAX),@ReturnFaultWhenBillExisted BIT = 1
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- BOSTYPE常量定义
DECLARE @BOSTYPE_AtsOverTimeBill NVARCHAR(8) = 'C46A580E', @BOSTYPE_AtsOverTimeBillEntry NVARCHAR(8) = 'B4309904'
-- 检查Person是否存在
DECLARE @PersonId NVARCHAR(50)
SELECT @PersonId = t1.FID FROM T_BD_Person t1 LEFT JOIN T_HR_ATS_AttendanceFile t2 ON t1.FID = t2.FProposerID WHERE t1.FNumber = @WorkCode AND t2.FAttendFileState = 1
IF @PersonId is null BEGIN RETURN -1 END
-- 检查加班时间是否有误
IF @StartTime >= @EndTime BEGIN RETURN -2 END
-- 处理已经存在的BillNo
DECLARE @OTBillId NVARCHAR(50)
SELECT @OTBillId = FID FROM T_HR_ATS_OverTimeBill WHERE FNumber = @BillNo
IF @OTBillId is not null BEGIN
IF @ReturnFaultWhenBillExisted = 1 BEGIN RETURN -3 END
ELSE BEGIN
DELETE FROM T_HR_ATS_OverTimeBillEntry WHERE FBillID = @OTBillId
DELETE FROM T_HR_ATS_OverTimeBill WHERE FID = @OTBillId
END
END
-- 创建加班单
DECLARE @newid NVARCHAR(20),@OTDate DATETIME = CONVERT(DATE,@StartTime)
SET @NewID = dbo.newbosid(@BOSTYPE_AtsOverTimeBill)
INSERT INTO T_HR_ATS_OverTimeBill(FProposer,FApplyDate,FAdminOrgUnitId,FHROrgUnitID,FBillState,FNumber,FCreateTime,FLastUpdateTime,FControlUnitID,FID,FBillSubmitType)
SELECT t1.FID,@OTDate,t2.FAdminOrgUnitID,t2.FHrOrgUnitID,3,@BillNo,GETDATE(),GETDATE(),t2.FControlUnitID,@NewID,1
FROM T_BD_Person t1
LEFT JOIN T_HR_ATS_AttendanceFile t2 ON t1.FID = t2.FProposerID
WHERE t1.FID = @PersonID AND t2.FAttendFileState = 1
DECLARE @OTCompensID NVARCHAR(MAX), @OTTypeID NVARCHAR(MAX), @OTReasonID NVARCHAR(MAX), @DayType INT
-- 获取加班调休的ID
SELECT @OTCompensID = FID FROM T_HR_ATS_OverTimeCompens WHERE FName_l2 = '调休'
-- 获取加班原因的ID
SELECT @OTReasonID = FID FROM T_HR_ATS_OverTimeReason WHERE FName_l2 = '公司安排'
-- 加班类型判断
SELECT @DayType = FDayType FROM T_HR_ATS_ScheduleShift WHERE FAttendDate = @OTDate AND FProposerID = @PersonID
IF @DayType IS NULL
BEGIN
IF (SELECT COUNT(*) FROM T_HR_ATS_LegalHolidayItem WHERE @OTDate >= FStartDate AND @OTDate <= FEndDate) > 0 BEGIN SELECT @OTTypeID = FID FROM T_HR_ATS_OverTimeType WHERE FName_l2 = '法定节假日加班' END
ELSE IF DATEPART(WEEKDAY,@OTDate) IN (1,7) BEGIN SELECT @OTTypeID = FID FROM T_HR_ATS_OverTimeType WHERE FName_l2 = '休息日加班' END
ELSE BEGIN SELECT @OTTypeID = FID FROM T_HR_ATS_OverTimeType WHERE FName_l2 = '工作日加班' END
END
ELSE IF @DayType = 0 BEGIN SELECT @OTTypeID = FID FROM T_HR_ATS_OverTimeType WHERE FName_l2 = '工作日加班' END
ELSE IF @DayType = 1 BEGIN SELECT @OTTypeID = FID FROM T_HR_ATS_OverTimeType WHERE FName_l2 = '休息日加班' END
ELSE IF @DayType = 2 BEGIN SELECT @OTTypeID = FID FROM T_HR_ATS_OverTimeType WHERE FName_l2 = '法定节假日加班' END
-- 创建加班单明细
INSERT INTO T_HR_ATS_OverTimeBillEntry(FOTDate,FStartTime,FEndTime,FApplyOTTime,FRestTime,FPersonID,FPositionID,FAdminOrgUnitID,FOTTypeID,FOTReasonID,FOTCompensID,FBillID,FSeq,FID,FCreateTag,FDescription)
SELECT @OTDate,@StartTime,@EndTime,DATEDIFF(HOUR,@StartTime,@EndTime)-@RestTime/60,@RestTime,@PersonID,t2.FPositionID,t2.FAdminOrgUnitID,@OTTypeID,@OTReasonID,@OTCompensID,@NewID,1,dbo.newbosid(@BOSTYPE_AtsOverTimeBillEntry),1,@Remark
FROM T_BD_Person t1
LEFT JOIN T_HR_ATS_AttendanceFile t2 ON t1.FID = t2.FProposerID
WHERE t1.FID = @PersonID AND t2.FAttendFileState = 1
RETURN 0
END
GO
生成的ID跟系统的不一样,页面可以查看,点击进页面看详细信息报500错误!麻烦帮忙看下。谢谢!卡了很久了。