Code:
ALTER PROCEDURE [dbo].[SpLeaveApprovalSaveNew] @LeaveApplicationId int, @LeaveId int, @EmployeeId int, @LeaveApprovalFromDate datetime, @LeaveApprovalToDate datetime, @LeaveApprovalHalfDay bit, @LeaveApprovalApplicaitonDate datetime, @LeaveApprovalDuration numeric(18,2), @LeaveApprovalDate datetime, @LeaveApprovalRemark nvarchar(15), @LeaveApprovalApplicationBy nvarchar(15) AS Declare @Status varchar(10) Declare @Date datetime Declare @LeaveOnHolidayWeekOff varchar(50) Declare @ShiftWeekOff varchar(MAX) Declare @ShiftHolidays varchar(MAX) Declare @WeekOffDate varchar(max) Declare @HolidayDate varchar(max) Declare @ShiftName varchar(max) Declare @ShiftStartTime varchar(max) Declare @ShiftEndTime varchar(max) Declare @ShiftLeave varchar(max) BEGIN INSERT INTO LeaveApprovalMaster(LeaveApplicationId,LeaveId,EmployeeId,LeaveApprovalFromDate,LeaveApprovalToDate,LeaveApprovalHalfDay,LeaveApprovalApplicaitonDate, LeaveApprovalDuration, LeaveApprovalDate,LeaveApprovalRemark,LeaveApprovalApplicationBy) VALUES(@LeaveApplicationId,@LeaveId,@EmployeeId,@LeaveApprovalFromDate,@LeaveApprovalToDate,@LeaveApprovalHalfDay, @LeaveApprovalApplicaitonDate,@LeaveApprovalDuration,@LeaveApprovalDate,@LeaveApprovalRemark,@LeaveApprovalApplicationBy) --Update Status in LeaveApplicationMaster UPDATE LeaveApplicationMaster SET LeaveApplicationApprovalFlag = 1 WHERE EmployeeId = @EmployeeId --Select data from shiftallocation SELECT @ShiftName=M.ShiftName,@ShiftStartTime=M.ShiftStartTime,@ShiftEndTime=M.ShiftEndTime from LeaveApprovalMaster L INNER JOIN ShiftAllocation S ON L.EmployeeId=S.EmployeeId INNER JOIN ShiftMaster M ON S.ShiftId = M.ShiftId --Insert data in EmployeeTempAttendanceDetail If Not Exists(Select 1 from EmployeeTempAttendanceDetail where EmployeeId = @EmployeeId and [Date] between CAST (@LeaveApprovalFromDate AS DATETIME) and CAST (@LeaveApprovalToDate AS DATETIME)) BEGIN While(CAST (@LeaveApprovalFromDate AS DATETIME) <= CAST (@LeaveApprovalToDate AS DATETIME)) BEGIN --- General Setting if Leave comes on holiday and/or weekoff is true SET @LeaveOnHolidayWeekOff = (Select 1 from GeneralSetting where Consider_Leave_If_WeeklyOff_Holiday ='true') IF(@LeaveOnHolidayWeekOff > 0) BEGIN SET @Status = 'L' INSERT INTO EmployeeTempAttendanceDetail(EmployeeId,Date,Status,ShiftName,ShiftStartTime,ShiftEndTime) VALUES(@EmployeeId,@LeaveApprovalFromDate,@Status,@ShiftName,@ShiftStartTime,@ShiftEndTime) SET @Status = NULL SET @LeaveApprovalFromDate = dateadd(day,1,@LeaveApprovalFromDate) END ELSE --- General setting if Leave comes on holiday and/or weekoff is false SELECT @ShiftWeekOff = ShiftAllocationDate from ShiftAllocation Where ShiftAllocationDate between CAST (@LeaveApprovalFromDate AS DATETIME) and CAST (@LeaveApprovalToDate AS DATETIME) and ShiftId = -1 and ShiftId2 = -1 SELECT @ShiftHolidays = ShiftAllocationDate from ShiftAllocation Where ShiftAllocationDate between CAST (@LeaveApprovalFromDate AS DATETIME) and CAST (@LeaveApprovalToDate AS DATETIME) and ShiftId = -2 and ShiftId2 = -2 IF(@ShiftWeekOff <= @LeaveApprovalFromDate And @ShiftWeekOff >= @LeaveApprovalToDate) BEGIN SET @Status = 'L' INSERT INTO EmployeeTempAttendanceDetail(EmployeeId,Date,Status,ShiftName,ShiftStartTime,ShiftEndTime) VALUES(@EmployeeId,@LeaveApprovalFromDate,@Status,@ShiftName,@ShiftStartTime,@ShiftEndTime) SET @Status = NULL SET @LeaveApprovalFromDate = dateadd(day,1,@LeaveApprovalFromDate) END ELSE IF(@ShiftWeekOff = @LeaveApprovalFromDate) BEGIN SET @Status='WO' INSERT INTO EmployeeTempAttendanceDetail(EmployeeId,Date,Status,ShiftName,ShiftStartTime,ShiftEndTime) VALUES(@EmployeeId,@LeaveApprovalFromDate,@Status,@ShiftName,@ShiftStartTime,@ShiftEndTime) SET @Status = NULL SET @LeaveApprovalFromDate = dateadd(day,1,@LeaveApprovalFromDate) END ELSE IF(@ShiftHolidays = @LeaveApprovalFromDate) BEGIN SET @Status='H' INSERT INTO EmployeeTempAttendanceDetail(EmployeeId,Date,Status,ShiftName,ShiftStartTime,ShiftEndTime) VALUES(@EmployeeId,@LeaveApprovalFromDate,@Status,@ShiftName,@ShiftStartTime,@ShiftEndTime) SET @Status = NULL SET @LeaveApprovalFromDate = dateadd(day,1,@LeaveApprovalFromDate) END END END END
Comment