Я пытаюсь создать базовую систему управления точки продаж и инвентаризации.
Некоторые вещи, которые необходимо учитывать:
- Продукты всегда одинаковы (одинаковые идентификаторы) по всей системе, но инвентарь (доступные единицы для продажи на продукт) уникален для каждого места. Расположение Y и Z могут иметь для продажи единицы продукта X, но если, например, два устройства продаются из местоположения Y, не следует влиять на местонахождение инвентаря Zs. Его запасные части по-прежнему неповреждены.
- Продажа одной (1) единицы продукта X из местоположения Y означает, что инвентаризация местоположения Y должна вычитать одну единицу из ее инвентаря.
Из этого я думал об этих таблицах:
-
Места
- ID
- имя
-
Продукты
- ID
- имя
-
операции
- ID
- Описание
-
inventories_header
- ID
- LOCATION_ID
- product_id
-
inventories_detail
- inventories_id
- TRANSACTION_ID
- unit_cost
- unit_price
- количество
-
orders_header
- ID
- Дата
- всего (рассчитано из количества заказов_данных * цена, только для проверки будущих данных)
-
orders_detail
- order_id
- TRANSACTION_ID
- product_id
- количество
- цена
Хорошо, да, есть ли какие-то вопросы? Конечно.
- Как отслеживать изменения в стоимости единиц? Если в какой-то день я начну платить больше за определенный продукт, мне нужно будет немного отслеживать предельную полезность (
(cost*quantity) - (price*quantity) = marginal utility
). Я подумал о том, что в основном для этого есть инвентарь. Я бы об этом не думал. - Хорошо ли установлены отношения? Мне все еще сложно подумать, есть ли в этих местах запасы или если в кадастрах есть несколько мест. Его безумие.
- Как бы вы знали/знали свои текущие уровни запасов? Поскольку мне приходилось отделять таблицу инвентаря, чтобы не отставать от обновлений затрат, я бы просто хотел добавить все количества, указанные в Inventories_detail.
- Любые предложения, которые вы хотите поделиться?
Я уверен, что у меня все еще есть некоторые вопросы, но это в основном те, которые мне нужны для адресации. Кроме того, поскольку Im, использующий Ruby on Rails в первый раз, на самом деле, как опыт обучения, его стыд останавливается при разработке, не позволяя мне ускорить реализацию быстрее, но я думаю, что так оно и должно быть.
Спасибо заранее.