Incentive Based Pay Rates

Is anyone out there using an incentive based pay scale for production employees? We have standard rates per job operation but I’d like to “pad” the employees pay with an incentive. Those that choose to work the hardest can make more money.

We have a piece-rate pay system setup for (most of) our production employees. They make a base hourly rate and each finished part counts toward their piece-rate bonus. Their final pay each day will be the greater of (their hourly rate times the number of hours at work) or (their cumulative piece-rate bonus from the jobs during the day). They’re guaranteed to make their base rate but can earn a bonus.

Most of our production lines will produce anywhere from 50-2000 pieces in a shift but cycle times vary for each operation, so each part number/operation combination has its own piece rate assigned. When employees clock into a job and report quantity, we have BPMs that query this table and store the piece rate as of that labor date. It then calculates the bonus and stores this for payroll reporting.

Tyler,

Thanks exactly what I’m looking for. Where are the fields for the piece rates? I’ve looked hi-lo within Epicor and find no mention of incentive based rates

I don’t think there is anything standard in Epicor that does this – It’s a custom modification we made. We use a UD table (UD14) to store and edit the rates. Then we have BPM Method Directives on Labor.Update that look up these rates using the labor’s part, revision, and operation code. We store this rate in a custom field on LaborDtl for later payroll reporting we custom-built.

Thanks for the help.

There is nothing standard in Epicor to support incentive rates, but there is plenty of data collected within the LaborDtl table to show production, hours worked on jobs, number of jobs, number of pieces completed, earned hours, etc. per employee.

@tsmith,

Can you provide some more insight on the customization you did for the Piece rate pay? We are going to Go Live next month and this is the last piece we have to resolve.

Thanks,

Charles Dingas
Software Engineer
General Truck Body

There are a few customizations that all work in sequence:

  1. On the EmpBasic (Employee) record, we added a UD field to indicate whether or not the employee is piece-rate eligible – most employees earn a piece-rate bonus, but some employees are not eligible for the bonus.

  2. On the LaborDtl record, we added a couple of fields:
    a) A field to store the employee’s hourly labor rate when the labor was entered. This is copied from the EmpBasic.LaborRate field when labor is entered either through MES or Time and Expense Entry and is used in payroll and labor reports.
    b) A field to store the per-piece bonus pay at the time of labor entry. This allows reports to accurately calculate bonus for past transactions even if the piece rate was changed after labor was entered.
    c) (optionally) fields for group production qty and per-piece bonus. In addition to personal piece-rate incentive, we also incentivize the production cell’s production as a group, so we have piece rates and fields specific to group sizes.

  3. On the JobHead table, we added a UD field to capture the alternate method used to create the job. All of our jobs are created using existing part methods, so this field is populated when the MRP job is firmed up or when the Get Details method is called. Different alternate methods may have different piece rates (laser-cut parts vs stamped parts, for example).

  4. We have a UD table (in our case, UD14) that stores the piece rates for particular operations. The keys for this table are PartNum, RevisionNum, AltMethod, and OpCode. The table mirrors the PartOpr table and allows management to edit the piece rates for each part/method/operation step combination. We have BPM data directives on the PartOpr table to ensure duplicates are not created in the UD14 table and that orphaned piece rates are deleted if we delete a part method.

  5. We have a Method Directive BPM on Labor.Update which searches in the UD14 table using the Job’s Part Number, Revision, Alternate Method. The BPM looks up the piece rate, calculates the total piece-rate pay for the labor record (piece rate * LaborQty), and compares it to the base (hourly) pay for the labor record. If the piece-rate pay is more than what the employee would have earned just for their hourly rate, then the BPM captures this as incentive bonus. If an incentive bonus is earned, the BPM also changes the LaborDtl.LaborRate field to: TotalEarnedDollars / LaborHrs so that the job costing is correct (if an incentive is earned, then the labor cost of each piece is equal to the piece rate).

  6. Finally, we have a couple of custom BAQ reports that use the data stored in the LaborDtl records by this BPM to report on earned bonuses for the payroll cycles. The first report is what we call “Daily Time Data”. This report is a detailed report which shows the employee’s jobs, production quantities, and whether or not they earned a piece rate bonus for each job. The second report is a weekly payroll report we export and upload to our payroll processor. This report calculates the piece rate bonus and includes it as an additional pay value that is added to the employee’s hourly base pay.