From 05b8c812f54b3fe3932de06697aeff9eded5d4af Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 3 Feb 2026 09:11:57 +1100 Subject: [PATCH] [API] BOM active filter (#11242) * Add 'sub_part_active' filter for BOM list * Add UI filter * Bump API version --- src/backend/InvenTree/InvenTree/api_version.py | 5 ++++- src/backend/InvenTree/part/api.py | 16 ++++++++++------ src/frontend/src/tables/bom/BomTable.tsx | 5 +++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/backend/InvenTree/InvenTree/api_version.py b/src/backend/InvenTree/InvenTree/api_version.py index fc63d601dd..f8d15dc97a 100644 --- a/src/backend/InvenTree/InvenTree/api_version.py +++ b/src/backend/InvenTree/InvenTree/api_version.py @@ -1,11 +1,14 @@ """InvenTree API version information.""" # InvenTree API version -INVENTREE_API_VERSION = 446 +INVENTREE_API_VERSION = 447 """Increment this API version number whenever there is a significant change to the API that any clients need to know about.""" INVENTREE_API_TEXT = """ +v447 -> 2026-02-02 : https://github.com/inventree/InvenTree/pull/11242 + - Adds "sub_part_active" filter to BomItem API endpoint + v446 -> 2026-02-01 : https://github.com/inventree/InvenTree/pull/11232 - Allow ordering of test results by started_datetime and finished_datetime fields - Allow ordering of test results by test_station field diff --git a/src/backend/InvenTree/part/api.py b/src/backend/InvenTree/part/api.py index f8f901a98a..6a6f3326a1 100644 --- a/src/backend/InvenTree/part/api.py +++ b/src/backend/InvenTree/part/api.py @@ -1247,11 +1247,11 @@ class BomFilter(FilterSet): # Filters for linked 'part' part_active = rest_filters.BooleanFilter( - label='Assembly part is active', field_name='part__active' + label=_('Assembly part is active'), field_name='part__active' ) part_trackable = rest_filters.BooleanFilter( - label='Assembly part is trackable', field_name='part__trackable' + label=_('Assembly part is trackable'), field_name='part__trackable' ) part_testable = rest_filters.BooleanFilter( @@ -1259,8 +1259,12 @@ class BomFilter(FilterSet): ) # Filters for linked 'sub_part' + sub_part_active = rest_filters.BooleanFilter( + label=_('Component part is active'), field_name='sub_part__active' + ) + sub_part_trackable = rest_filters.BooleanFilter( - label='Component part is trackable', field_name='sub_part__trackable' + label=_('Component part is trackable'), field_name='sub_part__trackable' ) sub_part_testable = rest_filters.BooleanFilter( @@ -1268,15 +1272,15 @@ class BomFilter(FilterSet): ) sub_part_assembly = rest_filters.BooleanFilter( - label='Component part is an assembly', field_name='sub_part__assembly' + label=_('Component part is an assembly'), field_name='sub_part__assembly' ) sub_part_virtual = rest_filters.BooleanFilter( - label='Component part is virtual', field_name='sub_part__virtual' + label=_('Component part is virtual'), field_name='sub_part__virtual' ) available_stock = rest_filters.BooleanFilter( - label='Has available stock', method='filter_available_stock' + label=_('Has available stock'), method='filter_available_stock' ) def filter_available_stock(self, queryset, name, value): diff --git a/src/frontend/src/tables/bom/BomTable.tsx b/src/frontend/src/tables/bom/BomTable.tsx index 35cc65fb43..808ac1e9eb 100644 --- a/src/frontend/src/tables/bom/BomTable.tsx +++ b/src/frontend/src/tables/bom/BomTable.tsx @@ -425,6 +425,11 @@ export function BomTable({ label: t`Trackable Part`, description: t`Show trackable items` }, + { + name: 'sub_part_active', + label: t`Active Part`, + description: t`Show active items` + }, { name: 'sub_part_assembly', label: t`Assembled Part`,