Assemble-to-Order Configurator

The Assemble to Order (ATO) Configurator is designed to facilitate make-to-order scenarios where attributes about a particular product may change from one sale to another—and where these attributes can affect bills of materials, costing and pricing.


The Assemble to Order (ATO) Configurator is designed to facilitate scenarios where goods or services are sold, in which attributes about a particular product may change from one sale to another—and where these attributes can affect bills of materials, costing and pricing. For products, the ATO Configurator is designed to leverage the capabilities of the manufactured item type which is designed for make-to-order environments. The reference item type may also be used for configuration in scenarios where materials and cost are not tracked, but users want to be able configure the pricing of an item sold based on attributes.

The ATO Configurator is best used in conjunction with items that use the job costing method. In this method, the cost of the work accumulated on a work order for the configured item is passed directly to cost of sales in the general ledger—and to the sales history table (found in sales analysis reports, the api.saleshistory view or the cohist table) for accurate margin reporting.

Note: With job costing, the act of issuing-to-shipping simultaneously posts production on the work order and issues the item(s) to shipping. This ensures that the cost flows directly to the associated sales order. Job cost items cannot be put into inventory.

If your configuration options don’t have a bearing on cost, you can use the average cost method. For this method your reporting would be based off sales history. However, if you do this, you will lose the one-for-one relationship of the cost of work to the sale because inventory doesn't recognize the differences between one item and another. In other words, when you look at your inventory, you would see you have X quantity on hand; however, you would have no idea what configurations X quantity represents. If you need to track these things in inventory, the best thing to do would be to create a new item number for each configuration.


We suggest having an understanding of the following xTuple ERP concepts before you start this section:

  • Item

  • Characteristics

  • Pricing Schedules

  • Bill of Materials

  • Sales Orders

  • Work Orders

Brief Explanation

Configuration begins in the item window. When the item type is classified as manufactured or reference, it may be flagged as configured. The characteristics of configured items may have a price associated with them. Advanced characteristic pricing for configured items is also supported by pricing schedules. Associations between characteristics and bill of material items may be defined for configured manufactured items, such that a bill of materials item can only be used when a specific characteristic value is selected on a sales order.

Sales order line items will recognize and treat configured items differently than other items. If applicable, changes in characteristic selections may affect the pricing and pending availability listings, when applicable. When a work order for a configured line item is exploded, the added materials are based on characteristic selections for the line item. After work order explosion, characteristics on the sales order line item may no longer be edited unless the work order is imploded. Configured items behave in the manufacturing, shipping and billing cycles the same way non-configured manufactured and reference items behave.

Detailed Explanation

For the purposes of this tutorial, we will be using the xTuple demo database. Please follow along with steps outlined below.


The first thing we need to do is open the item window, which can be done by following these steps:

  • Go to "Products" from the top menu
  • Select the "Items" submenu 
  • Select "List"
  • The "Items" window will open
  • Select CTRUCK1 from the list
  • For demonstration purposes we will be choosing the CTRUCK1 item. Right-click on this item and select edit.

The item window will then open:


The item maintenance window includes a "configured" check box that is enabled when the item type selected is either "manufactured" or "reference."

Note: The possible item types are limited because configured items may not be stored or tracked in inventory. This limitation exists because, currently, it would not be possible to distinguish the difference between one item and another for either netting or costing purposes, if inventory stocking of configured goods were allowed. Depending on community involvement, future functionality could be added to allow inventory tracking of configured items by serial number.

When "configured" is checked, the list price column becomes visible on the characteristics tab. A characteristic list price also appears as an editable field when characteristics are added to or edited on the item. The normal list price for a configured item will be reflected as the "base price" on a sales order. Characteristic list prices will be the default prices used when characteristic and value are selected on a sales order, and will be added to the base price to calculate a new "net unit price" for the item on the sale.

Info: The usual business logic of characteristic selection values works the same as with any other item. That means a list of selectable values for sales can be built by including the same characteristic multiple times with different values. The characteristic flagged as "default" will be the default value on the sales order. 

Pricing Schedule Item

Pricing of characteristic values for configured items can be better controlled through pricing schedules. You can open the "Pricing Schedule Item" window by following these steps: 

  • Go to "Sales" from the top menu
  • Go to the "Pricing" sub menu
  • Click the "Pricing Schedules" option
  • The "List Pricing Schedules" window will open
  • Click the NEW button on the right menu
  • The "Pricing Schedule" window will open
  • In the "Name" box, type a name for the pricing schedule
  • Click the NEW button

The "Pricing Schedule Item" window will open:


The "pricing schedule item" screen has a base tab where overrides to the item list price may be added. For configured items, the characteristic tab will be enabled, which allows override pricing by characteristic to be added. 

The sales order window implements pricing selection logic for characteristics the same way as item pricing: the customer receives the lowest price they are eligible for, based on price schedule assignments and price schedule quantity break logic.

Bill of Material Item

Characteristic assignments may be set to affect bill of materials explosion on work orders for configured items. A configuration tab appears on the bill of materials item window when the parent item is flagged as "configured." To associate a bill of materials item with one of its parent's characteristic values, select a characteristic and value to cause it to be included in the work order. The listing of characteristics and corresponding values on this tab are determined by the characteristics that have been added to the parent item in the item window.

If no characteristic information is selected, the item will be included on all work orders.

To open the "Bill of Materials Item" window follow these steps:

  • Open the "Item" window
  • Click the MATERIALS button 
  • The "Bill of Materials" window will open
  • Select YPAINT1 from the list below and click the EDIT button

The "Bill of Materials Item" window will open for that specific item:


The bill of materials item windows pictured show a set up where YPAINT1 is only included on work orders where the parent sales order has selected the value Bright Yellow for Characteristic "Color." A separate bill of materials item exists for YPAINT2 that specifies it will be only be included if the "color" value selection is Neon Yellow.

Sales Order

Sales order entry works almost exactly the same way with configured items as it does with non-configured items. The main difference is between how information is calculated and displayed.

To open the "Sales Order Item" window, you can follow these steps: 

  • Go to the "Item" window
  • Click the WORKBENCH button
  • Select the "Orders" tab
  • Click the SALES ORDER radio button
  • Right-click any of the sales orders and select EDIT
  • Select the "Line Items" tab
  • Select CTRUCK1 and click the VIEW button

The "Sales Order Item" window will open:


Regarding make-to-order items, it is important to note that a work order will be created when the sales order line item is saved. It is common to configure xTuple to automatically explode work orders when they are created, which means that the bill of materials will be copied to the work order. Once this happens, the characteristics on the sales order will be set to view only. This is necessary to enforce the integrity of the relationship between the characteristics on the sales order and the materials on the work order.

If you wish to change sales order characteristic selections in this state, the work order must first be manually imploded. If the work order is already in process, it will not be possible to implode the work order or change sales order characteristics. Any changes to the work order from that point on would have to be accomplished by manually adding and removing materials through the "work order materials" window.

Info: If you encounter frequent changes to sales order characteristics on configured items before work has begun, it may be best to disable automatic work order explosion so that this is handled manually by the shop floor when they are ready.

"Automatic Work Order" explosion can be enabled and disabled by following these steps:

  • Go to "System" from the top menu
  • Select "Setup"
  • Select the "Module" drop-down menu and choose "Manufacture"


Configured items behave in the manufacturing, shipping and billing cycles the same way non-configured manufactured and reference items behave.