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

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

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

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

  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С не предлагать! Спасибо :)
  • Вопрос задан
  • 4142 просмотра
Пригласить эксперта
Ответы на вопрос 5
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Хранить текущие остатки по каждой товарной позиции + историю операций "поступление/убытие"
С точки зрения складских остатков логично считать MetallicaЗеленаяXL, MetallicaЗеленаяL, MetallicaКраснаяL как 3 разных товара.
Для удобства можно хранить дополнительную структуру данных которая объединяет 3 этих товара в единую группу Metallica.

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

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

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
от 300 000 до 500 000 ₽
05 мая 2024, в 23:43
8000 руб./за проект
05 мая 2024, в 23:39
3000 руб./за проект
05 мая 2024, в 23:36
3000 руб./за проект