2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-30 20:46:47 +00:00

Consumed filter (#8574)

* Add API filter for 'consumed' status

* Add filter to table

* Bump API vession
This commit is contained in:
Oliver 2024-11-28 00:59:14 +11:00 committed by GitHub
parent a48d23b161
commit 28ea275d1a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 2 deletions

View File

@ -1,13 +1,16 @@
"""InvenTree API version information."""
# InvenTree API version
INVENTREE_API_VERSION = 287
INVENTREE_API_VERSION = 288
"""Increment this API version number whenever there is a significant change to the API that any clients need to know about."""
INVENTREE_API_TEXT = """
v288 - 2024-11-27 : https://github.com/inventree/InvenTree/pull/8574
- Adds "consumed" filter to StockItem API
v287 - 2024-11-27 : https://github.com/inventree/InvenTree/pull/8571
- Adds ability to set stock status when returning items from a customer

View File

@ -524,6 +524,7 @@ class StockFilter(rest_filters.FilterSet):
field_name='part__name',
lookup_expr='iexact',
)
name_contains = rest_filters.CharFilter(
label=_('Part name contains (case insensitive)'),
field_name='part__name',
@ -540,11 +541,13 @@ class StockFilter(rest_filters.FilterSet):
field_name='part__IPN',
lookup_expr='iexact',
)
IPN_contains = rest_filters.CharFilter(
label=_('Part IPN contains (case insensitive)'),
field_name='part__IPN',
lookup_expr='icontains',
)
IPN_regex = rest_filters.CharFilter(
label=_('Part IPN (regex)'), field_name='part__IPN', lookup_expr='iregex'
)
@ -553,12 +556,14 @@ class StockFilter(rest_filters.FilterSet):
assembly = rest_filters.BooleanFilter(
label=_('Assembly'), field_name='part__assembly'
)
active = rest_filters.BooleanFilter(label=_('Active'), field_name='part__active')
salable = rest_filters.BooleanFilter(label=_('Salable'), field_name='part__salable')
min_stock = rest_filters.NumberFilter(
label=_('Minimum stock'), field_name='quantity', lookup_expr='gte'
)
max_stock = rest_filters.NumberFilter(
label=_('Maximum stock'), field_name='quantity', lookup_expr='lte'
)
@ -695,8 +700,18 @@ class StockFilter(rest_filters.FilterSet):
return queryset.filter(q_batch).filter(q_serial).distinct()
consumed = rest_filters.BooleanFilter(
label=_('Consumed by Build Order'), method='filter_consumed'
)
def filter_consumed(self, queryset, name, value):
"""Filter by whether the stock item has been consumed by a build order."""
if str2bool(value):
return queryset.filter(consumed_by__isnull=False)
return queryset.filter(consumed_by__isnull=True)
installed = rest_filters.BooleanFilter(
label='Installed in other stock item', method='filter_installed'
label=_('Installed in other stock item'), method='filter_installed'
)
def filter_installed(self, queryset, name, value):

View File

@ -343,6 +343,11 @@ function stockItemTableFilters({
label: t`Include Variants`,
description: t`Include stock items for variant parts`
},
{
name: 'consumed',
label: t`Consumed`,
description: t`Show items which have been consumed by a build order`
},
{
name: 'installed',
label: t`Installed`,