Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <cfcomponent name="SFOvertimeVN" hint="SunFish Overtime Formula Object">
- <cfset objAttendance = createobject("component","SFAttendance")/>
- <cfset objAttendance.checkDBChangeAll("TTAMOVERTIME","splitovtdaytypeph","tinyint","1")>
- <cffunction name="overtimeIndexOtherPH">
- <cfargument name="ovtday" default="#now()#">
- <cfargument name="empid" default="">
- <cfargument name="company_id" default=#request.scookie.coid#>
- <cfargument name="attend_id" default=""> <!--- attendance_id --->
- <cfargument name="ovttype" default="">
- <cfargument name="startovt" default="00:00">
- <cfargument name="endovt" default="00:00">
- <cfargument name="AUTO" default="0">
- <cfargument name="IN" default="0">
- <cfargument name="BREAK1" default="0">
- <cfargument name="BREAK2" default="0">
- <cfargument name="BREAK3" default="0">
- <cfargument name="BREAK4" default="0">
- <cfargument name="BREAK5" default="0">
- <cfargument name="OUT" default="0">
- <cfargument name="ovtdetail_id" default="">
- <cfargument name="starttime_ot" default="00:00">
- <cfargument name="isND" default="0">
- <!--- <cf_sfwritelog dump="Arguments" prefix="Rangga_PH_" folder="rangga"> --->
- <cfdump var="hello buddy">
- <cfset objectAttendance = CreateObject("component","SFAttendance")/>
- <cfset objOvertime = createobject("component","SFOvertime")/>
- <cfset LOCAL.NonAuto = IN + BREAK1 + BREAK2+ BREAK3+ BREAK4+ BREAK5+ OUT>
- <cfquery datasource="#REQUEST.SDSN#" name="qGetOvtSetting">
- SELECT step, value FROM TTADOVERTIMEDEDUCT
- WHERE overtime_code = <cfqueryparam value="#ovttype#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <!--- <cfdump var="#qGetOvtSetting#"> --->
- <cfset qSplitOvertime = splitOvertimePh(ovttype,startovt,endovt,empid,company_id,attend_id,starttime_ot,isND,AUTO,NONAUTO)>
- <cfif val(qGetOvtSetting.step) neq 0>
- <cfset local.totalminutesovt = val(AUTO) + val(NONAUTO)>
- <cfset local.recurdeduct = int(val(totalminutesovt)/val(qGetOvtSetting.step))>
- <cfset local.queryDeductDef = QueryNew("step, startdeduct, enddeduct", "integer, Timestamp, Timestamp")>
- <cfloop from="1" to="#recurdeduct#" index="idxrecur">
- <cfset local.thestep = idxrecur*val(qGetOvtSetting.step)>
- <cfset local.enddeduct = dateAdd('n',thestep,startovt)>
- <cfset local.startdeduct = dateAdd('n',qGetOvtSetting.value*-1,enddeduct)>
- <cfset QueryAddRow(queryDeductDef, 1)>
- <cfset QuerySetCell(queryDeductDef, "step", thestep)>
- <cfset QuerySetCell(queryDeductDef, "startdeduct", startdeduct)>
- <cfset QuerySetCell(queryDeductDef, "enddeduct", enddeduct)>
- </cfloop>
- </cfif>
- <cfset local.acceptedOvt = 0>
- <cfset totalIndex = 0>
- <cfset totalIndexNSD = 0>
- <cfset local.lstidx = ''>
- <cfset TotalLstIndex = "">
- <cfset local.deducttime = "">
- <cfset local.totaldeduct = "">
- <cfquery datasource="#REQUEST.SDSN#" name="qOther">
- SELECT code FROM TTAMOVTTYPE
- </cfquery>
- <cfset TOTALOVTOTHER = IN+BREAK1+BREAK2+BREAK3+BREAK4+BREAK5+OUT>
- <cfloop query="qOther">
- <cfset "Total#code#" = objOvertime.IndexOther(TOTALOVTOTHER,ovttype,code)>
- </cfloop>
- <!--- <cfdump var="#queryDeductDef#"> --->
- <cfquery datasource="#REQUEST.SDSN#" name="qDelOvtIndex">
- DELETE FROM TTADATTOVTINDEX
- WHERE attend_id = <cfqueryparam value="#arguments.ATTEND_ID#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <!--- <cf_sfwritelog dump="qSplitOvertime" prefix="Rangga_PH_36_"> --->
- <cfset local.lstidxtemp = "">
- <cfset local.totalExcess8 = 0>
- <cfset local.totalFirst8 = 0>
- <cfset local.totalNSD1 = 0>
- <cfset local.totalNSD2 = 0>
- <cfset listOvttypeph = "">
- <cfloop query="qSplitOvertime">
- <cfset ovtdaystart = createdatetime(year(qSplitOvertime.startovt),month(qSplitOvertime.startovt),day(qSplitOvertime.startovt),0,0,0)>
- <cfset ovtTime = 0>
- <cfif val(qGetOvtSetting.step) neq 0>
- <cfset ovtTime = DateDiff('n',qSplitOvertime.startovt, qSplitOvertime.endtovt)>
- <cfset local.deducttime = "">
- <cfelse>
- <cfset ovtTime = DateDiff('n',qSplitOvertime.startovt, qSplitOvertime.endtovt)>
- <!---
- sementara
- <cfif qSplitOvertime.nsd_no eq 0>
- <cfset local.deducttime = "">
- <cfset acceptedOvt = acceptedOvt+ovtTime>
- </cfif>
- --->
- </cfif>
- <!--- <cfset ovtTime = DateDiff('n',qSplitOvertime.startovt, qSplitOvertime.endtovt)> --->
- <cfset theIndex = IndexOvertimePh(ovtTime,ovttype,1,qSplitOvertime.nsd_no)>
- <!---<cfset totalIndex = totalIndex + theIndex.index>--->
- <cfset totalIndex = theIndex.index + theIndex.otnsd>
- <cfset totalIndexNSD = totalIndexNSD + theIndex.otnsd>
- <cfset lstidxtemp = ListAppend(lstidxtemp,theIndex.lstidx,"|")>
- <cfquery datasource="#REQUEST.SDSN#" name="qUpdateOvertimeNsd">
- UPDATE TTADATTOVTDETAILVN
- SET totalidx = '#totalIndex#'
- , total_ot = '#theIndex.index#'
- , totalnsd = '#theIndex.otnsd#'
- WHERE detailvn_id = #qSplitOvertime.detailvn_id#
- </cfquery>
- <cfif qSplitOvertime.nsd_no eq 0>
- <cfif ListFindNoCase(listOvttypeph,"Excess8") eq 0>
- <cfset listOvttypeph = ListAppend(listOvttypeph,"Excess8")>
- </cfif>
- <cfset factorExcess8 = qSplitOvertime.ot_factor>
- <cfset totalExcess8 = totalExcess8 + theIndex.otnsd + theIndex.index>
- <cfelseif qSplitOvertime.nsd_no eq 0>
- <cfif ListFindNoCase(listOvttypeph,"First8") eq 0>
- <cfset listOvttypeph = ListAppend(listOvttypeph,"First8")>
- </cfif>
- <cfset factorFirst8 = qSplitOvertime.ot_factor>
- <cfset totalFirst8 = totalFirst8 + theIndex.otnsd + theIndex.index>
- <cfelseif qSplitOvertime.nsd_no eq 1>
- <cfif ListFindNoCase(listOvttypeph,"NSD1") eq 0>
- <cfset listOvttypeph = ListAppend(listOvttypeph,"NSD1")>
- </cfif>
- <cfset factorNSD1 = qSplitOvertime.nsd_factor>
- <cfset totalNSD1 = totalNSD1 + theIndex.otnsd + theIndex.index>
- <cfelseif qSplitOvertime.nsd_no eq 2>
- <cfif ListFindNoCase(listOvttypeph,"NSD2") eq 0>
- <cfset listOvttypeph = ListAppend(listOvttypeph,"NSD2")>
- </cfif>
- <cfset factorNSD2 = qSplitOvertime.nsd_factor>
- <cfset totalNSD2 = totalNSD2 + theIndex.otnsd + theIndex.index>
- </cfif>
- </cfloop>
- <cfloop list="#listOvttypeph#" index="OTcode">
- <cfif Evaluate('factor#OTcode#') neq "">
- <cfset factorOT=Evaluate('factor#OTcode#')>
- <cfelse>
- <cfset factorOT=0>
- </cfif>
- <cfif Evaluate('total#OTcode#') neq "">
- <cfset totalOT=Evaluate('total#OTcode#')>
- <cfelse>
- <cfset totalOT=0>
- </cfif>
- <cfquery datasource="#REQUEST.SDSN#" name="qInsOvtIndex">
- INSERT INTO TTADATTOVTINDEX
- VALUES(
- <cfqueryparam value="#arguments.ATTEND_ID#" cfsqltype="cf_sql_varchar">,
- <cfqueryparam value="#ovtday#" cfsqltype="CF_SQL_TIMESTAMP">,
- <cfqueryparam value="#OTcode#" cfsqltype="cf_sql_varchar">,
- <cfqueryparam value="#factorOT#" cfsqltype="CF_SQL_FLOAT">,
- <cfqueryparam value="#totalOT#" cfsqltype="CF_SQL_FLOAT">,
- NULL, <!--- dikosongin dulu. nanti dipakai untuk premium night / bukan (pake utk philipine) --->
- <cfqueryparam value="#Request.scookie.user.uname#" cfsqltype="cf_sql_varchar">,
- <cfqueryparam value="#now()#" cfsqltype="CF_SQL_TIMESTAMP">
- )
- </cfquery>
- </cfloop>
- <cfset totalAllIndex = totalIndex + totalIndexNSD>
- <!--- Update total Index attendance --->
- <cfquery datasource="#REQUEST.SDSN#" name="qUpdateAttendance">
- UPDATE TTADATTENDANCE
- SET total_otindex = <cfqueryparam value="#totalAllIndex#" cfsqltype="cf_sql_decimal" scale="8">
- ,total_ot = <cfqueryparam value="#acceptedOvt#" cfsqltype="cf_sql_decimal" scale="8">
- WHERE attend_id = <cfqueryparam value="#arguments.ATTEND_ID#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <cfquery datasource="#REQUEST.SDSN#" name="qUpdateAttendance">
- UPDATE TTADATTOVTDETAIL
- SET accepted_min = <cfqueryparam value="#acceptedOvt#" cfsqltype="cf_sql_decimal" scale="8">
- WHERE ovtdetail_id = <cfqueryparam value="#arguments.ovtdetail_id#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <cfquery datasource="#REQUEST.SDSN#" name="qDelOvtOther">
- DELETE FROM TTADATTOVTOTHER
- WHERE attend_id = <cfqueryparam value="#arguments.ATTEND_ID#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <cfquery datasource="#REQUEST.SDSN#" name="qSelectTempPH">
- DELETE FROM TTADATTOVTDETAILVN WHERE attend_id NOT IN (SELECT attend_id FROM TTADATTENDANCE)
- <!--- bersihkan data, hapus detail yang sudah tidak ada di attendance --->
- </cfquery>
- <cfloop query="qOther"> <!--- masukkan data overtime other --->
- <cfquery datasource="#REQUEST.SDSN#" name="qInsOvtOther">
- INSERT INTO TTADATTOVTOTHER
- VALUES(
- <cfqueryparam value="#arguments.ATTEND_ID#" cfsqltype="cf_sql_varchar">,
- <cfqueryparam value="#ovtday#" cfsqltype="CF_SQL_TIMESTAMP">,
- <cfqueryparam value="#qOther.code#" cfsqltype="cf_sql_varchar">,
- <cfqueryparam value="#evaluate("Total#Code#")#" cfsqltype="CF_SQL_FLOAT">,
- <cfqueryparam value="#Request.scookie.user.uname#" cfsqltype="cf_sql_varchar">,
- <cfqueryparam value="#now()#" cfsqltype="CF_SQL_TIMESTAMP">
- )
- </cfquery>
- </cfloop>
- <cfquery name="qCheckOvtDetPhi" datasource="#REQUEST.SDSN#">
- SELECT * FROM TTADATTOVTDETAILVN
- where attend_id = <cfqueryparam value="#arguments.ATTEND_ID#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <cfreturn TotalLstIndex>
- </cffunction>
- <cffunction name="splitOvertimePh">
- <cfargument name="overtimecode" default="">
- <cfargument name="startovertime" default="">
- <cfargument name="endovertime" default="">
- <cfargument name="emp_id" default="#request.scookie.user.empid#">
- <cfargument name="company_id" default="#request.scookie.coid#">
- <cfargument name="attend_id" default="">
- <cfargument name="starttime_ot" default="">
- <cfargument name="isND" default="0">
- <cfargument name="AUTO" default="0">
- <cfargument name="NONAUTO" default="0">
- <cfset LOCAL.strckDetailPhi = Arguments/>
- <cfset objOvtPhi = CreateObject("component","SMOvertimeVN")/>
- <cfset objectAttendance = CreateObject("component","SFAttendance")/>
- <cfset shiftdailyCode = "">
- <cfset ovCode ="overtimecode,overtimecode_restd,overtimecode_ph,overtimecode_sd,overtimecode_phrestd,overtimecode_sdrestd">
- <cfquery datasource="#REQUEST.SDSN#" name="qGetAttshift">
- SELECT shiftdaily_code, starttime, endtime, shiftstarttime, shiftendtime,daytype FROM TTADATTENDANCE
- WHERE attend_id = <cfqueryparam value="#arguments.attend_id#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <cfif qGetAttshift.recordcount eq 0>
- <cfset qDefShift = objectAttendance.GetDefaultShift(arguments.emp_id,arguments.company_id,startovertime)>
- <cfset shiftdailyCode = qDefShift.shiftdailycode>
- <cfset shiftdailystart = qDefShift.starttime>
- <cfset shiftdailyend = qDefShift.endtime>
- <cfelse>
- <cfset shiftdailyCode = qGetAttshift.shiftdaily_code>
- <cfset shiftdailystart = qGetAttshift.shiftstarttime>
- <cfset shiftdailyend = qGetAttshift.shiftendtime>
- </cfif>
- <cfquery datasource="#REQUEST.SDSN#" name="qGetOvtCode">
- SELECT *
- FROM TTAMSHIFTDAILY
- WHERE shiftdailycode = <cfqueryparam value="#shiftdailyCode#" cfsqltype="cf_sql_varchar">
- and company_id = <cfqueryparam value="#arguments.company_id#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <!---cf_sfwritelog dump="qGetOvtCode" prefix="rangga" folder="rangga"--->
- <cfset local.ovtdayphi = CreateDate(year(startovertime),month(startovertime),day(startovertime))>
- <cfquery datasource="#REQUEST.SDSN#" name="qGetOvertimeNsd"> <!--- cari setting NSD --->
- SELECT startnsd, endnsd, nsd_no,factor,factor2 FROM TTADOVERTIMENSD
- WHERE overtime_code = <cfqueryparam value="#overtimecode#" cfsqltype="cf_sql_varchar">
- ORDER BY startnsd
- </cfquery>
- <cfquery datasource="#REQUEST.SDSN#" name="qGetOvertimeEight"> <!--- cari setting Overtime --->
- SELECT step, value, factor_no FROM TTADOVERTIMEFACTOR
- WHERE overtime_code = <cfqueryparam value="#overtimecode#" cfsqltype="cf_sql_varchar">
- ORDER BY factor_no
- </cfquery>
- <cfquery datasource="#REQUEST.SDSN#" name="qGetOvertimeSplit"> <!--- cari setting Overtime Split for PH --->
- SELECT splitovtdaytypeph FROM TTAMOVERTIME
- WHERE overtime_code = <cfqueryparam value="#overtimecode#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <cfif qGetOvertimeSplit.splitovtdaytypeph eq 1>
- <cfset splitovtdaytypeph = 1>
- <cfelse>
- <cfset splitovtdaytypeph = 0>
- </cfif>
- <cfif isND eq 0>
- <cfset starttime_ot = CreateDateTime(year(startovertime),month(startovertime),day(startovertime),hour(startovertime),minute(startovertime),'00')>
- <cfelse>
- <cfset starttime_ot = CreateDateTime(year(starttime_ot),month(starttime_ot),day(starttime_ot),hour(starttime_ot),minute(starttime_ot),'00')>
- <!--- <cfif starttime_ot gt startovertime>
- <cfset starttime_ot = DateAdd('d',-1,starttime_ot)>
- </cfif> --->
- </cfif>
- <!--- <cfoutput><script>alert('#TimeFormat(starttime_ot)# ~ #isND#') </script> </cfoutput> --->
- <!--- remark sementara untuk update atmelph - tasya-
- <cfif day(starttime_ot) gt day(startovertime)>
- <cfset overtimetime_temp = startovertime>
- <cfelse>
- <cfset overtimetime_temp = starttime_ot>
- </cfif> --->
- <cfset overtimetime_temp = startovertime>
- <cfset overtime_codenext = ''>
- <cfset shiftdailyCodenext = ''>
- <cfset starttimensd = "">
- <cfset startnsdbefore = "">
- <cfset endtimensd = "">
- <cfset first8endforNSD = "">
- <!---start: Hitung First 8 ( berdasarkan setting ) --->
- <cfset startOv = startovertime>
- <cfset EndOv = endovertime>
- <cfif startOV lt qGetAttshift.shiftstarttime and EndOV gt qGetAttShift.shiftstarttime>
- <cfset EndOv = qGetAttShift.shiftstarttime>
- <cfelseif EndOv gt qGetAttShift.shiftendtime and startOv lt qGetAttShift.shiftendtime>
- <cfset startOv = qGetAttShift.shiftendtime>
- </cfif>
- <cfset TimeStart = startOv>
- <cfset TimeEnd = EndOv>
- <cfset getbreak = 0 >
- <cfset local.bedahari = 0 >
- <cfset local.bedahari_otno = 0 > <!--- perpotongan pada attendtype yg berbeda harus mengikuti first8/exceed8 --->
- <cfset First8val = val(ListFirst(valuelist(qGetOvertimeEight.step)))*60>
- <cfset First8valNextType = 0>
- <!--- <cfoutput><script>alert('#AUTO#');</script></cfoutput>--->
- <cfset startov2=0> <cfset endov2= 0>
- <cfif endovertime gt endov> <!--- YHNOW --->
- <cfset StartOv2 = qGetAttShift.shiftendtime>
- <cfset EndOv2= endovertime>
- <cfset TimeStart2 = startov2>
- <cfset TimeEnd2 = EndOv2>
- </cfif>
- <cfif AUTO eq 0 or NONAUTO gt 0>
- <cfloop query="qGetOvertimeEight">
- <cfif dateDiff("n", startOv, EndOv) gt 0>
- <cfset overtimestep = (val(qGetOvertimeEight.step)*60)>
- <cfif dateDiff("n", TimeStart, TimeEnd) gt overtimestep>
- <cfset TimeStart = startOv >
- <cfset TimeEndTemp = DateAdd("n",overtimestep,TimeStart)>
- <cfif TimeStart lt TimeEndTemp AND TimeEndTemp lte TimeEnd> <!--- BUG50416-62963 --->
- <cfset TimeEnd = DateAdd("n",overtimestep,TimeStart)>
- </cfif>
- <cfset startOv = TimeEnd >
- <cfset getbreak = 0 >
- <cfelse>
- <cfset TimeStart = startOv>
- <cfset TimeEnd = EndOv >
- <cfset getbreak = 1>
- </cfif>
- <cfif TimeStart lt TimeEnd>
- <!--- <cfset first8endforNSD = TimeEnd> --->
- <cfset timebetween = CreateDate(year(TimeEnd),month(TimeEnd),day(TimeEnd))>
- <cfquery datasource="#REQUEST.SDSN#" name="qcekovtph" maxrows="1">
- SELECT *
- FROM TTADATTOVTDETAILVN
- WHERE emp_id = <cfqueryparam value="#arguments.emp_id#" cfsqltype="cf_sql_varchar">
- AND company_id = <cfqueryparam value="#arguments.company_id#" cfsqltype="cf_sql_integer">
- AND (startovt = <cfqueryparam value="#TimeStart#" cfsqltype="cf_sql_timestamp">
- AND endtovt = <cfqueryparam value="#TimeEnd#" cfsqltype="cf_sql_timestamp">)
- </cfquery>
- <cfif qcekovtph.recordcount eq 0>
- <cfset strckDetailPhi["startovt"]= TimeStart>
- <cfset strckDetailPhi["endtovt"]= TimeEnd>
- <cfset strckDetailPhi["ovtimetype"]="OVT">
- <cfset strckDetailPhi["nsd_no"]= 0>
- <cfset strckDetailPhi["ot_no"]= val(qGetOvertimeEight.factor_no)>
- <cfset strckDetailPhi["nsd_factor"]= 0>
- <cfset strckDetailPhi["ot_factor"]= qGetOvertimeEight.value>
- <cfdump var="kesini oyabin1"><cfset Local.Retvar = objOvtPhi.Insert(strckDetailPhi)>
- </cfif>
- </cfif>
- </cfif>
- <!--- </cfloop> --->
- </cfloop>
- <cfif startov2 neq 0>
- <cfloop query="qGetOvertimeEight"> <!--- YHNOW --->
- <cfif dateDiff("n", startOv2, EndOv2) gt 0>
- <cfif dateDiff("n", TimeStart2, TimeEnd2) gt (val(qGetOvertimeEight.step)*60)>
- <cfset TimeStart2 = startOv2 >
- <cfset TimeEnd2 = DateAdd("n",(val(qGetOvertimeEight.step)*60),TimeStart2)>
- <cfset startOv2 = TimeEnd2 >
- <cfset getbreak = 0 >
- <cfelse>
- <cfset TimeStart2 = startOv2>
- <cfset TimeEnd2 = EndOv2 >
- <cfset getbreak = 1>
- </cfif>
- <cfset strckDetailPhi["startovt"]= TimeStart2>
- <cfset strckDetailPhi["endtovt"]= TimeEnd2>
- <cfset strckDetailPhi["ovtimetype"]="OVT">
- <cfset strckDetailPhi["nsd_no"]= 0>
- <cfset strckDetailPhi["ot_no"]= val(qGetOvertimeEight.factor_no)>
- <cfset strckDetailPhi["nsd_factor"]= 0>
- <cfset strckDetailPhi["ot_factor"]= qGetOvertimeEight.value>
- <cfdump var="kesini bos3"><cfset Local.Retvar = objOvtPhi.Insert(strckDetailPhi)>
- <cfif getbreak >
- <cfbreak>
- </cfif>
- </cfif>
- </cfloop>
- </cfif>
- </cfif>
- <!--- end First 8 --->
- <!--- Start ND --->
- <cfset First8startTime = startovertime>
- <!--- <cfset First8endTime=first8endforNSD> --->
- <cfset otno=0>
- <cfset First8endTime = endovertime>
- <!---<cfset First8endTime = DateAdd("n",(First8val),startovertime)>--->
- <!--- <cfoutput><script>alert('#TimeFormat(First8endTime)# ~ #NONAUTO#') </script> </cfoutput> --->
- <cfif qGetOvertimeNsd.recordcount>
- <cfloop query="qGetOvertimeNsd">
- <cfset startND = qGetOvertimeNsd.startNsd>
- <cfset endND = qGetOvertimeNsd.endNsd>
- <cfset nextDay = Datediff("d", dateformat(startND,"yyyy/mm/dd"),dateformat(endND,"yyyy/mm/dd")) >
- <cfset startND = CreateDateTime(Year(overtimetime_temp),month(overtimetime_temp),day(overtimetime_temp),hour(startND),minute(startND),0)>
- <cfset endND = DateAdd("d",nextDay,CreateDateTime(Year(overtimetime_temp),month(overtimetime_temp),day(overtimetime_temp),hour(endND),minute(endND),0))>
- <cfset prevStartND = dateadd("d",-1,startND)>
- <cfset prevEndND = dateadd("d",-1,EndND)>
- <cfif DateDiff("n",endovertime,prevEndND) gt 0>
- <cfset prevEndND = endovertime >
- </cfif>
- <cfif DateDiff("n",startND,startovertime) gt 0>
- <cfset startND = startovertime >
- </cfif>
- <!--- <cfoutput><script>alert('#DateTimeformat(endND)# #DateTimeformat(endovertime)#');</script></cfoutput>--->
- <cfif DateDiff("n",endovertime,endND) gt 0>
- <cfset endND = endovertime >
- </cfif>
- <!--- <cfif TimeFormat(overtimetime_temp) lt TimeFormat(qGetOvertimeNsd.startNsd) AND Datediff("d", dateformat(shiftdailystart,"yyyy/mm/dd"),dateformat(overtimetime_temp,"yyyy/mm/dd")) gt 0>
- <cfset startND = DateAdd("d",-1,startND)><cfoutput><script>alert('1--#TimeFormat(overtimetime_temp)# ~ #TimeFormat(qGetOvertimeNsd.startNsd)# ~ #TimeFormat(shiftdailystart)#~#TimeFormat(endovertime)# ~ #TimeFormat(startND)#~#TimeFormat(endND)#') </script> </cfoutput>
- </cfif>--->
- <cfdump var="#startND#">
- <cfdump var="#endND#">
- <cfif overtimetime_temp lt startND AND Datediff("d", dateformat(shiftdailystart,"yyyy/mm/dd"),dateformat(overtimetime_temp,"yyyy/mm/dd")) gt 0 and AUTO gt 0 AND NONAUTO eq 0>
- <cfset startND = DateAdd("d",-1,startND)>
- </cfif>
- <cfif startovertime gt prevStartND and startovertime lt prevEndND><!---nsd jika shift pagi hari beririsan dengan setting nsd--->
- <cfset strckDetailPhi["startovt"]= startovertime>
- <cfset strckDetailPhi["endtovt"]= prevEndND>
- <cfset strckDetailPhi["nsd_factor"]= qGetOvertimeNsd.factor>
- <cfset strckDetailPhi["ovtimetype"]="NS">
- <cfset strckDetailPhi["ot_no"]= 0>
- <cfset strckDetailPhi["nsd_no"]= qGetOvertimeNsd.nsd_no>
- <cfset strckDetailPhi["ot_factor"]=0>
- <cfquery name="qCheckOvtDetPhi" datasource="#REQUEST.SDSN#">
- SELECT * FROM TTADATTOVTDETAILVN
- where startovt = #CREATEODBCDATETIME(strckDetailPhi["startovt"])# AND endtovt=#CREATEODBCDATETIME(strckDetailPhi["endtovt"])#
- and attend_id = <cfqueryparam value="#arguments.ATTEND_ID#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <cfif qCheckOvtDetPhi.recordcount eq 0>
- <cfdump var="kesini bos4"><cfset Local.Retvar = objOvtPhi.Insert(strckDetailPhi)>
- <cfelse>
- <cfdump var="kesini bos44">
- <cfdump var="#qCheckOvtDetPhi#">
- </cfif>
- </cfif>
- <!--- <cfoutput><script>alert('#TimeFormat(overtimetime_temp)# ~ #TimeFormat(First8endTime)# ~ #TimeFormat(startovertime)#~#TimeFormat(endovertime)# ~ #TimeFormat(startND)#~#TimeFormat(endND)#') </script> </cfoutput>--->
- <!--- <!---tasya: for NSD REG --->--->
- <cfif DateDiff("n",startND,endovertime) gt 0 >
- <cfif AUTO gt 0 AND NONAUTO eq 0> <!---tasya: for NSD REG only (NONAUTO eq 0=tidak ada ovt) ~~ NSD Reg belum dipotong jika attend type berbeda (belum yakin casenya seperti apa)--->
- <cfset strckDetailPhi["startovt"]= startND>
- <cfset strckDetailPhi["endtovt"]= endND>
- <cfset strckDetailPhi["nsd_type"]= 'REG'>
- <cfset strckDetailPhi["ot_no"]= 0>
- <cfset strckDetailPhi["nsd_no"]= qGetOvertimeNsd.nsd_no>
- <cfset strckDetailPhi["nsd_factor"]= qGetOvertimeNsd.factor>
- <cfset strckDetailPhi["ovtimetype"]="NS">
- <cfset strckDetailPhi["ot_factor"]=0>
- <cfquery name="qCheckOvtDetPhi" datasource="#REQUEST.SDSN#">
- SELECT * FROM TTADATTOVTDETAILVN
- where startovt = #CREATEODBCDATETIME(startND)# AND endtovt=#CREATEODBCDATETIME(endND)#
- AND nsd_no = #qGetOvertimeNsd.currentRow# and ot_no = 0
- and attend_id = <cfqueryparam value="#arguments.ATTEND_ID#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <cfif qCheckOvtDetPhi.recordcount eq 0>
- <cfdump var="kesini bos5"><cfset Local.Retvar = objOvtPhi.Insert(strckDetailPhi)>
- <cfelse>
- <cfdump var="kesini bos55">
- <cfdump var="#qCheckOvtDetPhi#">
- </cfif>
- </cfif>
- </cfif>
- <!---end of NSD REG--->
- <cfif DateDiff("n",startND,endovertime) gt 0 or AUTO gt 0>
- <cfif NONAUTO neq 0>
- <cfset strckDetailPhi["startovt"]= startND>
- <cfset strckDetailPhi["endtovt"]= endND>
- <cfset strckDetailPhi["ot_no"]= 0>
- <cfset strckDetailPhi["nsd_no"]= qGetOvertimeNsd.nsd_no>
- <cfset strckDetailPhi["nsd_factor"]= qGetOvertimeNsd.factor>
- <cfset strckDetailPhi["ot_factor"]=qGetOvertimeNsd.factor>
- <cfset strckDetailPhi["ovtimetype"]="NS">
- <cfquery name="qCheckOvtDetPhi" datasource="#REQUEST.SDSN#">
- SELECT * FROM TTADATTOVTDETAILVN
- where startovt = #CREATEODBCDATETIME(strckDetailPhi["startovt"])# AND endtovt=#CREATEODBCDATETIME(strckDetailPhi["endtovt"])#
- AND nsd_no = #qGetOvertimeNsd.nsd_no#
- and attend_id = <cfqueryparam value="#arguments.ATTEND_ID#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <cfif qCheckOvtDetPhi.recordcount eq 0>
- <cfdump var="masuk sini bosss222">
- <cfset Local.Retvar = objOvtPhi.Insert(strckDetailPhi)>
- </cfif>
- </cfif>
- <cfelseif DateDiff("n",startND,endovertime) gt 0>
- <cfset startND = DateAdd("d",-1,CreateDateTime(Year(overtimetime_temp),month(overtimetime_temp),day(overtimetime_temp),hour(startND),minute(startND),0))>
- <cfset endND = CreateDateTime(Year(overtimetime_temp),month(overtimetime_temp),day(overtimetime_temp),hour(endND),minute(endND),0)>
- <cfif DateDiff("n",startND,startovertime) gt 0>
- <cfset startND = startovertime >
- </cfif>
- <cfif DateDiff("n",endovertime,endND) gt 0>
- <cfset endND = endovertime >
- </cfif>
- <cfif DateDiff("n",startND,First8endTime) gt 0 AND DateDiff("n",First8endTime,startND) gt 0>
- <cfelse>
- <cfif DateDiff("n",startND,endND) gt 0>
- <cfset strckDetailPhi["startovt"]= startND>
- <cfset strckDetailPhi["endtovt"]= endND>
- <cfset strckDetailPhi["ovtimetype"]="NS">
- <cfset strckDetailPhi["nsd_no"]= qGetOvertimeNsd.nsd_no>
- <cfset strckDetailPhi["ot_no"]= 0>
- <cfset strckDetailPhi["nsd_factor"]= qGetOvertimeNsd.factor>
- <cfset strckDetailPhi["ot_factor"]=0>
- <cfquery name="qCheckOvtDetPhi" datasource="#REQUEST.SDSN#">
- SELECT * FROM TTADATTOVTDETAILVN
- where startovt = #CREATEODBCDATETIME(startND)# AND endtovt=#CREATEODBCDATETIME(endND)#
- and attend_id = <cfqueryparam value="#arguments.ATTEND_ID#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <cfif qCheckOvtDetPhi.recordcount eq 0>
- <cfdump var="kesini bos10"><cfset Local.Retvar = objOvtPhi.Insert(strckDetailPhi)>
- <cfelse>
- <cfdump var="kesini bos1010">
- <cfdump var="#qCheckOvtDetPhi#">
- </cfif>
- </cfif>
- </cfif>
- <cfelse>
- <!--- <cfdump var="#startND#" label="startND">
- <cfdump var="#endovertime#" label="endovertime"> --->
- </cfif>
- <!--- End ND --->
- </cfloop>
- </cfif>
- <cfquery datasource="#REQUEST.SDSN#" name="qSelectTempPHRet">
- SELECT detailvn_id, startovt, endtovt, <cfif REQUEST.DBDRIVER eq "MYSQL">TIME_TO_SEC(TIMEDIFF(startovt,endtovt))/60<cfelse>datediff(n,startovt, endtovt)</cfif> diff, ot_factor,nsd_no,nsd_factor
- FROM TTADATTOVTDETAILVN
- WHERE emp_id = <cfqueryparam value="#arguments.emp_id#" cfsqltype="cf_sql_varchar">
- AND attend_id = <cfqueryparam value="#arguments.attend_id#" cfsqltype="cf_sql_varchar">
- ORDER BY startovt ASC
- </cfquery>
- <Cfdump var="#qSelectTempPHRet#">
- <cfreturn qSelectTempPHRet>
- </cffunction>
- <!--- FUNCTION GENERATE INDEX PHILLIPINES--->
- <cffunction name="IndexOvertimePh">
- <cfargument name="OTTime" default="0">
- <cfargument name="OTType" default="">
- <cfargument name="ot_no" default="">
- <cfargument name="nsd_no" default="">
- <!--- <cfdump var="#arguments#"> --->
- <!---<cfoutput><script>alert("#OTType#");</script></cfoutput>--->
- <cfquery datasource="#REQUEST.SDSN#" name="qGetOvtLimit">
- SELECT otrounding, otroundlimit FROM TTAMOVERTIME
- WHERE overtime_code = <cfqueryparam value="#OTType#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <cfquery datasource="#REQUEST.SDSN#" name="qGetOvtFactor">
- SELECT step,value,factor_no FROM TTADOVERTIMEFACTOR
- WHERE overtime_code = <cfqueryparam value="#OTType#" cfsqltype="cf_sql_varchar">
- <!--- AND step = <cfqueryparam value="#ot_no#" cfsqltype="cf_sql_integer"> --->
- ORDER BY FACTOR_NO
- </cfquery>
- <cfquery datasource="#REQUEST.SDSN#" name="qGetOvtNSD">
- SELECT nsd_no, factor, factor2 FROM TTADOVERTIMENSD
- WHERE overtime_code = <cfqueryparam value="#OTType#" cfsqltype="cf_sql_varchar">
- AND nsd_no = <cfqueryparam value="#arguments.nsd_no#" cfsqltype="cf_sql_integer">
- </cfquery>
- <!--- <cfoutput><script>alert("#OTType#");</script></cfoutput> --->
- <cfif val(qGetOvtLimit.otrounding) gt 0>
- <cfset local.sisaOT = (ARGUMENTS.OTTIME mod 60)>
- <cfset ARGUMENTS.OTTIME = (INT(ARGUMENTS.OTTIME/60) * 60) + (INT(sisaOT/val(qGetOvtLimit.otrounding)) * val(qGetOvtLimit.otrounding)) + IIF((sisaOT mod val(qGetOvtLimit.otrounding)) gte qGetOvtLimit.otroundlimit, val(qGetOvtLimit.otrounding), 0)>
- </cfif>
- <cfset totalhour = ARGUMENTS.OTTIME/60>
- <cfset OTINDEX = 0>
- <cfset OTNSD = 0>
- <cfset local.lstidx = "">
- <cfif ot_no eq 1>
- <cfset colName = "First8">
- <cfelse>
- <cfset colName = "Excess8">
- </cfif>
- <!--- <cfif nsd_no eq 0> --->
- <cfloop query="qGetOvtFactor">
- <cfif qGetOvtFactor.currentrow eq ot_no>
- <cfset colName = "First8">
- <cfif qGetOvtNSD.recordcount>
- <cfset OTNSD = totalhour * val(qGetOvtNSD.factor)>
- <!--- <cfset lstidx = ListAppend(lstidx,"#val(qGetOvtNSD.factor)#;#totalhour#;NSD#replace(val(qGetOvtNSD.nsd_no),'.','_','ALL')#","|")> --->
- <cfset ovtfactor.valFactorNSD = val(qGetOvtNSD.factor)>
- </cfif>
- <cfset lstidx = ListAppend(lstidx,"#val(qGetOvtFactor.Value)#;#totalhour#;#colName#","|")>
- <cfset OTINDEX = OTINDEX + totalhour * val(Evaluate("qGetOvtFactor.Value"))>
- <cfbreak>
- </cfif>
- </cfloop>
- <!--- </cfif> --->
- <cfif qGetOvtNSD.recordcount>
- <!--- <cfset lstidx = ListAppend(lstidx,"#val(qGetOvtFactor.Value)#;0;#colName#","|")> --->
- <cfset OTINDEX = 0>
- <cfif ot_no eq 2>
- <!--- <cfif nsd_no eq 1>
- <cfset OTNSD = totalhour * val(qGetOvtNSD.factor)>
- <cfelse> --->
- <cfset OTNSD = totalhour * val(qGetOvtNSD.factor2)>
- <!--- </cfif> --->
- <cfset lstidx = ListAppend(lstidx,"#val(qGetOvtNSD.factor2)#;#totalhour#;NSD#arguments.nsd_no#","|")>
- <cfelse>
- <cfset OTNSD = totalhour * val(qGetOvtNSD.factor)>
- <cfset lstidx = ListAppend(lstidx,"#val(qGetOvtNSD.factor)#;#totalhour#;NSD#arguments.nsd_no#","|")>
- </cfif>
- </cfif>
- <cfset ovtfactor.totalhour = val(totalhour)>
- <cfset ovtfactor.index = OTINDEX>
- <cfset ovtfactor.otnsd = OTNSD>
- <!--- <cfset lstidx=replace(lstidx,".","_","ALL")> --->
- <cfset ovtfactor.lstidx = lstidx>
- <cfreturn ovtfactor>
- </cffunction>
- <!--- FUNGSI GENERATE INDEX OTHER --->
- <cffunction name="IndexOther">
- <cfargument name="OTTime" default="0">
- <cfargument name="OTType" default="">
- <cfargument name="Code" default="">
- <cfquery datasource="#REQUEST.SDSN#" name="qGetOvtLimit">
- SELECT otrounding, otroundlimit FROM TTAMOVERTIME
- WHERE overtime_code = <cfqueryparam value="#OTType#" cfsqltype="cf_sql_varchar">
- </cfquery>
- <cfquery datasource="#REQUEST.SDSN#" name="qGetOvtOtherFactor">
- SELECT * FROM TTADOVERTIMEOTHER
- WHERE OVERTIME_CODE = <cfqueryparam value="#OTType#" cfsqltype="cf_sql_varchar">
- AND TYPE_CODE = <cfqueryparam value="#Code#" cfsqltype="cf_sql_varchar">
- ORDER BY FACTOR_NO
- </cfquery>
- <cfif val(qGetOvtLimit.otrounding) gt 0>
- <cfset sisaOT = (ARGUMENTS.OTTIME mod 60)>
- <cfset ARGUMENTS.OTTIME = (INT(ARGUMENTS.OTTIME/60) * 60) + (INT(sisaOT/val(qGetOvtLimit.otrounding)) * val(qGetOvtLimit.otrounding)) + IIF((sisaOT mod val(qGetOvtLimit.otrounding)) gte qGetOvtLimit.otroundlimit, val(qGetOvtLimit.otrounding), 0)>
- </cfif>
- <cfset minutes = ARGUMENTS.OTTIME>
- <cfset remain = minutes>
- <cfset OTINDEX = 0>
- <cfloop query="qGetOvtOtherFactor">
- <cfif Remain gte val(qGetOvtOtherFactor.step) and Remain neq 0>
- <cfset OTINDEX = OTINDEX + val(qGetOvtOtherFactor.Value)>
- <cfset remain = remain - val(qGetOvtOtherFactor.step)>
- <cfelse>
- <cfbreak>
- </cfif>
- </cfloop>
- <cfset otherovtvalue = OTINDEX>
- <cfreturn otherovtvalue>
- </cffunction>
- <cffunction name="FuncTotalLstIndex">
- <cfargument name="LstIndex" default="">
- <cfset arrFac = arraynew(1)>
- <cfset arrVal = arraynew(1)>
- <cfset ctr = 0>
- <cfloop index="lst" list="#arguments.LstIndex#" delimiters="|">
- <cfset ctr = ctr + 1>
- <cfset arrFac[ctr] = ListFirst(lst,";")>
- <cfset arrVal[ctr] = ListGetAt(lst,2,";")>
- <cfset arrCode[ctr] = ListLast(lst,";")>
- </cfloop>
- <cfset fctr = "">
- <cfset TotalLstIndex="">
- <cfloop from=1 to=#ctr# index="idx">
- <cfif isdefined("code_#arrCode[idx]#")>
- <cfset "code_#arrCode[idx]#" = evaluate("code_#arrCode[idx]#") + #arrVal[idx]#>
- <cfelse>
- <cfset "code_#arrCode[idx]#" = #arrVal[idx]#>
- </cfif>
- <cfset "fac_#arrCode[idx]#" = #arrFac[idx]#>
- <cfif not listFindNoCase(fctr,#arrCode[idx]#)>
- <cfset fctr = ListAppend(fctr,"#arrCode[idx]#","|")>
- </cfif>
- </cfloop>
- <cfloop list="#fctr#" index="idx" delimiters="|">
- <cfset temp="#evaluate("fac_#idx#")#;#evaluate("code_#idx#")#;#idx#">
- <cfif not listfindnocase(TotalLstIndex,"#temp#","|")>
- <cfset TotalLstIndex = listappend(TotalLstIndex,"#temp#","|")>
- </cfif>
- </cfloop>
- <!--- <cfoutput><script>alert('#LstIndex# ~ #TotalLstIndex#');</script></cfoutput> --->
- <!--- <cfset TotalLstIndex=replace(TotalLstIndex,".","_","ALL")> --->
- <cfreturn TotalLstIndex>
- </cffunction>
- <cffunction name="cekShiftNsd">
- <cfargument name="shiftstart1" default="now()">
- <cfargument name="shiftend1" default="now()">
- <cfargument name="ovtcode" default="NSD">
- <cfquery datasource="#REQUEST.SDSN#" name="qSelectNSD" maxrows="1">
- SELECT min(startnsd) startnsd,max(endnsd) endnsd FROM TTADOVERTIMENSD WHERE overtime_code = '#arguments.ovtcode#' ORDER BY startnsd
- </cfquery>
- <cfif isdate(arguments.shiftstart1) and isdate(arguments.shiftend1) and isdate(qSelectNSD.startnsd)>
- <!--- <cf_sfwritelog dump="shiftstart1,shiftend1" prefix="Rangga__"> --->
- <cfset shiftstarttemp = CreateDateTime(Year(qSelectNSD.startnsd),Month(qSelectNSD.startnsd),Day(qSelectNSD.startnsd),hour(arguments.shiftstart1),minute(arguments.shiftstart1),'00')>
- <cfset shiftstart = shiftstarttemp>
- <cfset LOCAL.shiftstart1date = CREATEDATE(year(arguments.shiftstart1), month(arguments.shiftstart1), day(arguments.shiftstart1))>
- <cfset LOCAL.shiftend1date = CREATEDATE(year(arguments.shiftend1), month(arguments.shiftend1), day(arguments.shiftend1))>
- <cfif DateDiff('d',shiftstart1date,shiftend1date) eq 0>
- <cfset LOCAL.shiftend = CreateDateTime(Year(qSelectNSD.startnsd),Month(qSelectNSD.startnsd),Day(qSelectNSD.startnsd),hour(arguments.shiftend1),minute(arguments.shiftend1),'00')>
- <cfelse>
- <cfset LOCAL.shiftend = CreateDateTime(Year(qSelectNSD.startnsd),Month(qSelectNSD.startnsd),Day(qSelectNSD.startnsd),hour(arguments.shiftend1),minute(arguments.shiftend1),'00')>
- <cfset shiftend = dateAdd("d",1,shiftend)>
- </cfif>
- <cfquery datasource="#REQUEST.SDSN#" name="qCheckNSD">
- SELECT * FROM TTADOVERTIMENSD
- WHERE ((startnsd <= #shiftstart# OR endnsd >= #shiftstart#)
- AND (startnsd <= #shiftend# OR endnsd >= #shiftend#)
- )
- AND overtime_code = '#arguments.ovtcode#'
- AND (#shiftstart# < #dateadd("d",-1,CREATEODBCDATETIME(qSelectNSD.endNSD))# or #shiftend# > #CREATEODBCDATETIME(qSelectNSD.startNSD)#)
- </cfquery>
- <cfelse>
- <cfset qCheckNSD = QueryNew("Name", "VarChar")>
- </cfif>
- <!--- <cf_sfwritelog dump="qCheckNSD" prefix="Rangga_dphi_"> --->
- <cfreturn qCheckNSD>
- </cffunction>
- </cfcomponent>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement