mirror of
https://github.com/inventree/InvenTree.git
synced 2025-12-19 02:33:27 +00:00
[bug] BOM exporter (#11038)
* [bug] BOM exporter - Ensure sub-items are correctly annotated for multi-level BOM export * Remove debug statements
This commit is contained in:
@@ -9,6 +9,7 @@ import rest_framework.serializers as serializers
|
|||||||
|
|
||||||
from InvenTree.helpers import normalize
|
from InvenTree.helpers import normalize
|
||||||
from part.models import BomItem
|
from part.models import BomItem
|
||||||
|
from part.serializers import BomItemSerializer
|
||||||
from plugin import InvenTreePlugin
|
from plugin import InvenTreePlugin
|
||||||
from plugin.mixins import DataExportMixin
|
from plugin.mixins import DataExportMixin
|
||||||
|
|
||||||
@@ -76,7 +77,10 @@ class BomExporterPlugin(DataExportMixin, InvenTreePlugin):
|
|||||||
|
|
||||||
def supports_export(self, model_class: type, user, *args, **kwargs) -> bool:
|
def supports_export(self, model_class: type, user, *args, **kwargs) -> bool:
|
||||||
"""This exported only supports the BomItem model."""
|
"""This exported only supports the BomItem model."""
|
||||||
return model_class == BomItem
|
return (
|
||||||
|
model_class == BomItem
|
||||||
|
and kwargs.get('serializer_class') == BomItemSerializer
|
||||||
|
)
|
||||||
|
|
||||||
def update_headers(self, headers, context, **kwargs):
|
def update_headers(self, headers, context, **kwargs):
|
||||||
"""Update headers for the BOM export."""
|
"""Update headers for the BOM export."""
|
||||||
@@ -149,17 +153,23 @@ class BomExporterPlugin(DataExportMixin, InvenTreePlugin):
|
|||||||
queryset = queryset.prefetch_related('substitutes')
|
queryset = queryset.prefetch_related('substitutes')
|
||||||
|
|
||||||
if self.export_supplier_data:
|
if self.export_supplier_data:
|
||||||
queryset = queryset.prefetch_related('sub_part__supplier_parts')
|
|
||||||
queryset = queryset.prefetch_related(
|
queryset = queryset.prefetch_related(
|
||||||
'sub_part__supplier_parts__manufacturer_part'
|
'sub_part__supplier_parts',
|
||||||
|
'sub_part__supplier_parts__supplier',
|
||||||
|
'sub_part__supplier_parts__manufacturer_part',
|
||||||
|
'sub_part__supplier_parts__manufacturer_part__manufacturer',
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.export_manufacturer_data:
|
if self.export_manufacturer_data:
|
||||||
queryset = queryset.prefetch_related('sub_part__manufacturer_parts')
|
queryset = queryset.prefetch_related(
|
||||||
|
'sub_part__manufacturer_parts',
|
||||||
|
'sub_part__manufacturer_parts__manufacturer',
|
||||||
|
)
|
||||||
|
|
||||||
if self.export_parameter_data:
|
if self.export_parameter_data:
|
||||||
queryset = queryset.prefetch_related('sub_part__parameters_list')
|
queryset = queryset.prefetch_related(
|
||||||
queryset = queryset.prefetch_related('sub_part__parameters_list__template')
|
'sub_part__parameters_list', 'sub_part__parameters_list__template'
|
||||||
|
)
|
||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
@@ -242,6 +252,7 @@ class BomExporterPlugin(DataExportMixin, InvenTreePlugin):
|
|||||||
):
|
):
|
||||||
sub_items = bom_item.sub_part.get_bom_items()
|
sub_items = bom_item.sub_part.get_bom_items()
|
||||||
sub_items = self.prefetch_queryset(sub_items)
|
sub_items = self.prefetch_queryset(sub_items)
|
||||||
|
sub_items = BomItemSerializer.annotate_queryset(sub_items)
|
||||||
|
|
||||||
for item in sub_items.all():
|
for item in sub_items.all():
|
||||||
self.process_bom_row(
|
self.process_bom_row(
|
||||||
|
|||||||
Reference in New Issue
Block a user