Pricing Items P3L Cheat Sheet
Pricing Item P3L Cheat Sheet
Pricing items are all about calculating price. Costing is objective, pricing is subjective. Within your assembly tree and operations, you are concerned with calculating cost. Once you have done proper costing, you need to determine a price that works for your business and the customer. Determining the "right" price takes into account several factors:
- Your bottom line
- Your relationship with the customer
- The characteristics of the opportunity
- What the customer is willing to pay
Pricing items give you a one-stop-shop to go through the exercise of pricing without sacrificing accuracy and clarity in your costing.
A pricing item is responsible for outputting a numeric percentage value to apply to a certain category of cost. Pricing is calculated using a markup or margin formula, and can be applied to 5 different cost categories - purchased components, materials, outside processing, inside processing, and total cost. Each pricing item should set an output percentage using
PERCENTAGE = 10.
Pricing item formulas have access to the full suite of variable functionality, including
table_lookup. It also has access to all globally available math functions, such as
median, list functionality, workpiece and price dict (limited to pricing item communication only), access to quantity information with
get_make_quantities(), and the ability to rename pricing items with
PURCHASED_COMPONENT_COST- sum of all costs associated with purchased components in the entire assembly
MATERIAL_COST- sum of all material operation costs (excluding any found within components of type purchased) in the entire assembly
OUTSIDE_COST- sum of all operations with
Truein the entire assembly
INSIDE_COST- sum of all operations that do not fit into the other three categories in the entire assembly
TOTAL_COST- sum of all costs in the entire assembly
CALCULATION_TYPE- determines how the output percentage value calculates its price contribution, can either be "markup" or "margin". Use globals
MARGINrespectively to represent these strings.
COST_CATEGORY- determines what "color of money" the output percentage references to calculate price contribution. Either "general", "purchased_component", "material", "inside", or "outside". Use globals
OUTSIDE_COSTrespectively to represent these strings.
COST- the dollar amount of the cost category that the pricing item is tied to. For example, if a pricing item has a
COST_CATEGORY == "material",
COST == MATERIAL_COST
contact- global object containing attributes about the contact & account associated on the quote. Same attributes as with operation P3L.
REQUESTED_QUANTITY- customer requested quantity
NOTE: We are only including functions that are not included in operation P3L.
Will dynamically rename the pricing item based on the string name argument. If this function is not called, the name will default to the name of the operation definition in your processes page.
Pricing item P3L does NOT have access to a lot of operation P3L functionality. This includes: - The
part object - Custom attributes with
get_custom_attribute - Requesting interrogations e.g.
analyze_mill3() - Accessing child info with
The following example demonstrates how to implement a very basic customer specific markup. An extension of this implementation would be to use a custom table lookup to dynamically fetch markup percentages based on account name. The settings for this pricing item are calculation type of markup and cost category of general.
markup_factor = var('Markup Factor', 1.0, '', number, frozen=False) if contact: if contact.account.name == 'Pint Drinker Machine': markup_factor.update(1.5) markup_factor.freeze() base_percentage = var('Base Percentage', 10, '', number) PERCENTAGE = markup_factor * base_percentage