67 lines
2.3 KiB
Python
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)
|