diff --git a/docs/admin/admin.md b/docs/admin/admin.md
index 71320dd..6f3d58b 100644
--- a/docs/admin/admin.md
+++ b/docs/admin/admin.md
@@ -1,6 +1,5 @@
---
title: InvenTree Admin Interface
-layout: page
---
## Admin Interface
diff --git a/docs/admin/export.md b/docs/admin/export.md
index fd619ea..fad9131 100644
--- a/docs/admin/export.md
+++ b/docs/admin/export.md
@@ -1,6 +1,5 @@
---
title: Exporting Data
-layout: page
---
## Exporting Data
diff --git a/docs/admin/import.md b/docs/admin/import.md
index b39af97..f6d801a 100644
--- a/docs/admin/import.md
+++ b/docs/admin/import.md
@@ -1,6 +1,5 @@
---
title: Importing Data
-layout: page
---
## Importing Data
diff --git a/docs/assets/images/build/bom_add_item.png b/docs/assets/images/build/bom_add_item.png
new file mode 100644
index 0000000..a535629
Binary files /dev/null and b/docs/assets/images/build/bom_add_item.png differ
diff --git a/docs/assets/images/build/bom_invalid.png b/docs/assets/images/build/bom_invalid.png
new file mode 100644
index 0000000..f6fa0e2
Binary files /dev/null and b/docs/assets/images/build/bom_invalid.png differ
diff --git a/docs/assets/images/build/bom_select_fields.png b/docs/assets/images/build/bom_select_fields.png
new file mode 100644
index 0000000..dd46a07
Binary files /dev/null and b/docs/assets/images/build/bom_select_fields.png differ
diff --git a/docs/assets/images/build/bom_select_parts.png b/docs/assets/images/build/bom_select_parts.png
new file mode 100644
index 0000000..eaa77a0
Binary files /dev/null and b/docs/assets/images/build/bom_select_parts.png differ
diff --git a/docs/assets/images/build/bom_upload_file.png b/docs/assets/images/build/bom_upload_file.png
new file mode 100644
index 0000000..a070bd0
Binary files /dev/null and b/docs/assets/images/build/bom_upload_file.png differ
diff --git a/docs/assets/images/build/bom_valid.png b/docs/assets/images/build/bom_valid.png
new file mode 100644
index 0000000..dfd6dd3
Binary files /dev/null and b/docs/assets/images/build/bom_valid.png differ
diff --git a/docs/build/bom.md b/docs/build/bom.md
index f27d1f7..03e8bf9 100644
--- a/docs/build/bom.md
+++ b/docs/build/bom.md
@@ -1,11 +1,84 @@
---
title: Bill of Materials
-layout: page
---
## Bill of Materials
-A Bill of Materials (BOM) defines the list of component parts required to make an assembly.
+A Bill of Materials (BOM) defines the list of component parts required to make an assembly, [create builds](/build/build) and allocate inventory.
-!!! missing "TODO"
- This section requires further work
+### Add BOM Item
+
+To manually add a BOM item, navigate to the part/assembly detail page then click on the "BOM" tab. On top of the tab view, click on the :fontawesome-solid-edit: icon then, after the page reloads, click on the :fontawesome-solid-plus-circle: icon.
+
+The `Create BOM Item` form will be displayed:
+{% with id="bom_add_item", url="build/bom_add_item.png", description="Create BOM Item Form" %}
+{% include 'img.html' %}
+{% endwith %}
+
+Fill-out the `Quantity` (required), `Reference`, `Overage` and `Note` (optional) fields then click on the "Submit" button to add the BOM item to this part's BOM.
+
+### Upload BOM
+
+Uploading a BOM to InvenTree is a three steps process:
+
+1. upload BOM file
+0. select matching InvenTree fields
+0. select matching InvenTree parts.
+
+To upload a BOM file, navigate to the part/assembly detail page then click on the "BOM" tab. On top of the tab view, click on the :fontawesome-solid-edit: icon then, after the page reloads, click on the :fontawesome-solid-file-upload: icon.
+
+The following view will load:
+{% with id="bom_upload_file", url="build/bom_upload_file.png", description="BOM Upload View" %}
+{% include 'img.html' %}
+{% endwith %}
+
+#### Upload BOM File
+
+Click on the "Choose File" button, select your BOM file when prompted then click on the "Upload File" button.
+
+!!! info "BOM Formats"
+ The following BOM file formats are supported: CSV, TSV, XLS, XLSX, JSON and YAML
+
+#### Select Fields
+
+Once the BOM file is uploaded, the following view will load:
+{% with id="bom_select_fields", url="build/bom_select_fields.png", description="Select Fields View" %}
+{% include 'img.html' %}
+{% endwith %}
+
+InvenTree will attempt to automatically match the BOM file columns with InvenTree part fields. `Part_Name` is a **required** field for the upload process and moving on to the next step. Sprcifying the `Part_IPN` field matching is very powerful as it allows to create direct pointers to InvenTree parts.
+
+Once you have selected the corresponding InvenTree fields, click on the "Submit Selections" button to move on to the next step.
+
+#### Select Parts
+
+Once the BOM file columns and InvenTree fields are correctly matched, the following view will load:
+{% with id="bom_select_parts", url="build/bom_select_parts.png", description="Select Parts View" %}
+{% include 'img.html' %}
+{% endwith %}
+
+InvenTree automatically tries to match parts from the BOM file with parts in its database. For parts that are found in InvenTree's database, the `Select Part` field selection will automatically point to the matching database part.
+
+!!! info "Create New Part"
+ The :fontawesome-solid-plus: icon in the `Select Part` column let's you load the `Create New Part` form which allows you to create an InvenTree part during the BOM upload process.
+
+In this view, you can also edit the parts `Reference` and `Quantity` fields.
+
+Once you have selected the corresponding InvenTree parts, click on the "Submit BOM" button to complete the BOM upload process.
+
+### Validate BOM
+
+After [adding BOM items manually](#add-bom-item) or [uploading a BOM file](#upload-bom), you should see the following view:
+{% with id="bom_invalid", url="build/bom_invalid.png", description="Invalid BOM View" %}
+{% include 'img.html' %}
+{% endwith %}
+
+The first message in the red box `The BOM for PCBA TEST has changed, and must be validated.` points out that InvenTree BOM needs to be "validated". BOM validation is a way to ensure a BOM does not have duplicate items/parts.
+
+To process with BOM validation, click on the :fontawesome-solid-clipboard-check: icon and the `Validate BOM` form will be displayed. Click one the "Validate" switch then click on the "Submit" button.
+
+Voilà, this Bill or Materials is validated :material-emoticon-cool:
+
+{% with id="bom_valid", url="build/bom_valid.png", description="Valid BOM View" %}
+{% include 'img.html' %}
+{% endwith %}
diff --git a/docs/build/build.md b/docs/build/build.md
index 39b2b8f..b899f6f 100644
--- a/docs/build/build.md
+++ b/docs/build/build.md
@@ -1,6 +1,5 @@
---
-title: Build
-layout: page
+title: Build Parts
---
## Building Parts
@@ -46,7 +45,7 @@ Builds orders are used to create parts builds.
To create a build order for your part, you have two options:
1. navigate to the Part detail page, click on "Build Orders" tab then click on "Start New Build" button
-0. navigate to the Build page, click on "New Build Order"
+0. navigate to the Build page, click on "New Build Order".
{% with id="build_start_new", url="build/build_start_new.png", description="Start New Build Form" %}
{% include 'img.html' %}
@@ -58,16 +57,26 @@ Fill-out the form then click the "Submit" button to create the build.
To allocate stock for a build, you have two options:
-1. automatic allocation: if each subpart has only **one** storage location, InvenTree can allocate stock from this location automatically
-0. manual allocation: user can define allocation for each subpart in the build
+1. **automatic** allocation: if each subpart has only **one** storage location, InvenTree can allocate stock from this location automatically
+0. **manual** allocation: user can define allocation for each subpart in the build.
+
+During allocation, InvenTree relies on [Stock items](/stock/stock/#stock-item) to reference parts that will be used for the build. Make sure to read through the [stock documentation](/stock/stock) before proceeding with stock allocation.
#### Automatic Allocation
-Click on the "Allocated Parts tab" then click on the "Auto Allocate" button to automatically allocate stock.
+Click on the "Allocated Parts" tab then click on the "Auto Allocate" button to automatically allocate stock for this build.
+
+The `Allocate Stock` form will be displayed. Verify each subpart automatic allocation, click on the confirmation switch, then click on the "Submit" button to process the stock allocation.
#### Manual Allocation
-Click on the "Allocated Parts tab" then click on the :fontawesome-solid-plus: icon next to each subpart in the build to manually allocate stock.
+Click on the "Allocated Parts" tab then click on the :fontawesome-solid-plus: icon next to each subpart in the build to manually allocate stock.
+
+The `Allocate new Part` form will be displayed. Select a `Stock Item` and fill-out the `Quantity` field then click on the "Submit" button to allocate stock for this subpart.
+
+#### Unallocate
+
+Click on the "Allocated Parts" tab then click on the "Unallocate" button to unallocate stock items allocated for this build.
### Cancel Build
@@ -87,3 +96,6 @@ To complete a build, click on :fontawesome-solid-tools: icon on the build detail
Select a `Location` to store the resulting parts from the build then click on the confirmation switch.
Finally, click on the "Complete Build" button to process the build completion.
+
+!!! warning "Completed Build"
+ **A completed build cannot be re-opened**. Make sure to use the confirm only if you are certain that the build is complete.
diff --git a/docs/buy/po.md b/docs/buy/po.md
index 87b78cc..7d43c72 100644
--- a/docs/buy/po.md
+++ b/docs/buy/po.md
@@ -1,6 +1,5 @@
---
title: Purchase Order
-layout: page
---
## Purchase Orders
diff --git a/docs/buy/supplier.md b/docs/buy/supplier.md
index 8268c7e..454802e 100644
--- a/docs/buy/supplier.md
+++ b/docs/buy/supplier.md
@@ -1,6 +1,5 @@
---
title: Suppliers
-layout: page
---
## Suppliers
diff --git a/docs/contribute.html b/docs/contribute.html
deleted file mode 100644
index f330e08..0000000
--- a/docs/contribute.html
+++ /dev/null
@@ -1,1076 +0,0 @@
-
Contributing to InvenTreeContribute to InvenTree
-InvenTree is an open source project, and benefits greatly from user contributions.
-If you find InvenTree to be useful, and wish to improve the software, please consider contributing:
-Source Code
-InvenTree is built using Python3 and Django. Source code is available on GitHub.
-Contributions towards the core InvenTree code base are welcomed; either extending current functionality, prodiving new features, or addressing outstanding issues.
-Report Bugs
-If you find a bug or a feature that does not work correctly, please report it on GitHub. Reporting bugs is critical to improving the software. If you are able and willing, providing a fix for any outstanding issues would be greatly appreciated.
-Translation
-InvenTree provides a translation layer for the web interface, this requires effort from translators to provide multi-lingual support. If you wish to translate InvenTree to a new language (or improve an existing translation), such contributions would be extremely useful. To provide translation improvements, refer to GitHub.
-
-
Translation Helper Script
-
A python script is provided to assist with translation. This script is located at ./InvenTree/script/translate.py
-
-Documentation
-Documenting a large software project is a challenging and ongoing effort. If you are able to provide assistance in improving this documentation set, please consider doing so! Documentation contributions can be made on GitHub.
-Donate
-If you are unable to provide contributions as listed above, or you find InvenTree to be useful, please consider donating to support its ongoing development.
-Donate :material-emoticon-cool:
\ No newline at end of file
diff --git a/docs/contribute.md b/docs/contribute.md
index a4f52f4..055eaaf 100644
--- a/docs/contribute.md
+++ b/docs/contribute.md
@@ -1,6 +1,5 @@
---
title: Contributing to InvenTree
-layout: page
---
## Contribute to InvenTree
diff --git a/docs/extend/api.md b/docs/extend/api.md
index 1ac58bb..0fefced 100644
--- a/docs/extend/api.md
+++ b/docs/extend/api.md
@@ -1,6 +1,5 @@
---
title: InvenTree API
-layout: page
---
## InvenTree API
diff --git a/docs/extend/integrate.md b/docs/extend/integrate.md
index bd7e50e..1e19ad7 100644
--- a/docs/extend/integrate.md
+++ b/docs/extend/integrate.md
@@ -1,6 +1,5 @@
---
title: Third Party Integrations
-layout: page
---
## Third Party Integrations
diff --git a/docs/extend/plugins.md b/docs/extend/plugins.md
index bc89fc8..30fab08 100644
--- a/docs/extend/plugins.md
+++ b/docs/extend/plugins.md
@@ -1,6 +1,5 @@
---
title: Plugins
-layout: page
---
## InvenTree Plugin Architecture
diff --git a/docs/extend/python.md b/docs/extend/python.md
index cea1fd6..a2bf642 100644
--- a/docs/extend/python.md
+++ b/docs/extend/python.md
@@ -1,6 +1,5 @@
---
title: Python Interface
-layout: page
---
## Python Module
diff --git a/docs/index.md b/docs/index.md
index 40b12c1..71a4154 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,7 +1,5 @@
---
title: InvenTree
-layout: page
-permalink: "/"
---
## InvenTree - Intuitive Inventory Management
diff --git a/docs/part/parameter.md b/docs/part/parameter.md
index 9d10f7b..d8d1d2c 100644
--- a/docs/part/parameter.md
+++ b/docs/part/parameter.md
@@ -1,6 +1,5 @@
---
title: Part Parameters
-layout: page
---
## Part Parameters
diff --git a/docs/part/part.md b/docs/part/part.md
index 975f8d6..e55c8c5 100644
--- a/docs/part/part.md
+++ b/docs/part/part.md
@@ -1,6 +1,5 @@
---
title: Parts
-layout: page
---
# Part
diff --git a/docs/part/template.md b/docs/part/template.md
index 4dfaca8..407f406 100644
--- a/docs/part/template.md
+++ b/docs/part/template.md
@@ -1,6 +1,5 @@
---
title: Part Templates
-layout: page
---
## Part Templates
diff --git a/docs/part/test.md b/docs/part/test.md
index a029594..fcb1e12 100644
--- a/docs/part/test.md
+++ b/docs/part/test.md
@@ -1,6 +1,5 @@
---
title: Part Test Templates
-layout: page
---
## Part Test Templates
diff --git a/docs/part/views.md b/docs/part/views.md
index cf10b7f..046227b 100644
--- a/docs/part/views.md
+++ b/docs/part/views.md
@@ -1,6 +1,5 @@
---
title: Part Views
-layout: page
---
The Part information page organizes part data into sections, displayed as tabs.
diff --git a/docs/report/labels.md b/docs/report/labels.md
index 7016577..90fa71b 100644
--- a/docs/report/labels.md
+++ b/docs/report/labels.md
@@ -1,6 +1,5 @@
---
title: Custom Labels
-layout: page
---
## Custom Labels
diff --git a/docs/report/order.md b/docs/report/order.md
index 6281499..cfec047 100644
--- a/docs/report/order.md
+++ b/docs/report/order.md
@@ -1,6 +1,5 @@
---
title: Order Report
-layout: page
---
## Order Report
diff --git a/docs/report/pack.md b/docs/report/pack.md
index c0dde81..dc5b315 100644
--- a/docs/report/pack.md
+++ b/docs/report/pack.md
@@ -1,6 +1,5 @@
---
title: Packing List Report
-layout: page
---
## Packing List
diff --git a/docs/report/report.md b/docs/report/report.md
index 222d0a2..2a1bc0c 100644
--- a/docs/report/report.md
+++ b/docs/report/report.md
@@ -1,6 +1,5 @@
---
title: Report Generation
-layout: page
---
## Custom Reporting
diff --git a/docs/report/test.md b/docs/report/test.md
index 72739e1..3e3ceee 100644
--- a/docs/report/test.md
+++ b/docs/report/test.md
@@ -1,6 +1,5 @@
---
title: Test Report
-layout: page
---
## Test Report
diff --git a/docs/start/config.md b/docs/start/config.md
index 2f631df..f143e36 100644
--- a/docs/start/config.md
+++ b/docs/start/config.md
@@ -1,6 +1,5 @@
---
title: Database Configuration
-layout: page
---
## Database Configuration
diff --git a/docs/start/deploy.md b/docs/start/deploy.md
index 7f55488..c0e6677 100644
--- a/docs/start/deploy.md
+++ b/docs/start/deploy.md
@@ -1,6 +1,5 @@
---
title: Deploy InvenTree
-layout: page
---
## Deploying InvenTree
diff --git a/docs/start/install.md b/docs/start/install.md
index 9e7bea2..b7e55ff 100644
--- a/docs/start/install.md
+++ b/docs/start/install.md
@@ -1,6 +1,5 @@
---
title: Install InvenTree
-layout: page
---
## Introduction
diff --git a/docs/start/migrate.md b/docs/start/migrate.md
index 6619652..f4d39ee 100644
--- a/docs/start/migrate.md
+++ b/docs/start/migrate.md
@@ -1,6 +1,5 @@
---
title: Migrating Data
-layout: page
---
## Migrating Data
diff --git a/docs/start/themes.md b/docs/start/themes.md
index 41719df..d1081b8 100644
--- a/docs/start/themes.md
+++ b/docs/start/themes.md
@@ -1,6 +1,5 @@
---
title: Changing color theme
-layout: page
---
## Color Themes
diff --git a/docs/start/update.md b/docs/start/update.md
index fab61b2..c288596 100644
--- a/docs/start/update.md
+++ b/docs/start/update.md
@@ -1,6 +1,5 @@
---
title: Update InvenTree
-layout: page
---
## Update InvenTree
diff --git a/docs/stock/adjust.md b/docs/stock/adjust.md
index 6d95a19..be1d1da 100644
--- a/docs/stock/adjust.md
+++ b/docs/stock/adjust.md
@@ -1,6 +1,5 @@
---
title: Stock Adjustments
-layout: page
---
## Stock Adjustments
diff --git a/docs/stock/stock.md b/docs/stock/stock.md
index be49442..72e1471 100644
--- a/docs/stock/stock.md
+++ b/docs/stock/stock.md
@@ -1,6 +1,5 @@
---
title: Stock
-layout: page
---
## Stock Location
diff --git a/docs/stock/stocktake.md b/docs/stock/stocktake.md
index 3294c09..6054b98 100644
--- a/docs/stock/stocktake.md
+++ b/docs/stock/stocktake.md
@@ -1,6 +1,5 @@
---
title: Stocktake
-layout: page
---
## Stocktake
diff --git a/docs/stock/test.md b/docs/stock/test.md
index 72a36f0..cea7b9e 100644
--- a/docs/stock/test.md
+++ b/docs/stock/test.md
@@ -1,6 +1,5 @@
---
title: Stock Test Result
-layout: page
---
## Stock Test Result
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css
index 00f4951..f483bbe 100644
--- a/docs/stylesheets/extra.css
+++ b/docs/stylesheets/extra.css
@@ -1,3 +1,4 @@
+/* Image "popping" feature */
.overlay {
/* Display over the entire page */
position: fixed;
@@ -52,3 +53,18 @@ a[target="_blank"]:not([class*="md-"]):after {
/* content: " " url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24'%3E%3Cpath fill='rgb(123,136,204)' d='M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z' /%3E%3C/svg%3E%0A");*/
content: " " url('../assets/open-in-new-custom.svg');
}
+
+/* Set text alignment to "justify" */
+p {
+ text-align: justify;
+}
+
+/* Remove page title */
+.md-content h1:first-child {
+ display: none;
+}
+
+/* Remove top margin for first h2 header */
+.md-typeset h2:first-of-type {
+ margin-top: 0em;
+}
\ No newline at end of file
diff --git a/mkdocs.yml b/mkdocs.yml
index 869a31e..9fb4f92 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -20,6 +20,7 @@ theme:
repo: fontawesome/brands/github
features:
- tabs
+edit_uri: "" # Disable "Edit" button
extra_css:
- stylesheets/extra.css
extra_javascript:
@@ -40,7 +41,7 @@ nav:
- Parts: part/part.md
- Part Views: part/views.md
- Parameters: part/parameter.md
- - Template Parts: part/template.md
+ - Templates: part/template.md
- Tests: part/test.md
- Stock:
- Stock Items: stock/stock.md
@@ -49,7 +50,7 @@ nav:
- Test Results: stock/test.md
- Build:
- Build Parts: build/build.md
- - BOM: build/bom.md
+ - Bill of Materials (BOM): build/bom.md
- Buy:
- Suppliers: buy/supplier.md
- Purchase Orders: buy/po.md
@@ -79,6 +80,7 @@ plugins:
markdown_extensions:
- admonition
- attr_list
+ - meta
- pymdownx.details
- pymdownx.highlight
- pymdownx.superfences