Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
sa39-00 [2015/08/07 16:52] – Justin Willey | sa39-00 [2015/08/07 17:06] – Justin Willey | ||
---|---|---|---|
Line 1: | Line 1: | ||
===== Configuring IQX to use rates determined by Agency Worker not Vacancy / Placement ===== | ===== Configuring IQX to use rates determined by Agency Worker not Vacancy / Placement ===== | ||
- | Sometimes agencies have workers who are paid at an individually negotiated rate rather than at rates determined at the Rate Scheme / Vacancy or Placement level. With some configuration, | + | Sometimes agencies have workers who are paid at an individually negotiated rate rather than at rates determined at the Rate Scheme / Vacancy or Placement level. With some configuration, |
In this example only some of the Agency' | In this example only some of the Agency' | ||
+ | |||
+ | On some contracts workers are paid time and a quarter or time and a half of their base rates for certain periods rather than using the uplift amounts. | ||
A further complication is that in some placements, the vacancy placement rates should be used regardless of the individual workers rates. | A further complication is that in some placements, the vacancy placement rates should be used regardless of the individual workers rates. | ||
Line 18: | Line 20: | ||
{{ : | {{ : | ||
+ | |||
+ | === Setting the calculation rules === | ||
+ | |||
+ | The Temp Rate Modifier function (found under Maintenance | Database Functions | Temp Rate Modifier) can modify the pay and charge rates rate that IQX will use when pricing timesheets. The function takes as parameters various pieces of information including the rate calculated from the Rate Scheme, and any overrides set at the Vacancy or Placement level. It can then return a modified rate where required. | ||
+ | |||
+ | <code SQL> | ||
+ | (in PayOrChar char(1),in vacid char(20),in persid char(20),in placid char(20),in bandid char(20),in BaseRate double) | ||
+ | returns double | ||
+ | begin | ||
+ | rates | ||
+ | declare @UserID char(50); | ||
+ | declare @TempBaseRate double; | ||
+ | declare @TempEveningRate double; | ||
+ | declare @TempWeekEndRate double; | ||
+ | declare @DivisionName char(50); | ||
+ | declare @UseTempBaseRate char(4); | ||
+ | declare @PayrollFlag char(20); | ||
+ | if PayOrChar = ' | ||
+ | end if; | ||
+ | select(select UserID from Staff where StaffID = UserStaffID), | ||
+ | (select Division.Name from Division key join TempDesk key join Vacancy where VacancyID = vacid), | ||
+ | (select first value from tagvalue where TagLocation = ' | ||
+ | (select first value from tagvalue where TagLocation = ' | ||
+ | (select first value from tagvalue where TagLocation = ' | ||
+ | (select first tagchoiceid from tagvalue where TagLocation = ' | ||
+ | @DivisionName, | ||
+ | @UseTempBaseRate from Dummy; | ||
+ | if | ||
+ | @TempBaseRate is null | ||
+ | or @UseTempBaseRate = ' | ||
+ | or @DivisionName not in( ' | ||
+ | or @USERID not in( ' | ||
+ | -- if any of the above true then employee base rate does not apply | ||
+ | then | ||
+ | return BaseRate | ||
+ | else | ||
+ | -- calculate the applicable base rate | ||
+ | set @PayrollFlag=(select PayrollFlag from TempPayBand where TempPayBandID = bandid); | ||
+ | case | ||
+ | when @PayrollFlag = ' | ||
+ | when @PayrollFlag = ' | ||
+ | when @PayrollFlag = ' | ||
+ | when @PayrollFlag = ' | ||
+ | when @PayrollFlag in( ' | ||
+ | else | ||
+ | return round(@TempBaseRate, | ||
+ | end case | ||
+ | end if | ||
+ | end | ||
+ | </ |