Download as rtf, pdf, or txt
Download as rtf, pdf, or txt
You are on page 1of 23

alter proc Attendance_ImportAttendanceFromBioTapNoImage

(@FUSERID int,

@Date DateTime,

@INA VARCHAR(100),

@OUTA VARCHAR(100),

@INB VARCHAR(100),

@OUTB VARCHAR(100),

@WorkingHour varchar(100),

@MyImgIn1 varchar(100),

@MyImgIn2 varchar(100),

@MyImgOut1 varchar(100),

@MyImgOut2 varchar(100)

as

begin

Declare @IsScheduleAssign int =( Select Count(*) from FacultyAttendanceMaster


where FAM_FacUserId=@FUSERID and FAM_IsCurrent=1)

if(@IsScheduleAssign>0)

begin

----attendance markd by accptd leaves---

Declare @Fac_InstId int =(Select Fac_instId from faculty_info where


fac_userid=@FUSERID)

declare @IsAlready int =(select COUNT(*) from Faculty_Attendance where


FA_FacUserID=@FUSERID and FA_Date=@Date)
if(@IsAlready=0)

begin

---Get the late Time in Minutes

Declare @InTimeMin int =(select


DATEDIFF(MINUTE,FAM_FacInTime,CONVERT(time(7),@INA) )from FacultyAttendanceMaster

where FAM_FacUserId=@FUSERID)

---Get the Early Time in Minutes

Declare @OutTimeMin int=(select


DATEDIFF(MINUTE,FAM_FacOutTime,CONVERT(time(7),@OUTA)) from
FacultyAttendanceMaster

where FAM_FacUserId=@FUSERID)

Declare @ActualWorkingMins int =(select


DATEDIFF(MINUTE,@INA,CONVERT(time(7),@OUTA)) from FacultyAttendanceMaster

where FAM_FacUserId=@FUSERID)

Declare @CalculatedWorkingMins int=(select


DATEDIFF(MINUTE,FAM_FacInTime,CONVERT(time(7),FAM_FacOutTime)) from
FacultyAttendanceMaster where FAM_FacUserId=@FUSERID and FAM_IsCurrent=1)

if(@CalculatedWorkingMins<@ActualWorkingMins) set
@ActualWorkingMins=@CalculatedWorkingMins

----if late or early


if(@InTimeMin>=0 or @OutTimeMin<=0)

begin

begin

if(@InTimeMin<0)

set @InTimeMin=0

end

begin

if(@OutTimeMin>0)

set @OutTimeMin=0

end

insert into Faculty_Attendance(FA_FacUserID, FA_Date, FA_IN1, FA_OUT1, FA_IN2,


FA_OUT2,FA_MinLateBy,FA_MinEarlyBy,

FA_INIMAGE1,FA_INIMAGE2,FA_OUTIMAGE1,FA_OUTIMAGE2,FA_WorkingHours,FA_CalWorkingMin
s,FA_InsertDate, FA_InsertUserAccountID,

FA_isholiday,FA_IsoddPunch,FA_IsLeave,FA_IsHalfLeave,FA_isconfirm,Fa_InstId,

FA_RealIN1, FA_RealOUT1, FA_RealIN2, FA_RealOUT2, FA_RealMinEarlyBy,


FA_RealMinLateBy, FA_RealCalWorkingMins, FA_RealIsOddPunch)

VALUES(@FUSERID,Convert(datetime,@Date,107),Convert(time(7),@INA,108),Convert(time
(7),@OUTA,108),Convert(time(7),@INB,108),

Convert(time(7),@OUTB,108),@InTimeMin,@OutTimeMin*(-1),@MyImgIn1
,@MyImgIn2,@MyImgOut1,@MyImgOut2 , Convert(time(7),@WorkingHour,108) ,

isnull(@ActualWorkingMins,0),GETDATE(),

0,0,0,0,0,1,@Fac_InstId,Convert(time(7),@INA,108),Convert(time(7),@OUTA,108),Conve
rt(time(7),@INB,108),

Convert(time(7),@OUTB,108),@InTimeMin,@OutTimeMin*(-
1),isnull(@ActualWorkingMins,0),0)

update faculty_attendance set FA_CalWorkingMins=isnull(@CalculatedWorkingMins,0)-


(FA_MinEarlyby+FA_MinLateBy),

FA_RealCalWorkingMins=isnull(@CalculatedWorkingMins,0)-
(FA_MinEarlyby+FA_MinLateBy)
where FA_FacUSerID=@FUSERID and FA_Date=Convert(datetime,@Date,107)

end

else

begin

insert into Faculty_Attendance(FA_FacUserID, FA_Date, FA_IN1, FA_OUT1, FA_IN2,


FA_OUT2,FA_MinLateBy,FA_MinEarlyBy,FA_INIMAGE1,FA_INIMAGE2,

FA_OUTIMAGE1,FA_OUTIMAGE2, FA_WorkingHours,FA_CalWorkingMins,FA_InsertDate,
FA_InsertUserAccountID ,

FA_isholiday,FA_IsoddPunch,FA_IsLeave,FA_IsHalfLeave,FA_isconfirm,Fa_InstId,

FA_RealIN1, FA_RealOUT1, FA_RealIN2, FA_RealOUT2, FA_RealMinEarlyBy,


FA_RealMinLateBy, FA_RealCalWorkingMins, FA_RealIsOddPunch

VALUES(@FUSERID,Convert(datetime,@Date,107),Convert(time(7),@INA,108),Convert(time
(7),@OUTA,108),Convert(time(7),@INB,108),

Convert(time(7),@OUTB,108),0,0,@MyImgIn1
,@MyImgIn2,@MyImgOut1,@MyImgOut2,Convert(time(7),@WorkingHour,108),isnull(@ActualW
orkingMins,0),

GETDATE(),

0,0,0,0,0,1,@Fac_InstId,Convert(time(7),@INA,108),Convert(time(7),@OUTA,108),Conve
rt(time(7),@INB,108),

Convert(time(7),@OUTB,108),0,0,isnull(@ActualWorkingMins,0),0)

update faculty_attendance set


FA_CalWorkingMins=isnull(@CalculatedWorkingMins,0)-(FA_MinEarlyby+FA_MinLateBy)
where FA_FacUSerID=@FUSERID and FA_Date=Convert(datetime,@Date,107)

end

update Faculty_Attendance set FA_isoddPunch=1,FA_Isconfirm=0,FA_RealIsOddPunch=1


where

FA_Date=Convert(Datetime,@Date,107) and FA_FacUserID=@FUSERID and


(FA_IN1='00:00:00.0000000' or FA_OUT1='00:00:00.0000000')

exec Faculty_AttendanceWarnings @FUSERID ,@Date

end
else

begin

update Faculty_Attendance set


FA_IN1=Convert(time(7),@INA,108),FA_OUT1=Convert(time(7),@OUTA,108),

FA_WorkingHours=Convert(time(7),@WorkingHour,108) ,

FA_RealIN1=Convert(time(7),@INA,108), FA_RealOUT1=Convert(time(7),@OUTA,108)

where FA_FacUserID=@FUSERID and FA_Date=@Date

end

end

end

alter proc FacultyAttendance_MarkOddPunchAttendance

@Fac_UserId int,

@FA_Date DateTime,

@IN1 varchar(100),

@OUT1 varchar(100),
@IN2 varchar(100),

@OUT2 varchar(100) ,

@Remarks varchar(200),

@InsertUserAccountId int

as

---CREATE ODD PUNCH LOG----

Declare @OddPunchCount int =(select count(*) from [FAcultyAttendance_OddPunchLog]


where FAOP_FAcUserID=@Fac_UserId

and FAOP_Date between cONVERT(DATe,DATEADD(mm, DATEDIFF(mm, 0, @FA_Date), 0))


and

Convert(Date,DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, @FA_Date) + 1, 0)))

INSERT INTO [dbo].[FAcultyAttendance_OddPunchLog] (FAOP_FAID, FAOP_FAcUserID,


FAOP_Date,

FAOP_IN1, FAOP_OUT1, FAOP_IN2, FAOP_OUT2, FAOP_MinLateBy, FAOP_MinEarlyBy,


FAOP_WorkingHours, FAOP_CalWorkingMins,

FAOP_OddPunchRemarks, FAOP_OddPunchAttDate, FAOP_OddPunchAttUserAccountId,


FAOP_InstId,FAOP_IsConfirmed)

SELECT FA_ID, FA_FacUserID, FA_Date, FA_IN1, FA_OUT1, FA_IN2, FA_OUT2,


FA_MinLateBy, FA_MinEarlyBy, FA_WorkingHours,

FA_CalWorkingMins, @Remarks, GETDATE(), @InsertUserAccountId, FA_InstId,case


when @OddPunchCount>=3 then 0 else 1 end

FROM Faculty_Attendance WHERE FA_FacUserID=@Fac_UserId

AND FA_Date= CONVERT(DATE,@FA_Date)

if( @OddPunchCount>3)
begin

Select CONVERT(varchar,@FA_Date,107) as FA_Date ,'Error' as


'MSG',@OddPunchCount

end

else

begin

---Get the late Time in Minutes

Declare @InTimeMin int =(select


DATEDIFF(MINUTE,FAM_FacInTime,CONVERT(time(7),@IN1) )from FacultyAttendanceMaster

where FAM_FacUserId=@Fac_UserId)

---Get the Early Time in Minutes

Declare @OutTimeMin int=(select


DATEDIFF(MINUTE,FAM_FacOutTime,CONVERT(time(7),@OUT1)) from
FacultyAttendanceMaster

where FAM_FacUserId=@Fac_UserId)

Declare @ActualWorkingMins int =(select


DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1)) from FacultyAttendanceMaster

where FAM_FacUserId=@Fac_UserId)

Declare @CalculatedWorkingMins int=(select


DATEDIFF(MINUTE,FAM_FacInTime,CONVERT(time(7),FAM_FacOutTime)) from
FacultyAttendanceMaster where FAM_FacUserId=@Fac_UserId and FAM_IsCurrent=1)

if(@CalculatedWorkingMins<@ActualWorkingMins) set
@ActualWorkingMins=@CalculatedWorkingMins

----if late or early


if(@InTimeMin>=0 or( @OutTimeMin<=0))

begin

begin

if(@InTimeMin<0)

set @InTimeMin=0

end

begin

if(@OutTimeMin>0)

set @OutTimeMin=0

end

update Faculty_Attendance set


FA_IN1=CONVERT(Time(7),@IN1),FA_OUT1=CONVERT(time(7),@OUT1),

FA_CalWorkingMins=DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1)),FA_IsConfirm=1,FA_I
sOddPunch=0,FA_MinLateBy=@InTimeMin,FA_MinEarlyBy=@OutTimeMin*(-
1),FA_OddPunchRemarks=@Remarks,FA_OddPunchAttDate=GETDATE(),FA_OddPunchAttUserAcco
untId=@InsertUserAccountId ,

FA_RealIN1=CONVERT(Time(7),@IN1), FA_RealOUT1=CONVERT(time(7),@OUT1),
FA_RealMinEarlyBy=@OutTimeMin*(-1), FA_RealMinLateBy=@InTimeMin,

FA_RealCalWorkingMins= DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1)) where


FA_FacUserID=@Fac_UserId and FA_Date=CONVERT(datetime,@FA_Date,107)

update faculty_attendance set FA_CalWorkingMins=@CalculatedWorkingMins-


(FA_MinEarlyby+FA_MinLateBy),FA_RealCalWorkingMins=@CalculatedWorkingMins-
(FA_MinEarlyby+FA_MinLateBy) where FA_FacUSerID=@Fac_UserId and
FA_Date=Convert(datetime,@FA_Date,107)

exec Faculty_MarkAttendanceWarnings @Fac_UserId ,@FA_Date

select CONVERT(varchar,@FA_Date,107) as FA_Date , 'Done' as 'MSG'


,@OddPunchCount

end

else
begin

update Faculty_Attendance set


FA_IN1=CONVERT(Time(7),@IN1),FA_OUT1=CONVERT(time(7),@OUT1),

FA_CalWorkingMins=DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1)),FA_IsConfirm=1,FA_I
sOddPunch=0,FA_MinLateBy=0,FA_MinEarlyBy=0,FA_OddPunchRemarks=@Remarks,

FA_OddPunchAttDate= getdate(),FA_OddPunchAttUserAccountId=@InsertUserAccountId,

FA_RealIN1=CONVERT(Time(7),@IN1),
FA_RealOUT1=CONVERT(time(7),@OUT1),FA_RealMinEarlyBy=0, FA_RealMinLateBy=0,

FA_RealCalWorkingMins= DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1))

where FA_FacUserID=@Fac_UserId and FA_Date=CONVERT(datetime,@FA_Date,107)

update faculty_attendance set FA_CalWorkingMins=@CalculatedWorkingMins-


(FA_MinEarlyby+FA_MinLateBy),FA_RealCalWorkingMins=@CalculatedWorkingMins-
(FA_MinEarlyby+FA_MinLateBy)

where FA_FacUSerID=@Fac_UserId and FA_Date=Convert(datetime,@FA_Date,107)

exec Faculty_MarkAttendanceWarnings @Fac_UserId ,@FA_Date

select CONVERT(varchar,@FA_Date,107) as FA_Date ,'Done' as 'MSG'


,@OddPunchCount

end

end

alter proc AddAttendanceForAcceptedLeave

(@PLD_ID int)

as

begin

declare @LeaveCount decimal(10,2)=(select PLD_NoOfLeave from Payroll_LeaveData


where PLD_Id=@PLD_ID)

declare @LeaveType int =(select PLD_PlId from Payroll_LeaveData where


PLD_Id=@PLD_ID )

if(@LeaveType!=16)

begin

declare @Fac_InstId int = (select PLD_FacInstId from Payroll_LeaveData where


PLD_Id= @PLD_ID)

if (@Fac_InstId in (300003,20003))

begin

DECLARE @I INT

Declare @StartDate datetime = (select PLD_LeaveFromDate from Payroll_LeaveData


where PLD_Id=@PLD_ID )

Declare @EndDate datetime = (select PLD_LeaveToDate from Payroll_LeaveData where


PLD_Id=@PLD_ID )

Declare @Fac_UserId int=(Select PLD_FacUserId from Payroll_LeaveData where


PLD_Id=@PLD_ID )

SET @I =DATEDIFF(day,@StartDate,@EndDate)+1

if(@I =0)

set @I=1

WHILE @I >0

BEGIN

Insert into Faculty_Attendance (FA_FacUserID, FA_Date, FA_IN1, FA_OUT1,


FA_MinLateBy, FA_MinEarlyBy,

FA_INIMAGE1, FA_INIMAGE2, FA_OUTIMAGE1, FA_OUTIMAGE2,FA_CalWorkingMins,


FA_InsertDate
,fa_isholiday,FA_IsHalfLeave,FA_IsLeave,FA_IsConfirm,FA_IsOddPunch,FA_InstId,

FA_RealIN1, FA_RealOUT1, FA_RealMinEarlyBy, FA_RealMinLateBy,


FA_RealCalWorkingMins, FA_RealIsOddPunch
)

(select FAM_FacUserId,@StartDate,FAM_FacInTime,FAM_FacOutTime ,
0,0,null,null,null,null,

DATEDIFF(MINUTE,FAM_FacInTime,CONVERT(time(7),FAM_FacOutTime))

,GETDATE(),0,0,case when @LeaveCount<1 then 1 else 0 end,case when @LeaveCount>=1


then 1 else 0 end,0,@Fac_InstId ,

FAM_FacInTime,FAM_FacOutTime ,
0,0,DATEDIFF(MINUTE,FAM_FacInTime,CONVERT(time(7),FAM_FacOutTime)),0

from FacultyAttendanceMaster where FAM_FacUserId=@Fac_UserId AND FAM_IsCurrent=1)

SET @StartDate = DATEADD(DAY,1,@StartDate)

SET @I = @I - 1

end

end

end

else

begin

declare @Fac_Inst int = (select PLD_FacInstId from Payroll_LeaveData where


PLD_Id= @PLD_ID)

if (@Fac_InstId in (300003,20003))

begin

DECLARE @ID INT

Declare @StartDat datetime = (select PLD_LeaveFromDate from Payroll_LeaveData


where PLD_Id=@PLD_ID )

Declare @EndDat datetime = (select PLD_LeaveToDate from Payroll_LeaveData where


PLD_Id=@PLD_ID )

Declare @Fac_User int=(Select PLD_FacUserId from Payroll_LeaveData where


PLD_Id=@PLD_ID )

SET @ID =DATEDIFF(day,@StartDat,@EndDat)+1

if(@ID =0)
set @ID=1

WHILE @ID >0

BEGIN

Insert into Faculty_Attendance (FA_FacUserID, FA_Date, FA_IN1, FA_OUT1,


FA_MinLateBy, FA_MinEarlyBy,

FA_INIMAGE1, FA_INIMAGE2, FA_OUTIMAGE1, FA_OUTIMAGE2,FA_CalWorkingMins,


FA_InsertDate
,fa_isholiday,FA_IsHalfLeave,FA_IsLeave,FA_IsConfirm,FA_IsOddPunch,FA_InstId,

FA_RealIN1, FA_RealOUT1, FA_RealMinEarlyBy, FA_RealMinLateBy,


FA_RealCalWorkingMins, FA_RealIsOddPunch)

(select FAM_FacUserId,@StartDate,FAM_FacInTime,FAM_FacOutTime ,
0,0,null,null,null,null,DATEDIFF(MINUTE,FAM_FacInTime,CONVERT(time(7),FAM_FacOutTi
me))

,
GETDATE(),0,0,1,0,0,@Fac_Inst,FAM_FacInTime,FAM_FacOutTime,0,0,DATEDIFF(MINUTE,FAM
_FacInTime,CONVERT(time(7),FAM_FacOutTime)),0 from FacultyAttendanceMaster where
FAM_FacUserId=@Fac_UserId AND FAM_IsCurrent=1)

SET @StartDate = DATEADD(DAY,1,@StartDate)

SET @ID = @ID - 1

end

end

end

end

ALTER proc FacultyAttendance_RemoveFacultyAttendanceForLeave

@Fac_UserId int ,@FA_Date Datetime, @InsertUserAccountId int , @Remarks


varchar(50)

as

begin

insert into Faculty_AttendanceMissedLeave (FAML_FacUserID, FAML_Date, FAML_IN1,


FAML_OUT1, FAML_IN2, FAML_OUT2, FAML_MinLateBy, FAML_MinEarlyBy,
FAML_WorkingHours, FAML_CalWorkingMins, FAML_INIMAGE1, FAML_INIMAGE2,
FAML_OUTIMAGE1, FAML_OUTIMAGE2, FAML_IsHoliday, FAML_IsOddPunch,
FAML_OddPunchRemarks, FAML_OddPunchAttDate, FAML_OddPunchAttUserAccountId,
FAML_IsLeave, FAML_IsHalfLeave, FAML_IsConfirm, FAML_InsertDate,
FAML_InsertUserAccountID, FAML_InstId)

select FA_FacUserID, FA_Date, FA_IN1, FA_OUT1, FA_IN2, FA_OUT2, FA_MinLateBy,


FA_MinEarlyBy, FA_WorkingHours, FA_CalWorkingMins, FA_INIMAGE1, FA_INIMAGE2,
FA_OUTIMAGE1, FA_OUTIMAGE2, FA_IsHoliday, FA_IsOddPunch, @Remarks,
FA_OddPunchAttDate, FA_OddPunchAttUserAccountId, FA_IsLeave, FA_IsHalfLeave,
FA_IsConfirm, FA_InsertDate, @InsertUserAccountId, FA_InstId from
Faculty_Attendance where FA_FacUserID=@Fac_UserId and FA_Date=@FA_Date

delete from Faculty_Attendance where FA_FacUserID=@Fac_UserId and FA_Date=@FA_Date

end

alter proc FacultyAttendance_MarkOddPunchAttendance

@Fac_UserId int,

@FA_Date DateTime,

@IN1 varchar(100),
@OUT1 varchar(100),

@IN2 varchar(100),

@OUT2 varchar(100) ,

@Remarks varchar(200),

@InsertUserAccountId int

as

---CREATE ODD PUNCH LOG----

Declare @OddPunchCount int =(select count(*) from [FAcultyAttendance_OddPunchLog]


where FAOP_FAcUserID=@Fac_UserId

and FAOP_Date between cONVERT(DATe,DATEADD(mm, DATEDIFF(mm, 0, @FA_Date), 0))


and

Convert(Date,DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, @FA_Date) + 1, 0)))

INSERT INTO [dbo].[FAcultyAttendance_OddPunchLog] (FAOP_FAID, FAOP_FAcUserID,


FAOP_Date,

FAOP_IN1, FAOP_OUT1, FAOP_IN2, FAOP_OUT2, FAOP_MinLateBy, FAOP_MinEarlyBy,


FAOP_WorkingHours, FAOP_CalWorkingMins,

FAOP_OddPunchRemarks, FAOP_OddPunchAttDate, FAOP_OddPunchAttUserAccountId,


FAOP_InstId,FAOP_IsConfirmed,FAOP_RealIN1,FAOP_RealOUT1)

SELECT FA_ID, FA_FacUserID, FA_Date, FA_IN1, FA_OUT1, FA_IN2, FA_OUT2,


FA_MinLateBy, FA_MinEarlyBy, FA_WorkingHours,

FA_CalWorkingMins, @Remarks, GETDATE(), @InsertUserAccountId, FA_InstId,case


when @OddPunchCount>=3 then 0 else 1
end,CONVERT(Time(7),@IN1),CONVERT(time(7),@OUT1)

FROM Faculty_Attendance WHERE FA_FacUserID=@Fac_UserId

AND FA_Date= CONVERT(DATE,@FA_Date)


if( @OddPunchCount>3)

begin

Select CONVERT(varchar,@FA_Date,107) as FA_Date ,'Error' as


'MSG',@OddPunchCount

end

else

begin

---Get the late Time in Minutes

Declare @InTimeMin int =(select


DATEDIFF(MINUTE,FAM_FacInTime,CONVERT(time(7),@IN1) )from FacultyAttendanceMaster

where FAM_FacUserId=@Fac_UserId)

---Get the Early Time in Minutes

Declare @OutTimeMin int=(select


DATEDIFF(MINUTE,FAM_FacOutTime,CONVERT(time(7),@OUT1)) from
FacultyAttendanceMaster

where FAM_FacUserId=@Fac_UserId)

Declare @ActualWorkingMins int =(select


DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1)) from FacultyAttendanceMaster

where FAM_FacUserId=@Fac_UserId)

Declare @CalculatedWorkingMins int=(select


DATEDIFF(MINUTE,FAM_FacInTime,CONVERT(time(7),FAM_FacOutTime)) from
FacultyAttendanceMaster where FAM_FacUserId=@Fac_UserId and FAM_IsCurrent=1)

if(@CalculatedWorkingMins<@ActualWorkingMins) set
@ActualWorkingMins=@CalculatedWorkingMins
----if late or early

if(@InTimeMin>=0 or( @OutTimeMin<=0))

begin

begin

if(@InTimeMin<0)

set @InTimeMin=0

end

begin

if(@OutTimeMin>0)

set @OutTimeMin=0

end

update Faculty_Attendance set


FA_IN1=CONVERT(Time(7),@IN1),FA_OUT1=CONVERT(time(7),@OUT1),

FA_CalWorkingMins=DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1)),FA_IsConfirm=1,FA_I
sOddPunch=0,FA_MinLateBy=@InTimeMin,FA_MinEarlyBy=@OutTimeMin*(-
1),FA_OddPunchRemarks=@Remarks,FA_OddPunchAttDate=GETDATE(),FA_OddPunchAttUserAcco
untId=@InsertUserAccountId

FA_RealIN1=CONVERT(Time(7),@IN1), FA_RealOUT1=CONVERT(time(7),@OUT1),
FA_RealMinEarlyBy=@OutTimeMin*(-1), FA_RealMinLateBy=@InTimeMin,

FA_RealCalWorkingMins= DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1)) where


FA_FacUserID=@Fac_UserId and FA_Date=CONVERT(datetime,@FA_Date,107)

update faculty_attendance set FA_CalWorkingMins=@CalculatedWorkingMins-


(FA_MinEarlyby+FA_MinLateBy),FA_RealCalWorkingMins=@CalculatedWorkingMins-
(FA_MinEarlyby+FA_MinLateBy) where FA_FacUSerID=@Fac_UserId and
FA_Date=Convert(datetime,@FA_Date,107)

exec Faculty_MarkAttendanceWarnings @Fac_UserId ,@FA_Date


select CONVERT(varchar,@FA_Date,107) as FA_Date , 'Done' as 'MSG'
,@OddPunchCount

end

else

begin

update Faculty_Attendance set


FA_IN1=CONVERT(Time(7),@IN1),FA_OUT1=CONVERT(time(7),@OUT1),

FA_CalWorkingMins=DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1)),FA_IsConfirm=1,FA_I
sOddPunch=0,FA_MinLateBy=0,FA_MinEarlyBy=0,FA_OddPunchRemarks=@Remarks,

FA_OddPunchAttDate= getdate(),FA_OddPunchAttUserAccountId=@InsertUserAccountId,

FA_RealIN1=CONVERT(Time(7),@IN1), FA_RealOUT1=CONVERT(time(7),@OUT1),
FA_RealMinEarlyBy=0, FA_RealMinLateBy=0,

FA_RealCalWorkingMins= DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1))

where FA_FacUserID=@Fac_UserId and FA_Date=CONVERT(datetime,@FA_Date,107)

update faculty_attendance set FA_CalWorkingMins=@CalculatedWorkingMins-


(FA_MinEarlyby+FA_MinLateBy),FA_RealCalWorkingMins=@CalculatedWorkingMins-
(FA_MinEarlyby+FA_MinLateBy)

where FA_FacUSerID=@Fac_UserId and FA_Date=Convert(datetime,@FA_Date,107)

exec Faculty_MarkAttendanceWarnings @Fac_UserId ,@FA_Date

select CONVERT(varchar,@FA_Date,107) as FA_Date ,'Done' as 'MSG'


,@OddPunchCount

end

end

create proc FacultyAttendance_OddPunchAlloted

(
@FAOP_ID int,

@FAOP_FAID int,

@Remarks varchar(90),

@InsertUserAccountId int

as

begin

Declare @IN1 varchar(100)= (Select [FAOP_RealIN1] from [dbo].


[FAcultyAttendance_OddPunchLog] where [FAOP_ID]=@FAOP_ID)

Declare @OUT1 varchar(100)=(Select [FAOP_RealOUT1] from [dbo].


[FAcultyAttendance_OddPunchLog] where [FAOP_ID]=@FAOP_ID)

Declare @Fac_UserId int =( Select [FAOP_FAcUserID] from [dbo].


[FAcultyAttendance_OddPunchLog] where [FAOP_ID]=@FAOP_ID)

Declare @FA_Date datetime=(Select FA_Date from faculty_attendance where


FA_ID=@FAOP_FAID)

---Get the late Time in Minutes

Declare @InTimeMin int =(select


DATEDIFF(MINUTE,FAM_FacInTime,CONVERT(time(7),@IN1) )from FacultyAttendanceMaster

where FAM_FacUserId=@Fac_UserId)

---Get the Early Time in Minutes

Declare @OutTimeMin int=(select


DATEDIFF(MINUTE,FAM_FacOutTime,CONVERT(time(7),@OUT1)) from
FacultyAttendanceMaster

where FAM_FacUserId=@Fac_UserId)

Declare @ActualWorkingMins int =(select


DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1)) from FacultyAttendanceMaster
where FAM_FacUserId=@Fac_UserId)

Declare @CalculatedWorkingMins int=(select


DATEDIFF(MINUTE,FAM_FacInTime,CONVERT(time(7),FAM_FacOutTime)) from
FacultyAttendanceMaster where FAM_FacUserId=@Fac_UserId and FAM_IsCurrent=1)

if(@CalculatedWorkingMins<@ActualWorkingMins) set
@ActualWorkingMins=@CalculatedWorkingMins

----if late or early

if(@InTimeMin>=0 or( @OutTimeMin<=0))

begin

begin

if(@InTimeMin<0)

set @InTimeMin=0

end

begin

if(@OutTimeMin>0)

set @OutTimeMin=0

end

update Faculty_Attendance set


FA_IN1=CONVERT(Time(7),@IN1),FA_OUT1=CONVERT(time(7),@OUT1),

FA_CalWorkingMins=DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1)),FA_IsConfirm=1,FA_I
sOddPunch=0,FA_MinLateBy=@InTimeMin,FA_MinEarlyBy=@OutTimeMin*(-
1),FA_OddPunchRemarks=@Remarks,FA_OddPunchAttDate=GETDATE(),FA_OddPunchAttUserAcco
untId=@InsertUserAccountId

FA_RealIN1=CONVERT(Time(7),@IN1), FA_RealOUT1=CONVERT(time(7),@OUT1),
FA_RealMinEarlyBy=@OutTimeMin*(-1), FA_RealMinLateBy=@InTimeMin,

FA_RealCalWorkingMins= DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1)) where


FA_FacUserID=@Fac_UserId and FA_Date=CONVERT(datetime,@FA_Date,107)

update faculty_attendance set FA_CalWorkingMins=@CalculatedWorkingMins-


(FA_MinEarlyby+FA_MinLateBy),FA_RealCalWorkingMins=@CalculatedWorkingMins-
(FA_MinEarlyby+FA_MinLateBy) where FA_ID=@FAOP_FAID

exec Faculty_MarkAttendanceWarnings @Fac_UserId ,@FA_Date

end

else

begin

update Faculty_Attendance set


FA_IN1=CONVERT(Time(7),@IN1),FA_OUT1=CONVERT(time(7),@OUT1),

FA_CalWorkingMins=DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1)),FA_IsConfirm=1,FA_I
sOddPunch=0,FA_MinLateBy=0,FA_MinEarlyBy=0,FA_OddPunchRemarks=@Remarks,

FA_OddPunchAttDate= getdate(),FA_OddPunchAttUserAccountId=@InsertUserAccountId,

FA_RealIN1=CONVERT(Time(7),@IN1), FA_RealOUT1=CONVERT(time(7),@OUT1),

FA_RealMinEarlyBy=0, FA_RealMinLateBy=0,FA_RealCalWorkingMins=
DATEDIFF(MINUTE,@IN1,CONVERT(time(7),@OUT1))

where FA_ID=@FAOP_FAID

update faculty_attendance set FA_CalWorkingMins=@CalculatedWorkingMins-


(FA_MinEarlyby+FA_MinLateBy),FA_RealCalWorkingMins=@CalculatedWorkingMins-
(FA_MinEarlyby+FA_MinLateBy)

where FA_ID=@FAOP_FAID

exec Faculty_MarkAttendanceWarnings @Fac_UserId ,@FA_Date

end

update [dbo].[FAcultyAttendance_OddPunchLog] set


FAOP_IsConfirmed=1,FAOP_MgmntRemarks=@Remarks where FAOP_Id=@FAOP_ID
end

alter proc FacultyAttendance_LeaveDeductedBackup -- '2017-07-01','2017-07-


31',164,10711,20003

@FromDate Datetime,

@ToDate Datetime,

@LateMins Int,

@Fac_UserID int,

@InstId int,

@Remarks Varchar(50) ,

@InsertUserAccountId int

as

begin

Declare @EarlyMins int=( Select sum(FA_MinEarlyBy) from Faculty_Attendance where


FA_FacUserID=@Fac_UserID and FA_InstId=@InstId

and FA_date between cONVERT(DATe,DATEADD(mm, DATEDIFF(mm, 0, @FromDate), 0))

and Convert(Date,DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, @FromDate) + 1,


0))))

Declare @LateMin int = ( Select sum(FA_MinLateBy) from Faculty_Attendance where


FA_FacUserID=@Fac_UserID and FA_InstId=@InstId

and FA_date between cONVERT(DATe,DATEADD(mm, DATEDIFF(mm, 0, @FromDate), 0))

and Convert(Date,DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, @FromDate) + 1,


0))))
Declare @CalMins int = ( Select sum(FA_CalWorkingMins) from
Faculty_Attendance where FA_FacUserID=@Fac_UserID and FA_InstId=@InstId

and FA_date between cONVERT(DATe,DATEADD(mm, DATEDIFF(mm, 0, @FromDate), 0))

and Convert(Date,DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, @FromDate) + 1,


0))))

insert into Faculty_AttendanceLateMinsBackup (FAML_FacUserID, FAML_InstId,


FAML_MID, FAML_LateMins, FAML_EarlyMins, FAML_TotalMins, FAML_CalWorkingMins,
FAML_Remarks, FAML_InsertUserAccountId, FAML_InsertDate, FAML_FinId )

select top 1 FA_FacUserId,FA_InstId,DATEPART(m,


@FromDate),@LateMin,@EarlyMins,@LateMins+@EarlyMins,@CalMins,@Remarks,@InsertUserA
ccountId,getdate(),YEAR(@FromDate) from Faculty_Attendance where

FA_FacUserID=@Fac_UserID and FA_Date between cONVERT(DATe,DATEADD(mm,


DATEDIFF(mm, 0, @FromDate), 0))

and Convert(Date,DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, @FromDate) + 1,


0)))

Update Faculty_Attendance Set FA_IN1=(Select FAM_FacInTime from


FacultyAttendanceMaster where FAM_FacUserId=@Fac_UserID and FAM_IsCurrent=1),

FA_OUT1=(Select FAM_FacOutTime from FacultyAttendanceMaster where


FAM_FacUserId=@Fac_UserID and FAM_IsCurrent=1),FA_MinEarlyBy=0,FA_MinLateBy=0,

FA_CalWorkingMins=(Select FAM_DailyWorkingHours from FacultyAttendanceMaster


where FAM_FacUserId=@Fac_UserID and FAM_IsCurrent=1) where

FA_FacUserID=@Fac_UserID and FA_Date between cONVERT(DATe,DATEADD(mm,


DATEDIFF(mm, 0, @FromDate), 0))

and Convert(Date,DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, @FromDate) + 1,


0)))

and (FA_MinEarlyBy!=0 or(FA_MinLateBy!=0) )

end

You might also like