mirror of
https://github.com/inventree/inventree-docs.git
synced 2025-04-28 13:46:54 +00:00
commit
1e31d46510
BIN
docs/assets/images/report/label_example.png
Normal file
BIN
docs/assets/images/report/label_example.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.2 KiB |
BIN
docs/assets/images/report/label_stock_print_multiple.png
Normal file
BIN
docs/assets/images/report/label_stock_print_multiple.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
BIN
docs/assets/images/report/label_stock_print_single.png
Normal file
BIN
docs/assets/images/report/label_stock_print_single.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 47 KiB |
@ -37,6 +37,10 @@ Refer to the [build documentation](../../build/build/#overdue-builds) for more i
|
|||||||
- Purchase Orders
|
- Purchase Orders
|
||||||
- Sales Orders
|
- Sales Orders
|
||||||
|
|
||||||
|
### Improved Label Printing
|
||||||
|
|
||||||
|
[#1212](https://github.com/inventree/InvenTree/pull/1212) significantly improves the existing label printing functionality. Documentation for the new label printing system [can be found here](../../report/labels).
|
||||||
|
|
||||||
### Improved Permission System
|
### Improved Permission System
|
||||||
|
|
||||||
[#1221](https://github.com/inventree/InvenTree/pull/1221) adds new permission roles as follows:
|
[#1221](https://github.com/inventree/InvenTree/pull/1221) adds new permission roles as follows:
|
||||||
@ -44,6 +48,7 @@ Refer to the [build documentation](../../build/build/#overdue-builds) for more i
|
|||||||
- **Part** role split into *Part* and *Part Category* roles
|
- **Part** role split into *Part* and *Part Category* roles
|
||||||
- **Stock** role spit into *Stock Item* and *Stock Location* roles
|
- **Stock** role spit into *Stock Item* and *Stock Location* roles
|
||||||
|
|
||||||
|
|
||||||
## Major Bug Fixes
|
## Major Bug Fixes
|
||||||
|
|
||||||
| PR | Description |
|
| PR | Description |
|
||||||
|
@ -4,55 +4,188 @@ title: Custom Labels
|
|||||||
|
|
||||||
## Custom Labels
|
## Custom Labels
|
||||||
|
|
||||||
InvenTree supports printing of custom template-based labels, using the [blabel](https://github.com/Edinburgh-Genome-Foundry/blabel) plugin for Python.
|
InvenTree supports printing of custom template-based labels, using the [blabel](https://github.com/Edinburgh-Genome-Foundry/blabel) Python library.
|
||||||
|
|
||||||
Custom labels can be generated using simple HTML templates, with support for QR-codes, and conditional formatting using the Jinja template engine.
|
Custom labels can be generated using simple HTML templates, with support for QR-codes, and conditional formatting using the Jinja template engine.
|
||||||
|
|
||||||
!!! info "Documentation"
|
!!! info "Documentation"
|
||||||
Refer to the blabel documentation for further information
|
Refer to the [blabel documentation](https://edinburgh-genome-foundry.github.io/blabel/) for further information, and examples of the available features
|
||||||
|
|
||||||
### Creating Labels
|
Simple (generic) label templates are supplied 'out of the box' with InvenTree - however support is provided for generation of extremely specific custom labels, to meet any particular requirement.
|
||||||
|
|
||||||
!!! missing "TODO"
|
## Label Templates
|
||||||
This section requires further work
|
|
||||||
|
Label templates are written using a mixture of [HTML](https://www.w3schools.com/html/) and [CSS](https://www.w3schools.com/css). The blabel library is based on [weasyprint](https://weasyprint.org/), which supports a *subset* of HTML and CSS features. In addition to supporting HTML and CSS formatting, the label templates support the Jinja templating engine, allowing conditional formatting of the label data.
|
||||||
|
|
||||||
|
A label template is a single `.html` file which is uploaded to the InvenTree server by the user.
|
||||||
|
|
||||||
|
Below is a reasonably simple example of a label template which demostrates much of the available functionality. The template code shown below will produce the following label:
|
||||||
|
|
||||||
|
{% with id="label_example", url="report/label_example.png", description="Example label" %}
|
||||||
|
{% include 'img.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
|
||||||
|
```html
|
||||||
|
{% raw %}
|
||||||
|
<style>
|
||||||
|
@page {
|
||||||
|
width: 75mm;
|
||||||
|
height: 24mm;
|
||||||
|
padding: 1mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.location {
|
||||||
|
padding: 5px;
|
||||||
|
font-weight: bold;
|
||||||
|
font-family: Arial, Helvetica, sans-serif;
|
||||||
|
height: 100%;
|
||||||
|
vertical-align: middle;
|
||||||
|
float: right;
|
||||||
|
display: inline;
|
||||||
|
font-size: 125%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0mm;
|
||||||
|
left: 23mm;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qr {
|
||||||
|
margin: 2px;
|
||||||
|
width: 22mm;
|
||||||
|
height: 22mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<img class='qr' src="{{ label_tools.qr_code(location.barcode) }}"/>
|
||||||
|
|
||||||
|
<div class='location'>
|
||||||
|
{{ location.name }}
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<hr>
|
||||||
|
Location ID: {{ location.id }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endraw %}
|
||||||
|
```
|
||||||
|
|
||||||
|
Each significant component of the example template above are described in the sections below:
|
||||||
|
|
||||||
### Stylesheet
|
### Stylesheet
|
||||||
|
|
||||||
!!! missing "TODO"
|
The stylesheet defines the *style* of the label, and is enclosed within the `<style>...</style>` tags. The stylesheet supports any of the CSS features which are supported natively by weasyprint.
|
||||||
This section requires further work
|
|
||||||
|
Some points of note:
|
||||||
|
|
||||||
|
- The `@page` directive specifies the size of the label, and global margins.
|
||||||
|
- Normal per-class and per-element styling is supported
|
||||||
|
- Absolute positioning of elements is supported via the `position` CSS directive
|
||||||
|
- If text is too long to fit on a given label, the `text-overflow` directive can be used
|
||||||
|
|
||||||
### Context Data
|
### Context Data
|
||||||
|
|
||||||
Each label template is supplied with *context data* (variables) which can be used to display information based on the context in which the label is printed.
|
Each label template is supplied with *context data* (variables) which can be used to display information based on the context in which the label is printed. Variables supplied as context objects can be easily rendered to the label using jinja templating syntax.
|
||||||
|
|
||||||
!!! missing "TODO"
|
For example, if a StockLocation object is supplied to the label as the variable `location`, it is trivially simple to render the data to the label:
|
||||||
This section requires further work
|
|
||||||
|
```html
|
||||||
|
{% raw %}
|
||||||
|
Location ID: {{ location.id }}
|
||||||
|
<br>
|
||||||
|
Location Name: {{ location.name }}
|
||||||
|
{% endraw %}
|
||||||
|
```
|
||||||
|
|
||||||
### QR Codes
|
### QR Codes
|
||||||
|
|
||||||
!!! missing "TODO"
|
`blabel` supports barcodes and QR codes 'out of the box'. Passing data to render as a barcode or QR code is handled in the template file itself.
|
||||||
This section requires further work
|
|
||||||
|
Refer to the [blabel docs](https://edinburgh-genome-foundry.github.io/blabel/) for further information.
|
||||||
|
|
||||||
### Conditional Formatting
|
### Conditional Formatting
|
||||||
|
|
||||||
!!! missing "TODO"
|
Conditional formatting of label data is also supported. Below is an example excerpt from a label which determines the content based on the supplied context variables:
|
||||||
This section requires further work
|
|
||||||
|
|
||||||
## Stock Labels
|
```html
|
||||||
|
{% raw %}
|
||||||
|
{% if item.in_stock %}
|
||||||
|
Quantity: {{ item.quantity }}
|
||||||
|
{% else %}
|
||||||
|
OUT OF STOCK
|
||||||
|
{% endif %}
|
||||||
|
{% endraw %}
|
||||||
|
```
|
||||||
|
|
||||||
!!! missing "TODO"
|
### Label Filters
|
||||||
This section requires further work
|
|
||||||
|
Each label template provides a set of programmable filters which can be used to determine the relevance of that particular label. It may be the case that a particular label template is only applicable if certain conditions are met.
|
||||||
|
|
||||||
|
As an example, consider a label template for a StockItem. A user may wish to define a label which displays the firmware version of any items related to the Part with the IPN (Internal Part Number) `IPN123`.
|
||||||
|
|
||||||
|
To restrict the label accordingly, we could set the *filters* value to `part__IPN=IPN123`.
|
||||||
|
|
||||||
|
### Built-In Templates
|
||||||
|
|
||||||
|
The InvenTree installation provides a number of simple *default* templates which can be used as a starting point for creating custom labels. These built-in templates can be disabled if they are not required.
|
||||||
|
|
||||||
|
## Stock Item Labels
|
||||||
|
|
||||||
|
Stock Item label templates are used to generate labels for individual Stock Items.
|
||||||
|
|
||||||
|
### Creating Stock Item Label Templates
|
||||||
|
|
||||||
|
Stock Item label templates are added (and edited) via the admin interface.
|
||||||
|
|
||||||
|
### Printing Stock Item Labels
|
||||||
|
|
||||||
|
Stock Item labels can be printed using the following approaches:
|
||||||
|
|
||||||
|
To print a single stock item from the Stock Item detail view, select the *Print Label* option as shown below:
|
||||||
|
|
||||||
|
{% with id='item_label_single', url='report/label_stock_print_single.png', description='Print single stock item label' %}
|
||||||
|
{% include 'img.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
|
||||||
|
To print multiple stock items from the Stock table view, select the *Print Labels* option as shown below:
|
||||||
|
|
||||||
|
{% with id='item_label_multiple', url='report/label_stock_print_multiple.png', description='Print multiple stock item labels' %}
|
||||||
|
{% include 'img.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
|
||||||
### Context Data
|
### Context Data
|
||||||
|
|
||||||
In addition to the global label context data, the following variables are made available to the StockItem label template:
|
The following variables are made available to the StockItem label template:
|
||||||
|
|
||||||
* item - *The StockItem object itself*
|
| Variable | Description |
|
||||||
* part - *The Part object which is referenced by the StockItem object*
|
| -------- | ----------- |
|
||||||
* name - *The `name` field of the Part object*
|
| item | The StockItem object itself |
|
||||||
* ipn - *The `IPN` field of the Part object*
|
| part | The Part object which is referenced by the StockItem object |
|
||||||
* quantity - *The `quantity` field of the StockItem object*
|
| name | The `name` field of the associated Part object |
|
||||||
* serial - *The `serial` field of the StockItem object*
|
| ipn | The `IPN` field of the associated Part object |
|
||||||
* uid - *The `uid` field of the StockItem object*
|
| quantity | The `quantity` field of the StockItem object |
|
||||||
* qr_data - *JSON data representing the StockItem object, useful for rendering to a QR code*
|
| serial | The `serial` field of the StockItem object |
|
||||||
* tests - *Dict object of TestResult data associated with the StockItem*
|
| uid | The `uid` field of the StockItem object |
|
||||||
|
| tests | Dict object of TestResult data associated with the StockItem |
|
||||||
|
|
||||||
|
## Stock Location Labels
|
||||||
|
|
||||||
|
Stock Location label templates are used to generate labels for individual Stock Locations.
|
||||||
|
|
||||||
|
### Creating Stock Location Label Templates
|
||||||
|
|
||||||
|
Stock Location label templates are added (and edited) via the admin interface.
|
||||||
|
|
||||||
|
### Printing Stock Location Labels
|
||||||
|
|
||||||
|
To print a single label from the Stock Location detail view, select the *Print Label* option.
|
||||||
|
|
||||||
|
### Context Data
|
||||||
|
|
||||||
|
The following variables are made available to the StockLocation label template:
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
| -------- | ----------- |
|
||||||
|
| location | The StockLocation object itself |
|
||||||
|
Loading…
x
Reference in New Issue
Block a user