multiple rates showing on paycheck when it shouldn't be

so, sometimes paychecks are printed saying "at multiple rates" when for sure a paycheck should all be at a single rate.  We use timecard import for payroll.  Each employee can work in different areas but they should all be the same Rate for Regular Time.  Anyways, I'm fairly certain i found the issue. As per my picture. (Employee Rate is 13.50)

  • 0

    Hello,

    I'm unable to see clearly the picture when I click and enlarge it.  If you can explain what is in the picture I can check into the "at multiple rates" issue.

  • 0 in reply to jkwa
    Timecard LINES not rounded LINES rounded
    Employee No. Pay Period Pay type Hours Account No. 4.45 * 13.5 = 60.075 Round(4.45 * 13.5,2) = 60.08 <--LINE_DOLLARS has to be calculated via one of these methods,
    168 21 R 4.45 41088-01 2.47 * 13.5 = 33.345 Round(2.47 * 13.5,2) = 33.35  I'm assuming it's rounding because this paycheck had a total of
    168 21 R 2.47 41089-01 3.07 * 13.5 = 41.445 Round(3.07 * 13.5,2) = 41.45  205.35,RegularTimeDollars is used to print that total and it's calculated
    168 21 R 3.07 41088-02 5.22 * 13.5 = 70.47 Round(5.22 * 13.5,2) = 70.47  from LINE_DOLLARS (see ExampleA)    
    168 21 R 5.22 41088-03 sum = 205.335 sum = 205.35
    Round(sum,2) = 205.34
    LINE_RATE (13.50) is constant for this employees Regular Time regardless of Account No.
    LINE_HOURS is sourced from timecard input
    LINE_DOLLARS is calculated by BV because it's not provided on timecard (i think this is the issue. see rounding issue in table above.)

    Below are relevant sections from c:/Business Vision/Payroll Cheque - SPA 2006 Laser.rpt

    EX: A - Init of variables. Since the source of RegularTimeDollars is sourced from the TEMP_TIMECARD_TRANS.LINE_DOLLARS, I'm assuming the descrepency occurs when TEMP_TIMECARD_TRANS is created and LINE_DOLLARS is calculated for the table. (value is calculated and rounded from Hours in TIMECARD and CONSTANT-EMPLOYEE RATE. 

    WhilePrintingRecords;        
    NumberVar RegularTimeDollars;  
    NumberVar RegularTimeHours;  
    NumberVar RegularTimeRate;  
       
    if {TEMP_TIMECARD_TRANS.LINE_CODE} = "R"   
        then  
        (RegularTimeDollars := RegularTimeDollars + {TEMP_TIMECARD_TRANS.LINE_DOLLARS};
        RegularTimeHours := RegularTimeHours + {TEMP_TIMECARD_TRANS.LINE_HOURS};
        RegularTimeRate := {TEMP_TIMECARD_TRANS.LINE_RATE})  

    EX: B - "Label - Regular hours worked"

    WhilePrintingRecords;    
    NumberVar RegularTimeDollars;
    NumberVar RegularTimeHours;
    NumberVar RegularTimeRate;
     
    if RegularTimeHours = 0
        //no regular hours
        then ""
    else if round(RegularTimeHours * RegularTimeRate, 2) = RegularTimeDollars
        //regular hours all at one rate
        then "(" + Totext(RegularTimeHours, 2, "") + " hours at " + totext(RegularTimeRate, 2) + ")"
    else //when more than one rate was applied
        "(" + Totext(RegularTimeHours, 2, "") + " hours at multiple rates)"

    RegularTimeDollars in this case is: 205.35

    round(RegularTimeHours * RegularTimeRate,2) = 205.34

    Result: will print at multiple rates sometimes when it shouldn't.  Only sometimes because the rounding result sometimes might match depending on hours worked.

  • 0 in reply to slacka

    That was way more legible in EDIT mode.