Наборы товаров в Drupal Commerce: остатки и списание компонентов

Логика комплектов в интернет-магазине: доступность по компонентам, общая потребность корзины и складские операции при заказе.

О проекте
КОМПОНЕНТЫ → НАБОР
Один комплект.
Общие остатки компонентов.
01КомпонентыСостав · количество компонентов
02Общая потребностьСуммарная потребность корзины
03Доступный наборПроверка · списание · возврат

Схема решения. Без данных клиента.

Платформа
Drupal 11 + Commerce
Моя работа
Архитектура и разработка
Формат
Заказная разработка
Статус
Ежедневная эксплуатация
01 / Задача

Почему набору недостаточно отдельного остатка

Компонент может продаваться отдельно и одновременно входить в несколько комплектов. Независимый остаток набора быстро перестанет отражать реальную доступность составляющих.

Технологии этого решения

Собственная разработка внутри платформы магазина.

Drupal
Drupal

Drupal 11: данные и интерфейсы

Drupal Commerce
Drupal Commerce

Каталог, заказы и процессы магазина

PHP
PHP

Сервисы и бизнес-логика

02 / Решение

Как считается доступность комплекта

Каждый набор описывается компонентами и их количеством. Доступное число наборов ограничено компонентом, которого хватает на меньшее число полных комплектов.

Для покупателя комплект остаётся одной понятной позицией каталога. Внутри системы у него есть состав: какие вариации входят в набор и сколько единиц каждой необходимо для одной продажи.

03 / Решение

Общий спрос корзины

Условный набор содержит две единицы A и одну B. Если A осталось 10, а B — 3, доступно три набора. Но если в корзине также пять отдельных A, проверяется общая потребность: на три набора и отдельные позиции нужно 11 единиц A, а доступно 10.

Если ограничивающий компонент заканчивается раньше остальных, именно он определяет доступное количество комплектов. При изменении его остатка доступность набора должна рассчитываться по актуальным данным компонентов.

Три отдельных компонента объединяются в один комплект
Доступность комплекта зависит от остатков его компонентов.
04 / Решение

Проверка и складские операции

При оформлении заказа проверяется суммарная потребность в компонентах. Для предусмотренных событий заказа реализованы списание и возврат остатков составляющих; учёт связан с самим жизненным циклом заказа.

Проверка всей корзины важна перед подтверждением: независимая проверка каждой строки могла бы дважды учесть один и тот же остаток. Общий расчёт позволяет обнаружить нехватку компонента в суммарном заказе.

05 / Решение

Остатки для других процессов

Расчёт доступности компонентов используется и в связанных складских сценариях, включая работу с маркетплейсом. Вложенные комплекты не заявляются как неограниченная рекурсивная структура.

06 / Результат

Результат для магазина

Комплекты рассматриваются как реальный состав товаров, а не просто визуальное объединение карточек. Это даёт основу для согласованной проверки корзины и складского учёта.

Подробнее об услугах: разработка интернет-магазинов и разработка систем на Drupal.

07 / Вопросы

Частые вопросы

Как считается количество доступных наборов?

По каждому компоненту вычисляется число полных комплектов; итог ограничивается наименьшим из этих значений.

Что если товар продаётся отдельно и входит в набор?

Потребность по нему суммируется для всех соответствующих строк заказа.

Как обрабатывается отмена заказа с комплектом?

Для предусмотренного события отмены реализован возврат ранее списанных компонентов.

Можно ли связать доступность комплектов с маркетплейсом?

Да, связанный расчёт остатков может учитывать доступность компонентов набора.

Следующий шаг / Ваш проект

Задачи бизнеса.
Понятные решения.

Расскажите, как устроен ваш процесс и что в нём нужно изменить. Обсудим задачу и подход к реализации.

Контакты

Если у вас есть вопросы или предложения, напишите мне на почту или в мессенджеры. Я всегда на связи и готов помочь вам!

Card

Обычно отвечаю в течение нескольких часов. Если срочно – пишите в Telegram!