1
0
forked from erp-dev/erp

feat: salesitem can change/soft delete

This commit is contained in:
2026-04-06 14:49:02 +08:00
parent d7bc43082e
commit 9afbb73799
16 changed files with 1075 additions and 10 deletions

View File

@@ -8,6 +8,7 @@ from shipment.models import (
ExternalFinishedProduct,
SalesItem,
Shipment,
ShipmentStatus,
ShipmentDelivery,
ShipmentDeliveryStatus,
)
@@ -129,7 +130,7 @@ class ShipmentSerializer(serializers.ModelSerializer):
return None
def get_items_count(self, obj):
return obj.items.count()
return obj.items.filter(delete_at__isnull=True).count()
def get_cancelled_by_name(self, obj):
if obj.cancelled_by:
@@ -156,7 +157,7 @@ class ShipmentSerializer(serializers.ModelSerializer):
"""
# 优先使用 prefetch 的 related manager兜底为 none()
rel = getattr(obj, "items", None)
items = list(rel.all()) if rel is not None else []
items = list(rel.filter(delete_at__isnull=True)) if rel is not None else []
serializer_context = dict(self.context)
serializer_context.update(_build_nested_sales_item_context(items))
return SalesItemDetailSerializer(
@@ -361,6 +362,13 @@ class ShipmentUpdateSerializer(serializers.Serializer):
)
class ShipmentStatusUpdateSerializer(serializers.Serializer):
status = serializers.ChoiceField(
choices=ShipmentStatus.choices,
help_text="出货单状态1=草稿(未发布), 2=已发布, 3=已取消, 4=已驳回, 5=已审核)",
)
class SalesItemSerializer(serializers.Serializer):
"""
销售品序列化器(只读)
@@ -727,3 +735,34 @@ class SalesItemCreateSerializer(serializers.Serializer):
remark=validated_data.get("remark", ""),
position=validated_data.get("position", ""),
)
class SalesItemUpdateSerializer(serializers.Serializer):
"""
销售品更新序列化器。
当前仅开放数量、备注、货位的修改。
"""
quantity = serializers.CharField(
max_length=20,
required=False,
help_text="数量(可选,支持小数)",
)
remark = serializers.CharField(
max_length=200,
required=False,
allow_blank=True,
help_text="备注(可选)",
)
position = serializers.CharField(
max_length=200,
required=False,
allow_blank=True,
help_text="货位(可选)",
)
def validate(self, attrs):
if not attrs:
raise serializers.ValidationError("至少提供一个可修改字段")
return attrs