Merge pull request #1379 from SchrodingersGat/po-bug-fix

Pagination Bug Fix
This commit is contained in:
Oliver 2021-03-02 17:15:12 +11:00 committed by GitHub
commit 7f6f489463
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 61 additions and 9 deletions

View File

@ -200,6 +200,25 @@ class POLineItemList(generics.ListCreateAPIView):
filter_backends = [ filter_backends = [
DjangoFilterBackend, DjangoFilterBackend,
filters.SearchFilter,
filters.OrderingFilter
]
ordering_fields = [
'part__part__name',
'part__MPN',
'part__SKU',
'reference',
'quantity',
'received',
]
search_fields = [
'part__part__name',
'part__part__description',
'part__MPN',
'part__SKU',
'reference',
] ]
filter_fields = [ filter_fields = [
@ -412,7 +431,23 @@ class SOLineItemList(generics.ListCreateAPIView):
return queryset return queryset
filter_backends = [DjangoFilterBackend] filter_backends = [
DjangoFilterBackend,
filters.SearchFilter,
filters.OrderingFilter
]
ordering_fields = [
'part__name',
'quantity',
'reference',
]
search_fields = [
'part__name',
'quantity',
'reference',
]
filter_fields = [ filter_fields = [
'order', 'order',

View File

@ -135,6 +135,7 @@ function setupCallbacks() {
$("#po-table").inventreeTable({ $("#po-table").inventreeTable({
onPostBody: setupCallbacks, onPostBody: setupCallbacks,
name: 'purchaseorder', name: 'purchaseorder',
sidePagination: 'server',
formatNoMatches: function() { return "{% trans 'No line items found' %}"; }, formatNoMatches: function() { return "{% trans 'No line items found' %}"; },
queryParams: { queryParams: {
order: {{ order.id }}, order: {{ order.id }},
@ -151,6 +152,7 @@ $("#po-table").inventreeTable({
{ {
field: 'part', field: 'part',
sortable: true, sortable: true,
sortName: 'part__part__name',
title: '{% trans "Part" %}', title: '{% trans "Part" %}',
switchable: false, switchable: false,
formatter: function(value, row, index, field) { formatter: function(value, row, index, field) {
@ -162,18 +164,24 @@ $("#po-table").inventreeTable({
}, },
}, },
{ {
sortable: true,
field: 'part_detail.description', field: 'part_detail.description',
title: '{% trans "Description" %}', title: '{% trans "Description" %}',
}, },
{ {
sortable: true, sortable: true,
sortName: 'part__SKU',
field: 'supplier_part_detail.SKU', field: 'supplier_part_detail.SKU',
title: '{% trans "Order Code" %}', title: '{% trans "SKU" %}',
formatter: function(value, row, index, field) { formatter: function(value, row, index, field) {
return renderLink(value, `/supplier-part/${row.part}/`); return renderLink(value, `/supplier-part/${row.part}/`);
}, },
}, },
{
sortable: true,
sortName: 'part__MPN',
field: 'supplier_part_detail.MPN',
title: '{% trans "MPN" %}',
},
{ {
sortable: true, sortable: true,
field: 'reference', field: 'reference',

View File

@ -173,6 +173,7 @@ $("#so-lines-table").inventreeTable({
part_detail: true, part_detail: true,
allocations: true, allocations: true,
}, },
sidePagination: 'server',
uniqueId: 'pk', uniqueId: 'pk',
url: "{% url 'api-so-line-list' %}", url: "{% url 'api-so-line-list' %}",
onPostBody: setupCallbacks, onPostBody: setupCallbacks,
@ -201,6 +202,7 @@ $("#so-lines-table").inventreeTable({
}, },
{ {
sortable: true, sortable: true,
sortName: 'part__name',
field: 'part', field: 'part',
title: 'Part', title: 'Part',
formatter: function(value, row, index, field) { formatter: function(value, row, index, field) {
@ -222,7 +224,6 @@ $("#so-lines-table").inventreeTable({
title: 'Quantity', title: 'Quantity',
}, },
{ {
sortable: true,
field: 'allocated', field: 'allocated',
{% if order.status == SalesOrderStatus.PENDING %} {% if order.status == SalesOrderStatus.PENDING %}
title: '{% trans "Allocated" %}', title: '{% trans "Allocated" %}',

View File

@ -853,7 +853,9 @@ class StockList(generics.ListCreateAPIView):
'status', 'status',
] ]
ordering = ['part__name'] ordering = [
'part__name'
]
search_fields = [ search_fields = [
'serial', 'serial',

View File

@ -145,9 +145,6 @@ $.fn.inventreeTable = function(options) {
var filters = options.queryParams || options.filters || {}; var filters = options.queryParams || options.filters || {};
options.queryParams = function(params) { options.queryParams = function(params) {
for (var key in filters) {
params[key] = filters[key];
}
// Override the way that we ask the server to sort results // Override the way that we ask the server to sort results
// It seems bootstrap-table does not offer a "native" way to do this... // It seems bootstrap-table does not offer a "native" way to do this...
@ -170,6 +167,15 @@ $.fn.inventreeTable = function(options) {
} }
for (var key in filters) {
params[key] = filters[key];
}
// Add "order" back in (if it was originally specified by InvenTree)
// Annoyingly, "order" shadows some field names in InvenTree...
if ('order' in filters) {
params['order'] = filters['order'];
}
return params; return params;
} }