home *** CD-ROM | disk | FTP | other *** search
- declare @ProcessDate datetime
- select @ProcessDate = '27 Sep 1999'
-
- SELECT EmpEmployeeID, JbcMaxHourlyRate, JbcMaxAnnualRate, PscIntervalType, StpStepNo, StpRate, StpEffDate, StpInterval
- FROM Employees, JobCodes, PayScales, PaySteps
- WHERE EmpDateOfNextPayReview <= @ProcessDate AND
- EmpJobCode = JbcJobCode AND
- EmpPayScaleCode = PscPayScaleCode AND
- EmpPayScaleCode = StpPayScaleCode AND
- EmpStepNo + 1 = StpStepNo
-
- SELECT EmpEmployeeID, JbcMaxHourlyRate, JbcMaxAnnualRate, PscIntervalType, StpStepNo, StpRate, StpEffDate, StpInterval
- FROM Employees, JobCodes, PayScales, PaySteps
- WHERE EmpDateOfNextPayReview <= @ProcessDate AND
- EmpJobCode = JbcJobCode AND
- EmpPayScaleCode = PscPayScaleCode AND
- EmpPayScaleCode = StpPayScaleCode AND
- EmpStepNo + 1 = StpStepNo AND
- StpEffDate = (SELECT Max(StpEffDate) FROM PaySteps
- WHERE StpPayScaleCode = EmpPayScaleCode AND StpStepNo = EmpStepNo + 1 AND StpEffDate <= @ProcessDate)
- DECLARE @EmployeeID int
- DECLARE @HourlyOrSalary char(1)
- DECLARE @OriginalReviewDate datetime
- DECLARE @PayPeriod smallint
- DECLARE @ScheduledWorkHours float
- DECLARE @MaxHourlyRate money
- DECLARE @MaxAnnualRate money
- DECLARE @IntervalType char(1)
- DECLARE @NewStepNo smallint
- DECLARE @NewHourlyPayRate money
- DECLARE @NewReviewDate datetime
- DECLARE @StepInterval smallint
- DECLARE @NewAnnualPayRate money
- DECLARE @NewWeeklyPayRate money
- DECLARE @NewPeriodPayRate money
-
- DECLARE EmpPaySteps INSENSITIVE CURSOR FOR
- SELECT EmpEmployeeID, EmpHourlyOrSalary, EmpDateOfNextPayReview, EmpPayPeriod, EmpScheduledWorkHours,
- JbcMaxHourlyRate, JbcMaxAnnualRate, PscIntervalType, StpStepNo, StpRate, StpInterval
- FROM Employees, JobCodes, PayScales, PaySteps
- WHERE EmpDateOfNextPayReview <= @ProcessDate AND
- EmpJobCode = JbcJobCode AND
- EmpPayScaleCode = PscPayScaleCode AND
- EmpPayScaleCode = StpPayScaleCode AND
- EmpStepNo + 1 = StpStepNo AND
- StpEffDate = (SELECT Max(StpEffDate) FROM PaySteps
- WHERE StpPayScaleCode = EmpPayScaleCode AND StpStepNo = EmpStepNo + 1 AND StpEffDate <= @ProcessDate)
- FOR READ ONLY
-
- OPEN EmpPaySteps
- FETCH NEXT FROM EmpPaySteps
- INTO @EmployeeID, @HourlyOrSalary, @OriginalReviewDate, @PayPeriod, @ScheduledWorkHours,
- @MaxHourlyRate, @MaxAnnualRate, @IntervalType, @NewStepNo, @NewHourlyPayRate, @StepInterval
- WHILE @@fetch_status = 0
- BEGIN
-
- /* Check for pay caps. Do not increase above pay cap, if any. */
- IF @MaxHourlyRate IS NOT NULL AND @NewHourlyPayRate > @MaxHourlyRate
- SELECT @NewHourlyPayRate = @MaxHourlyRate
-
- /* Compute new pay rates */
- SELECT @NewAnnualPayRate = @NewHourlyPayRate * @ScheduledWorkHours * @PayPeriod
- SELECT @NewWeeklyPayRate = @NewAnnualPayRate / 52
- SELECT @NewPeriodPayRate = @NewHourlyPayRate * @ScheduledWorkHours
- SELECT @NewReviewDate = CASE @IntervalType
- WHEN "D" THEN dateadd(day, @StepInterval, @OriginalReviewDate)
- WHEN "W" THEN dateadd(week, @StepInterval, @OriginalReviewDate)
- WHEN "M" THEN dateadd(month, @StepInterval, @OriginalReviewDate)
- END
-
- SELECT @NewHourlyPayRate, @NewAnnualPayRate, @NewWeeklyPayRate, @NewPeriodPayRate, @NewReviewDate
- /*
- UPDATE Employees SET
- EmpStepNo = @NewStepNo,
- EmpHourlyPayRate = @NewHourlyPayRate,
- EmpAnnualPayRate = @NewAnnualPayRate,
- EmpWeeklyPayRate = @NewWeeklyPayRate,
- EmpPeriodPayRate = @NewPeriodPayRate,
- EmpDateOfNextPayReview = @NewReviewDate
- WHERE EmpEmployeeID = @EmployeeID
- */
-
- FETCH NEXT FROM EmpPaySteps
- INTO @EmployeeID, @HourlyOrSalary, @OriginalReviewDate, @PayPeriod, @ScheduledWorkHours,
- @MaxHourlyRate, @MaxAnnualRate, @IntervalType, @NewStepNo, @NewHourlyPayRate, @StepInterval
- END
-
- DEALLOCATE EmpPaySteps
-
-