Как спроектировать онлайн-склад?

Я делаю систему учета для фирмы. Сейчас занимаюсь складом, продажами, закупками и расходами про складу. Ищу лучшее решение для подсчета актуального количества товара. Система связана с интернет-магазином.

Предположим, что фирма занимается продажей маек и иногда сама на них печатает картинки. Помимо маек на складе есть расходники фирмы, которые иногда продаются - например, картриджи.

В системе ведется учет всех закупок, продаж, перемещений и прочих действий со складом. В системе есть несколько "складов", то есть местоположений товара.

  1. У товара есть обязательные параметры, которые нужно выбрать при продаже или закупке.
    У маек это размер и цвет. У картриджей есть параметр "кол-во краски" (может быть "пустой" или "полный"). Даже пустые надо учитывать, а полные можно использовать или продавать.
  2. Набор параметров зависит от категории, в которой находится товар. В данном примере, категорий только 2 - майки и картриджи.
  3. Товар может иметь ограниченный набор цветов. Например, майка "Металлика №3" бывает только черного цвета и нельзя ни продать, ни случайно закупить таких маек, скажем, в розовом варианте.
  4. Помимо этого у товара (наименования, если быть точнее) есть набор свойств, по которым их находит пользователь через фильтр на сайте магазина: бренд, тип печати.


Действия:
  1. Продажи, закупки, перемещения между складами
  2. Заправка картриджей - был "пустой", стал "полный"


Что нужно считать:
  1. Нужно знать, сколько на данный момент маек "Hello Kitty" зеленого цвета размера XXL на складе #1.
  2. Нужно знать, сколько маек "Metallica" всех размеров было продано за последние 16 дней (со дня последней закупки). Или за прошлый месяц. Или с 30 декабря по 1 января. В общем, вы поняли :)
  3. Желательно, показывать актуальное количество сразу в списке товаров (если склад не выбран, то сумма по всем складам) (да, в каждой строке будет свой набор параметров (это лишь вопрос быстродействия алгоритма выборки из базы)
    Например: Зеленая, XL = 3шт | Зеленая, L = 4шт | Красная, L = 5 шт
  4. По каждому наименованию нужно иметь историю событий - когда, сколько и какого типа было продано-куплено-перемещено единиц товара. Нужно знать тип события и id.


Интересует именно как считать количество товара с кучей параметров имея сведения о закупках и прочем.

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

PS. БД - MySql, PHP-движок — Laravel 4.2
PSS. 1С не предлагать! Спасибо :)
  • Вопрос задан
  • 4154 просмотра
Пригласить эксперта
Ответы на вопрос 5
thewind
@thewind
php программист, front / backend developer
ТЗ на проект detected. Ну а дальше вы знаете, куда с ним пойти?)
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Хранить текущие остатки по каждой товарной позиции + историю операций "поступление/убытие"
С точки зрения складских остатков логично считать MetallicaЗеленаяXL, MetallicaЗеленаяL, MetallicaКраснаяL как 3 разных товара.
Для удобства можно хранить дополнительную структуру данных которая объединяет 3 этих товара в единую группу Metallica.

Вообще честно не советую городить велосипед в данном случае. Возьмите какую нибудь 1С, там это давно сделано удобно и понятно. Стоит копейки, апи наружу тоже не проблема.
Ответ написан
kumaxim
@kumaxim
Web-программист
Сделай интеграцию с 1С-Склад, будет куда проще и быстрее
Ответ написан
Комментировать
@LiguidCool
А зачем изобретать лисапед, когда уже есть 1С Склад и прочие...
Ответ написан
Комментировать
dimawar
@dimawar
сисадмин
в 1Ске проблема с майками "Хеллоу Китти" размером "ХХЛ" решается через свойства номенклатуры.
Т.е. в справочнике есть номенклатура Майка, у нее есть всякие возможные характеристики.
Но в момент прихода товара, или продажи, надо обязательно проставить характеристику.
Теперь дальше: если изначально пришла майка обыкновенная, а потом надо на ней напечатать, то надо сделать документ "Производство", который будет расходовать чернила и работу мастера, но на выходе получится майка "Хеллоу Китти"
Посмотрите, вроде бы есть сервис "Мой склад" или как-то так, он должен решать эти задачи.
Также эти задачи можно решить через 1Ску.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы