|
|
from rest_framework import serializers
|
|
|
from .models import Product, PriceType, PriceList, Discount, PriceChangeHistory, PriceTag, DiscountHistory, PriceListWithDiscount
|
|
|
|
|
|
# Сериализатор для модели Product
|
|
|
class ProductSerializer(serializers.ModelSerializer):
|
|
|
class Meta:
|
|
|
model = Product
|
|
|
fields = ['id', 'name', 'manufacturer_name', 'manufacturer_country', 'manufacturer_code', 'dimensions', 'unit_of_measure', 'shelf_life_days', 'barcode']
|
|
|
ref_name = 'PricingProductSerializer' # Unique ref_name for pricing
|
|
|
|
|
|
|
|
|
# Сериализатор для модели PriceType
|
|
|
class PriceTypeSerializer(serializers.ModelSerializer):
|
|
|
class Meta:
|
|
|
model = PriceType
|
|
|
fields = ['id', 'name']
|
|
|
ref_name = 'PricingPriceTypeSerializer' # Unique ref_name for pricing
|
|
|
|
|
|
|
|
|
# Сериализатор для модели PriceList
|
|
|
class PriceListSerializer(serializers.ModelSerializer):
|
|
|
product = ProductSerializer() # Вложенный сериализатор для связи с продуктом
|
|
|
price_type = PriceTypeSerializer() # Вложенный сериализатор для связи с типом цены
|
|
|
|
|
|
class Meta:
|
|
|
model = PriceList
|
|
|
fields = ['id', 'product', 'price_type', 'entry_price', 'final_price', 'date_effective', 'constraint_percent_limit', 'constraint_price_change']
|
|
|
ref_name = 'PricingPriceListSerializer' # Unique ref_name for pricing
|
|
|
|
|
|
|
|
|
# Сериализатор для модели Discount
|
|
|
class DiscountSerializer(serializers.ModelSerializer):
|
|
|
product = ProductSerializer() # Вложенный сериализатор для связи с продуктом
|
|
|
|
|
|
class Meta:
|
|
|
model = Discount
|
|
|
fields = ['id', 'product', 'discount_percentage', 'start_date', 'end_date', 'description']
|
|
|
ref_name = 'PricingDiscountSerializer' # Unique ref_name for pricing
|
|
|
|
|
|
|
|
|
# Сериализатор для модели PriceChangeHistory
|
|
|
class PriceChangeHistorySerializer(serializers.ModelSerializer):
|
|
|
product = ProductSerializer() # Вложенный сериализатор для связи с продуктом
|
|
|
|
|
|
class Meta:
|
|
|
model = PriceChangeHistory
|
|
|
fields = ['id', 'product', 'old_price', 'new_price', 'change_date', 'reason']
|
|
|
ref_name = 'PricingPriceChangeHistorySerializer' # Unique ref_name for pricing
|
|
|
|
|
|
|
|
|
# Сериализатор для модели PriceTag
|
|
|
class PriceTagSerializer(serializers.ModelSerializer):
|
|
|
product = ProductSerializer() # Вложенный сериализатор для связи с продуктом
|
|
|
price_list = PriceListSerializer() # Вложенный сериализатор для связи с прайс-листом
|
|
|
|
|
|
class Meta:
|
|
|
model = PriceTag
|
|
|
fields = ['id', 'product', 'price_list', 'tag_image', 'price_effective_date']
|
|
|
ref_name = 'PricingPriceTagSerializer' # Unique ref_name for pricing
|
|
|
|
|
|
|
|
|
# Сериализатор для модели DiscountHistory
|
|
|
class DiscountHistorySerializer(serializers.ModelSerializer):
|
|
|
discount = DiscountSerializer() # Вложенный сериализатор для связи с акцией
|
|
|
|
|
|
class Meta:
|
|
|
model = DiscountHistory
|
|
|
fields = ['id', 'discount', 'old_discount', 'new_discount', 'change_date', 'reason']
|
|
|
ref_name = 'PricingDiscountHistorySerializer' # Unique ref_name for pricing
|
|
|
|
|
|
|
|
|
# Сериализатор для модели PriceListWithDiscount
|
|
|
class PriceListWithDiscountSerializer(serializers.ModelSerializer):
|
|
|
price_list = PriceListSerializer() # Вложенный сериализатор для связи с прайс-листом
|
|
|
discount = DiscountSerializer() # Вложенный сериализатор для связи с скидкой
|
|
|
|
|
|
class Meta:
|
|
|
model = PriceListWithDiscount
|
|
|
fields = ['id', 'price_list', 'discount', 'final_price_after_discount']
|
|
|
ref_name = 'PricingPriceListWithDiscountSerializer' # Unique ref_name for pricing
|