Skip to content

Commit

Permalink
Create missing entries for default reports (#4128) (#4131)
Browse files Browse the repository at this point in the history
* Create missing default reports

Default reports are available but not accessible from the UI.
Added the missing report entries

* Forgot to add BOM report template to previous commit

(cherry picked from commit a012139)

Co-authored-by: bloemp <pbloem@upcmail.nl>
  • Loading branch information
SchrodingersGat and bloemp authored Dec 31, 2022
1 parent aca8ced commit c621c47
Show file tree
Hide file tree
Showing 2 changed files with 222 additions and 0 deletions.
60 changes: 60 additions & 0 deletions InvenTree/report/apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ def ready(self):
if canAppAccessDatabase(allow_test=True):
self.create_default_test_reports()
self.create_default_build_reports()
self.create_default_bill_of_materials_reports()
self.create_default_purchase_order_reports()
self.create_default_sales_order_reports()

def create_default_reports(self, model, reports):
"""Copy defualt report files across to the media directory."""
Expand Down Expand Up @@ -96,6 +99,25 @@ def create_default_test_reports(self):

self.create_default_reports(TestReport, reports)

def create_default_bill_of_materials_reports(self):
"""Create database entries for the default Bill of Material templates (if they do not already exist)"""
try:
from .models import BillOfMaterialsReport
except Exception: # pragma: no cover
# Database is not ready yet
return

# List of Build reports to copy across
reports = [
{
'file': 'inventree_bill_of_materials_report.html',
'name': 'Bill of Materials',
'description': 'Bill of Materials report',
}
]

self.create_default_reports(BillOfMaterialsReport, reports)

def create_default_build_reports(self):
"""Create database entries for the default BuildReport templates (if they do not already exist)"""
try:
Expand All @@ -114,3 +136,41 @@ def create_default_build_reports(self):
]

self.create_default_reports(BuildReport, reports)

def create_default_purchase_order_reports(self):
"""Create database entries for the default SalesOrderReport templates (if they do not already exist)"""
try:
from .models import PurchaseOrderReport
except Exception: # pragma: no cover
# Database is not ready yet
return

# List of Build reports to copy across
reports = [
{
'file': 'inventree_po_report.html',
'name': 'InvenTree Purchase Order',
'description': 'Purchase Order example report',
}
]

self.create_default_reports(PurchaseOrderReport, reports)

def create_default_sales_order_reports(self):
"""Create database entries for the default Sales Order report templates (if they do not already exist)"""
try:
from .models import SalesOrderReport
except Exception: # pragma: no cover
# Database is not ready yet
return

# List of Build reports to copy across
reports = [
{
'file': 'inventree_so_report.html',
'name': 'InvenTree Sales Order',
'description': 'Sales Order example report',
}
]

self.create_default_reports(SalesOrderReport, reports)
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
{% extends "report/inventree_report_base.html" %}

{% load i18n %}
{% load report %}
{% load barcode %}
{% load inventree_extras %}

{% block page_margin %}
margin: 2cm;
margin-top: 4cm;
{% endblock %}

{% block bottom_left %}
content: "v{{report_revision}} - {{ date.isoformat }}";
{% endblock %}

{% block bottom_center %}
content: "{% inventree_version shortstring=True %}";
{% endblock %}

{% block style %}

.header-right {
text-align: right;
float: right;
}

.logo {
height: 20mm;
vertical-align: middle;
}

.thumb-container {
width: 32px;
display: inline;
}

.part-thumb {
max-width: 32px;
max-height: 32px;
display: inline;
}

.part-text {
display: inline;
}

.part-logo {
max-width: 60px;
max-height: 60px;
display: inline;
}

table {
border: 1px solid #eee;
border-radius: 3px;
border-collapse: collapse;
width: 100%;
font-size: 80%;
}

table td {
border: 1px solid #eee;
}

table td.shrink {
white-space: nowrap
}

table td.expand {
width: 99%
}

.invisible-table {
border: 0px solid transparent;
border-collapse: collapse;
width: 100%;
font-size: 80%;
}

.invisible-table td {
border: 0px solid transparent;
}

.main-part-text {
display: inline;
}

.main-part-description {
display: inline;
}

{% endblock %}

{% block header_content %}

<img class='logo' src='{% logo_image %}' alt="Inventree logo" width='150'>

<div class='header-right'>
<h3>{% trans "Bill of Materials" %}</h3>
</div>

{% endblock %}

{% block page_content %}

<table class="invisible-table">
<thead>
<tr>
<th colspan="2"><h3>{% trans "Part" %}</h3></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class='main-part-text'>
{{ part.full_name }}
</div>
<br/>
<div class='main-part-description'>
{{ part.description }}
</div>
</td>
<td>
<div class='part-logo'>
<img src='{% part_image part %}' class='part-logo'>
</div>
</td>
</tr>
</tbody>
</table>

<h3>{% trans "Materials needed" %}</h3>
<table class='table table-striped table-condensed'>
<thead>
<tr>
<th>{% trans "Part" %}</th>
<th>{% trans "Quantity" %}</th>
<th>{% trans "Reference" %}</th>
<th>{% trans "Note" %}</th>
</tr>
</thead>
<tbody>
{% for line in bom_items.all %}
<tr>
<td>
<div class='thumb-container'>
<img src='{% part_image line.part %}' class='part-thumb'>
</div>
<div class='part-text'>
{{ line.part.full_name }}
</div>
</td>
<td>{% decimal line.quantity %}</td>
<td>{{ line.reference }}</td>
<td>{{ line.notes }}</td>
</tr>
{% endfor %}
</tbody>
</table>

{% endblock %}

0 comments on commit c621c47

Please sign in to comment.