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 models as business_models
|
||||||
from business import pre_order_services
|
from business import pre_order_services
|
||||||
from business import allocation_services
|
from business import allocation_services
|
||||||
|
from stock import models as stock_models
|
||||||
|
|
||||||
|
|
||||||
class AllocationRecordSerializer(serializers.ModelSerializer):
|
class AllocationRecordSerializer(serializers.ModelSerializer):
|
||||||
stock_ids = serializers.SerializerMethodField(read_only=True)
|
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)
|
scanned_by_name = serializers.CharField(source='scanned_by.name', read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -22,6 +24,7 @@ class AllocationRecordSerializer(serializers.ModelSerializer):
|
|||||||
'id',
|
'id',
|
||||||
'pre_sales_order_item',
|
'pre_sales_order_item',
|
||||||
'stock_ids',
|
'stock_ids',
|
||||||
|
'stock_details',
|
||||||
'quantity',
|
'quantity',
|
||||||
'unit',
|
'unit',
|
||||||
'status',
|
'status',
|
||||||
@@ -43,6 +46,33 @@ class AllocationRecordSerializer(serializers.ModelSerializer):
|
|||||||
def get_stock_ids(self, obj: business_models.AllocationRecord):
|
def get_stock_ids(self, obj: business_models.AllocationRecord):
|
||||||
return obj.stock_id_list
|
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):
|
class PreSalesOrderItemSerializer(serializers.ModelSerializer):
|
||||||
allocated_quantity = serializers.SerializerMethodField(read_only=True)
|
allocated_quantity = serializers.SerializerMethodField(read_only=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user