mirror of
				https://github.com/inventree/inventree-website.git
				synced 2025-10-31 13:35:48 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| name: inventree-ipn-generator
 | |
| author: LavissaWoW
 | |
| license: MIT
 | |
| open_source: true                                                                 
 | |
| stable: true
 | |
| maintained: true
 | |
| pypi: true
 | |
| package_name: inventree-ipn-generator
 | |
| github: https://github.com/LavissaWoW/inventree-ipn-generator
 | |
| issue_tracker: https://github.com/LavissaWoW/inventree-ipn-generator/issues
 | |
| categories:
 | |
|     - Event
 | |
| tags:
 | |
|     - Part
 | |
|     - IPN
 | |
|     - Generator
 | |
| ---
 | |
| 
 | |
| ## Introduction
 | |
| Installing this plugin enables the automatic generation if Internal Part Numbers (IPN) for parts.
 | |
| 
 | |
| ## Installation
 | |
| To automatically install the plugin when running `invoke install`:
 | |
| Add `inventree-ipn-generator` to your plugins.txt file.
 | |
| 
 | |
| Or, install the plugin manually:
 | |
| 
 | |
| ```
 | |
| pip install inventree-ipn-generator
 | |
| ```
 | |
| 
 | |
| For the plugin to be listed as available, you need to enable "Event Integration" in your plugin settings.
 | |
| This setting is located with the Plugin Settings on the settings page.
 | |
| 
 | |
| ## Settings
 | |
| 
 | |
| - Active - Enables toggling of plugin without having to disable it
 | |
| - On Create - If on, the plugin will assign IPNs to newly created parts
 | |
| - On Change - If on, the plugin will assign IPNs to parts after a change has been made.
 | |
| Enabling this setting will remove the ability to have parts without IPNs.
 | |
| 
 | |
| ## Pattern
 | |
| Part Number patterns follow three basic groups. Literals, Numerics, and characters.
 | |
| When incrementing a part number, the rightmost group that is mutable will be incremented.
 | |
| All groups can be combined in any order.
 | |
| 
 | |
| A pattern cannot consist of _only_ Literals.
 | |
| 
 | |
| For any pattern, only the rightmost non-literal group will be incremented.
 | |
| When this group rolls over its max, the next non-literal group to the left will be incremented.
 | |
| Example: Given the groups (named for demo): L1C1N1C2L2
 | |
| Incrementing follows this order: C2, N1, C1.
 | |
| 
 | |
| > **_NOTE:_** When C1 in the above example rolls over, the plugin will loop back to the first IPN.
 | |
| > This will cause duplicate IPNs if your InvenTree allows duplicate IPNs.
 | |
| > If your InvenTree does not allow duplicate IPNs, this will cause an error at the moment!
 | |
| > This will be addressed in an upcoming update.
 | |
| 
 | |
| ### Literals (Immutable)
 | |
| Anything encased in `()` will be rendered as-is. no change will be made to anything within.
 | |
| 
 | |
| Example: `(A6C)` will _always_ render as "A6C", regardless of other groups
 | |
| 
 | |
| ### Numeric
 | |
| Numbers that should change over time should be encased in `{}`
 | |
| - `{5}` respresents a number with max 5 digits
 | |
| - `{25+}` represents a number 25-99
 | |
| 
 | |
| Example: `{5+}{3}` will result in this range: 5000-9999
 | |
| 
 | |
| ### Characters
 | |
| Characters that change should be encased in `[]`
 | |
| - `[abc]` represents looping through the letters `a`, `b`, `c` in order.
 | |
| - `[a-f]` represents looping through the letters from `a` to `f` alphabetaically
 | |
| 
 | |
| These two directives can be combined.
 | |
| - `[aQc-f]` represents:
 | |
| - - `a`, `Q`, `c-f`
 | |
| 
 | |
| ### Examples
 | |
| 1. `(AB){3}[ab]` -> AB001a, AB001b, AB002a, AB021b, AB032a, etc
 | |
| 2. `{2}[Aq](BD)` -> 01ABD, 01qBD, 02ABD, 02qBD, etc
 | |
| 3. `{1}[a-d]{8+}` -> 1a8, 1a9, 1b8, 1b9, 1c8, 1c9, 1d8, 1d9, 2a8, etc
 |