mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Bugfix: accomodate missing manfufacturer links
If a supplier_part does not have an associated manufacturer, the code would break
(cherry picked from commit 965dba4739
)
This commit is contained in:
parent
b5bc8935a2
commit
3d0012a3bf
@ -93,26 +93,59 @@ def ExportBom(part, fmt='csv', cascade=False, max_levels=None):
|
|||||||
dataset = BomItemResource().export(queryset=bom_items, cascade=cascade)
|
dataset = BomItemResource().export(queryset=bom_items, cascade=cascade)
|
||||||
|
|
||||||
# Expand dataset with manufacturer parts
|
# Expand dataset with manufacturer parts
|
||||||
manufacturer_headers = ('Manufacturer_', 'MPN_')
|
manufacturer_headers = [
|
||||||
|
_('Supplier'),
|
||||||
|
_('SKU'),
|
||||||
|
_('Manufacturer'),
|
||||||
|
_('MPN'),
|
||||||
|
]
|
||||||
|
|
||||||
manufacturer_cols = {}
|
manufacturer_cols = {}
|
||||||
|
|
||||||
for b_idx, bom_item in enumerate(bom_items):
|
for b_idx, bom_item in enumerate(bom_items):
|
||||||
# Get part instance
|
# Get part instance
|
||||||
b_part = bom_item.sub_part
|
b_part = bom_item.sub_part
|
||||||
|
|
||||||
# Filter supplier parts
|
# Filter supplier parts
|
||||||
supplier_parts = SupplierPart.objects.filter(part__pk=b_part.pk)
|
supplier_parts = SupplierPart.objects.filter(part__pk=b_part.pk)
|
||||||
# Construct manufacturer data
|
|
||||||
manufacturer_list = []
|
# Construct supplier-part data
|
||||||
for supplier_part in supplier_parts:
|
supplier_part_list = []
|
||||||
manufacturer_list.append((supplier_part.manufacturer.name, supplier_part.MPN))
|
|
||||||
# Add manufacturer data to manufacturer columns
|
for idx, supplier_part in enumerate(supplier_parts):
|
||||||
for m_idx, manufacturer in enumerate(manufacturer_list):
|
|
||||||
|
if supplier_part.supplier:
|
||||||
|
supplier_name = supplier_part.supplier.name
|
||||||
|
else:
|
||||||
|
supplier_name = ''
|
||||||
|
|
||||||
|
supplier_sku = supplier_part.SKU
|
||||||
|
|
||||||
|
if supplier_part.manufacturer:
|
||||||
|
manufacturer_name = supplier_part.manufacturer.name
|
||||||
|
else:
|
||||||
|
manufacturer_name = ''
|
||||||
|
|
||||||
|
manufacturer_mpn = supplier_part.MPN
|
||||||
|
|
||||||
|
# Add manufacturer data to the manufacturer columns
|
||||||
|
|
||||||
|
# Generate column names for this supplier
|
||||||
|
k_sup = manufacturer_headers[0] + "_" + str(idx)
|
||||||
|
k_sku = manufacturer_headers[1] + "_" + str(idx)
|
||||||
|
k_man = manufacturer_headers[2] + "_" + str(idx)
|
||||||
|
k_mpn = manufacturer_headers[3] + "_" + str(idx)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
manufacturer_cols[manufacturer_headers[0] + str(m_idx)].update({b_idx: manufacturer[0]})
|
manufacturer_cols[k_sup].update({b_idx: supplier_name})
|
||||||
manufacturer_cols[manufacturer_headers[1] + str(m_idx)].update({b_idx: manufacturer[1]})
|
manufacturer_cols[k_sku].update({b_idx: supplier_sku})
|
||||||
|
manufacturer_cols[k_man].update({b_idx: manufacturer_name})
|
||||||
|
manufacturer_cols[k_mpn].update({b_idx: manufacturer_mpn})
|
||||||
except KeyError:
|
except KeyError:
|
||||||
manufacturer_cols[manufacturer_headers[0] + str(m_idx)] = {b_idx: manufacturer[0]}
|
manufacturer_cols[k_sup] = {b_idx: supplier_name}
|
||||||
manufacturer_cols[manufacturer_headers[1] + str(m_idx)] = {b_idx: manufacturer[1]}
|
manufacturer_cols[k_sku] = {b_idx: supplier_sku}
|
||||||
|
manufacturer_cols[k_man] = {b_idx: manufacturer_name}
|
||||||
|
manufacturer_cols[k_mpn] = {b_idx: manufacturer_mpn}
|
||||||
|
|
||||||
# Add manufacturer columns to dataset
|
# Add manufacturer columns to dataset
|
||||||
for header, col_dict in manufacturer_cols.items():
|
for header, col_dict in manufacturer_cols.items():
|
||||||
|
Loading…
Reference in New Issue
Block a user