You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
4.0 KiB

2 days ago
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