mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-30 20:55:42 +00:00 
			
		
		
		
	Part units (#4854)
* Add validation to part units field * Add "pack_units" field to the SupplierPart model * Migrate old units to new units, and remove old field * Table fix * Fixture fix * Update migration * Improve "hook" for loading custom unit database * Display part units column in part table - Also allow ordering by part units - Allow filtering to show parts which have defined units * Adds data migration for converting units to valid values * Add "pack_units_native" field to company.SupplierPart model * Clean pack units when saving a SupplierPart - Convert to native part units - Handle empty units value - Add unit tests * Add background function to rebuild supplier parts when a part is saved - Required to ensure that the "pack_size_native" is up to date * Template updates * Sort by native units first * Bump API version * Rename "pack_units" to "pack_quantity" * Update migration file - Allow reverse migration * Fix for currency migration - Handle case where no currencies are provided - Handle case where base currency is not in provided options * Adds unit test for data migration * Add unit test for part.units data migration - Check that units fields are updated correctly * Add some extra "default units" - each / piece - dozen / hundred / thousand - Add unit testing also * Update references to "pack_size" - Replace with "pack_quantity" or "pack_quantity_native" as appropriate * Improvements based on unit testing * catch error * Docs updates * Fixes for pricing tests * Update unit tests for part migrations · 1b6b6d9d * Bug fix for conversion code * javascript updates * JS formatting fix
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								docs/docs/assets/images/part/part_units.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/docs/assets/images/part/part_units.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 171 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/docs/assets/images/part/part_units_invalid.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/docs/assets/images/part/part_units_invalid.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 26 KiB | 
| @@ -55,7 +55,19 @@ Trackable parts can be assigned batch numbers or serial numbers which uniquely i | ||||
|  | ||||
| ### Purchaseable | ||||
|  | ||||
| If a part is designated as *Purchaseable* it can be purchased from external suppliers. Setting this flag allows parts to be added to [purchase orders](../order/purchase_order.md). | ||||
| If a part is designated as *Purchaseable* it can be purchased from external suppliers. Setting this flag allows parts be linked to supplier parts and procured via purchase orders. | ||||
|  | ||||
| #### Suppliers | ||||
|  | ||||
| A [Supplier](../order/company.md#suppliers) is an external vendor who provides goods or services. | ||||
|  | ||||
| #### Supplier Parts | ||||
|  | ||||
| Purchaseable parts can be linked to [Supplier Parts](../order/company.md#supplier-parts). A supplier part represents an individual piece or unit that is procured from an external vendor. | ||||
|  | ||||
| #### Purchase Orders | ||||
|  | ||||
| A [Purchase Order](../order/purchase_order.md) allows parts to be ordered from an external supplier. | ||||
|  | ||||
| ### Salable | ||||
|  | ||||
| @@ -65,6 +77,31 @@ If a part is designated as *Salable* it can be sold to external customers. Setti | ||||
|  | ||||
| By default, all parts are *Active*. Marking a part as inactive means it is not available for many actions, but the part remains in the database. If a part becomes obsolete, it is recommended that it is marked as inactive, rather than deleting it from the database. | ||||
|  | ||||
| ## Units of Measure | ||||
|  | ||||
| Each type of part can define a custom "unit of measure" which is a standardized unit which is used to track quantities for a particular part. By default, the "unit of measure" for each part is blank, which means that each part is tracked in dimensionless quantities of "pieces". | ||||
|  | ||||
| ### Physical Units | ||||
|  | ||||
| It is possible to track parts using physical quantity values, such as *metres* or *litres*. For example, it would make sense to track a "wire" in units of "metres": | ||||
|  | ||||
| {% with id="part_units", url="part/part_units.png", description="Parts units" %} | ||||
| {% include 'img.html' %} | ||||
| {% endwith %} | ||||
|  | ||||
| ### Supplier Part Units | ||||
|  | ||||
| By default, units of measure for [supplier parts](../order/company.md#supplier-parts) are specified in the same unit as their base part. However, supplier part units can be changed to any unit *which is compatible with the base unit*. | ||||
|  | ||||
| !!! info "Example: Supplier Part Units" | ||||
|     If the base part has a unit of `metres` then valid units for any supplier parts would include `feet`, `cm`, `inches` (etc) | ||||
|  | ||||
| If an incompatible unit type is specified, an error will be displayed: | ||||
|  | ||||
| {% with id="part_units_invalid", url="part/part_units_invalid.png", description="Invalid supplier part units" %} | ||||
| {% include 'img.html' %} | ||||
| {% endwith %} | ||||
|  | ||||
| ## Part Images | ||||
|  | ||||
| Each part can have an associated image, which is used for display purposes throughout the InvenTree interface. A prominent example is on the part detail page itself: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user