Как организовать схему складского учёта с перемещением в магазины под реализацию?
Представьте ситуацию.
Есть база с товарами, есть база магазинов (покупателей). Товар может перемещаться в магазины под реализацию и в зависимости от ситуации может как вернуться на склад, так и зафиксировать продажу с последующим увеличением долга магазина.
Сложность возникла при проектировании схематики при условии что отгрузка одного и того же товара (id) может быть по разным ценам.
Пример:
Движение по складу осуществляется в таблице sale
У нас есть таблица с движением товара, таблица с товаром и так далее.
Попробуем задать простые вопросы:
1. Сколько товара лежит в магазине id-1 ? легко, суммируем по id магазина и id товара.
2. На какую сумму лежит товар в магазине id-1? так же легко суммируем.
Теперь есть 2 операции которые могуть быть с этой базой и товаром:
1. Продажа магазином части товара.
2. Возврат не проданного товара на склад.
И тут возникает тупик.
Как мы оформим фактическую продажу товара? Мы знаем что в магазине-1 лежит 8 единиц товара id-1 на сумму 460 у.е. То есть если магазин продал 2 единицы товара, то мы должны записать в базу sale третью строку, где количество будет -2, что даст нам актуальные остатки по товару в количественном выражении, а что в строке стоимость? Ставить среднюю стоимость? Тогда начнутся дробные числа и округления.
Возврат не проданного товара - та же история. При возврате мы должны уменьшить не только количество товара но и указать на какую сумму уменьшается товарный долг магазина. В таблице "товар" цена является актуальной для новых отгрузок. Нас же интересует только те цены, по которым мы отгружали раньше этому магазину. Опять усреднения получаются. Есть 2 отгрузки товара с одним id но разными ценами в разный период, и как организовать их частичную продажу или частичный возврат - ума не приложу.
Выход же совершенно очевидный - добавить в таблицу, где регистрируется наличие на складе поле price, и наверное поле date или ссылку на запись перемещения, из которой уже можно будет получить date. При списании списывать товары по FIFO, начиная с самой ранней даты.
Тогда количество будет в разрезе цены на дату отгрузки.
Дмитрий, и правда хаха.
ТС даже в гугл поленился свой зад отнести....
Или в торговле пороху ни грамму не нюхал.
Типовая задача, решаемая каждый день в тысячах оптовых базах...