mashletov
@mashletov
Math.random()

Как организовать сохранение данных между кварталами?

Допустим, имеется модель и таблица Product (id, name, price, ...), стандартный грид вывода списка, форма добавления / изменения.
Над гридом, есть фильтр по кварталу, где по умолчанию всегда стоит текущий квартал и год (1-ый 2018), но можно выбрать предыдущие (4-ый 2017, 3-ий 2017 и т. д.).
Все изменения, удаления и вывод должны быть строго в рамках квартала. Например, я сейчас (в 1 квартале 2018) добавлю новый продукт. При выборе 2017 года он естественно должен пропадать. Если я в следующем (2ом) квартале изменил цену или удалил продукт, то в первом должно быть как было. При этом продукты (кроме удаленных) должны переноситься из квартала в квартал.

Как лучше это организовать?
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 4
sim3x
@sim3x
Product
 SKU
...

ProductVariant
 product = ForeignKey(Product)
 name
 price = Decimal
 datetime as year_quarter
...
И запрещаешь апдейты, только добавление

Фильтрацию думаю обьяснять не требуется
Ответ написан
itorgov
@itorgov
Full Stack Developer
Не самый идеальный вариант в плане организации БД, но предложу такой вариант:
1. Добавляете в таблицу поле квартал (можно типом enum от 1 до 4, так как у нас всего 4 квартала и их никогда не станет больше).
2. Для поиска используете поиск по этому полю, текущий квартал можно взять с помощью гетера quarter у Carbon-даты.
3. Для обновления используйте конструкцию updateOrCreate, в качестве первого параметра передаёте массив с идентификатором и номером квартала, а вторым параметром массив с остальными данными. Тем самым редактируя запись во втором квартале eloquent не найдёт её и создаст новую.
Ответ написан
chupacabramiamor
@chupacabramiamor
Инженегр-программист
Сохраняйте как обычно с полями created_at и updated_at, но выборку делайте в разрезе этих самых ваших кварталов по полю updated_at
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Гм... Я бы отделил номенклатурную единицу, поступления товаров и установки цен.

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

Ну а каждое поступление и реализация - имеют свои конкретные цены.

То бишь номенклатурная единица X поступала в разные даты с разными ценами-количествами (себестоимость), а реализовывалась в разные даты по разным (актуальным на тот момент) ценам.
Ответ написан
Ваш ответ на вопрос

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

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