From efda47d2cdda503d2af635b86dcfc682ba42472f Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 31 Jul 2024 15:49:21 +1000 Subject: [PATCH] Add extra fields to BOM export (#7775) * Add extra fields to BOM export * Bump API version --- .../InvenTree/InvenTree/api_version.py | 5 +++- src/backend/InvenTree/part/serializers.py | 25 +++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/backend/InvenTree/InvenTree/api_version.py b/src/backend/InvenTree/InvenTree/api_version.py index 1082460451..c0e3e67f6f 100644 --- a/src/backend/InvenTree/InvenTree/api_version.py +++ b/src/backend/InvenTree/InvenTree/api_version.py @@ -1,12 +1,15 @@ """InvenTree API version information.""" # InvenTree API version -INVENTREE_API_VERSION = 228 +INVENTREE_API_VERSION = 229 """Increment this API version number whenever there is a significant change to the API that any clients need to know about.""" INVENTREE_API_TEXT = """ +v229 - 2024-07-31 : https://github.com/inventree/InvenTree/pull/7775 + - Add extra exportable fields to the BomItem serializer + v228 - 2024-07-18 : https://github.com/inventree/InvenTree/pull/7684 - Adds "icon" field to the PartCategory.path and StockLocation.path API - Adds icon packages API endpoint diff --git a/src/backend/InvenTree/part/serializers.py b/src/backend/InvenTree/part/serializers.py index f1518e0780..0758a8ff8d 100644 --- a/src/backend/InvenTree/part/serializers.py +++ b/src/backend/InvenTree/part/serializers.py @@ -1490,6 +1490,8 @@ class BomItemSerializer( import_exclude_fields = ['validated', 'substitutes'] + export_only_fields = ['sub_part_name', 'sub_part_ipn', 'sub_part_description'] + class Meta: """Metaclass defining serializer fields.""" @@ -1497,6 +1499,10 @@ class BomItemSerializer( fields = [ 'part', 'sub_part', + # Extra fields only for export + 'sub_part_name', + 'sub_part_ipn', + 'sub_part_description', 'reference', 'quantity', 'overage', @@ -1563,15 +1569,30 @@ class BomItemSerializer( return quantity part = serializers.PrimaryKeyRelatedField( - queryset=Part.objects.filter(assembly=True) + queryset=Part.objects.filter(assembly=True), + label=_('Assembly'), + help_text=_('Select the parent assembly'), ) substitutes = BomItemSubstituteSerializer(many=True, read_only=True) part_detail = PartBriefSerializer(source='part', many=False, read_only=True) + # Extra fields only for export + sub_part_name = serializers.CharField( + source='sub_part.name', read_only=True, label=_('Component Name') + ) + sub_part_ipn = serializers.CharField( + source='sub_part.IPN', read_only=True, label=_('Component IPN') + ) + sub_part_description = serializers.CharField( + source='sub_part.description', read_only=True, label=_('Component Description') + ) + sub_part = serializers.PrimaryKeyRelatedField( - queryset=Part.objects.filter(component=True) + queryset=Part.objects.filter(component=True), + label=_('Component'), + help_text=_('Select the component part'), ) sub_part_detail = PartBriefSerializer(source='sub_part', many=False, read_only=True)