Tooling Management
Overview
The concept in tooling in xTuple should be revised so that it is useful in the context of real world manufacturing scenarios. For example, typically tools are issued and used on work orders and then returned to inventory when the work order or operation is complete. Some shops also manufacture their own tools, so tools themselves should be able to be enigneered and manufactured or purchased the same as any other item in the system.
We will enhance the functionality of the Tooling item type in xTuple to include its use in Bills of Materials and add the ability to engineer Bills of Materials and Bills of Operations for tools so that they may be manufactured. Tooling items will have unique netting behavior that when included on a planned order or work order shows them as both demand requirements like other materials, and as supply due at the work order due date. Finally because tooling falls into a grey area of being both a material and a capacity constraint, we will add the ability to include tools in the capacity reporting.
The first pass of this development will be implemented via an Extension Package compatible with xTuple 3.3.0. After a suitable stabilization period, all tooling functionality will be added to a future core edition of xTuple ERP. Basic tooling functionality will be available in PostBooks edition, while capacity related functionality will be reserved for the Manufacturing Edition. Items highligted in yellow indicate functionalities that will be reserved for incorporation into the core int 3.5.0.
Functional Requirements
Tooling items (fixtures) should be enhanced to include the following functionality:
- Allows users to add Tooling and Reference items to a Bill of Materials.
- Add fixed quantity option to Bill of Materials and Work Order Materials.
- Alter availability netting calculations throughout application to consider fixed quantity.
- Alter availability netting calculations to assume tools will be returned on the work order due date.
- Tooling items not already returned will be returned automatically when the work order is closed.
- Bill of Materials and Bills of Operations may be created for tooling items.
- Ability to create supply orders includingWork Orders, Purchase Orders and Transfer Orders for Tooling items.
- Tooling item usage will be included on Capacity Management Reports.
New Terms and Definitions
- Used on bill of material and work order material items to specify a "flat" quantity of material required that is independent of the total quantity produced on a batch or work order.
- A material resource used in the in a manufacturing process that is returned upon completion of a work order such as a reusable mold, apparatus, fixture, or tool. It may be included on a bill of materials for an item, usually specifying a fixed quantity. Tooling items can be purchased or it can be manufactured. A manufactured tool can have a BOO, a BOM and a work order. As with other material items, tools can be tracked as serialized items.
Fixed Quantity
Tooling Item
Related Existing Functionality
As of xTuple 3.3.0, tooling exists as an inventorable item type that may be tracked with all the methods available to other inventory items including:
- None, Regular, Lot and Serial control methods
- Standard and Average costing methods
- Location control
This development will largely leverage functionality that exists for other inventoryable items that tooling is curently not allowed to be used for including its use in bill of materials and the ability to create supply orders such as work orders, purchase orders and transfer orders.
Existing netting functionality will be used for tooling such as the Inventory Availability, Running Availability and Allocations reports with the main difference being that tools specified on work orders will be displayed as both demand and supply on these reports.
Because tooling plays a special role as both a material requirement, and also a capacity constraint, it will also leverage existing capacity planning tools such as the Time Phased Capacity, Load, and Available Capacity reports, as well as the existing Capacity Buffer Status report.
A "Tooling Reference" text field currently exists on the Bill of Operations Item that is only informational.
Similar and Related Requests
Issue #9830: Tooling issue and return (The driving request for this specification).
Issue #3678: The tooling reference field should have a search button to allow to search items in the item master that have a item type of "tooling". For some reason that field is text only right now.
Conflicting Features
The tooling reference on the Bill of Operations item should intuitively be related somehow to the Tooling Item type, but there is currently no plan to associate them as doing so would likely make the use of tools even more complex and confusing.
The system currently allows users to define a cost for tools, but because the functional definition of a tool says it only exists as a temporary resource on a work order, the cost should not be rolled up into the bill of material cost. Similarly, reference items allow a cost to be defined, but because they are non-inventory by definition there is no way to issue the cost to a work order so including the cost of reference items in a cost roll up would be guaranteed to lead to inventory variances.
User-Level Functionality
Material Planning
Bill of Materials
Users should be able to create Bills of Material for Tooling item types as they can with any other item type. The current restriction prohibiting this will be removed.
Batch size becomes an essential element for cost calculations on items that have fixed quantities. This quantity will be requiered to be a number greater than or equal to zero to prevent division by zero errors when performing cost calculations.
Bill of Material Items
Bill of Materials should allow users to add tooling and reference items as bill of material items. Because these types of items are not typically not required to be proportional to the quantity being produced, a new field will be required called "Fixed Qty" to specify a flat rate quantity required for a work order as pictured:
For tooling and reference items the fixed quantity should default to one and the Qty Per and Scrap Qty should default to zero. Regular items should default to fixed quantity of zero, Qty per of one, and scrap of zero.
An item type column will be added to the Bill of Materials window to make it easy to distinguish between Tooling and other types of items. Fixed Quantity will be added to the list of columns viewable from the BOM header.
Note that when costing Bills of Materials by fixed quantity (for non Tooling and Reference items), the fixed quantity will be divided by the batch size specified on the BOM header so that cost for the fixed quantity will be proportional to a real world case scenario.
Work Order Material Item
The Work Order Material Requirement window will be altered to allow users to enter a fixed quantity. The default rules for quantity will be the same as the billi of materials.
Reporting
Generally all reports that use netting calculations will be altered to consider fixed quantity. A list of reports affected this way is listed in the reports section below.
In addition several listed windows and reports will inherit the inclusion of tooling in netting as both demand and supply:
- Inventory Availability
- Inventory Buffer Status
- Item
- Item Availability Workbench (**Costed BOM in 3.4)
- MPS Detail
- MRP Detail
- Pending Availability
- Reorder Exceptions By Planner Code
- Return Authorization Item
- Running Availability
- Substitute Availability By Item
- Sales Order Item
- Transfer Order Item
Capacity Planning
In order to provide for visability of tooling for capacity planning we will provide the ability to define capacity information at the item site level that mirrors capacity data inputs for the work center on a scheduling tab. This tab will only be enabled for tooling items, and only available on the manufacturing edition of xTuple.

Because tooling can be intimately related to work centers in resource planning it is likely engineers will want to see tools and other materials on the Bill of Operations Item window. A new tab for materials will be added to the Bill of Operations Item window that lists all materials associated with the BOO item, again with tooling appearing as orange for special emphasis. Users will be able to add, edit and expire materials. Additionally, they will be able to associate materials that already exist on the BOM with the operation via Attach and Detach buttons.
Reporting
The following Manufacturing Edition capacity reports would be altered to include checkbox options to show capacity for work centers and/or tooling:
- Time Phased Capacity
- Time Phased Load
- Time Phased Available Capacity
- Rough Cut Capacity
- Time Phased Rough Cut Capacity
- Capacity Buffer Status
Additional Window Changes
The following window files reference BOM quantites and should be updated to include fixed quantity in their displays and calculations: **
- bom.cpp
- bomItem.cpp
- dspItemCostDetail.cpp
- dspPendingAvailability.cpp
- dspPendingBOMChanges.cpp
- dspSequencedBOM.cpp
- dspSingleLevelBOM.cpp
- dspSingleLevelWhereUsed.cpp
- itemAvailabilityWorkbench.cpp
- salesOrderItem.cpp
- transferOrderItem.cpp
The following window files reference work order material quantites and should be updated to include fixed quantity in their displays and calculations:
- correctOperationsPosting.cpp
- dspWoMaterialsByItem.cpp
- dspWoMaterialsByWorkOrder.cpp
- postOperations.cpp
- woMaterialItem.cpp
- workOrder.cpp
- workOrderMaterials.cpp
The Close Work Order window should be modified to handle the distribution of tools that are lot, serial or location controlled if returned on closing.
** Scripted solution will allow used of tooling items in these displays and consider fixed quantity in requirement and cost calculations, but will not display fixed quantity column. The new column will be added to the 3.4 core.
Report Changes
Reports that calculate costing should evaluate the cost of tooling and reference items as zero value.
The following reports in PostBooks edition should be altered to consider fixed quantity on BOM items:**
- CostedIndentedBOM.xml
- CostedSingleLevelBOM.xml
- ItemCostDetail.xml
- PendingBOMChanges.xml:
- PendingWOMaterialAvailability.xml
- SequencedBOM.xml
- SingleLevelBOM.xml
- SingleLevelWhereUsed.xml
The following reports in PostBooks edition should be altered to consider fixed quantity on work order material items:
- WOMaterialRequirementsByComponentItem.xml
- WOMaterialRequirementsByWorkOrder.xml
** Scripted solution will allow used of tooling items in these reports and consider fixed quantity in requirement and cost calculations, but will not display fixed quantity column. The new column will be added to the 3.4 core.
Problems and Alternatives
Costing
The costing of tools has the potential to be confusing and problematic. This specification states that tooling will be strictly excluded from cost rollup calculations. Because it is possible to enter costs for tooling and reference items, it is likely that some users will report that cost roll up is not working because the costs for these items are not being included. A little further thought, however, leads us to realize as stated previously that it is illogical for the full cost of a tool to hit a single item, and that it is impossible in practice to issue material costs for reference items. It is likely some advanced users will want a mechanism to depreciate a tool by applying some proportion of a cost of a tool to manufactured items throughout its lifespan. This would require an elaborate system that essentially allows cost allocation to be specified for tools similar to the way it is for work centers, but it would also require tracking the original and depreciating value of a tool through some kind of amortization table. The sponsor has agreed that for now this level of functionality is not required and is beyond the scope of this development effort. It may be pursued by a follow up effort in a subsequent development.
One potential problem is that while tools will not show up on costed bills of materials, the cost of issuing a tool will in fact hit WIP accounts in the manufacturing process. Once the tool is returned, the cost should move back from WIP to inventory leaving no net cost impact on the job. It is possible, however, that some users will find this behavior undesirable as it inflates WIP. In this case, tooling item should use standar cost should and be set to zero. If users still want to track the value of tools as an asset when they are purchase or manufactured, the inventory variance account for the tooling cost category should be set to the appropriate asset account. This way "inventory" values are zero which prevent the asset value from moving back and forth from WIP, but the asset value of tools is handled in a separate "offline" account which can be managed indpendant of inventory movement. It may be desirable in the future to formalize this behavior in the application and link it to depreciation schedule activity as described above.
Capacity
There is a question of whether the capacity of tooling as defined on the itemsite records should be the capacity per tool, which would ultimately be muliplied be the available quantity of tools, or that of all tools the same way as work center capacity is handled. The main sticking point with implementing it on a quantity per basis would be the intermittant visibility of quantities as tools are issued to work orders. Another potential problem is simply that having tooling capacity maintained in an inconsistentt way with work center capacity will likely invite user confusion. For these two reasons, we will handle capacity for tooling item sites exactly the way it is handled for work centers, which means the capacity stored there will be represent the total capacity of all available tools of the item site in question.
Internal Design
Basic Algorithms
Any place that currently uses the bom item quantity per or work order material quantiy per values to calculate total quantities will be changed to calculate as so:
Total Required Quantity = itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, bomitem_qtyper * (1 + bomitem_scrap)) * pQtyOrdered) + itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, bomitem_qtyfxd * (1 + bomitem_scrap))
Schema Changes
Table changes will be required. Contrary to the usual practice of keeping schema changes local to the extension schema, these changes will be made to the public schema. The subsequent upgrade schema that upgrades a standard database will need to check whether these changes have already been made and only apply them if they have not.
The schema for the Extension package will be called "tooling." All windows that reference sql statements that require overload types or functions listed below should include a script that calls a SET_PATH function that sets the Postgres search path to the tooling schema first, then public.
The bomitem table
|
Column Name |
Description |
Data Type |
Comments |
| bomitem_qtyfxd |
The fixed quantity required |
numeric(20,8) |
Specify flat qty rate, NOT NULL |
The womatl table
|
Column Name |
Description |
Data Type |
Comments |
| womatl_qtyfxd |
The fixed quantity required |
numeric(20,8) |
Specify flat qty rate, NOT NULL |
The bomhist table
|
Column Name |
Description |
Data Type |
Comments |
| bomhist_qtyfxd |
The fixed quantity required |
numeric(20,8) |
Specify flat qty rate, NOT NULL |
The bomwork table
|
Column Name |
Description |
Data Type |
Comments |
| bomwork_qtyfxd |
The fixed quantity required |
numeric(20,8) |
Specify flat qty rate, NOT NULL |
The bomdata type
|
Column Name |
Description |
Data Type |
Comments |
| bomdata_qtyfxd |
The fixed quantity required |
numeric |
Specify flat qty rate, NOT NULL |
The itemsitecap table
A new table to store item site capacity information for tooling in the tooling schema for the scripted version. As a core implementation it will be created in the manufacturing edition only. The definition is as follows:
|
Column Name |
Description |
Data Type |
Comments |
| itemsitecap_id | Primary Key | serial | Not null, Primary key |
| itemsitecap_itemsite_id |
Reference to item site primary key |
numeric(20,8) |
Foreign key, Unique, Not nul |
| itemsitecap_avgsutime | Average set up time | numeric(10,7) | Not null |
| itemsitecap_dailycap | Daily capacity | numeric(18,6) | Not null |
| itemsitecap_efficfactor | Efficiency factor | numeric(10,6) | Not Null |
| itemsitecap_avgqueuedays | Queue Days | integer | Not Null |
| itemsitecap_dept_id | Department Id | integer | Not Null |
Stored Procedure Changes
Functions that evaluate cost roll ups should ignore tooling items.
The following function files in PostBooks Edition will need to be altered to include the fixed quantity from BOM item in their calculations:
- copybom.sql
- createbomitem.sql
- createwomaterial.sql
- explodebom.sql
- explodekit.sql
- explodephantomorder.sql
- explodeplannedorder.sql
- explodesummarizedbom.sql
- explodewo.sql
- indentedbom.sql
- indentedwhereused.sql
- lowercost.sql
- massreplacebomitem.sql
- postmiscconsumption.sql
- postmiscproduction.sql
- postproduction.sql
- singlelevelbom.sql
- summarizedbom.sql
The following function files in Standard Edition will need to be altered to include the fixed quantity from BOM item in their calculations:
- activatebomrev.sql
- createbomrev.sql
- createplannedorder.sql
- explodereturnkit.sql
The following function files is Manufacturing Edition will need to be altered to include the fixed quantity from BOM item in their calculations:
- cumulativempsschedule.sql
- qtyforecasted.sql
The following trigger file in Post Books Edition will need to be altered to include the fixed quantity from BOM item in their calculations:
- bomitem.sql
The following function files in PostBooks Edition will need to be altered to include the fixed quantity from Work Order Material item in their calculations:
- changewoqty.sql
- closewo.sql
- correctproduction.sql
- createwomaterial.sql
- explodewo.sql
- indentedwomatl.sql (Note: This, and accompanying work order window change will have to wait until the core change to be implemented)
- issuetoshipping.sql
- postproduction.sql
- returnitemshipments.sql
- returnshipmenttransaction.sql
The following function files in Manufacturing Edition will need to be altered to include the fixed quantity from Work Order Material item in their calculations:
- correctoperationsposting.sql
- postoperation.sql
The following function will be changed to consider tooling as a work order output:
- orderedbywo
- qtyplanned (Standard Edition)
The following function should be altered to handle the returning of a tool
- closwo (Return any issued tools automatically)
- postmiscproduction (should not issue or return tools on backflush)
The following API view should be altered to allow for the use of tooling and reference items, and to include the fixed quantity field:
- bomitem
The following Metasql file should be altered to include tooling netting it's calculations
- runningAvailability-detail.mql
Performance Considerations
No change anticipated
Error Handling
No anticipated errors
QA Considerations
Costing and inventory netting capabilities should receive special attention in the QA cycle. MRP, in particular, should be checked to make sure requirements are calculating correctly.
Documentation Considerations
This specification could be converted to a user topic on tooling at the completion of this development. Otherwise normal reference documentation considerations apply.
Release Considerations
This development will be designed as an Extension Package that can be installed on xTuple version 3.3.0 to allow the sponsor to begin to take advantage of new tooling functionality well before the 3.4 development cycle is complete.
The code in this package should be converted directly into the core as a first priority when the 3.5 development cycle begins. The 3.4 upgrade cycle should check to see if this extension exists. If so, the scripts should not make schema changes that have already been made, and the package should be automatically removed.
Functionality related to capacity planning is manufacturing edition specific and should be ported exclusively to t



