Рубрики
Software

product.product и product.template в Odoo

В чем разница между product.product и product.template? Зачем в Odoo две модели для товаров? Все просто:

  • product.template — шаблон товара. Содержит основную информацию о товаре которая будет общей для всех вариантов. Имеет минимум 1 вариацию.
  • product.product — это модель для хранения вариативных товаров. Является «ребенком» product.template, может содержать отличающиеся параметры и атрибуты.

Вариативные товары в Odoo

В Odoo реализованы вариативные товары (product variants). По умолчанию они выключены, но их можно включить в товарах.

product.product и product.template в Odoo
Включение вариативных товаров в Sales / Settings

Вариативные товары рекомендуется использовать, когда у нас есть товар, который отличается отдельным атрибутом (размер одежды например).

Особенности вариативных товаров:

  • Цена: вариативный товар может иметь особые правила для ценообразования.
  • Наличие: остатки на складах учитываются для вариативных товаров, в то время как в product template будет показана сумма всех вариантов.
  • Изображение товара: каждая вариация имеет свое изображение.
  • Штрих-код (barcode): каждый вариативный товар может иметь свой штрих-код / ​​артикул.

Большинство параметров product.product принадлежат product.template, так что если вы их обновите в шаблоне товара, во всех вариациях они тоже обновятся. Подробнее о вариациях можно почитать в справке.

Чтобы создать вариативный товар, вам необходимо добавить атрибуты к товару (product.template).Это автоматически создаст варианты товара.

Где используется product.product в Odoo?

Для примера возьмем ecommerce модуль для Odoo. Категории товаров используют product.template, в то время как при оформлении заказа используется уже product.product.

Модель product.product используется в:

  • sale
  • purchase
  • stock
  • inventory
  • pos и других модулях.

Когда вы создаете SO или PO, на самом деле вы используете вариант продукта, а не его шаблон.

Если вы не используете вариативные товары (варианты), модели и таблицы product.product и product.template будут почти одинаковые.