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