"""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)