1
0
forked from erp-dev/erp

feat: backfill external order image upgrade to beat schedule by 1 hour

This commit is contained in:
2026-03-31 18:10:24 +08:00
parent aff10b8925
commit 72840b7277
12 changed files with 1085 additions and 108 deletions

View File

@@ -249,6 +249,7 @@ class SalesItemSerializer(serializers.Serializer):
remark = serializers.CharField(read_only=True)
printing_job_id = serializers.IntegerField(read_only=True)
printing_order_id = serializers.SerializerMethodField()
external_order_id = serializers.SerializerMethodField()
customer_id = serializers.IntegerField(read_only=True)
customer_name = serializers.SerializerMethodField()
shipment_id = serializers.IntegerField(
@@ -276,6 +277,16 @@ class SalesItemSerializer(serializers.Serializer):
return printing_job.printing_order_id
return None
def get_external_order_id(self, obj):
external_order_id_map = self.context.get("external_order_id_map", {})
if obj.printing_job_id in external_order_id_map:
return external_order_id_map[obj.printing_job_id]
printing_job = obj.get_printing_job()
if printing_job and getattr(printing_job.printing_order, "external_order_id", None):
return printing_job.printing_order.external_order_id
return None
def get_customer_name(self, obj):
customer_name_map = self.context.get("customer_name_map", {})
if obj.customer_id in customer_name_map:
@@ -293,6 +304,36 @@ class SalesItemSerializer(serializers.Serializer):
return None
class SalesItemDetailSerializer(SalesItemSerializer):
"""
销售品详情序列化器。
在列表字段基础上补充关联印染任务的产品图片。
"""
product_image_url = serializers.SerializerMethodField()
def get_product_image_url(self, obj):
product_image_map = self.context.get("product_image_map", {})
if obj.printing_job_id in product_image_map:
return product_image_map[obj.printing_job_id]
printing_job = obj.get_printing_job()
if not printing_job or not getattr(printing_job, "product", None):
return None
primary_url = printing_job.product.get_primary_image_url()
if primary_url:
return primary_url
if printing_job.product.image:
request = self.context.get("request")
if request:
return request.build_absolute_uri(printing_job.product.image.url)
return printing_job.product.image.url
return None
class ShipmentSalesItemCustomerSerializer(serializers.Serializer):
"""
由未出货销售品反推的客户摘要序列化器。