2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-08-05 19:41:41 +00:00

[plugin] Auto issue orders (#9565)

* Add builtin plugin for auto-issuing orders

* Add plugin to auto-issue orders

* Add placeholder documentation

* Fix typo

* Adds image macro

- To replace img.html
- includes checking if file exists

* Fix tooltips

* More docs

* Adjust plugin settings filters

* docs

* More docs

* More docs

* Updates

* Less restrictive URL checking

* Refactor build order page

* Fix typo

* Allow 429

* Debug output

* More debug

* Construct assets dir

* Cleanup

* Update docs README

* Refactoring more pages

* Fix image link

* Fix SSO settings

* Add hook to check for missing settings

- Ensure that all settings are documented!

* Add missing user settings

* Update docstring

* Tweak SSO.md

* Image updates

* More updates

* Tweaks

* Exclude orders without a target_date

* Fix for issuing build orders

* Further refactoring

* Fixes

* Image refactoring

* More refactoring

* More refactoring

* Refactor app images

* Fix pathing issues

* Suppress some openapidocs warnings in logs

(much easier to debug docs build issues)

* Fix image reference

* Reduce error messages

* Fix image links

* Fix image links

* Reduce docs log output

* Ensure settings are loaded before displaying them

* Fix for UI test

* Fix unit test

* Test tweaks
This commit is contained in:
Oliver
2025-06-03 17:07:12 +10:00
committed by GitHub
parent 89f8f132e1
commit 11ab0203b1
124 changed files with 1178 additions and 957 deletions

View File

@@ -8,41 +8,31 @@ InvenTree provides simple yet powerful management of stock levels. Multiple stoc
Stock adjustments can be accessed in any stock items table using the "Stock Options" dropdown entries:
{% with id="stock_options", url="stock/stock_options.png", description="Stock Options" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_options.png", "Stock Options") }}
### Move Stock
Multiple stock items can be moved to a new location in a single operation. Each item is moved to the selected location, and a stock tracking entry is added to the stock item history.
{% with id="stock_move", url="stock/stock_move.png", description="Stock movement" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_move.png", "Stock Move") }}
### Add Stock
Add parts to a stock item record - for example putting parts back into stock. The in-stock quantity for each selected item is increased by the given amount.
{% with id="stock_add", url="stock/stock_add.png", description="Stock addition" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_add.png", "Stock Add") }}
### Remove Stock
Remove parts from a stock item record - for example taking parts from stock for use. The in-stock quantity for each selected item is decreased by the given amount.
{% with id="stock_remove", url="stock/stock_remove.png", description="Stock removal" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_remove.png", "Stock Remove") }}
### Count Stock
Count stock items (stocktake) to record the number of items in stock at a given point of time. The quantity for each part is pre-filled with the current quantity based on stock item history.
{% with id="stock_count", url="stock/stock_count.png", description="Stock count" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_count.png", "Stock Count") }}
### Merge Stock
@@ -72,8 +62,6 @@ To merge stock items, check two or more items in a stock table and click on the
In the Merge Stock Items form, user can decide to allow mismatched suppliers or status to be merged together (disabled by default).
{% with id="stock_item_merge", url="stock/stock_item_merge.png", description="Stock Item Merge" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_item_merge.png", "Stock Item Merge") }}
Select the location for the new stock item and confirm the merge, then click on <span class="badge inventree confirm">Submit</span> to process the merge.

View File

@@ -8,9 +8,8 @@ InvenTree supports stock expiration dates, which allows individual stock items t
The stock expiry feature is disabled by default, and must be enabled via the settings menu:
{% with id="stock_expiry", url="stock/enable_stock_expiry.png", description="Enable stock expiry feature" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/enable_stock_expiry.png", title="Enable stock expiry feature") }}
!!! info "Non Expiring Stock"
If a Stock Item is not expected to expire, leave the expiry date field blank, or zero
@@ -19,29 +18,21 @@ The stock expiry feature is disabled by default, and must be enabled via the set
When creating a new stock item, the expiry date can be manually set by the user.
{% with id="expiry_create", url="stock/expiry_date_create.png", description="Add expiry date" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/expiry_date_create.png", title="Add expiry date") }}
If an expiry date is defined for a particular stock item, it will be displayed on the detail page. If the expiry date has passed (and the stock item is *expired*) then this will also be indicated.
{% with id="item_expired", url="stock/item_expired.png", description="Display expiry date" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/item_expired.png", title="Display expiry date") }}
The expiry date can be adjusted in the stock item edit form.
{% with id="expiry_edit", url="stock/expiry_date_edit.png", description="Edit expiry date" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/expiry_date_edit.png", title="Edit expiry date") }}
### Filter Expired Stock
The various stock display tables can be filtered by *expired* status, and also display a column for the expiry date for each stock item.
{% with id="stock_table_expiry", url="stock/stock_table_expiry.png", description="Filter by stock expiry" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_table_expiry.png", title="Filter by stock expiry") }}
### Index Page
@@ -58,20 +49,14 @@ For example, if a Part has a default expiry time of 30 days, then any Stock Item
If a Part has a non-zero default expiry time, it will be displayed on the Part details page
{% with id="part_expiry_display", url="stock/part_expiry_display.png", description="Part expiry" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/part_expiry_display.png", title="Display part expiry") }}
The Part expiry time can be altered using the Part editing form.
{% with id="part_expiry_edit", url="stock/part_expiry.png", description="Edit part expiry" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/part_expiry.png", title="Edit part expiry") }}
## Sales and Build Orders
By default, expired Stock Items cannot be added to neither a Sales Order nor a Build Order. This behavior can be adjusted using the *Sell Expired Stock* and *Build Expired Stock* settings:
{% with id="sell_build_expired", url="stock/sell_build_expired_stock.png", description="Sell Build Expired Stock" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/sell_build_expired_stock.png", title="Sell and build expired stock") }}

View File

@@ -23,9 +23,7 @@ An external stock location can be used to indicate that items in there might not
for immediate usage. Stock items in an external location are marked with an additional icon
in the build order line items view where the material is allocated.
{% with id="stock_external_icon", url="stock/stock_external_icon.png", description="External stock indication" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_external_icon.png", title="External stock indication") }}
Anyhow there is no limitation on the stock item. It can be allocated as usual.

View File

@@ -8,9 +8,7 @@ InvenTree supports stock ownership, which allows to set groups and users as "own
The stock ownership feature is disabled by default, and must be enabled via the settings menu:
{% with id="stock_owner", url="stock/enable_stock_owner.png", description="Enable stock ownership feature" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/enable_stock_owner.png", title="Enable stock ownership feature") }}
### Background
The stock item ownership function does not change or the influence the access rights that have been set
@@ -41,22 +39,18 @@ There are two types of owners in InvenTree: [groups](../settings/permissions.md#
When selecting an owner, in the drop-down list, groups are annotated with the {{ icon("users", title="Users") }} icon and users are annotated with the {{ icon("user", title="User") }} icon:
{% with id="stock_owner_type", url="stock/stock_owner_type.png", description="Display stock owner type" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_owner_type.png", title="Display stock owner type") }}
### Set Stock Location Owner
To specify the owner of a stock location, navigate to the stock location detail page. Click on the {{ icon("sitemap") }}icon under the location's name then click on "Edit Location".
!!! warning
If you cannot see the {{ icon("sitemap") }}icon, it means that you do **not** have permissions to edit stock locations. Refer to [the permissions documentation](../settings/permissions.md#roles) and/or contact your InvenTree administrator.
If you cannot see the {{ icon("sitemap") }} icon, it means that you do **not** have permissions to edit stock locations. Refer to [the permissions documentation](../settings/permissions.md#roles) and/or contact your InvenTree administrator.
In the "Edit Stock Location" form, select the owner and click the "Submit" button:
{% with id="stock_location_owner", url="stock/stock_location_owner.png", description="Set stock location owner" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_location_owner.png", title="Set stock location owner") }}
Setting the owner of stock location will automatically:
@@ -81,6 +75,4 @@ To specify the owner of a stock item, navigate to the stock item detail page. Cl
In the "Edit Stock Item" form, select the owner and click the "Save" button:
{% with id="stock_item_owner", url="stock/stock_item_owner.png", description="Set stock item owner" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_item_owner.png", title="Set stock item owner") }}

View File

@@ -22,9 +22,7 @@ Below is the list of available stock status codes and their meaning:
The *status* of a given stock item is displayed on the stock item detail page:
{% with id="stock_status_label", url="stock/stock_status_label.png", description="Stock Status Label" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_status_label.png", title="Stock status label") }}
**Source Code**
@@ -48,6 +46,4 @@ The default status code for any newly created Stock Item is <span class='badge i
To update the status code for an individual stock item, open the *Edit Stock Item* dialog and then select the required status code in the *Status* field
{% with id="stock_status_edit", url="stock/stock_status_edit.png", description="Edit stock item status" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/stock_status_edit.png", title="Edit stock item status") }}

View File

@@ -8,9 +8,7 @@ Stock items which are associated with a [testable part](../part/index.md#testabl
The master "Part" record for the stock item can define multiple [test templates](../part/test.md), against which test data can be uploaded. Additionally, arbitrary test information can be assigned to the stock item.
{% with id="stock_test_results", url="stock/test_results.png", description="Stock Item Test Results" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/test_results.png", title="Stock Item Test Results") }}
### Test Result Fields

View File

@@ -8,9 +8,7 @@ It may be desirable to track individual stock items, or groups of stock items, w
Individual stock items can be assigned a batch code, or a serial number, or both, or neither, as requirements dictate.
{% with id="batch_and_serial", url="stock/batch_and_serial.png", description="Batch and serial number" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/batch_and_serial.png", title="Batch and Serial Number Tracking") }}
Out of the box, the default implementations for both batch codes and serial numbers are (intentionally) simplistic.
@@ -26,9 +24,7 @@ Multiple stock items may share the same batch code without restriction, even acr
Batch codes can be generated automatically based on a provided pattern. The default pattern simply uses the current date-code as the batch number, however this can be customized within a certain scope.
{% with id="batch_code_pattern", url="stock/batch_code_template.png", description="Batch code pattern" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/batch_code_template.png", title="Batch code pattern") }}
#### Context Variables
@@ -57,17 +53,13 @@ By default, serial numbers must be unique across any given [Part](../part/index.
However, it is also possible to specify that serial numbers must be globally unique across all types of parts. This is configurable in the settings display (see below):
{% with id="serial_numbers_unique", url="stock/serial_numbers_unique.png", description="Serial number uniqueness" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/serial_numbers_unique.png", title="Serial number uniqueness") }}
#### Generating Serial Numbers
When creating a group of serialized stock items, it can be very useful for the user to be able to generate a group of unique serial numbers, with one serial number for each serialized stock item.
{% with id="serial_next", url="stock/serial_next.png", description="Serial number entry" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/serial_next.png", title="Serial number entry") }}
For a given serial number *schema* (either the in-built schema or a custom schema defined by a plugin), a group (or *range*) of serial numbers can be generated using a number of possible patterns:
@@ -129,15 +121,11 @@ If a provided serial number (or group of numbers) is not considered valid, an er
##### Example: Invalid Quantity
{% with id="serial_error_quantity", url="stock/serial_error_quantity.png", description="Serial number - invalid quantity" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/serial_error_quantity.png", title="Serial number - invalid quantity") }}
##### Example: Duplicate Serial Numbers
{% with id="serial_error_unique", url="stock/serial_error_unique.png", description="Serial number - duplicate values" %}
{% include 'img.html' %}
{% endwith %}
{{ image("stock/serial_error_unique.png", title="Serial number - duplicate values") }}
##### Example: Invalid Serial Numbers