Я пытаюсь создать базовую систему управления торговыми точками и запасами.
Некоторые моменты, которые следует учитывать:
- Продукты всегда одинаковы (один и тот же идентификатор) во всей системе, но запасы (доступные для продажи единицы для каждого продукта) уникальны для каждого местоположения. В локации Y и Z могут быть выставлены на продажу единицы продукта X, но если, например, две единицы продаются из локации Y, запасы в локации Z не должны измениться. Его складированные единицы по-прежнему целы.
- Продажа одной (1) единицы продукта X из местоположения Y означает, что запасы местоположения Y должны вычесть одну единицу из его запасов.
Исходя из этого, я подумал об этих таблицах:
локации
- id
- имя
продукты
- id
- имя
сделки
- id
- описание
inventory_header
- id
- location_id
- идантификационный номер продукта
inventory_detail
- inventories_id
- ID транзакции
- себестоимость единицы продукции
- Цена за единицу
- количество
orders_header
- id
- Дата
- итого (рассчитывается из количества заказов_детейл * цена; только для будущей проверки данных)
orders_detail
- order_id
- ID транзакции
- идантификационный номер продукта
- количество
- цена
Хорошо, есть вопросы? Конечно.
- Как мне отслеживать изменения стоимости юнитов? Если когда-нибудь я начну платить больше за определенный продукт, мне нужно будет каким-то образом отслеживать предельную полезность (
(cost*quantity) - (price*quantity) = marginal utility
). Я думал о inventory_detail в основном для этого. В противном случае меня бы не волновало. - Хорошо ли налажены отношения? Мне все еще трудно понять, есть ли в локациях запасы или несколько локаций. Это сводит с ума.
- Как бы вы сохраняли / знали свой текущий уровень запасов? Поскольку мне пришлось разделить таблицу инвентаря, чтобы не отставать от обновлений стоимости, я думаю, мне просто нужно было бы сложить все количества, указанные в inventory_detail.
- Есть предложения, которыми вы хотите поделиться?
Я уверен, что у меня все еще есть вопросы, но в основном мне нужно ответить на них. Кроме того, поскольку я впервые использую Ruby on Rails, на самом деле, в качестве учебного опыта, стыдно останавливаться на дизайне, не позволяя мне быстрее выполнить реализацию, но я думаю, что так и должно быть.
Заранее спасибо.