forked from erp-dev/erp
feat: added StockChangeDetailShortcutSerializer
This commit is contained in:
@@ -10,10 +10,12 @@ from api_v1.views.stock_change_views.mixins import StockChangeViewMixin
|
||||
from business import models as business_models
|
||||
from business import pre_order_services
|
||||
from business import allocation_services
|
||||
from stock import models as stock_models
|
||||
|
||||
|
||||
class AllocationRecordSerializer(serializers.ModelSerializer):
|
||||
stock_ids = serializers.SerializerMethodField(read_only=True)
|
||||
stock_details = serializers.SerializerMethodField(read_only=True)
|
||||
scanned_by_name = serializers.CharField(source='scanned_by.name', read_only=True)
|
||||
|
||||
class Meta:
|
||||
@@ -22,6 +24,7 @@ class AllocationRecordSerializer(serializers.ModelSerializer):
|
||||
'id',
|
||||
'pre_sales_order_item',
|
||||
'stock_ids',
|
||||
'stock_details',
|
||||
'quantity',
|
||||
'unit',
|
||||
'status',
|
||||
@@ -43,6 +46,33 @@ class AllocationRecordSerializer(serializers.ModelSerializer):
|
||||
def get_stock_ids(self, obj: business_models.AllocationRecord):
|
||||
return obj.stock_id_list
|
||||
|
||||
def get_stock_details(self, obj: business_models.AllocationRecord):
|
||||
stock_ids = obj.stock_id_list
|
||||
if not stock_ids:
|
||||
return []
|
||||
details_by_id = stock_models.StockChangeDetail.objects.select_related(
|
||||
'product'
|
||||
).in_bulk(stock_ids)
|
||||
return [
|
||||
StockChangeDetailShortcutSerializer(details_by_id[stock_id]).data
|
||||
for stock_id in stock_ids
|
||||
if stock_id in details_by_id
|
||||
]
|
||||
|
||||
|
||||
class StockChangeDetailShortcutSerializer(serializers.ModelSerializer):
|
||||
product_id = serializers.IntegerField(source='product_id', read_only=True)
|
||||
product_name = serializers.CharField(source='product.name', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = stock_models.StockChangeDetail
|
||||
fields = [
|
||||
'product_id',
|
||||
'product_name',
|
||||
'quantity',
|
||||
]
|
||||
read_only_fields = fields
|
||||
|
||||
|
||||
class PreSalesOrderItemSerializer(serializers.ModelSerializer):
|
||||
allocated_quantity = serializers.SerializerMethodField(read_only=True)
|
||||
|
||||
Reference in New Issue
Block a user