Add Date input for table filter (#4067)

* Add Date input for table filter

* Update filters.js

* Update filters.js

* Expiry date filter on stock item

* JS whitespace

* Timezone from JS

* Move to timestamp timezoned

* Revert to YYYY-MM-DD iso format

* Remove setting/ getFilterSettings from addTableFilter
This commit is contained in:
Bben 2023-01-04 20:48:16 +01:00 committed by GitHub
parent d50bf60826
commit 6a0efb0365
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 1 deletions

View File

@ -2,10 +2,12 @@
# InvenTree API version
INVENTREE_API_VERSION = 86
INVENTREE_API_VERSION = 87
"""
Increment this API version number whenever there is a significant change to the API that any clients need to know about
v87 -> 2023-01-04 : https://github.com/inventree/InvenTree/pull/4067
- Add API date filter for stock table on Expiry date
v86 -> 2022-12-22 : https://github.com/inventree/InvenTree/pull/4069
- Adds API endpoints for part stocktake

View File

@ -830,7 +830,22 @@ class StockList(APIDownloadMixin, ListCreateDestroyAPIView):
queryset = queryset.filter(StockItem.EXPIRED_FILTER)
else:
queryset = queryset.exclude(StockItem.EXPIRED_FILTER)
# Filter by 'expiry date'
expired_date_lte = params.get('expiry_date_lte', None)
if expired_date_lte is not None:
try:
date_lte = datetime.fromisoformat(expired_date_lte)
queryset = queryset.filter(expiry_date__lte=date_lte)
except (ValueError, TypeError):
pass
expiry_date_gte = params.get('expiry_date_gte', None)
if expiry_date_gte is not None:
try:
date_gte = datetime.fromisoformat(expiry_date_gte)
queryset = queryset.filter(expiry_date__gte=date_gte)
except (ValueError, TypeError):
pass
# Filter by 'stale' status
stale = params.get('stale', None)

View File

@ -182,6 +182,8 @@ function getFilterOptionList(tableKey, filterKey) {
value: '{% trans "false" %}',
},
};
} else if (settings.type == 'date') {
return 'date';
} else if ('options' in settings) {
return settings.options;
}
@ -233,6 +235,8 @@ function generateFilterInput(tableKey, filterKey) {
// A 'null' options list means that a simple text-input dialog should be used
if (options == null) {
html = `<input class='form-control filter-input' id='${id}' name='value'></input>`;
} else if (options == 'date') {
html = `<input type='date' class='dateinput form-control filter-input' id='${id}' name='value'></input>`;
} else {
// Return a 'select' input with the available values
html = `<select class='form-control filter-input' id='${id}' name='value'>`;

View File

@ -280,6 +280,14 @@ function getAvailableTableFilters(tableKey) {
title: '{% trans "Has purchase price" %}',
description: '{% trans "Show stock items which have a purchase price set" %}',
},
expiry_date_lte: {
type: 'date',
title: '{% trans "Expiry Date before" %}',
},
expiry_date_gte: {
type: 'date',
title: '{% trans "Expiry Date after" %}',
},
};
// Optional filters if stock expiry functionality is enabled