170 похожих чатов

Всем добрый день! Есть система учета товаров на складах написанная на

PHP.

Простыми словами, платформа показывает количество остатков товара на разных складах.

На данный момент есть таблица products_availability:
id, product_id, warehouse_id, quantity;

Данная структура показывает текущие остатки товаров, но я не смогу посмотреть, допустим, за вчерашний день.

Какие варианты решения задачи вы видите? Как бы вы это реализовали?

Мне нужно по каждому дню хранить количество остатков.

Неужели нужно клонировать таблицу ежедневно?)

26 ответов

24 просмотра

Остатки постоянно в течении дня меняются ведь. Нужна историческая таблица

Maqsud-A. Автор вопроса
SiZE
Остатки постоянно в течении дня меняются ведь. Нуж...

Да, поэтому в голову пришло под конец дня клонировать таблицу остатков)

Вести лог изменений, на его основе можно восстановить состояние за любую дату.

Maqsud-A. Автор вопроса
Maqsud-A. Автор вопроса

Да именно так, в конце дня копировать остатки в новую таблицу

Maqsud A.
Как она должна выглядеть?

Самое простое id, product_id, warehouse_id, change_amount, timestamp. А дальше берете текущее состояние и разматываете на столько дней назад, насколько надо. Это если прямо в лоб решение.

в данном случае нужна таблица где описываются все движения товара, т.е. product_id sklad_id amount created_at т.е. при измении кол-ва на складе, у тебя появлется запись 1 1 -1 текущая дата если произошло перемещение товара на другой склад, то будет 1 1 -1 текущая дата 1 2 +1 текущая дата для большей инфомативности можно доавбить тип (перемещение на другой склад, выдано покупателю, утилизация, поступление)

Egor Gruzdev
в данном случае нужна таблица где описываются все ...

если совсем упороться можно поставить бд от оракла и там можно цеплять фильтрабельный json с хронологией для каждой колонки но думаю размер обьекта не обрадует сервер при извлечении через пару лет)

Egor Gruzdev
в данном случае нужна таблица где описываются все ...

ты еще не учел что у него с таким числом товара с каждым днем база пополняется в среднем 20к позиций * 10 складов на 200к записей это очень быстро истощит даже uint64 идентификаторы

FFx0001
если совсем упороться можно поставить бд от оракл...

принцип тот же когда идет учет денег, зачем переизобретать велосипед, какие-то клонирования, горячие холодные базы

FFx0001
ты еще не учел что у него с таким числом товара с ...

из того что у него написано, я такаого не заметил, он указал что у него всего 20к SKU по 10 складам, это не очень много

Пиши логику перемещений. Всё равно когда нибудь кладовщик накладные попросит.

Event Suorsing по моему хорошое ришения пожете почитат

что будите делат проста по ивену будете добавля новий запис в таблитсу допустим product_historys

Maqsud-A. Автор вопроса
Egor Gruzdev
в данном случае нужна таблица где описываются все ...

Все это уже имеется. Накладные по перемещениям, продажи, приходы, возвраты, отмены и тд. Но этот подход все равно не дает мне получить количество остатков за определенный день, я могу видеть остатки только на текущий день. Структура такая: product_id, warehouse_id, quantity 1 1 50 1 2 30 1 3 5

Maqsud-A. Автор вопроса
Egor Gruzdev
в данном случае нужна таблица где описываются все ...

Твое предложение у меня называется логом движений товара😁 Но все равно нет возможности вытащить конкретное количество остатка за определенный день.

Maqsud A.
Твое предложение у меня называется логом движений ...

Это не лог модете не обновлять а только дабавлят, например запис 1 это означает поступил товар и второй запис -1 ушол тавар, при сумировне по дате все должен быть в порядке

Maqsud A.
Твое предложение у меня называется логом движений ...

Помимо еденицы изменения храни ещё состояние или до или после. Или вообще хранить значение после операции перемещении... Или как предложили выше, вести расчёт на конец дня, недели, месяца, так например делает 1С.

Единственно сразу решить, что нельзя менять транзакции (движения, записи в логи), они как бы идут нарастающим и после вставки не корректируюися. Если нужна коррекция, то проводите обратное действие.

Maqsud-A. Автор вопроса

Нет, если хорошенько подумаете, это так не будет работать

Egor Gruzdev
Единственно сразу решить, что нельзя менять транза...

можно пересчитывать всю историю вперед с даты изменения, у него же не строгая отчётность

Maqsud A.
Нет, если хорошенько подумаете, это так не будет р...

Можете дапустим по имени event a филтроват

Maqsud A.
Все это уже имеется. Накладные по перемещениям, пр...

Почему не даёт? Ты же можешь сложить приход и расход до определённой даты, если перемещения все имеются.

Maqsud-A. Автор вопроса
Pavel
Почему не даёт? Ты же можешь сложить приход и расх...

Точняк. Просто, мы вначале запуска платформы давали возможность редактирования остатков без актов и накладных, поэтому, редакция не будет учитываться 🥴

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

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
Карта сайта