|
SD_Monkey
Starting Member
38 Posts |
Posted - 2010-08-04 : 14:15:32
|
| [code]CREATE TRIGGER t_ins_payslip ON [dbo].[payslip] FOR INSERTASDECLARE @payid AS INTDECLARE @payfrom AS DATETIMEDECLARE @payto AS DATETIMESELECT @payid=i.payid, @payfrom=i.payfrom,@payto=i.payto FROM INSERTED i INSERT INTO timebook(payid,empdetid,wday,rpd,trw,rothrs,rotw,hothrs,hotw,gi,sss_ee,sss_er,hdmf_ee,hdmf_er,ph_ee,ph_er,cola,ni)SELECT @payid,empdetid,wdy,rpd,(totalhrs * rpd) as trw,[Regular],([Regular] * rpd) ramount,[Holliday],([Holliday] * rpd) as hamount,tamount,[sss ee],[sss er],[hdmf ee],[hdmf er],[ph ee],[ph er],cola,netincome FROM (SELECT *,((tamount - ([sss ee] + [ph ee] + [hdmf ee])) + cola) as netincome FROM (SELECT *,dbo.fn_sss_ee(salary) as [sss ee],dbo.fn_sss_er(salary) as [sss er],dbo.fn_ph_ee(salary) as [ph ee],dbo.fn_ph_er(salary) as [ph er],dbo.fn_hdmf_ee(salary) as [hdmf ee],dbo.fn_hdmf_er(salary) as [hdmf er],dbo.fn_cola(empdetid,@payfrom,@payto) as cola FROM(SELECT *,(totalhrs * rpd) + ([Regular] * rpd) + ([Holliday] * rpd) AS tamount FROM (SELECT [EMPLOYEE ID],[NAME],wdy,totalhrs,salary,excemption,empdetid,CASE WHEN rothrs IS NULL THEN 0 ELSE rothrs END [Regular] ,CASE WHEN hothrs IS NULL THEN 0 ELSE hothrs END AS Holliday,dbo.fn_per_day(salary,empdetid) AS rpd FROM (SELECT *,dbo.fn_overtime_regular(@payfrom,@payto,empdetid) as rothrs,dbo.fn_overtime_holliday(@payfrom,@payto,empdetid) as hothrs FROM (SELECT [EMPLOYEE ID],[NAME],COUNT(WDAY) AS wdy,SUM(TOTALHR) AS TOTALHRS,SALARY,EXCEMPTION,empdetid FROM (SELECT D.[Employee ID],D.[Name],D.wday,D.totalhr,E.salary,E.excemption,E.empdetid FROM (SELECT [EMPLOYEE ID],[NAME],COUNT([DATE]) AS WDAY,(AM_HR + PM_HR) AS TOTALHR FROM (SELECT [EMPLOYEE ID],[NAME],[DATE],CASE WHEN AM_HRS IS NULL THEN 0 ELSE AM_HRS END AS AM_HR,CASE WHEN PM_HRS IS NULL THEN 0 ELSE PM_HRS END AS PM_HR FROM (SELECT [Employee ID],[Name],(DATEDIFF(n,AM_TIMEIN,AM_TIMEOUT)/60) AS AM_HRS,(DATEDIFF(n,PM_TIMEIN,PM_TIMEOUT) /60) AS PM_HRS,[Date]FROM (SELECT [Employee ID],[Name],dbo.fn_validate_am_timein([Time In AM]) AM_TIMEIN,dbo.fn_validate_am_timeout([Time Out AM]) AS AM_TIMEOUT,dbo.fn_validate_pm_timein([Time In PM]) AS PM_TIMEIN,dbo.fn_validate_pm_timeout([Time Out PM]) AS PM_TIMEOUT,[Date] FROM [DTR Info] WHERE [Date] BETWEEN @payfrom AND @payto)A)B)C GROUP BY [EMPLOYEE ID],[NAME],AM_HR,PM_HR )D INNER JOIN [Employee Information] E ON D.[EMPLOYEE ID]=E.[Employee ID])G GROUP BY [EMPLOYEE ID],[NAME],SALARY,EXCEMPTION,empdetid)F)H)I)j)l)mif @@ERROR != 0BEGINROLLBACK TRANSACTIONEND[/code]A maze make you much more better |
|