@sangan

Как правильно организовать хранение наличия и истории приходов/расходов в интернет магазине на php + mysql?

В БД есть таблицы: приходы, расходы, актуальное наличие, логи наличия ежеквартально (чтобы быстрее строить отчеты по операциям, которые включают "было" и "стало").
При сохранении операций все понятно, я просто прохожу построчно массив с моделями в операции и добавляю/вычитаю количество в операции к/из количества в логах и наличии, создаю записи в таблице операций.
А при обновлении операции, например, "приход", я должен сделать обновление актуального наличия и всех логов приходов, следующих за датой данного прихода.
Вопрос в том, как правильнее делать обновление логов наличия. Делать промежуточный массив с разницей добавляемого количества и того, которое уже сохранено (делая построчный обход массива моделей в операции и проверяя на каждой итерации, есть ли такая строка в таблице приходов, я ведь обновляю операцию)? Есть ли более оптимальный способ?
Корректно ли делать обход построчно (может быть, например, 100 позиций в операции)
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 1
mahmudchon
@mahmudchon
Все приходы, расходы, продажи и тп можно хранить в одной таблице. Пишите туда, например, product_id, статус, например, status = 1, это приход, 2 - расход и тп.
Поле с количеством пусть может принимать отрицательные значения.
Итого получается, пришёл товар:
product_id = 1, count = 10, status = 1
Продаю 2 шт:
product_id = 1, count = -2, status = 2
Хочу узнать наличие:
SELECT SUM(count) FROM table WHERE product_id = 1
Ответ написан
Ваш ответ на вопрос

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

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