* initial skel commit for transfer orders * initial transfer order backend model * add some serializers, rename PLACED to ISSUED for TransferOrders * adding from admin console works * simple table list almost working, but we need to add order line items.... * add other cols to table * add Transfer Order from table view * moving towards a detail view * wip: adding detail view * add take from and destination serializer details * add other detail grid items * edit/duplicate transfer order * more action buttons * first crack at adding line items * add to line item * add filters * starting work on row actions * more action buttons for line items * fix copy lines in duplicate * basic allocation works * allocations table actions * allocate serials * allocated serial row expansion * add transferred qty to serializers * move items on complete, show in tracking * change panel to transferred stock upon complete * allow incomplete line items * disable edit allocations when completed * add ref pattern and to settings * add admin to line item inline * add calendar and parametric view * basic transfer order report * add transfer order ruleset * starting allocation buisness logic throughout for TOs * disable accept incomplete logic, which was incorrect, until I fix * fix incomplete allocation option * add transferred col to default report * add transfer order to calendar ics view * chain condition for readability * add transfer order allocations table to stockitem view * don't account TO allocations in availability * add transfer orders table for a part * 'consume' option by doing take_stock * squash migrations * starting to test transfer order * more transfer order tests * add transfer order consume test * wip, more tests * more transfer order tests * had to refresh_from_db * switch "to" to "transfer-order" in url paths * only select non-virtual parts from transfer order * add transfer order docs * deconflict migrations * fix frontend build error * fix validation on transfer order reference pattern * add oath2 scope for transfer order * fix state test to include transfer order state * add barcode_model_type_code for transfer order * bump api version * check view role for transfer order, remove debug/commented out lines * add serialized allocation test * Fix migrations * Frontend fixes * Implement required 'company' attribute * transfer order report context * attempt to fix tests * delete transfer order allocations on cancel * add a few playwright tests, more incoming * more playwright * add source and destination locations to table * deconflict migrations * Fix build issue * attempt to fix flaky transfer order test * duplicate transfer order before running tests * Adjust playwright tests * Fix migration dependency order --------- Co-authored-by: Oliver <oliver.henry.walters@gmail.com> Co-authored-by: Matthias Mair <code@mjmair.com>
InvenTree Documentation
This repository hosts the official documentation for InvenTree, an open source inventory management system.
Prerequisites
InvenTree uses MkDocs to convert Markdown format .md files into HTML suitable for viewing in a web browser.
!!! info "Prerequisites" To build and serve this documentation locally (e.g. for development), you will need:
* Python 3 installed on your system.
* An existing InvenTree installation containing the virtual environment that was created during installation.
These instructions assume you followed the [InvenTree bare metal installation instructions](./docs/start/install.md), so you'll have an `inventree` user, a home directory at `/home/inventree`, the InvenTree source code cloned from [GitHub](https://github.com/inventree/inventree) into `/home/inventree/src`, and a virtual environment at `/home/inventree/env`. If you installed InvenTree some other way, this might vary, and you'll have to adjust these instructions accordingly.
!!! warning "Your InvenTree install will be updated!" Some of the commands that follow will make changes to your install, for example, by running any pending database migrations. There's a small risk this may cause issues with your existing installation. If you can't risk this, consider setting up a separate InvenTree installation specifically for documentation development.
Building the documentation locally
To build the documentation locally, run these commands as the inventree user:
$ cd /home/inventree
$ source env/bin/activate
!!! info "(env) prefix"
The shell prompt should now display the (env) prefix, showing that you are operating within the context of the python virtual environment
You can now install the additional packages needed by mkdocs:
$ cd src
$ pip install --require-hashes -r docs/requirements.txt
Schema generation
Building the documentation requires extracting the API schema from the source code.
!!! tip This command is only required when building the documentation for the first time, or when changes have been made to the API schema.
$ invoke build-docs
You will see output similar to this (truncated for brevity):
Running InvenTree database migrations...
Exporting definitions...
Exporting settings definition to '/home/inventree/src/docs/generated/inventree_settings.json'...
Exported InvenTree settings definitions to '/home/inventree/src/docs/generated/inventree_settings.json'
Exported InvenTree tag definitions to '/home/inventree/src/docs/generated/inventree_tags.yml'
Exported InvenTree filter definitions to '/home/inventree/src/docs/generated/inventree_filters.yml'
Exported InvenTree report context definitions to '/home/inventree/src/docs/generated/inventree_report_context.json'
Exporting definitions complete
Exporting schema file to '/home/inventree/src/docs/generated/schema.yml'
Schema export completed: /home/inventree/src/docs/generated/schema.yml
Documentation build complete, but mkdocs not requested
Viewing the documentation
Generate the HTML files from the markdown source files, and start the MkDocs webpage server:
$ mkdocs serve -f docs/mkdocs.yml
You can then point your web browser at http://localhost:8080/
Alternatively, you can use the invoke command:
$ invoke dev.docs-server
If you need to, use the -a option after mkdocs or invoke to set the address and port. Run invoke dev.docs-server --help for details.
Editing the Documentation Files
Once the server is running, it will monitor the documentation files for changes, and regenerate the HTML pages as required. Refresh your web browser to see the changes.
Admonitions
"Admonition" blocks can be added to the documentation source as follows:
!!! info "This is the admonition block title"
This is the admonition block content
Refer to the reference documentation to customize the admonition block to the use-case (eg. warning, missing, info, etc.).
Internal Links
Links to internal documentation pages must use relative pathing, otherwise the link will be broken by the readthedocs URL formatting.
Also, linking to an internal page must use the .md suffix!
For example, to link to the page /part/views from /stock/stocktake, the link must be formed as follows:
Click [here](../part/views.md)
Formatting the link as follows:
Click [here](/part/views)
will result in a broken link.
Images
Images are served from the ./docs/assets/images folder and can be added as follows:
{{ image("image_name.png", base="subfolder", title="Image title") }}
See the image macro in ./docs/main.py for more information.
Icons
Icons can be rendered (using the tabler icon set) as follows:
{{ icon("brand-github", color="red")}}
See the icon macro in ./docs/main.py for more information.
Global variables
Refer to the reference documentation to find out how to add global variables to the documentation site.
Global variables should be added in the # Global Variables section of the mkdocs.yml configuration file.
Credits
This documentation makes use of the mkdocs-material template