Упаковка

Для упрощения работы со складом можно использовать упаковку - структуру, описывающую формат хранения товаров.

Структуру можно указать для любого штучного товара, который логически может быть распакован в другой товар (товар-упаковка). Пример - пачка из 10 шоколадок. Пачка - самостоятельный товар, у неё есть SKU, стоимость и описание. С другой стороны, шоколадка - тоже товар, со стоимостью и SKU.

Для «пачки шоколадок» можно описать упаковку - её связь с содержимым.

Упаковка описывается следующими полями:

  • name: str - отображаемое название «контейнера» (пачка, бутылка, ящик)

  • item_unit - единица измерения

  • package_weight: Decimal - вес упаковки

  • content_weight: Decimal - вес содержимого (масса нетто)

  • content_amount: Decimal - количество содежимого (см. ниже)

В зависимости от типа item_unit, Decimal-поля имеют несколько разные смыслы

Штучное содержимое

Штучный товар игнорирует поля package_weight и content_weight, значимым является только поле content_amount.

Пример

Упаковка (10 шоколадок)

{
    "name": "Упаковка",
    "item_unit": "шт",
    "content_amount": 10
}

Весовое содержимое

Весовой товар учитывает все поля, связанные с весом - package_weight и content_weight. Поле content_amount игнорируется, т.к. логическое значение совпадает с полем content_weight.

Пример

Мешок картошки (5кг), вес мешка - 300г

{
    "name": "Мешок",
    "item_unit": "гр",
    "package_weight": 300,
    "content_weight": 5000
}

Объемное содержимое

Объемный товар учитывает значения всех полей, но обязательными являются только поля package_weight и content_amount. Если поле content_weight не передается, то его значение копируется из поля content_amount. В таком случае считается, что товар - жидкость с плотностью воды (1:1 к массе).

Пример

Сахарный сироп (1л, 80%, плотность 1,4 г/мл)

{
    "name": "Бутылка",
    "item_unit": "мл",
    "package_weight": 100,
    "content_weight": 1400,
    "content_amount": 1000
}