1
0
forked from erp-dev/erp

feat: auto complete stock change

This commit is contained in:
2025-11-10 09:01:25 +08:00
parent 37c2e7d723
commit b2078dfa46
82 changed files with 1071 additions and 1336 deletions

View File

@@ -2,62 +2,105 @@ from rest_framework import serializers
from basic_info import models as basic_models
class ProductCategorySerializer(serializers.ModelSerializer):
class BaseSerializer(serializers.ModelSerializer):
merchant = serializers.PrimaryKeyRelatedField(
queryset=basic_models.Merchant.objects.all(),
required=False # 创建时由视图层设置
)
def to_representation(self, instance):
try:
merchant = self.context['request'].user.employee.merchant
if instance.merchant != merchant:
# 数据保护手段
raise PermissionError("无权限访问该对象")
except (KeyError, AttributeError):
# TODO: log something?
raise PermissionError("无权限访问该对象")
result = super().to_representation(instance)
if self.context.get('expand_merchant', False):
result['merchant'] = {
'id': instance.merchant.id,
'name': instance.merchant.name
}
return result
class QuickInputSerializer(serializers.ModelSerializer):
class Meta:
model = basic_models.QuickInput
fields = ['name', 'value', 'group']
class ProductCategorySerializer(BaseSerializer):
class Meta:
model = basic_models.ProductCategory
fields = '__all__'
class ProductSerializer(serializers.ModelSerializer):
class ProductSerializer(BaseSerializer):
class Meta:
model = basic_models.Product
fields = '__all__'
depth = 1 # 展开外键关系
def to_representation(self, instance):
result = super().to_representation(instance)
result['category'] = {
'id': instance.category.id,
'name': instance.category.name
}
return result
class WareHouseSerializer(serializers.ModelSerializer):
class WareHouseSerializer(BaseSerializer):
class Meta:
model = basic_models.WareHouse
fields = '__all__'
class SupplierSerializer(serializers.ModelSerializer):
class SupplierSerializer(BaseSerializer):
class Meta:
model = basic_models.Supplier
fields = '__all__'
class EmployeeSerializer(serializers.ModelSerializer):
class EmployeeSerializer(BaseSerializer):
class Meta:
model = basic_models.Employee
fields = '__all__'
class CustomerSerializer(serializers.ModelSerializer):
class CustomerSerializer(BaseSerializer):
created_by = serializers.PrimaryKeyRelatedField(
queryset=basic_models.Employee.objects.all(),
required=False,
)
class Meta:
model = basic_models.Customer
fields = '__all__'
class VehicleTypeSerializer(serializers.ModelSerializer):
class VehicleTypeSerializer(BaseSerializer):
class Meta:
model = basic_models.VehicleType
fields = '__all__'
class BankAccountSerializer(serializers.ModelSerializer):
class BankAccountSerializer(BaseSerializer):
class Meta:
model = basic_models.BankAccount
fields = '__all__'
class DeviceInfoSerializer(serializers.ModelSerializer):
class DeviceInfoSerializer(BaseSerializer):
class Meta:
model = basic_models.DeviceInfo
fields = '__all__'
class VehicleTransportRecordSerializer(serializers.ModelSerializer):
class VehicleTransportRecordSerializer(BaseSerializer):
vehicle_type_name = serializers.CharField(source='vehicle_type.name', read_only=True)
class Meta: