mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Added manufacturer data to BoM export
This commit is contained in:
parent
13b64c6a04
commit
c7ddccc4ec
@ -14,6 +14,7 @@ from InvenTree.helpers import DownloadFile, GetExportFormats
|
|||||||
|
|
||||||
from .admin import BomItemResource
|
from .admin import BomItemResource
|
||||||
from .models import BomItem
|
from .models import BomItem
|
||||||
|
from company.models import SupplierPart
|
||||||
|
|
||||||
|
|
||||||
def IsValidBOMFormat(fmt):
|
def IsValidBOMFormat(fmt):
|
||||||
@ -90,6 +91,36 @@ def ExportBom(part, fmt='csv', cascade=False, max_levels=None):
|
|||||||
bom_items = [item for item in part.bom_items.all().order_by('id')]
|
bom_items = [item for item in part.bom_items.all().order_by('id')]
|
||||||
|
|
||||||
dataset = BomItemResource().export(queryset=bom_items, cascade=cascade)
|
dataset = BomItemResource().export(queryset=bom_items, cascade=cascade)
|
||||||
|
|
||||||
|
# Expand dataset with manufacturer parts
|
||||||
|
manufacturer_headers = ('Manufacturer_', 'MPN_')
|
||||||
|
manufacturer_cols = {}
|
||||||
|
|
||||||
|
for b_idx, bom_item in enumerate(bom_items):
|
||||||
|
# Get part instance
|
||||||
|
b_part = bom_item.sub_part
|
||||||
|
# Filter supplier parts
|
||||||
|
supplier_parts = SupplierPart.objects.filter(part__pk=b_part.pk)
|
||||||
|
# Construct manufacturer data
|
||||||
|
manufacturer_list = []
|
||||||
|
for supplier_part in supplier_parts:
|
||||||
|
manufacturer_list.append((supplier_part.manufacturer.name, supplier_part.MPN))
|
||||||
|
# Add manufacturer data to manufacturer columns
|
||||||
|
for m_idx, manufacturer in enumerate(manufacturer_list):
|
||||||
|
try:
|
||||||
|
manufacturer_cols[manufacturer_headers[0] + str(m_idx)].update({b_idx: manufacturer[0]})
|
||||||
|
manufacturer_cols[manufacturer_headers[1] + str(m_idx)].update({b_idx: manufacturer[1]})
|
||||||
|
except KeyError:
|
||||||
|
manufacturer_cols[manufacturer_headers[0] + str(m_idx)] = {b_idx: manufacturer[0]}
|
||||||
|
manufacturer_cols[manufacturer_headers[1] + str(m_idx)] = {b_idx: manufacturer[1]}
|
||||||
|
|
||||||
|
# Add manufacturer columns to dataset
|
||||||
|
for header, col_dict in manufacturer_cols.items():
|
||||||
|
# Construct column tuple
|
||||||
|
col = tuple(col_dict.get(c_idx, '') for c_idx in range(len(bom_items)))
|
||||||
|
# Add column to dataset
|
||||||
|
dataset.append_col(col, header=header)
|
||||||
|
|
||||||
data = dataset.export(fmt)
|
data = dataset.export(fmt)
|
||||||
|
|
||||||
filename = '{n}_BOM.{fmt}'.format(n=part.full_name, fmt=fmt)
|
filename = '{n}_BOM.{fmt}'.format(n=part.full_name, fmt=fmt)
|
||||||
|
Loading…
Reference in New Issue
Block a user