Загрузка приложения

IPromoDefinition

Физическое объявление TypeScript из стартового проекта Nuxt со связанными типами и комментариями к полям.

IPromoDefinition

Описание акции для покупателя.

app/interfaces/orionplace/cart/ICartData.ts
TypeScript
export interface IPromoDefinition {
  // ID типа акции.
  id: number;
  // Переводы названия акции.
  locale: Record<string, {
    // Необязательное поле name; может отсутствовать.
    name?: string;
  }>;
  // Для EPromoType.FIXED: суммы по ID валюты, число в transform_value. Для
  // EPromoType.PERCENTAGE: множитель оставшейся цены; 0.8 означает оплату 80%,
  // скидку 20%. Для EPromoType.FREE_SHIPPING выводите бесплатную доставку
  // вместо денежной скидки.
  promo_value: number | ICurrencyAmounts;
  // Тип расчёта акции.
  promo_type: EPromoType;
  // Товары, явно связанные с акцией, если переданы.
  products?: IProduct[];
  // Категории, связанные с акцией, если переданы.
  categories?: ICategoryDirectoryEntry[];
  // Продавцы, связанные с акцией, если переданы.
  sellers?: ISellerDirectoryEntry[];
  /**
   * Minimum order amount: the products the code covers must cost at least
   * this much together in one order (the whole cart when the promotion names
   * no products, categories or sellers). Present only when the promotion has
   * a minimum.
   */
  minimum_order_amount?: ICurrencyAmounts;
  /**
   * @deprecated Alias of `minimum_order_amount` with the same value; read it
   * only when `minimum_order_amount` is absent (older backends).
   */
  min_price?: ICurrencyAmounts;
  /**
   * Largest discount a percentage code gives on one order. Present only when
   * the promotion has a maximum discount.
   */
  maximum_discount?: ICurrencyAmounts;
  /** The code works only on the customer's first purchase in the store. */
  first_order_only?: boolean;
  // Правило сочетания со скидкой товара и его переведённое название.
  behaviour_with_product_discount: {
    // Значение поля int.
    int: EPromoProductDiscount;
    // Значение поля text.
    text: string;
  };
  // Форматированная дата начала акции.
  date_start: IApiDateTime | null;
  // Форматированная дата окончания акции.
  date_finish: IApiDateTime | null;
  // Активен ли тип акции. Это не доказывает применимость конкретного кода.
  promo_type_is_active: boolean;
}