OK I am in over my head again. I have developed a query to run my payroll reports from and generate an electronic file to send to payroll company. The following query works really good for our purposes except if there is overtime. Once a worker goes over 40 hours in [Time worked], needs to calculate 1.5 time the the ramaining for that worker for that week. I can't figure out how to get a running sum by WorkerID and only for the week from Sat or Day1 through Friday or Day 7. Sometimes a worker will turn in two weeks worth of timecards for this current payroll posting (which is weekly).
SELECT Schedule1.SchedID, Schedule1.WorkerID, [Worker table].LastName & ", " & [Worker table].FirstName & " " & [Worker table].Middle AS WorkerName, [Worker table].SSN, WorkStatus.WorkStatus, Jobs.Job, Category.Category, Schedule1.ClientID AS ClientIdent, [Client Table].LastName & ", " & [Client Table].FirstName & " " & [Client Table].Middle AS ClientName, SchedDay.Day, Schedule1.Date, Schedule1.Start, Schedule1.End, (DateDiff("n",[Start],[End]+IIf([End]<[Start],1,0))/60) AS [Hours worked], IIf([Salary]>0 And [Hours worked]>=4,8,IIf([Salary]>0 And [Hours worked]<4,[Hours worked],IIf([Salary]=0,[Hours worked],[Hours worked]))) AS [Hours Paid], Schedule1.Verified, Schedule1.VerifyDate, PayRateQry.WorkerPayrollQry.Hourly, PayRateQry.WorkerPayrollQry.Mileage, PayRateQry.Salary, PayRateQry.Period, PayRateQry.ClientID, PayRateQry.WorkClientPayrollQry.Hourly, PayRateQry.WorkClientPayrollQry.Mileage, IIf(IsNull(WorkClientPayrollQry.Hourly),WorkerPayrollQry.Hourly,WorkClientPayrollQry.Hourly) AS PayRate, Schedule1.Holiday, IIf([Holiday]=On,([Hours Paid]*[PayRate])*1.5,[Hours Paid]*[PayRate]) AS ShiftPay, IIf([Salary]>0,"Salary","Hourly") AS PayType, Schedule1.Mileage AS Miles, IIf(IsNull(WorkClientPayrollQry.Mileage),WorkerPayrollQry.Mileage,WorkClientPayrollQry.Mileage) AS MilesRate, [Miles]*[MilesRate] AS MileagePaid, Schedule1.Misc, Schedule1.MiscQty, Schedule1.PayMiscRate, [MiscQty]*[PayMiscRate] AS MiscPaid, Schedule1.[Pay / Bill]
FROM (Category INNER JOIN (WorkStatus INNER JOIN [Worker table] ON WorkStatus.WorkStatusID=[Worker table].WorkStatusID) ON Category.CategoryID=[Worker table].CategoryID) INNER JOIN (SchedDay INNER JOIN ([Client Table] INNER JOIN ((Schedule1 INNER JOIN Jobs ON Schedule1.JobID=Jobs.JobID) INNER JOIN PayRateQry ON Schedule1.WorkerID=PayRateQry.WorkerID) ON [Client Table].ClientID=Schedule1.ClientID) ON SchedDay.DayID=Schedule1.Day) ON [Worker table].WorkerID=Schedule1.WorkerID
WHERE (((Schedule1.Verified)=-1) And ((Schedule1.VerifyDate)>=Forms!WorkerPayRates!VerifiedFrom And (Schedule1.VerifyDate)<=Forms!WorkerPayRates!VerifiedTo) And ((PayRateQry.ClientID) Is Null Or (PayRateQry.ClientID)=Schedule1.ClientID) And ((Schedule1.[Pay / Bill])<>3 Or (Schedule1.[Pay / Bill])=4))
ORDER BY [Worker table].LastName & ", " & [Worker table].FirstName & " " & [Worker table].Middle, Schedule1.Date, Schedule1.Start;
I really hope that someone can shed some light on this as I am stuck. You guys have already helped me tremendously and I really appreciate all that you do.
SELECT Schedule1.SchedID, Schedule1.WorkerID, [Worker table].LastName & ", " & [Worker table].FirstName & " " & [Worker table].Middle AS WorkerName, [Worker table].SSN, WorkStatus.WorkStatus, Jobs.Job, Category.Category, Schedule1.ClientID AS ClientIdent, [Client Table].LastName & ", " & [Client Table].FirstName & " " & [Client Table].Middle AS ClientName, SchedDay.Day, Schedule1.Date, Schedule1.Start, Schedule1.End, (DateDiff("n",[Start],[End]+IIf([End]<[Start],1,0))/60) AS [Hours worked], IIf([Salary]>0 And [Hours worked]>=4,8,IIf([Salary]>0 And [Hours worked]<4,[Hours worked],IIf([Salary]=0,[Hours worked],[Hours worked]))) AS [Hours Paid], Schedule1.Verified, Schedule1.VerifyDate, PayRateQry.WorkerPayrollQry.Hourly, PayRateQry.WorkerPayrollQry.Mileage, PayRateQry.Salary, PayRateQry.Period, PayRateQry.ClientID, PayRateQry.WorkClientPayrollQry.Hourly, PayRateQry.WorkClientPayrollQry.Mileage, IIf(IsNull(WorkClientPayrollQry.Hourly),WorkerPayrollQry.Hourly,WorkClientPayrollQry.Hourly) AS PayRate, Schedule1.Holiday, IIf([Holiday]=On,([Hours Paid]*[PayRate])*1.5,[Hours Paid]*[PayRate]) AS ShiftPay, IIf([Salary]>0,"Salary","Hourly") AS PayType, Schedule1.Mileage AS Miles, IIf(IsNull(WorkClientPayrollQry.Mileage),WorkerPayrollQry.Mileage,WorkClientPayrollQry.Mileage) AS MilesRate, [Miles]*[MilesRate] AS MileagePaid, Schedule1.Misc, Schedule1.MiscQty, Schedule1.PayMiscRate, [MiscQty]*[PayMiscRate] AS MiscPaid, Schedule1.[Pay / Bill]
FROM (Category INNER JOIN (WorkStatus INNER JOIN [Worker table] ON WorkStatus.WorkStatusID=[Worker table].WorkStatusID) ON Category.CategoryID=[Worker table].CategoryID) INNER JOIN (SchedDay INNER JOIN ([Client Table] INNER JOIN ((Schedule1 INNER JOIN Jobs ON Schedule1.JobID=Jobs.JobID) INNER JOIN PayRateQry ON Schedule1.WorkerID=PayRateQry.WorkerID) ON [Client Table].ClientID=Schedule1.ClientID) ON SchedDay.DayID=Schedule1.Day) ON [Worker table].WorkerID=Schedule1.WorkerID
WHERE (((Schedule1.Verified)=-1) And ((Schedule1.VerifyDate)>=Forms!WorkerPayRates!VerifiedFrom And (Schedule1.VerifyDate)<=Forms!WorkerPayRates!VerifiedTo) And ((PayRateQry.ClientID) Is Null Or (PayRateQry.ClientID)=Schedule1.ClientID) And ((Schedule1.[Pay / Bill])<>3 Or (Schedule1.[Pay / Bill])=4))
ORDER BY [Worker table].LastName & ", " & [Worker table].FirstName & " " & [Worker table].Middle, Schedule1.Date, Schedule1.Start;
I really hope that someone can shed some light on this as I am stuck. You guys have already helped me tremendously and I really appreciate all that you do.