Background
Product Groups were initially used as a simple way to group products for Segmented Account Pricing (previously known as Matrix Pricing). A product could be connected to a single Product Group.
When Simple Product Configurator and Percentage Pricing were developed, we tried to avoid creating more and more objects by scaling up the ‘Product Group’ object. As well as a ‘Direct’ relationship with a Product, a ‘Membership’ concept was created by introducing two junction objects:
- Group Member
- Group Relationship
Group Members
- Consider a Product with a Group Member record as having a child relationship to the Product Group.
- If, for example, you were selling cars and had different options for types of wheel, you might have a Product Group called ‘Wheels’ and all of your products that are wheels might have ‘Group Member’ records associating them to the ‘Wheels’ Product Group.
Group Relationships
- Consider a Product with a Group Relationship record as having a parent relationship to “the Group Members of a Product Group”.
- So, taking the car example above, you may have a ‘Car’ product that has a Group Relationship record to associate it with the ‘Wheels’ Product Group. If you add a Car to an opportunity/quote, you might want to see all the wheel products as options.
Super-set of Group Members in Group Relationships
Group Relationship records with Record Type ‘Option’ have two lookups to Product Groups. This gives Group Relationships access to two sets of Group Members. A ‘super-set’!
The two Product Group lookups on Group Relationship are called ‘Default Selected Product Group’ and ‘Default Unselected Product Group’. Flexpricer’s behaviour changes depending on which lookup a Product Group is placed in.
In the example above, we could split the ‘Wheels’ Product Group into two groups:
- Standard Wheels
- Optional Wheels
In the Group Relationship record for the ‘Car’ product, we could populate
- ‘Standard Wheels’ in the the ‘Default Selected Product Group’ lookup
- ‘Optional Wheels’ in the ‘Default Unselected Product Group’ lookup
All the wheels in ‘Standard Wheels’ and ‘Optional Wheels’ (the super-set) are available to the Car product but by default, only those in the ‘Standard Wheels’ Product Group are selected because that group is in the ‘Default Selected Product Group’ lookup.
Visually with another example
Behaviour
The Record Type of a Group Relationship record dictates Flexpricer’s behaviour when creating or updating line items.
Depending on the record type of the Group Relationship record, the behaviour will be different to Group Members of the associated Default Selected Product Group to Group Members of the associated Default Unselected Product Group.
If a Product has a related Group Relationship record of record type Option, then in the Simple Product Configurator, Group Members of the ‘Default Selected Product Group’ are considered to be options that are automatically selected by default in the configurator. Group Members of the Product Group associated with the ‘Default Unselected Product Group’ are not selected by default in the configurator.
If a Product has a related Group Relationship record of type Percentage, then in Percentage Pricing for Salesforce Products, that Product’s percentage calculation will take place only on line items where their associated products are Group Members of the ‘Default Selected Product Group’. Conversely, the percentage calculation will take place on all line items except those where their associated products are Group Members of the ‘Default Unselected Product Group’.
Summary
- Product Groups of record type ‘Membership’ have Group Members that join them to Products. There will typically be lots of Products associated to Product Groups using the Group Member record.
- ‘Master’ Products have Group Relationships that reference Product Groups using the ‘Default Selected Product Group’ and ‘Default Unselected Product Group’ lookups. There will typically be a few ‘master’ products then group members.
- Product Groups of record type ‘Direct’ are legacy and should not be used as they are not as scalable as Product Groups of record type ‘Membership’.