avk
Total posts: 3
22 Сен 2015 11:43

Добрый день, уважаемые специалисты по Cobalt и Emerald!

Помогите, пожалуйста, с дельным советом, как организовать на своем сайте структуру хранения данных по следующим требованиям.

Цель: Нужно хранить историю цен на товары и услуги в различных магазинах. При работе с сайтом пользователь должен видеть только цены, которые установлены на текущую дату.

Цены в магазинах меняются.

Существуют различные акции и скачки валюты, которые влияют на изменение цен, плюс инфляция. К сожалению.

Вот я бы и хотел организовать данные на сайте таким образом, чтобы можно было бы хранить цены и даты действия этих цен.

Например, в магазине1 iPhone 6 до 15.09.2015 стоит 40 т.р., с 16.09.2015 по 15.10.2015 стоит 30 т.р. (т.к. вышел 6s), а с 16.10.2015 и далее стоит 50 т.р., т.к. курс рубля упал и так далее. И если я как пользователь смотрю цены на айфон 6 в магазине1 10.09.15, то вижу цену 40 т.р., если я уже зайду на сайт 20.09, то увижу цену 30 т.р., а если зайду 20.10, то уже увижу цену 50 т.р. Про периодичность цены получилось объяснить?

Теперь про структуру хранения данных.

Есть сущность (справочник) МАГАЗИНЫ со своими параметрами, которые тоже должны быть периодическими (например, уровень сервиса).

И есть сущность (справочник) ТОВАРЫ/УСЛУГИ.

И есть сущность - ПЕРИОДИЧЕСКИЕ ЦЕНЫ.

Надо связать таким образом, чтобы

Магазин (1 ко многим) Товары

Товары (1 ко многим) Периодические цены.

и дополнительно

Магазин (1 ко многим) Характеристики магазина (Сервис, Парковочных мест, ...)

Если нужны дополнительные пояснения, готов ответить на вопросы.

Заранее огромное спасибо за помощь!

Последние изменения: 29 Сен 2015


Sergey
Total posts: 13,748
24 Сен 2015 05:20

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

Тоже самое с инфляцией. Можно так же добавлять накрутку в соответствии с установками.

Модобная схема упростит использование и администрирование. И в случае если у вас будет

avk Например, в магазине1 iPhone 6 до 15.09.2015 стоит 40 т.р.

Все еще можно пролитеть ведь до этого числа, курс может серьезно изменится. Так что цены должны реагировать моментально и отражать только текущую цену.

avk Теперь про структуру хранения данных.

Здесь есть 2 решениия.

Во первых с ценой я посоветовал и если так сделать то подобной связки не нужно будет. Только Магазин => Товар.

1. Персонализация

Если пользователь может создать только один магазин, то можно использовать персонализацию в разделе Товара. Тогда у каждого пользователя появится своя домашняя страница которая и станет его магазином. Если пойти дальше, то можно поставить EasySocial и сделть профиль магазином. Другими словами это метод где магазином будет являтся регистрация пользователя и соответственно на не нужно раздела магазин в кобальте только товары.

2. Родительская связ

Второй метод это использование полей Parent/Child для организации связей между 2-мя типами. Смотрите вот это видео как эти пользоваться.


Sergey
Total posts: 13,748
24 Сен 2015 05:53

По поводу языкового перевода я перезалил пакет 8.340


avk
Total posts: 3
24 Сен 2015 12:27

Добрый день, Сергей!

Дело в том, что я скорее всего не совсем корректно объяснил. Те два варианта, что Вы предлагает дают связь (Магазин - 1 ко многим - Товар), а мне нужно наоборот Товар (1 ко многим) Магазин.

Т.е. мне необходимо, чтобы один и тот же товар, мог продаваться в разных магазинах. А если я пойду по пути 1 и заведу Магазин, как пользователь, то все материалы (Товары), созданные в домашней странице пользователя (Магазина) будут уникальные и надо дублировать тот же список Товаров для каждого магазина.

То же самое и во втором варианте, при такой связке я получаю Магазин1 и Товар1 Магазаина1, Товар2 Магазина1 и т.д. и Магазин2 и Товар1 Магазина2, Товар2 Магазина2.

По поводу цен не совсем подходит, т.к. всё-таки нужно их утвреждать на какое-то время. Не может цена меняться постоянно, она ЗАВИСИТ от курса и от инфляции, но всё-таки фиксируется на какой-то период, поэтому лучше всё-таки хранить период действия цен...


Sergey
Total posts: 13,748
25 Сен 2015 05:40

Кто будет добавлять товары? Администратор или пользователи? Если пользователи то он не будут сильно проверять есть ли уже такой товар или нет и будет много дубликатов. Если будете сами добавлять, то просто нужно сделать раздел магазинов и товаров. В магазин разрешить добавлять магазины, а товар только из под магазина. Заходишь в свой магазин и в поле отношений только кнопка добавить товар коротая в реальности прикрепляет готовый товар к магазину.

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

Думаю такого не сделать из того что есть в коробке с кобальтом.


avk
Total posts: 3
28 Сен 2015 07:28

Все понятно, Сергей!

К сожалению, видимо подобные задачи агрегирования всем ССК Jooml'ы из коробки не доступны. Уже несколько вариантов перепробовал. С тех. поддержками пообщался - беда.

Спасибо, что сразу об этом предупредили. Буду искать варианты. Может быть Вам ещё одна идея для 9-го Кобальта? :-)


Sergey
Total posts: 13,748
29 Сен 2015 12:01

avk Может быть Вам ещё одна идея для 9-го Кобальта? :-)

Мне бы сил доделать то что есть. Не уверен что меня хватит на такую крупную фишку.

Работает на Cobalt