2
0
mirror of https://github.com/inventree/InvenTree.git synced 2026-05-09 11:08:54 +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
+4 -12
View File
@@ -53,9 +53,7 @@ If a match is found, the app will navigate to the relevant page.
From the [Stock Location detail page](./stock.md#stock-location-view), multiple barcode actions may be available:
{% with id="location-actions", url="app/barcode_stock_location_actions.png", maxheight="240px", description="Stock location barcode actions" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/barcode_stock_location_actions.png", "Stock location barcode actions") }}
#### Assign Barcode
@@ -77,9 +75,7 @@ the *Scan Items Into Location* action allows you to scan items into the selected
From the [Stock Item detail page](./stock.md#stock-item-detail-view), the following barcode actions may be available:
{% with id="item-actions", url="app/barcode_stock_item_actions.png", maxheight="240px", description="Stock item barcode actions" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/barcode_stock_item_actions.png", "Stock item barcode actions") }}
#### Assign Barcode
@@ -93,9 +89,7 @@ Scan the selected stock item into a stock location. Scanning a valid barcode ass
From the [Part detail page](./part.md#part-detail-view), the following barcode actions are available:
{% with id="part-actions", url="app/barcode_part_actions.png", maxheight="240px", description="Part barcode actions" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/barcode_part_actions.png", "Part barcode actions") }}
#### Assign Barcode
@@ -105,9 +99,7 @@ Assign a custom barcode to the selected part. Scanning a barcode (which is not a
From the [Purchase Order detail page](./po.md#purchase-order-detail) page, the following barcode actions are available:
{% with id="po-actions", url="app/barcode_po_actions.png", maxheight="240px", description="Purchase order barcode actions" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/barcode_po_actions.png", "Purchase order barcode actions") }}
#### Scan Received Parts
+6 -19
View File
@@ -8,16 +8,11 @@ Use of the InvenTree app assumes that you (the user) have access to an InvenTree
When first running the app, no profile has been configured. The *server* icon in the top-right corner of the home screen is <span style='color: red'>red</span>, indicating that there is no connection to an InvenTree server:
{% with id="no_server", url="app/initial.png", maxheight="240px", description="No server configured" %}
{% include "img.html" %}
{% endwith %}
{{ image("app/initial.png", "No server configured") }}
Press on the server icon to navigate to the server selection view:
{% with id="no_profiles", url="app/no_profiles.png", maxheight="240px", description="No server configured" %}
{% include "img.html" %}
{% endwith %}
{{ image("app/no_profiles.png", "No server configured") }}
### Create Server
@@ -26,9 +21,7 @@ Press on the server icon to navigate to the server selection view:
Press the {{ icon("circle-plus", color="blue") }} button in the bottom-right corner of the screen to create a new server profile.
{% with id="add_profile", url="app/add_server_profile.png", maxheight="240px", description="Add server" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/add_server_profile.png", "Add server profile") }}
Enter the required server details:
@@ -47,22 +40,16 @@ Alternatively, long press on the server profile to activate the context menu, th
When the app successfully connects to the server, a success message is briefly displayed at the bottom of the screen. A green {{ icon("circle-check", color="green") }} icon next to the server profile indicate that the profile is currently *selected* and also the connection was successful.
{% with id="connected", url="app/connected.png", maxheight="240px", description="Connected to server" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/connected.png", "Connected to server") }}
### Connection Failure
If (for whatever reason) the app does not successfully connect to the InvenTree server, a failure message is displayed, and a red {{ icon("circle-x", color="red") }} icon is displayed next to the server profile.
{% with id="failed", url="app/unauthorized.png", maxheight="240px", description="Connection failure" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/unauthorized.png", "Connection failure") }}
In this case, the error message displayed at the bottom of the screen provides context as to why the app could not successfully connect to the server.
To edit the server profile details, long press on the server profile, and select *Edit Server Profile*:
{% with id="edit", url="app/edit_server.png", maxheight="240px", description="Edit server profile" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/edit_server.png", "Edit server profile") }}
+5 -15
View File
@@ -7,17 +7,13 @@ title: App Navigation
The app *home screen* provides quick-access buttons for stock view and actions:
{% with id="home", url="app/home.png", maxheight="240px", description="Home screen" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/home.png", "Home screen") }}
## Tab Display
Some screens provide multiple tabbed views, which are displayed at the top of the screen:
{% with id="global_nav", url="app/app_tabs.png", maxheight="240px", description="App tabs" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/app_tabs.png", "App tabs") }}
Tabs can be navigated by pressing on the text of each tab, or by scrolling the screen left or right.
@@ -25,17 +21,13 @@ Tabs can be navigated by pressing on the text of each tab, or by scrolling the s
The *Global Action* buttons are visible on most screens, displayed in the bottom left corner of the screen:
{% with id="global_nav", url="app/app_global_navigation.png", maxheight="240px", description="Global navigation actions" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/app_global_navigation.png", "Global navigation actions") }}
### Open Drawer Menu
The {{ icon("list") }} action opens the *Drawer Menu*, which is a quick-access menu for global navigation:
{% with id="drawer", url="app/drawer.png", maxheight="240px", description="Open drawer menu" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/drawer.png", "Open drawer menu") }}
The *Drawer Menu* can be accessed in the following ways:
@@ -54,9 +46,7 @@ The {{ icon("barcode", title="Scan") }} action opens the [barcode scan](./barcod
Within a given view, certain context actions may be available. If there are contextual actions which can be performed, they are displayed in the bottom right corner:
{% with id="drawer", url="app/context_actions.png", maxheight="240px", description="Context actions" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/context_actions.png", "Context actions") }}
!!! tip "Barcode Actions"
Available barcode actions are displayed in a separate context action menu
+14 -42
View File
@@ -10,9 +10,7 @@ From the *home screen*, select *Parts* to open the top-level part category view.
The *Details* tab shows information about the selected part category. In particular, it shows the name and description of the category, a link to the parent category (if available) and a list of subcategories.
{% with id="part-category", url="part_category_detail.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/part_category_detail.png", "Part Category") }}
#### Parent Category
@@ -26,47 +24,35 @@ If the current category has any subcategories, these are listed here. Select any
The *Parts* tab displays all the parts available in this category. Tap a displayed part to navigate to the part detail view.
{% with id="cat-parts", url="category_parts_tab.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/category_parts_tab.png", "Category Parts") }}
The list of available parts can be filtered using the input box at the top of the screen:
{% with id="cat-parts-filter", url="category_parts_filter.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/category_parts_filter.png", "Category Parts Filter") }}
### Context Actions
The following *Context Actions* are available for the selected category:
{% with id="cat-actions", url="category_actions_tab.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/category_actions_tab.png", "Category Actions") }}
#### New Category
Create a new subcategory under the current category:
{% with id="cat-new-cat", url="new_category.jpg" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/new_category.jpg", "New Category") }}
#### New Part
Create a new part within the current category:
{% with id="cat-new-part", url="new_part.jpg" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/new_part.jpg", "New Part") }}
### Edit Category
Select the *Edit* button in the top right corner of the screen to edit the details for the selected part category:
{% with id="cat-edit", url="part_category_edit.jpg" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/part_category_edit.jpg", "Edit Category") }}
!!! info "Permission Required"
If the user does not have permission to edit part details, this button will be hidden
@@ -77,9 +63,7 @@ In the part category display screen, there are three tabs of information availab
The *Part Detail* view displays information about a single part:
{% with id="part-details", url="part_details.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/part_details.png", "Part Detail") }}
### Details Tab
@@ -97,17 +81,13 @@ The *stock* tile shows the total quantity of stock available for the part. Tap o
Tap on the *notes* tile to view (and edit) the notes for this part:
{% with id="part-notes", url="part_notes.jpg" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/part_notes.jpg", "Part Notes") }}
#### Attachments
Tap on the *attachments* tile to view the file attachments for this part:
{% with id="part-attachments", url="part_attachments.jpg" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/part_attachments.jpg", "Part Attachments") }}
New attachments can be uploaded by tapping on the icons in the top right of the screen.
@@ -117,9 +97,7 @@ Select a particular attachment file to downloaded it to the local device.
The *Stock* tab displays all the stock items available for this part. Tap on a particular stock item to navigate to a detail view for that item.
{% with id="part-stock", url="part_stock.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/part_stock.png", "Part Stock") }}
The list of available stock items can be filtered using the input box at the top of the screen.
@@ -131,17 +109,13 @@ The *Actions* tab displays the available actions for the selected part:
Create a new stock item for this part:
{% with id="part-stock-new", url="new_stock_item.jpg" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/new_stock_item.jpg", "New Stock Item") }}
### Edit Part
To edit the part details, select the *Edit* button in the top right corner of the screen:
{% with id="part-edit", url="part_edit.jpg" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/part_edit.jpg", "Edit Part") }}
!!! info "Permission Required"
If the user does not have permission to edit part details, this button will be hidden
@@ -150,8 +124,6 @@ To edit the part details, select the *Edit* button in the top right corner of th
Tap the image of the part (displayed at the top left of the screen) to launch the part image view:
{% with id="part-image", url="part_image.jpg" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/part_image.jpg", "Part Image") }}
A full-screen view of the image is displayed. The user can also upload a new image for the part, either selecting an image from the device, or taking a new picture with the device's camera.
+5 -15
View File
@@ -6,9 +6,7 @@ title: Purchase Orders
The purchase order list display lists all purchase orders:
{% with id="po_list", url="app/po_list.png", maxheight="240px", description="Purchase order list" %}
{% include "img.html" %}
{% endwith %}
{{ image("app/po_list.png", "Purchase order list") }}
Select an individual purchase order to display the detail view for that order.
@@ -18,25 +16,19 @@ Displayed purchase orders can be subsequently filtered using the search input at
## Purchase Order Detail
{% with id="po_detail", url="app/po_detail.png", maxheight="240px", description="Purchase order details" %}
{% include "img.html" %}
{% endwith %}
{{ image("app/po_detail.png", "Purchase order detail") }}
### Edit Order Details
From the detail view, select the *Edit* button in the top-right of the screen. This opens the purchase order editing display:
{% with id="edit_po", url="app/po_edit.png", maxheight="240px", description="Edit purchase order" %}
{% include "img.html" %}
{% endwith %}
{{ image("app/po_edit.png", "Edit purchase order") }}
### Line Items
The *Line Items* tab shows the line items associated with this purchase order:
{% with id="po_lines", url="app/po_lines.png", maxheight="240px", description="Purchase order line items" %}
{% include "img.html" %}
{% endwith %}
{{ image("app/po_lines.png", "Purchase order line items") }}
Long press on a particular line item to receive the item into stock.
@@ -44,6 +36,4 @@ Long press on a particular line item to receive the item into stock.
Once items have been received into stock against a particular purchase order, they are displayed in the *Stock Items* tab:
{% with id="po_stock", url="app/po_stock.png", maxheight="240px", description="Purchase order stock items" %}
{% include "img.html" %}
{% endwith %}
{{ image("app/po_stock.png", "Purchase order stock items") }}
+2 -7
View File
@@ -6,10 +6,5 @@ title: App Search
The global search screen provides quick search functionality across the connected InvenTree database. Entering a search term will return multiple search results, as shown in the examples below:
{% with id="search_1", url="app/search_1.png", maxheight="240px", description="Search results" %}
{% include 'img.html' %}
{% endwith %}
{% with id="search_2", url="app/search_2.png", maxheight="240px", description="Search results" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/search_1.png", "Search results") }}
{{ image("app/search_2.png", "Search results") }}
+4 -13
View File
@@ -17,18 +17,13 @@ The main settings view is shown below, and provides the following options:
| [Part](#part-settings) | Configure part management options |
| About | Display app version information |
{% with id="settings_view", url="app/settings.png", maxheight="240px", description="Settings view" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/settings.png", "Settings view") }}
## App Settings
The *App Settings* view provides configuration options for the InvenTree app:
{% with id="app_settings", url="app/app_settings.png", maxheight="240px", description="App Settings" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/app_settings.png", "App settings") }}
### App Settings
@@ -57,9 +52,7 @@ Configure audible app notifications:
The *Barcode Settings* view allows you to configure options relating to [barcode scanning](./barcode.md):
{% with id="barcode_settings", url="app/barcode_settings.png", maxheight="240px", description="Barcode Settings" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/barcode_settings.png", "Barcode settings") }}
| Option | Description |
| --- | --- |
@@ -70,9 +63,7 @@ The *Barcode Settings* view allows you to configure options relating to [barcode
The *Home Screen* view allows you to configure display options for the app 'home screen':
{% with id="home_settings", url="app/home_settings.png", maxheight="240px", description="Home Screen Settings" %}
{% include 'img.html' %}
{% endwith %}
{{ image("app/home_settings.png", "Home screen settings") }}
| Option | Description |
| --- | --- |
+3 -9
View File
@@ -6,9 +6,7 @@ title: Sales Orders
The sales order list display shows all sales orders:
{% with id="so_list", url="app/so_list.png", maxheight="240px", description="Sales order list" %}
{% include "img.html" %}
{% endwith %}
{{ image("app/so_list.png", "Sales order list") }}
Select an individual sales order to display the detail view for that order.
@@ -20,9 +18,7 @@ Displayed sales orders can be subsequently filtered using the search input at th
Select an individual order to show the detailed view for that order:
{% with id="so_detail", url="app/so_detail.png", maxheight="240px", description="Sales order details" %}
{% include "img.html" %}
{% endwith %}
{{ image("app/so_detail.png", "Sales order detail") }}
### Edit Order Details
@@ -32,6 +28,4 @@ From the detail view, select the *Edit* button in the top-right of the screen. T
View the line items associated with the selected order:
{% with id="so_lines", url="app/so_lines.png", maxheight="240px", description="Sales order lines" %}
{% include "img.html" %}
{% endwith %}
{{ image("app/so_lines.png", "Sales order line items") }}
+16 -53
View File
@@ -10,9 +10,7 @@ From the *home screen*, select *Stock* to open the top-level stock location view
The *Details* tab shows information about the selected stock location.
{% with id="loc-detail", url="location_detail.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/location_detail.png", "Stock Location") }}
#### Parent Location
@@ -26,44 +24,29 @@ If the current stock location has any sublocations, they are listed here. Select
The *Stock* tab displays all the stock items available in this location. Tap a displayed stock item to navigate to the stock item detail view.
{% with id="loc-stock", url="location_stock.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/location_stock.png", "Location Stock") }}
The list of available stock items can be filtered using the input box at the top of the screen:
{% with id="loc-filter", url="location_stock_filter.jpg" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/location_stock_filter.jpg", "Location Stock Filter") }}
### Context Actions
The following *Context Actions* are available for the selected location:
{% with id="loc-actions", url="location_actions.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/location_actions.png", "Location Actions") }}
#### New Location
Create a new location under the current location:
{% with id="loc-new", url="new_location.jpg" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/new_location.jpg", "New Location") }}
#### New Stock Item
Create a new stock item in the current location:
{% with id="loc-new-stock", url="new_stock_item_from_location.jpg" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/new_stock_item_from_location.jpg", "New Stock Item") }}
#### Scan Stock Items Into Location
@@ -74,10 +57,7 @@ Use the barcode scanner to scan a stock item into the current location.
The *Stock Item Detail* view displays information about a single stock item:
{% with id="stock-detail", url="stock_detail.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/stock_detail.png", "Stock Item") }}
### Details Tab
@@ -99,44 +79,34 @@ Tap on the notes tile to display and edit the notes for this stock item
The *actions* tab displays the available actions for the selected stock item:
{% with id="stock-actions", url="stock_actions.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/stock_actions.png", "Stock Actions") }}
#### Count Stock
Select the *Count Stock* action to validate the current number of items in stock. Use this option to perform a quick stocktake!
{% with id="stock-count", url="stock_count.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/stock_count.png", "Count Stock") }}
!!! info "Serialized Stock"
The *count stock* action is not available for serialized stock items, as they have a fixed quantity of 1
#### Remove Stock
Select this action to remove a certain quantity from the selected stock item. For example, if there are 12 items available, and you take 3 items, the listed quantity will be reduced to 9 itemes.
Select this action to remove a certain quantity from the selected stock item. For example, if there are 12 items available, and you take 3 items, the listed quantity will be reduced to 9 items.
{% with id="stock-remove", url="stock_remove.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/stock_remove.png", "Remove Stock") }}
#### Add Stock
Select this action to add a certain quantity to the selected stock item. For example, if there are 12 items available, and you add 3 items, the listed quantity will be increased to 15 items.
{% with id="stock-add", url="stock_add.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/stock_add.png", "Add Stock") }}
#### Transfer Stock
Transfer (move) the stock item to a new location:
{% with id="stock-transfer", url="stock_transfer.png" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/stock_transfer.png", "Transfer Stock") }}
#### Scan Into Location
@@ -154,18 +124,11 @@ This barcode can then be used to track the stock item.
If the server supports [label printing plugins](../plugins/mixins/label.md), then an option to print a label for the selected stock item:
{% with id="label_print_1", url="stock_print_label_1.png", description="Print label via plugin" %}
{% include 'app_img.html' %}
{% endwith %}
{% with id="label_print_2", url="stock_print_label_2.png", description="Print label via plugin" %}
{% include 'app_img.html' %}
{% endwith %}
{{ image("app/stock_print_label_1.png", "Print Label") }}
{{ image("app/stock_print_label_2.png", "Print Label") }}
### Edit Stock Item
To edit the stock item details, select the *Edit* button in the top right corner of the screen:
{% with id="stock-edit", url="stock_edit.jpg" %}
{% include "app_img.html" %}
{% endwith %}
{{ image("app/stock_edit.jpg", "Edit Stock Item") }}