forked from erp-dev/erp
feat: added some filed to shipment serializers
This commit is contained in:
@@ -101,6 +101,8 @@ class AgentSalesItemSerializer(serializers.ModelSerializer):
|
||||
class AgentShipmentListSerializer(serializers.ModelSerializer):
|
||||
customer_name = serializers.CharField(source="customer.name", read_only=True)
|
||||
status_display = serializers.CharField(source="get_status_display", read_only=True)
|
||||
fabric = serializers.SerializerMethodField()
|
||||
order_description = serializers.SerializerMethodField()
|
||||
delivery_id = serializers.IntegerField(read_only=True, allow_null=True)
|
||||
sales_items = serializers.SerializerMethodField()
|
||||
|
||||
@@ -111,6 +113,8 @@ class AgentShipmentListSerializer(serializers.ModelSerializer):
|
||||
"merchant_id",
|
||||
"customer",
|
||||
"customer_name",
|
||||
"fabric",
|
||||
"order_description",
|
||||
"shipment_date",
|
||||
"address",
|
||||
"contact_name",
|
||||
@@ -128,6 +132,46 @@ class AgentShipmentListSerializer(serializers.ModelSerializer):
|
||||
"updated_at",
|
||||
]
|
||||
|
||||
def get_fabric(self, obj):
|
||||
rel = getattr(obj, "items", None)
|
||||
if rel is None:
|
||||
return None
|
||||
|
||||
first_item = next((item for item in obj.items.all() if item.delete_at is None), None)
|
||||
if first_item is None or not first_item.printing_job_id:
|
||||
return None
|
||||
|
||||
from printing.models import PrintingJob
|
||||
|
||||
printing_job = (
|
||||
PrintingJob.objects.filter(id=first_item.printing_job_id)
|
||||
.select_related("printing_order")
|
||||
.first()
|
||||
)
|
||||
if printing_job is None or printing_job.printing_order is None:
|
||||
return None
|
||||
return printing_job.printing_order.fabric
|
||||
|
||||
def get_order_description(self, obj):
|
||||
rel = getattr(obj, "items", None)
|
||||
if rel is None:
|
||||
return None
|
||||
|
||||
first_item = next((item for item in obj.items.all() if item.delete_at is None), None)
|
||||
if first_item is None or not first_item.printing_job_id:
|
||||
return None
|
||||
|
||||
from printing.models import PrintingJob
|
||||
|
||||
printing_job = (
|
||||
PrintingJob.objects.filter(id=first_item.printing_job_id)
|
||||
.select_related("printing_order")
|
||||
.first()
|
||||
)
|
||||
if printing_job is None or printing_job.printing_order is None:
|
||||
return None
|
||||
return printing_job.printing_order.description
|
||||
|
||||
def get_sales_items(self, obj):
|
||||
items = [i for i in obj.items.all() if i.delete_at is None]
|
||||
return AgentSalesItemSerializer(items, many=True, context=self.context).data
|
||||
|
||||
Reference in New Issue
Block a user