mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-30 12:36:45 +00:00
Add list and detail API endpoints for SalesOrderShipment
- Filter by order - Filter by "shipped" status - SalesOrderShipment serializer includes information on items allocated to that shipment
This commit is contained in:
parent
9fcc55d71d
commit
e9e4d13541
@ -26,10 +26,11 @@ from .models import PurchaseOrder, PurchaseOrderLineItem
|
|||||||
from .models import PurchaseOrderAttachment
|
from .models import PurchaseOrderAttachment
|
||||||
from .serializers import POSerializer, POLineItemSerializer, POAttachmentSerializer
|
from .serializers import POSerializer, POLineItemSerializer, POAttachmentSerializer
|
||||||
|
|
||||||
from .models import SalesOrder, SalesOrderLineItem, SalesOrderAllocation
|
from .models import SalesOrder, SalesOrderLineItem, SalesOrderShipment, SalesOrderAllocation
|
||||||
from .models import SalesOrderAttachment
|
from .models import SalesOrderAttachment
|
||||||
|
|
||||||
from .serializers import SalesOrderSerializer, SOLineItemSerializer, SOAttachmentSerializer
|
from .serializers import SalesOrderSerializer, SOLineItemSerializer, SOAttachmentSerializer
|
||||||
from .serializers import SalesOrderAllocationSerializer
|
from .serializers import SalesOrderShipmentSerializer, SalesOrderAllocationSerializer
|
||||||
from .serializers import POReceiveSerializer
|
from .serializers import POReceiveSerializer
|
||||||
|
|
||||||
|
|
||||||
@ -700,6 +701,54 @@ class SOAllocationList(generics.ListCreateAPIView):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class SOShipmentFilter(rest_filters.FilterSet):
|
||||||
|
"""
|
||||||
|
Custom filterset for the SOShipmentList endpoint
|
||||||
|
"""
|
||||||
|
|
||||||
|
shipped = rest_filters.BooleanFilter(label='shipped', method='filter_shipped')
|
||||||
|
|
||||||
|
def filter_shipped(self, queryset, name, value):
|
||||||
|
|
||||||
|
value = str2bool(value)
|
||||||
|
|
||||||
|
if value:
|
||||||
|
queryset = queryset.exclude(shipment_date=None)
|
||||||
|
else:
|
||||||
|
queryset = queryset.filter(shipment_date=None)
|
||||||
|
|
||||||
|
return queryset
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = SalesOrderShipment
|
||||||
|
fields = [
|
||||||
|
'order',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class SOShipmentList(generics.ListCreateAPIView):
|
||||||
|
"""
|
||||||
|
API list endpoint for SalesOrderShipment model
|
||||||
|
"""
|
||||||
|
|
||||||
|
queryset = SalesOrderShipment.objects.all()
|
||||||
|
serializer_class = SalesOrderShipmentSerializer
|
||||||
|
filterset_class = SOShipmentFilter
|
||||||
|
|
||||||
|
filter_backends = [
|
||||||
|
rest_filters.DjangoFilterBackend,
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class SOShipmentDetail(generics.RetrieveUpdateAPIView):
|
||||||
|
"""
|
||||||
|
API detail endpooint for SalesOrderShipment model
|
||||||
|
"""
|
||||||
|
|
||||||
|
queryset = SalesOrderShipment.objects.all()
|
||||||
|
serializer_class = SalesOrderShipmentSerializer
|
||||||
|
|
||||||
|
|
||||||
class POAttachmentList(generics.ListCreateAPIView, AttachmentMixin):
|
class POAttachmentList(generics.ListCreateAPIView, AttachmentMixin):
|
||||||
"""
|
"""
|
||||||
API endpoint for listing (and creating) a PurchaseOrderAttachment (file upload)
|
API endpoint for listing (and creating) a PurchaseOrderAttachment (file upload)
|
||||||
@ -760,6 +809,13 @@ order_api_urls = [
|
|||||||
url(r'^.*$', SOAttachmentList.as_view(), name='api-so-attachment-list'),
|
url(r'^.*$', SOAttachmentList.as_view(), name='api-so-attachment-list'),
|
||||||
])),
|
])),
|
||||||
|
|
||||||
|
url(r'^shipment/', include([
|
||||||
|
url(r'^(?P<pk>\d)+/', include([
|
||||||
|
url(r'^.*$', SOShipmentDetail.as_view(), name='api-so-shipment-detail'),
|
||||||
|
])),
|
||||||
|
url(r'^.*$', SOShipmentList.as_view(), name='api-so-shipment-list'),
|
||||||
|
])),
|
||||||
|
|
||||||
url(r'^(?P<pk>\d+)/$', SODetail.as_view(), name='api-so-detail'),
|
url(r'^(?P<pk>\d+)/$', SODetail.as_view(), name='api-so-detail'),
|
||||||
url(r'^.*$', SOList.as_view(), name='api-so-list'),
|
url(r'^.*$', SOList.as_view(), name='api-so-list'),
|
||||||
])),
|
])),
|
||||||
|
@ -14,6 +14,6 @@ class Migration(migrations.Migration):
|
|||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name='salesorderallocation',
|
model_name='salesorderallocation',
|
||||||
name='shipment',
|
name='shipment',
|
||||||
field=models.ForeignKey(help_text='Sales order shipment reference', on_delete=django.db.models.deletion.CASCADE, to='order.salesordershipment', verbose_name='Shipment'),
|
field=models.ForeignKey(help_text='Sales order shipment reference', on_delete=django.db.models.deletion.CASCADE, related_name='allocations', to='order.salesordershipment', verbose_name='Shipment'),
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
@ -1039,6 +1039,7 @@ class SalesOrderAllocation(models.Model):
|
|||||||
shipment = models.ForeignKey(
|
shipment = models.ForeignKey(
|
||||||
SalesOrderShipment,
|
SalesOrderShipment,
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
|
related_name='allocations',
|
||||||
verbose_name=_('Shipment'),
|
verbose_name=_('Shipment'),
|
||||||
help_text=_('Sales order shipment reference'),
|
help_text=_('Sales order shipment reference'),
|
||||||
)
|
)
|
||||||
|
@ -34,7 +34,7 @@ from stock.serializers import LocationBriefSerializer, StockItemSerializer, Loca
|
|||||||
from .models import PurchaseOrder, PurchaseOrderLineItem
|
from .models import PurchaseOrder, PurchaseOrderLineItem
|
||||||
from .models import PurchaseOrderAttachment, SalesOrderAttachment
|
from .models import PurchaseOrderAttachment, SalesOrderAttachment
|
||||||
from .models import SalesOrder, SalesOrderLineItem
|
from .models import SalesOrder, SalesOrderLineItem
|
||||||
from .models import SalesOrderAllocation
|
from .models import SalesOrderShipment, SalesOrderAllocation
|
||||||
|
|
||||||
from common.settings import currency_code_mappings
|
from common.settings import currency_code_mappings
|
||||||
|
|
||||||
@ -590,6 +590,27 @@ class SOLineItemSerializer(InvenTreeModelSerializer):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class SalesOrderShipmentSerializer(InvenTreeModelSerializer):
|
||||||
|
"""
|
||||||
|
Serializer for the SalesOrderShipment class
|
||||||
|
"""
|
||||||
|
|
||||||
|
allocations = SalesOrderAllocationSerializer(many=True, read_only=True, location_detail=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = SalesOrderShipment
|
||||||
|
|
||||||
|
fields = [
|
||||||
|
'pk',
|
||||||
|
'order',
|
||||||
|
'allocations',
|
||||||
|
'shipment_date',
|
||||||
|
'checked_by',
|
||||||
|
'reference',
|
||||||
|
'notes',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class SOAttachmentSerializer(InvenTreeAttachmentSerializer):
|
class SOAttachmentSerializer(InvenTreeAttachmentSerializer):
|
||||||
"""
|
"""
|
||||||
Serializers for the SalesOrderAttachment model
|
Serializers for the SalesOrderAttachment model
|
||||||
|
Loading…
x
Reference in New Issue
Block a user