Enhanced Commissions

 

Related to Features Incident 14761.

The current xTuple sales rep commissions feature has limited functionality that may not meet the needs of businesses with more complex and dynamic comissioning requirements. For example, the current system only allows for one sales rep per Sales Order, and only supports a flat commission rate per rep. 

The Enhanced Commissions spec covers both core (C++) changes and the contents of a new package (scripts) that will be maintained as part of the Enterprise Edition. The core updates are not described here, but are covered by a number of incidents associated with the omnibus Enhanced Commissions incident # 14761. The contents of the Enhanced Commissions package are covered in this specification.

Functional Requirements

The Enhanced Commissions enhancement is designed to expand the functionality of commissions in xTuple to allow for flexible commission schedules, and to allow multiple reps to be commissioned on a single Sales Order.
 
List of features:
  • Setup Options
    • Enable Enhanced Commissions feature.
      • Once enabled, if entries are made in new tables, cannot be disabled
      • If the Enhanced Commissions feature is not enabled, all existing commissions functionality should continue to work as it has.
    • Additional configuration options for setting up commission splits
  • Configure Sales Rep options
    • Use Commission Schedule checkbox
    • Receives check checkbox
    • Assign Sales Rep to Expense Category
      • Because the Enhanced Commissions package will allow Vouchers to be created to pay commissions, reps must be assigned to expense categories.
  • Define Commission Schedules
    • A Commission Schedule has a name, a description, and a list of Commission Schedule Items. 
  • Define Commission Schedule Items
    • Commission Schedule Items show a Percent off List value and a Commission Percentage value.
  • Assign Commission Schedules
    • Commission Schedules can be assigned to
      - Sales Rep
      - Ship-To
      - Customer
      - Item
      - Product Category
      - Customer Type
      - Sales Rep Group
      Or a combination of the above.
  • Define Primary Sales Rep and Additional Sales Reps for a Customer and Ship-To location
    • If there is only one rep on the Customer or Ship-to, that rep is the Primary. If additional Reps are assigned, one must be designated as Primary.
  • Assign multiple Sales Reps to a Salesline or Invoiceline
    • Use the Salesrep assignment algorithm, defined below
    • Defaults can be overridden on the Salesline
  • Calculate Commssions per Salesline
    • The commission amount for a given Sales Order Line / Sales Rep will equal:
      • Sales Order Extended Line Price * Commission % * Adjustment %
  • View Commissions Summary on Sales Order
    • Not editable
    • Shows all reps and commissions
  • Report on Commissions due and paid
  • Generate Vouchers for Commissions payments
    • Allow checks to be written to Employees who are not Vendors
 

New Terms and Definitions

Sales Rep Expense Category
  • The expense category to be used for Sales Rep commissions (can be different for each rep)
Commission Schedule
  • Each Commission Schedule has a Code (name) and a Description.
  • Commission Schedules contain Items. Each Item describes a commission rate to be paid when an item is sold up to a certain discount from the list price
  • Commission Schedules can be assigned to various entities to narrow the range of items to which they would apply.
Commission Percentage
  • The base commission percentage for a rep will determined on each Sales Order Line by finding any applicable Commission Schedules and applying the correct commission rate.
Adjustment Percentage
  • The Adjustment Percentage is a fraction of the total number of Sales Reps found in the Sales Rep Assignment table “repassign” in excess of the assigned Sales Rep and his Manager.  For example, if 1 Sales Rep is found in “repassign” the percentage is 100% (1/1).  If two are found the percentage is 50% (1/2).  If three are found the percentage is 33.33% (1/3).
Commission Amount
  • The commission amount for a given Sales Order Line / Sales Rep. Commissions for a Sales Order should be calculated per line, and added together for a total for the Order.

Related Existing Functionality

Currently, xTuple supports commissions in this way:
Commission % by sales rep.
Sales rep assigned to Sales Order head.

This functionality will still be supported in the enhanced version, but may be overridden by enabling the Enhanced Commissioning system.

If the Enhanced Commissions feature is not enabled, all existing commissions functionality should continue to work as it has.

Similar and Related Requests

NA

Conflicting Features

NA

User-Level Functionality

There are number of user-level changes that will be included in the enhancement.

Window Changes

Setup (Sales)
  • Checkbox on the Setup screen “Use Enhanced Commissions”
    • Note: Once Enhanced Commissions has been enabled, if entries are made that use the new tables the user will not be able to disable the feature.
  • All Enhanced Commissions features will be hidden if this is unchecked
  • Additional setup options for Commissions
    • Primary Sales Rep receives FULL/SPLIT/NONE (default FULL)
    • Primary Sales Rep’s Manager receives FULL/SPLIT/NONE (default FULL)
    • Additional Sales Reps receive FULL/SPLIT/NONE (default SPLIT)
    • Additional Managers receive FULL/SPLIT/NONE (default NONE)
    • Managers split commission with: Sales Reps/Managers (default MANAGERS)
  • The Sales Configuration screen will be modified to provide for the next Commissions Batch number when a Sales Rep is paid through Payroll.
Sales Rep
  • add Expense Category widget
    • See custom widget section below for description of widget
    • This widget will be disabled until the "Use Commission Schedule" box is checked.
  • add “Use Commission Schedule” checkbox
    • When checked the Commission Rate field will be disabled and set to 0.
    •  When this is checked, the Expense Category will be enabled.
  • add “Receives Check” checkbox
    • If this is checked, the Sales Rep receives a physical check generated from xTuple through a Voucher created in the Commissions Payment and Reporting Display processing section.  If this is left unchecked, the commission amount determined during Commissions Payment and Reporting Display processing will be linked to a unique Commission Batch number that can be displayed on a commissions report.  
Customer and Ship-To
On the Customer and Ship-To screens, hide the "Sales Rep" field and add the Sales Rep tab, shown below.

 


Sales Order and Invoice

  • New tab “Commissions”
    • This tab presents the following columns and provides a summary view of Commissions for that order:
      • Sales Rep
      • Role
      • Commission Amount
    • It will show totals summarized from the Sales Order lines by Sales Rep by Item. Total the Saleslines first, then add together for SO total.
    • It will be ordered by Item, and then by Sales Rep and provide totals for the Commission Amount column.
    • Right-click menu options:
      • View Salesline (opens to the Commissions tab)
      • Edit Salesline (opens to the Commissions tab)

Sales Order Item and Invoice Item
  • A new tab will be created on the Sales Order Item and Invoice Item screens showing rows with the following:
    • Sales Rep
    • Role
    • Split (Adjustment Percentage)
    • Commission Percentage
    • Commission Amount
  • User can add or remove Sales Reps from the SO Item or Invoice Item.
  • User can edit Sales Rep Commission settings for the item.
Commission Schedules
 The link to the Commission Schedules screen will be located in the Master Information area of the Setup menu for Sales.
  • New screen lists all Commission Schedules
    • Add and Delete buttons
Commission Schedule
  • New screen to add or modify a Commission Schedule
    • Code
    • Description
    • Commission Schedule Items list
Commission Schedule Item
  • Add or modify a Commission Rate and Discountupto values
     

Commission Schedule Assignment

Sales History Information
  • The sales history information screen (accessed from the Sales History report) will have to be modified to show all commissions when they are opened.
Commissions Payment Display
  • This screen will enable the user to select:
    • Sales Rep
    • Date Range
    • Show Status
    • Show All Reps
  • The user must select a Sales Rep or click Show All Reps and enter a Date Range (based on the Invoice Date).  
  • The Show Status drop down will contain three options:
  1. Show All Commissionable
  2. Show Paid Commissionable
  3. Show Unpaid Commissionable
  • Display Columns:
    • Sales Rep
    • Sales Order
    • Sales Order Line
    • Invoice
    • Invoice Line
    • Invoice Date
    • Item
    • Invoice Qty
    • Invoice Price
    • Invoice Extended Price
    • Voucher Number (only displays when paid)
    • Commission (with total at bottom of screen)
  • This display will not show a row with a commission of 0. 
Commission Payment Processing – Voucher Creation
  • When the user selects the Show Unpaid Commissionable option, the button on the screen called Pay Commissions is enabled.  The user may multi-select rows on the display and then click the Pay Commission button. Shift to multi-select a range will be supported.  Include a “Select All” option to prevent having to use Shift-Click to highlight the entire range.
  • The following occurs:
    • A Miscellaneous Voucher is created for each Sales Rep's Employee's Vendor when the Sales Rep is defined as Receives Check true.  A Miscellaneous Distribution Voucher Line is created for the Sales Rep's Expense Category as defined in the table “salesrepexpcat”.  The amount is based on the total commissionable amount multi-selected for that Sales Rep.
  • When the Sales Rep is defined with Receives Check false, an the next Commissions Batch number is fetched and used in lieu of a Voucher id.
  • All Sales Reps who are set to "receive check" will be linked to a Vendor.
  • Note: On the Commissions Payment and Reporting Display, the concept of “paid” versus “unpaid” is determined based on the presence or absence of a row in the “compaid” table.  A row for an invcitem_id indicates payment for a specified salesrep_id.  Absence of a row indicates that no payment has been made.  There are no partial payments.
  • The Commission amount is determined by joining from the invcitem_id to the “invcitemcom” table’s invcitemcom_invcitem_id and invcitemcom_salesrep_id.  The field Commission amount is calculated as:
    • invcitemcom_compercent * invcitemcom_adjpercent * invcitem_billed * invcitem_price
What if some sales reps on an order use Commission Schedule and some do not?
  • Apply the base commission percentage from the applicable Commission Schedule or from the sales rep default (if not using commission schedules), and then adjust it by the adjustment percentage.
Integration with legacy tables and behavior
  • if EnCom is not enabled, use cohist.
  • if enabled, use compaid table to record commission payments.
  • How to reconcile these systems? Make entries in compaid for commissions paid in old system?
    • no. There is no concept of commissions paid in the old system.
  • NOTE: As part of the EnCom package, the xTuple core will be updated to require SalesReps, Users, and Employee records to be linked to a CRMAccount record. Sales Reps do not need to be employees. We will then be able to link a salesrep to a vendor record, without requiring the salesrep to be an employee. However, if the sales rep is to have a manager defined in the system, he will need to be an employee.

Report Changes

Invoices By Sales Rep. (Unpaid) 
  • This report will be a modification of the existing Earned Commissions report.
  • Once Enhanced Commissions is enabled, the "old" commission information will need to be included in this report, along with the new commission info. 
  • The EnComm version of the commissions report will need to include the commissions from the cohist table, but they will not be able to be marked as PAID.
  • The report will show all invoices by date range (Invoice Date) that have not been paid by the Sales Rep in the “coitemcom” table.  This report shows the Invoice Header information and line information along with the total commission calculated for that Sales Rep on each invoice.  This report excludes invoices that have been paid (closed in aropen).  The report is grouped by Sales Rep and page breaks on Sales Rep.
Paid Commission Report By Voucher Commission Batch
  • The user enters a date range.  The report displays all Vouchers or Commision Batches within that date range grouped by Sales Rep that appear in the “compaid” table.  The report shows the invoice header information and commission paid on each invoice.  The report is grouped by Sales Rep and page breaks on Sales Rep.

Batch Manager Changes

Need to make sure that the modified reports can be run in Connect

Usability Considerations

Users will be able to switch the Enhanced Commission functionality on or off in the Setup screen. This will allow users to ignore the new features if they do not wish to use them. The default setting will be off, so legacy users should not be negatively impacted. 

We will need to write documentation explaining how to use the Enhanced Commissions functionality.

Problems and Alternatives

NA

Internal Design

Internally, there are a number of new processes and tables.

Basic Algorithms

Sales Rep Assignment method

 
When a sales order or invioce line item is created, the coitemcom or invcitemcom table will be automatically populated with the Sales Reps who are eligible to be commissioned on the order. The screen will initially populate based on the logic below and then will be modifiable after that.
 
Procedure for adding reps and managers to SO and INVC lines
 
a. Check repassign for Reps and add reps to coitemcom/invcitemcom
-- Check to see if there are reps on the shipto
 
-- if yes, get reps assigned to ship to
-- Add the primary rep
 
-- Add additional reps
 
 
-- Else, get reps assigned to cust
--Add the primary rep
 
--Add additional reps
 
 
-- If sales reps are linked to the ship-to, then they should override any reps that are linked to the customer, and the reps linked to the customer should not be included on the salesline or invoiceline.
 
What happens if you Add a new rep to the salesline or invoiceline Commissions screen?
- give user option to
- add rep to other lines for this order/invoice
- add rep to repassign for that customer/shipto
 
What happens if you remove a rep from this screen?
- give user option to
- remove rep from other lines for this order/invoice
- remove rep from repassign for that customer/shipto
 
What happens if you edit a rep on this screen”
- give user option to
- update rep on other lines for this order/invoice
 
7. Invoices
How do the commission amounts relate to invoices?
 
Both Sales Order Line and Invoice Line will have a commissions tab.
When an SO is converted to an Invoice, 
-copy all values from COITEMCOM to INVCITEMCOM 
-once the values have been copied, prevent further edits of coitemcom. Commissions must be edited on invcitemcom from that point forward. 
When an invoice is created new, not from SO, there will be a commissions tab on the invc header and invc lines....
-The commissions tab on the invc header will connect to the invcitemcom table.
-Creating or editing commissions on Invoice lines will modify the INVCITEMCOM table.
 
The system automatically adds managers to sales orders when the rep is added. It must also take the manager off if a rep is removed.
 
Commissions should be paid from the values in the INVCITEMCOM table, not the COITEMCOM.
 
Commission Schedule Assignment
 
The Schedule can be assigned to one or more of the following entities.
- Sales Rep
- Ship-To
- Customer
- Item
- Product Category
- Customer Type
- Sales Rep Group
The Commission Schedules are assigned to to multiple entities using a Boolean AND. So, a selected Commission Schedule would apply only where ALL assignment conditions are met. For example, one Schedule could be assigned to PRODCAT1, and a different Schedule could be assigned to apply where the Product Category is PRODCAT1 AND the SALESREPGROUP is Internal. 
 
There is an option to make a Schedule exclusive, so that if that Schedule applies to an order line, no other Schedules will be applied. So, in the above example, if neither Schedule was set to be exclusive, then both could apply. If both were set to be exclusive, then the one with higher precedence (the second one) would apply.
 
Commission Schedules may also be configured to apply to managers. If the Schedule applies to managers, then managers are added to the coitemcom table automatically.
 
Commission Percentage
 
The system will determine the Commission Percentage by sales order line:
To determine which Commission Rate to insert into coitemcom_compercent  for a rep on a salesline
If multiple schedules apply, add together the rates and put the totalin coitemcom_compercent
 
SELECT comscheditem_comrate
FROM comscheditem
 
-- find applicable schedules and determine which one to apply
-- get the comsched_id
[use function to get assigned schedule]
-- build and array of comsched_ids, looking for most specific first. 
-- If one is reached that’s exclusive, then stop looking and drop the others
 
-- determine discount
WHERE comscheditem_id = [use function to determine which comscheditem to apply]
 
If primary rep's schedule is exclusive, do not include any other schedules
If no Commission Schedule is found that could apply to a rep on a salesline, and rep is set to use Commission Schedule, set commission percent to 0.
If Rep is not set to use Commission Schedules, then use the default commission percent for that rep as the Commission Percent.
 
 

What if multiple Commission Schedules could apply to a salesline or invoiceline (see Commission Schedule Assignment below)? 
 
 First, select the Schedule to apply, based on this order of precedence. 
- Sales Rep
- Ship-To
- Customer
- Item
- Product Category
- Customer Type
- Sales Rep Group
Then select the commission rate, based on the discount, from the Commission Schedule.
Multiple commission schedules may apply to a line, if none of them are exclusive. If any of the Commission Schedules that could apply to the line are Exclusive, then take the highest order exclusive Schedule and apply only that one. 
 
 
Adjustment Percentage
 
The Adjustment Percentage is applied based on the Settings for Enhanced Commissions. 
 
If Reps or Managers are set to receive Full Commission, then the Adjustment Percentage is 100%. If they are set to receive a Split, the Adjustment Percentage is a fraction of the total number of Sales Reps found in the Sales Rep Assignment table “repassign” in excess of the assigned Sales Rep and his Manager.  For example, if 1 Sales Rep is found in “repassign” the percentage is 100% (1/1).  If two are found the percentage is 50% (1/2).  If three are found the percentage is 33.33% (1/3).
 
If Managers are set to Split Commissions with Reps, then they are counted in the calculation of Adjustment Percentage with the Reps. if they are set to split with Managers, then the Managers start with an additional 100% share that is split among all Reps who have the Role of Manager.
 
Commission Amount
 
The commission amount for a given Sales Order Line / Sales Rep will equal:
 
Sales Order Extended Line Price * Commission % * Adjustment %
 
The specific commission settings for the coitemcom or invcitemcom can be edited and will be stored in the coitemcom or invcitemcom table.
 
Invoices
How do the commission amounts relate to invoices?
 
Both Sales Order Line and Invoice Line will have a commissions tab.
When an SO is converted to an Invoice, 
-copy all values from COITEMCOM to INVCITEMCOM 
-once the values have been copied, prevent further edits of coitemcom. Commissions must be edited on invcitemcom from that point forward. 
When an invoice is created new, not from SO, there will be a commissions tab on the invc header and invc lines....
-The commissions tab on the invc header will connect to the invcitemcom table.
-Creating or editing commissions on Invoice lines will modify the INVCITEMCOM table.
 
 
Commission Payment Processing – Voucher Creation
 

Commissions should be paid from the values in the INVCITEMCOM table, not the COITEMCOM.
 
Commission amount is determined by joining from the invcitem_coitem_id back to the “invcitemcom” table’s invcitemcom_coitem_id and invcitemcom_salesrep_id.  The field Commission amount is calculated as:
 
invcitemcom_compercent * invcitemcom_adjpercent * invcitem_billed * invcitem_price
 
Custom Widget Changes

N/A

Schema Changes

What changes do we anticipate making to the database schema? New tables? Views? Indexes?

salesrepexpcat

New table called “salesrepexpcat” with the following columns:

Column Name

Description

Data Type

Comments

salesrepexpcat_id

pkey

integer

primary key

salesrepexpcat_salesrep_id

fkey

integer

foreign key to salesrep_id

salesrepexpcat_expcat_id

key

integer

foreign key to expcat_id

repassign

The Sales Rep field on the Ship To screen will be replaced with a new tab called Sale Rep Assignment.  This tab will enable to population of the new “reapassign” table.  Only a single Sales Rep can be flagged as the Primary Rep.

This table stores information used determine which Sales Reps  are eligible for commission, in addition to the Primary Sales Rep linked to the Customer Ship To record and the primary Sales Rep's Sales Manager (which is defined as the Primary Sales Rep's Manager in the Employee record).

Column Name

Description

Data Type

Comments

repassign_id

pkey

integer

primary key

repassign_salesrep_id

fkey

integer

foreign key to salesrep_id

repassign_cust_id

fkey

integer

foreign key to cust_id

repassign_shipto_id fkey integer foreign key to shipto_id
repassign_primary primary salesrep boolean only a single salesrep may be primary on a customer and shipto
 

comsched

A new table will be called “comsched” and will store information about Commission Schedules.

Column Name

Description

Data Type

Comments

comsched_id

pkey

integer

primary key

comsched_code

commission schedule code

text

name of the commission schedule

comsched_descrip

schedule description

text

description of the commission schedule

 

comscheditem
 
The comrate table links a Commission Schedule to one or more commission rates based on the discount taken off list price on a sales order line.

Column Name

Description

Data Type

Comments

comscheditem_id

pkey

integer

primary key

comscheditem_comsched_id

fkey

integer

foreign key on comsched_id

comscheditem_discountupto discount up to numeric percentage off the list price

comscheditem_comrate

commission rate

numeric

commission rate for the given Commission Schedule and discount

 

comschedass

A new table will be called “comschedass” and will store information about Commission Schedule assignments.

Column Name

Description

Data Type

Comments

comschedass_id

pkey

integer

primary key

comschedass_comsched_id

fkey

integer

foreign key to comsched table

comschedass_descrip

schedule assignment description

integer

description of the commission schedule assignment

comschedass_salesrep_id fkey integer foreign key to salesrep table
comschedass_shipto_id fkey integer foreign key to shipto table
comschedass_cust_id fkey integer foreign key to custinfo table
comschedass_item_id fkey integer foreign key to item table
comschedass_custtype_id fkey integer foreign key to custtype table
comschedass_prodcat_id fkey integer foreign key to prodcat table
comschedass_salesrepgrp_id fkey integer foreign key to salesrepgrp table
comschedass_exclusive is schedule exclusive boolean exclusive schedules may not be combined
comschedass_inclmngr include managers boolean should salesrep managers be added to coimtemcom or invcitemcom
 
coitemcom

A new table will be called “coitemcom” and will store information about the specific Commission Schedule, commission percentage, adjustment percentage, and commission for a salesline.

coitemcom_id | coitemcom_item_id | coitemcom_salesrep_id | coitemcom_default | coitemcom_role | coitemcom_comtype | coitemcom_compercent | coitemcom_adjpercent
 
Table structure for invcitemcom
 
invcitemcom_id | invcitemcom_item_id | invcitemcom_salesrep_id | invcitemcom_default | invcitemcom_role | invcitemcom_comtype | invcitemcom_compercent | invcitemcom_adjpercent

Column Name

Description

Data Type

Comments

coitemcom_id

pkey

integer

primary key

coitemcom_coitem_id

fkey

integer

foreign key on coitem_id

coitemcom_salesrep_id

fkey

integer

foreign key on salesrep_id

coitemcom_default use default values boolean if true, calculate role, type, compercent and adj percent. If false, allow manual override
coitemcom_ismngr rep or manager boolean used to determine which commission adjustment pool to use
coitemcom_split full or split boolean if true, adjust commission, if not, pay full
coitemcom_compercent commission rate numeric commission rate for the salesrep for this salesline
coitemcom_adjpercent adjustment percentage numeric adjustment percentage for this salesrep for this salesline

Note: Unlike the way in which tax is calculated in xTuple where the amount is determined with a DB function and not stored in the database, the Commission Percentage and Adjustment Percentage are calculated initially based on table lookups, but are modifiable for a given Sales Order Line and therefore must be stored in a table.

invcitemcom
A new table will be called “invcitemcom” and will store information about the specific Commission Schedule, commission percentage, adjustment percentage, and commission for a salesline.

Column Name

Description

Data Type

Comments

invcitemcom_id

pkey

integer

primary key

invcitemcom_coitem_id

fkey

integer

foreign key on coitem_id

invcitemcom_salesrep_id

fkey

integer

foreign key on salesrep_id

invcitemcom_default use default values boolean if true, calculate role, split, compercent and adj percent. If false, allow override
invcitemcom_ismngr rep or manager boolean used to determine which adj group to use
invcitemcom_split split or full boolean if true, use adjustment, if not, use full
invcitemcom_compercent commission rate numeric commission rate for the salesrep for this salesline
invcitemcom_adjpercent adjustment percentage numeric adjustment percentage for this salesrep for this salesline

Note: Unlike the way in which tax is calculated in xTuple where the amount is determined with a DB function and not stored in the database, the Commission Percentage and Adjustment Percentage are calculated initially based on table lookups, but are modifiable for a given Sales Order Line and therefore must be stored in a table.

 

compaid

 This table has the following columns: 

Column Name

Description

Data Type

Comments

compaid_id

pkey

integer

primary key

compain_invcitem_id

fkey

integer

foreign key on invcitem_id

compaid_salesrep_id

fkey

integer

foreign key on salesrep_id

compaid_vohead_id fkey integer foreign key on vohead_id
compaid_combatch commission batch number integer if salesrep receives check, combatch is used instead of vohead
compaid_commission commission integer amount of commission paid
compaid_createdate date timestamp date the row is inserted

Note: On the Commissions Payment and Reporting Display, the concept of “paid” versus “unpaid” is determined based on the presence or absence of a row in the “compaid” table.  A row for an invcitem_id indicates payment for a specified salesrep_id.  Absence of a row indicates that no payment has been made.  There are no partial payments.

Privilege changes

Privileges for feature

Name

Description

MaintainSalesRep (existing priv)

Can Add/Edit/Delete Sales Rep tab (on the Sales Order Header), Commissions tab (on the Item screen), Commissions tab (on Sales Order Line), Commissions tab (on Sales Order Header), Commissions Reporting Display

MaintainEnhancedCommissions Can Add/Edit/Delete on these screens:  Commissions Schedules (new screen), Commission Schedule Assignments (new screen),  Enable/Disable Enhanced Commissions (Setup)

MaintainVouchers

Use Pay Commissions button (button on the dspCommissions report screen)Can Add/Edit/Delete on these screens:  Commissions Schedules (new screen), Commission Schedule Assignments (new screen),  Enable/Disable Enhanced Commissions (Setup)

ViewCommissions Can View Sales Rep tab (on the Sales Order Header), Commissions tab (on the Item screen), Commissions tab (on Sales Order Line), Commissions tab (on Sales Order Header), Commissions Reporting Display

 

Stored Procedure Changes

getSalesRep
The system assigns the Sales Rep that is linked to the Customer Ship To on the Sales Order.
 
getSalesReps
The system performs a lookup on the Sales Rep Assignment table and adds any Sales Reps in that table linked to the:
 
A) Customer Ship To 
B) Customer 
 
getSalesRepMngr
The system performs a lookup on the Sales Rep's Employee record and links the Sales Rep's Manager's Sales Rep to the Sales Order (if the Sales Rep's Manager is a Sales Rep)
 
getComSchedItem
Determine which commission rate to apply based on the discount taken off list price on a sales order line. The system will determine the Commission Percentage by sales order line based on the method described in Commission Percentage, above.
 
calculateCommissionAdjustment
Determine the amount to adjust the commission payment. The system will determine the adjustment based ont he method described in Adjustment percentage, above.
 
calculateCoitemCommission
Sales Order Extended Line Price * Commission % * Adjustment %
 
calculateFieldCommission
The method for determining the field commission (amount to be paid) is described in the Commission Amount section, above.

Performance Considerations

NA

Error Handling

No commission rates defined
No commission schedule asssigned

Commission confusion—what rate applies?

QA Considerations

Does this feature require any special tools or data to test? Is it testable (some features may be hard to reach from the user level)?

What are some anticipated areas of concern that require special attention?

Test various commission scenarios, make sure Primary, Manager and all other reps are commissioned correctly

Documentation Considerations

Is there a significant documentation impact?

Does the feature require a standalone essay or only field-level descriptions?

This feature will require documentation to clarify the functionality. It will need a short product guide to describe some use-case scenarios.

Release Considerations

If this is done in time, it should be incorporated into a 3.8 release.

 
jrogelstad's picture
Offline
Joined: 12/10/2008
This looks good a few

This looks good. A few thoughts at first glance:

If enhanced commissions is turned on, once some entries have been made that use those tables you shouldn't be able to turn it off. Otherwise you could have some serious confusion about things in a mixed state.

What happens to the "old" commission functionality when enhanced is turned on? The legacy commissions features are largely incompatible with this I think. So shouldn't some fields and reports be hidden? What happens if I turn enhanced commissions on and I've been using the old method? Does the data migrate? Is there any interaction between old and new commission data and interfaces?

The sales history screens will have to be modified to show the commission break out when they are opened.

Currently you can define a default sales rep and commission globally for customers which in turn copies from customers to sales orders. You'll need to at least provide a new way to hand the customer commissions default. I'm not so sure about the global default for customers, but you'll at least need to hide the "old" settings if not provide an alternate interface for the new break out method.

John

 
fblauer's picture
Offline
Joined: 01/11/2007
Payment of commissions

How about situations where commissions are only paid on invoices that are paid? I am not clear on how this would be handled.

 
bcwilson's picture
Offline
Joined: 12/30/2008
That's how it works

The Commissions report, which is used to determine payment of commissions, is based on paid invoice items only.

 

mead