[РЕШЕНО] Один товар с уникальной ценой для каждого покупателя

Приветствую, возможно заголовок не очень понятный, но я поясню. Сайт посвящен ремонту квартир и продаже товаров для ремонта. Задача в следующем: нужно сделать возможность оплаты сметы на ремонт через сайт. Смета по сути и есть товар цена на который формируется после выезда мастера на замер. То есть было бы здорово сделать так: мастер померил, зашел в свой личный кабинет внес данные о клиенте и замерах, на основании этих данных произошел расчет стоимости и дальше клиент должен эту сумму оплатить. Проблема в том, что я не представляю как это реализовать. Буду рад любым вариантам.
Артур Шевченко
25 ноября 2019, 10:20
modx.pro
370
0
Поблагодарить автора Отправить деньги

Комментарии: 6

Наумов Алексей
26 ноября 2019, 12:35
0
Может так?
Делаете товар с нулевой ценой. Его можно закинуть в корзину и оформить заказ, но у заказа со статусом Новый нулевая цена и оплатить его нельзя.
Мастер устанавливает заказу цену, после чего его можно оплатить.

Ну или ваш вариант, когда цена задается товару, например через опции товара, где опция это что-то типа id пользователя, и купить можно только эту опцию. Соответственно для каждого пользователя опция уникальна и обладает своей ценой.
    Артур Шевченко
    26 ноября 2019, 14:41
    0
    Спасибо, первый вариант мне нравится. Буду думать. Если у кого-то есть еще идеи предлагайте
    Алексей Шумаев
    26 ноября 2019, 20:19
    0
    Я так понимаю, что «товар» вам нужен только для того, чтобы его потом оплатить стандартным модулем?
    Иначе я не вижу смысла привязываться к функционалу магазина, избыточно и сбоку что-то прикручивать постоянно придётся. Может правильнее сделать свой модуль ака «Сметы», заточенный под нужный функционал с нужной логикой?
      Артур Шевченко
      26 ноября 2019, 21:02
      0
      Дело в том, что подкрутить и что-то простое написать я смогу, а вот полноценный модуль, да чтоб с БД работал нет((( Еще учиться и учиться
        Алексей Шумаев
        26 ноября 2019, 21:30
        0
        Можно, как Алексей выше писал, а саму смету хранить в кастомной табличке (можно с ней работать даже без xpdo), связанной с заказом.
        Связь с заказом делайте через поле properties таблицы _ms2_orders в виде [«estimate»:«id_записи_в_кастомной_таблице»].
        Внимание! Это поле json, в нём много чего может храниться. Поэтому перед сохранением нужно получать его и свои данные добавлять в полученный массив, только потом сохранять. Иначе можно затереть имеющиеся там данные.
      Артур Шевченко
      06 июня 2020, 08:34
      0
      Вдруг кто будет делать что-то похожее, поэтому пишу вариант, который в итоге реализовал. Во-первых без кастомных таблиц не обошлось, научился, оказалось всё не так страшно, плюс CMPGenetator помог. Сама смета это отдельный заказ, обычный заказ, услуги в нем это товары, таким образом стоимость рассчитывается автоматически и она уникальна для каждого. Потом я создал кастомный OrderHandler в нём нужную мне информацию через xPDO записываю в кастомные таблицы, пишу туда номер заказа, пользователя и менеджера, а потом получаю эти данные где надо, а с их помощью уже можно вытащить и все данные пользователя и всю информацию о заказе.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6