Purchased Components Pricing

Video Summary

How Does Pricing Logic Work For Purchasing Costs?

In your account, one of the processes in your "Processes" page will be marked as the "default purchased component process." 

Whenever a purchased component is added to an assembly or an existing component is converted to a purchased component, this default process will automatically be assigned to the component. The pricing logic in the operation(s) of that process will then reference the properties of the purchased component object linked to the component in the assembly. By default, your account will have a process called "Purchased Components" with one operation, called "PC Piece Price" that enacts pricing logic by applying the piece price to the part quantity. Here is that formula:

The way this operation looks when applied to a component in a quote is as follows.

NOTE: The BOM quantity for this component is 4. So that means each quantity requested by the customer (1, 5, 10) will be multiplied by 4 when using part.qty in the above formula.

You can additionally specify custom columns in your purchased components to implement whatever sort of pricing logic you want. You configure these columns in the "Purchased Components" tab of the "Processes" page.

How Does Pricing Logic Work For Insertion Times?

Along with implementing pricing to encapsulate the purchasing cost of purchased components, you can implement logic to account for the insertion and assembly times of purchased components as well. For the following example, let's assume I have setup a custom column called "Insertion Time" for my purchased components. In my assembly operations, I want to reference this insertion time value on my purchased components to drive assembly costing. Here is the configuration setting for the custom "Insertion Time" column:

As the "Code Name" field tells us in the above picture, I will access the insertion time value in my pricing formulas using "purchased_component.insertion_time". Here is how I accomplish this logic in my Assembly operation formula.

purchased_children = var('Hardware Count', 0, '', number, frozen=False)
purchased_children.update(part.purchased_child_count)
purchased_children.freeze()

# rename operation to give high level indication of how many pieces we have to insert
set_operation_name('Child BOM Insert {}'.format(purchased_children))

default_time_per_insert = var('Default Time Per Insert', 30, 'Insert time in seconds', number)
total_insertion_seconds = 0
for pc in get_child_info(type=PURCHASED, recursive=False):
    if pc.purchased_component.insertion_time:
        total_insertion_seconds += pc.purchased_component.insertion_time * pc.count
    else:
        total_insertion_seconds += default_time_per_insert * pc.count
        
runtime = var('runtime', 0, 'Runtime in hours', number, frozen=False)
runtime.update(total_insertion_seconds / 3600)
runtime.freeze()

rate = var('Rate', 50, '$/hr', currency)

PRICE = rate * runtime * part.qty
DAYS = 0

This operation looks like the following when applied in a quote:

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us