mirror of
https://github.com/inventree/InvenTree.git
synced 2025-05-04 14:28:48 +00:00
Adds exporter and download button for PurchaseOrder table
This commit is contained in:
parent
465e69c254
commit
1b1f7634b7
@ -5,8 +5,9 @@ from django.contrib import admin
|
|||||||
|
|
||||||
from import_export.admin import ImportExportModelAdmin
|
from import_export.admin import ImportExportModelAdmin
|
||||||
|
|
||||||
from import_export.resources import ModelResource
|
|
||||||
from import_export.fields import Field
|
from import_export.fields import Field
|
||||||
|
from import_export.resources import ModelResource
|
||||||
|
import import_export.widgets as widgets
|
||||||
|
|
||||||
from .models import PurchaseOrder, PurchaseOrderLineItem, PurchaseOrderExtraLine
|
from .models import PurchaseOrder, PurchaseOrderLineItem, PurchaseOrderExtraLine
|
||||||
from .models import SalesOrder, SalesOrderLineItem, SalesOrderExtraLine
|
from .models import SalesOrder, SalesOrderLineItem, SalesOrderExtraLine
|
||||||
@ -92,6 +93,23 @@ class SalesOrderAdmin(ImportExportModelAdmin):
|
|||||||
autocomplete_fields = ('customer',)
|
autocomplete_fields = ('customer',)
|
||||||
|
|
||||||
|
|
||||||
|
class PurchaseOrderResource(ModelResource):
|
||||||
|
"""
|
||||||
|
Class for managing import / export of PurchaseOrder data
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Add number of line items
|
||||||
|
line_items = Field(attribute='line_count', widget=widgets.IntegerWidget(), readonly=True)
|
||||||
|
|
||||||
|
# Is this order overdue?
|
||||||
|
overdue = Field(attribute='is_overdue', widget=widgets.BooleanWidget(), readonly=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = PurchaseOrder
|
||||||
|
skip_unchanged = True
|
||||||
|
clean_model_instances = True
|
||||||
|
|
||||||
|
|
||||||
class PurchaseOrderLineItemResource(ModelResource):
|
class PurchaseOrderLineItemResource(ModelResource):
|
||||||
""" Class for managing import / export of PurchaseOrderLineItem data """
|
""" Class for managing import / export of PurchaseOrderLineItem data """
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ from InvenTree.helpers import str2bool, DownloadFile
|
|||||||
from InvenTree.api import AttachmentMixin, APIDownloadMixin
|
from InvenTree.api import AttachmentMixin, APIDownloadMixin
|
||||||
from InvenTree.status_codes import PurchaseOrderStatus, SalesOrderStatus
|
from InvenTree.status_codes import PurchaseOrderStatus, SalesOrderStatus
|
||||||
|
|
||||||
from order.admin import PurchaseOrderLineItemResource
|
from order.admin import PurchaseOrderResource, PurchaseOrderLineItemResource
|
||||||
import order.models as models
|
import order.models as models
|
||||||
import order.serializers as serializers
|
import order.serializers as serializers
|
||||||
from part.models import Part
|
from part.models import Part
|
||||||
@ -110,7 +110,7 @@ class PurchaseOrderFilter(rest_filters.FilterSet):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class PurchaseOrderList(generics.ListCreateAPIView):
|
class PurchaseOrderList(APIDownloadMixin, generics.ListCreateAPIView):
|
||||||
""" API endpoint for accessing a list of PurchaseOrder objects
|
""" API endpoint for accessing a list of PurchaseOrder objects
|
||||||
|
|
||||||
- GET: Return list of PurchaseOrder objects (with filters)
|
- GET: Return list of PurchaseOrder objects (with filters)
|
||||||
@ -160,6 +160,15 @@ class PurchaseOrderList(generics.ListCreateAPIView):
|
|||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
def download_queryset(self, queryset, export_format):
|
||||||
|
dataset = PurchaseOrderResource().export(queryset=queryset)
|
||||||
|
|
||||||
|
filedata = dataset.export(export_format)
|
||||||
|
|
||||||
|
filename = f"InvenTree_PurchaseOrders.{export_format}"
|
||||||
|
|
||||||
|
return DownloadFile(filedata, filename)
|
||||||
|
|
||||||
def filter_queryset(self, queryset):
|
def filter_queryset(self, queryset):
|
||||||
|
|
||||||
# Perform basic filtering
|
# Perform basic filtering
|
||||||
|
@ -4,8 +4,8 @@ from __future__ import unicode_literals
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from import_export.admin import ImportExportModelAdmin
|
from import_export.admin import ImportExportModelAdmin
|
||||||
from import_export.resources import ModelResource
|
|
||||||
from import_export.fields import Field
|
from import_export.fields import Field
|
||||||
|
from import_export.resources import ModelResource
|
||||||
import import_export.widgets as widgets
|
import import_export.widgets as widgets
|
||||||
|
|
||||||
from company.models import SupplierPart
|
from company.models import SupplierPart
|
||||||
|
@ -1394,7 +1394,9 @@ function loadPurchaseOrderTable(table, options) {
|
|||||||
filters[key] = options.params[key];
|
filters[key] = options.params[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
setupFilterList('purchaseorder', $(table));
|
var target = '#filter-list-purchaseorder';
|
||||||
|
|
||||||
|
setupFilterList('purchaseorder', $(table), target, {download: true});
|
||||||
|
|
||||||
$(table).inventreeTable({
|
$(table).inventreeTable({
|
||||||
url: '{% url "api-po-list" %}',
|
url: '{% url "api-po-list" %}',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user