From 14a6e24f4795eaf40fabe5a60d88647b2eda6001 Mon Sep 17 00:00:00 2001 From: LavissaWoW Date: Thu, 21 Mar 2024 22:07:03 +0100 Subject: [PATCH] [REPO] Add plugin inventree-ipn-generator --- _publishers/LavissaWoW.md | 7 +++ _repo/inventree-ipn-generator.md | 84 ++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 _publishers/LavissaWoW.md create mode 100644 _repo/inventree-ipn-generator.md diff --git a/_publishers/LavissaWoW.md b/_publishers/LavissaWoW.md new file mode 100644 index 00000000..8fc6c68c --- /dev/null +++ b/_publishers/LavissaWoW.md @@ -0,0 +1,7 @@ +--- +short_name: LavissaWoW +name: Nichlas W. +github: LavissaWoW +website: https://www.linkedin.com/in/nfnw/ +--- +Yes, WoW is for World of Warcraft \ No newline at end of file diff --git a/_repo/inventree-ipn-generator.md b/_repo/inventree-ipn-generator.md new file mode 100644 index 00000000..019e3d9f --- /dev/null +++ b/_repo/inventree-ipn-generator.md @@ -0,0 +1,84 @@ +--- +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