Files

67 lines
2.3 KiB
Python

"""partner 序列化器(async 兼容)。"""
from rest_framework import serializers
from apps.core.serializers import AsyncModelSerializer
from .models import PriceLevel, Contact, Customer, Supplier
class PriceLevelSerializer(AsyncModelSerializer):
class Meta:
model = PriceLevel
fields = [
"id", "code", "name", "discount_rate", "sort_order",
"is_deleted", "created_at", "updated_at",
]
read_only_fields = ["id", "created_at", "updated_at"]
class ContactSerializer(AsyncModelSerializer):
customer_code = serializers.CharField(source="customer.code", read_only=True, default=None)
supplier_code = serializers.CharField(source="supplier.code", read_only=True, default=None)
class Meta:
model = Contact
fields = [
"id", "name", "phone", "email", "title", "is_primary",
"customer", "supplier", "customer_code", "supplier_code",
"is_deleted", "created_at", "updated_at",
]
read_only_fields = ["id", "created_at", "updated_at"]
class CustomerSerializer(AsyncModelSerializer):
price_level_code = serializers.CharField(source="price_level.code", read_only=True, default=None)
balance = serializers.SerializerMethodField()
class Meta:
model = Customer
fields = [
"id", "code", "name", "kind", "contact_name", "phone", "email",
"address", "tax_number", "bank_account",
"price_level_code", "credit_limit", "initial_receivable",
"is_active", "remark", "balance",
"is_deleted", "created_at", "updated_at",
]
read_only_fields = ["id", "created_at", "updated_at", "balance"]
def get_balance(self, obj):
# 阶段 2 接入应收模块后实算
return str(obj.initial_receivable)
class SupplierSerializer(AsyncModelSerializer):
balance = serializers.SerializerMethodField()
class Meta:
model = Supplier
fields = [
"id", "code", "name", "contact_name", "phone", "email",
"address", "tax_number", "bank_account",
"initial_payable", "is_active", "remark", "balance",
"is_deleted", "created_at", "updated_at",
]
read_only_fields = ["id", "created_at", "updated_at", "balance"]
def get_balance(self, obj):
return str(obj.initial_payable)