diff --git a/docs/docs/concepts/pricing.md b/docs/docs/concepts/pricing.md
index 8e1e5a5345..8d08c2ece5 100644
--- a/docs/docs/concepts/pricing.md
+++ b/docs/docs/concepts/pricing.md
@@ -23,6 +23,36 @@ Throughout this documentation (and within InvenTree) the concepts of *cost* and
| Price | The theoretical amount of money required to pay for something. |
| Cost | The actual amount of money paid. |
+## Line Items
+
+Orders (Purchase Orders, Sales Orders, and Return Orders) are made up of *line items*, each linking a *Quantity* to a *Unit Price*. A line item's *Line Total* is calculated as follows:
+
+```
+Line Total = Quantity * Unit Price
+```
+
+An order's overall *Total Price* is calculated by summing the *Line Total* of every line item and [extra line item](#extra-line-items) associated with the order.
+
+### Extra Line Items
+
+*Extra Line Items* provide a way to add itemized costs to an order which are not tied to a specific part or stock item - for example freight charges, service fees, or other miscellaneous costs. Extra line items support the same *Quantity* and *Unit Price* fields as regular line items, and are included in the order's *Total Price* calculation.
+
+### Line Item Discount
+
+Line items - and their associated [extra line items](#extra-line-items) - support an optional *Discount* field, expressed as a percentage between 0% and 100%. This is available on:
+
+- [Purchase Order](../purchasing/purchase_order.md#add-line-items) line items and [extra line items](../purchasing/purchase_order.md#extra-line-items)
+- [Sales Order](../sales/sales_order.md#add-line-items) line items and [extra line items](../sales/sales_order.md#extra-line-items)
+- [Return Order](../sales/return_order.md#line-items) line items and [extra line items](../sales/return_order.md#extra-line-items)
+
+If specified, the discount is applied to the *Line Total*, using the following formula:
+
+```
+Line Total = Quantity * Unit Price * (1 - Discount / 100)
+```
+
+!!! info "Optional"
+ The discount percentage is optional, and defaults to 0% (no discount) if not specified.
## Currency Support
diff --git a/docs/docs/purchasing/purchase_order.md b/docs/docs/purchasing/purchase_order.md
index fd2cfacb77..6871283eb7 100644
--- a/docs/docs/purchasing/purchase_order.md
+++ b/docs/docs/purchasing/purchase_order.md
@@ -92,6 +92,9 @@ Once the "Add Line Item" form opens, select a supplier part in the list.
Fill out the rest of the form then click on Submit
+!!! info "Discount"
+ An optional [discount](../concepts/pricing.md#line-item-discount) percentage can be applied to each line item.
+
#### Upload File
It is possible to upload an exported purchase order from the supplier instead of manually entering each line item. To start the process, click on {{ icon("upload") }} Upload File button next to the {{ icon("plus-circle") }} Add Line Item button and follow the steps.
@@ -99,6 +102,10 @@ It is possible to upload an exported purchase order from the supplier instead of
!!! info "Supported Formats"
This process only supports tabular data and the following formats are supported: CSV, TSV, XLS, XLSX, JSON and YAML
+### Extra Line Items
+
+While [line items](#add-line-items) must reference a particular supplier part, extra line items are available for any other itemized information that needs to be conveyed with the order - for example freight charges or service fees. Extra line items support an optional [discount](../concepts/pricing.md#line-item-discount) percentage, the same as regular line items.
+
## Issue Order
Once all the line items were added, click on the {{ icon("send", title="Issue") }} button on the main purchase order detail panel and confirm the order has been submitted.
diff --git a/docs/docs/sales/return_order.md b/docs/docs/sales/return_order.md
index d57dcc562a..673f2c9d96 100644
--- a/docs/docs/sales/return_order.md
+++ b/docs/docs/sales/return_order.md
@@ -117,9 +117,12 @@ Return Order line items can be added while the [status](#return-order-status-cod
!!! info "Serialized Stock Only"
Only stock items which are serialized can be selected for return from the customer
+!!! info "Discount"
+ An optional [discount](../concepts/pricing.md#line-item-discount) percentage can be applied to each line item.
+
### Extra Line Items
-While [line items](#line-items) must reference a particular stock item, extra line items are available for any other itemized information that needs to be conveyed with the order.
+While [line items](#line-items) must reference a particular stock item, extra line items are available for any other itemized information that needs to be conveyed with the order - for example freight charges or service fees. Extra line items support an optional [discount](../concepts/pricing.md#line-item-discount) percentage, the same as regular line items.
## Return Order Reports
diff --git a/docs/docs/sales/sales_order.md b/docs/docs/sales/sales_order.md
index 239651b753..bfb3a7b9db 100644
--- a/docs/docs/sales/sales_order.md
+++ b/docs/docs/sales/sales_order.md
@@ -90,6 +90,13 @@ Once the "Add Line Item" form opens, select a part in the list.
Fill out the rest of the form then click on Submit
+!!! info "Discount"
+ An optional [discount](../concepts/pricing.md#line-item-discount) percentage can be applied to each line item.
+
+### Extra Line Items
+
+While [line items](#add-line-items) must reference a particular part, extra line items are available for any other itemized information that needs to be conveyed with the order - for example freight charges or service fees. Extra line items support an optional [discount](../concepts/pricing.md#line-item-discount) percentage, the same as regular line items.
+
## Shipments
After all line items were added to the sales order, user needs to create one or more [shipments](#sales-order-shipments) in order to allocate stock for those parts.
diff --git a/tasks.py b/tasks.py
index 6e086e2c30..1e99fdbbb5 100644
--- a/tasks.py
+++ b/tasks.py
@@ -1896,6 +1896,7 @@ def setup_test(
c,
filename=template_dir.joinpath('inventree_data.json'),
clear=True,
+ ignore_nonexistent=True,
verbose=verbose,
)