diff --git a/docs/assets/images/part/scheduling.png b/docs/assets/images/part/scheduling.png new file mode 100644 index 0000000..ed3c762 Binary files /dev/null and b/docs/assets/images/part/scheduling.png differ diff --git a/docs/assets/images/plugin/app_locate.png b/docs/assets/images/plugin/app_locate.png new file mode 100644 index 0000000..019dd31 Binary files /dev/null and b/docs/assets/images/plugin/app_locate.png differ diff --git a/docs/assets/images/plugin/web_locate.png b/docs/assets/images/plugin/web_locate.png new file mode 100644 index 0000000..aba240a Binary files /dev/null and b/docs/assets/images/plugin/web_locate.png differ diff --git a/docs/extend/plugins.md b/docs/extend/plugins.md index f0c2679..6519c8b 100644 --- a/docs/extend/plugins.md +++ b/docs/extend/plugins.md @@ -61,6 +61,7 @@ Supported mixin classes are: - [BarcodeMixin](./plugins/barcode.md) - [EventMixin](./plugins/event.md) - [LabelPrintingMixin](./plugins/label.md) +- [LocateMixin](./plugins/locate.md) - [NavigationMixin](./plugins/navigation.md) - [PanelMixin](./plugins/panel.md) - [ScheduleMixin](./plugins/schedule.md) diff --git a/docs/extend/plugins/locate.md b/docs/extend/plugins/locate.md new file mode 100644 index 0000000..e56f4c0 --- /dev/null +++ b/docs/extend/plugins/locate.md @@ -0,0 +1,31 @@ +--- +title: Locate Mixin +--- + +## LocateMixin + +The `LocateMixin` class enables plugins to "locate" stock items (or stock locations) via an entirely custom method. + +For example, a warehouse could be arranged with each individual 'parts bin' having an audio-visual indicator (e.g. RGB LED and buzzer). "Locating" a particular stock item causes the LED to flash and the buzzer to sound. + +Another example might be a parts retrieval system, where "locating" a stock item causes the stock item to be "delivered" to the user via a conveyor. + +The possibilities are endless! + +### Web Integration + +{% with id="web_locate", url="plugin/web_locate.png", description="Locate stock item from web interface", maxheight="400px" %} +{% include 'img.html' %} +{% endwith %} + +### App Integration + +If a locate plugin is installed and activated, the [InvenTree mobile app](../../app/app.md) displays a button for locating a StockItem or StockLocation (see below): + +{% with id="app_locate", url="plugin/app_locate.png", description="Locate stock item from app", maxheight="400px" %} +{% include 'img.html' %} +{% endwith %} + +### Implementation + +Refer to the [InvenTree source code](https://github.com/inventree/InvenTree/blob/master/InvenTree/plugin/samples/locate/locate_sample.py) for a simple implementation example. diff --git a/docs/part/views.md b/docs/part/views.md index c743c3d..b0c7b3e 100644 --- a/docs/part/views.md +++ b/docs/part/views.md @@ -122,6 +122,36 @@ This tab is only displayed if the part is marked as *Purchaseable*. The *Sales Orders* tab shows a list of the sales orders for this part. It provides a view for important sales order information like customer, status, creation and shipment dates. +### Scheduling + +The *Scheduling* tab provides an overview of the *predicted* future availabile quantity of a particular part. + +The *Scheduling* tab displays a chart of estimated future part stock levels. It begins at the current date, with the current stock level. It then projects into the "future", taking information from: + +#### Incoming Stock + +- **Purchase Orders** - Incoming goods will increase stock levels +- **Build Orders** - Completed build outputs will increase stock levels + +#### Outgoing Stock + +- **Sales Orders** - Outgoing stock items will reduce stock levels +- **Build Orders** - Allocated stock items will reduce stock levels + +#### Caveats + +The scheduling information only works as an adequate predictor of future stock quantity if there is sufficient information available in the database. + +In particular, stock movements due to orders (Purchase Orders / Sales Orders / Build Orders) will only be counted in the scheduling *if a target date is set for the order*. If the order does not have a target date set, we cannot know *when* (in the future) the stock levels will be adjusted. Thus, orders without target date information do not contribute to the scheduling information. + +Additionally, any orders with a target date in the "past" are also ignored for the purpose of part scheduling. + +Finally, any unexpected or unscheduled stock operations which are not associated with future orders cannot be predicted or displayed in the scheduling tab. + +{% with id="scheduling", url="part/scheduling.png", description="Part Scheduling View" %} +{% include 'img.html' %} +{% endwith %} + ### Tests If a part is marked as *trackable*, the user can define tests which must be performed on any stock items which are instances of this part. [Read more about testing](./test.md). diff --git a/mkdocs.yml b/mkdocs.yml index e31f449..c7b3b0e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -129,6 +129,7 @@ nav: - Barcode Mixin: extend/plugins/barcode.md - Event Mixin: extend/plugins/event.md - Label Printing Mixin: extend/plugins/label.md + - Locate Mixin: extend/plugins/locate.md - Navigation Mixin: extend/plugins/navigation.md - Panel Mixin: extend/plugins/panel.md - Schedule Mixin: extend/plugins/schedule.md