1
0
forked from erp-dev/erp

feat: running on docker fully, and added rabbitmq/worker container

This commit is contained in:
2025-11-25 15:56:13 +08:00
parent cd6a2370fc
commit d90917e764
34 changed files with 2474 additions and 74 deletions

View File

@@ -12,8 +12,15 @@ class ProductStockChangeSerializer(serializers.Serializer):
quantity = serializers.ListField(
child=serializers.DecimalField(max_digits=10, decimal_places=2, min_value=Decimal('0.01')),
min_length=1,
required=False,
help_text="数量列表,每个数量对应一条明细记录"
)
consume_with = serializers.ListField(
child=serializers.IntegerField(min_value=1),
required=False,
allow_empty=False,
help_text="严进严出模式出库指定的入库明细ID列表"
)
def validate_product(self, value: int) -> int:
"""验证产品是否存在"""
@@ -23,6 +30,11 @@ class ProductStockChangeSerializer(serializers.Serializer):
raise serializers.ValidationError(f"产品ID {value} 不存在")
return value
def validate_consume_with(self, value: List[int]) -> List[int]:
if len(value) != len(set(value)):
raise serializers.ValidationError("consume_with 中存在重复的入库明细ID")
return value
class CreateStockChangeSerializer(serializers.Serializer):
"""创建库存变动记录序列化器"""
@@ -115,12 +127,14 @@ class StockChangeDetailResponseSerializer(serializers.ModelSerializer):
"""库存变动明细响应序列化器"""
product_name = serializers.CharField(source='product.name', read_only=True)
unit_display = serializers.CharField(source='get_unit_display', read_only=True)
consume_with_id = serializers.IntegerField(read_only=True)
class Meta:
model = stock_models.StockChangeDetail
fields = [
'id', 'product', 'product_name', 'quantity',
'unit', 'unit_display', 'stock_change_record'
'unit', 'unit_display', 'stock_change_record',
'is_consumed', 'consume_with_id',
]