Домой Каталог: Плагины WordPress WP Events&Places Добавление сервисного сбора/наценки к стоимости билета.
24ответ(ов) в теме
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
1
10:25
Версия плагина: 1.4.2

Добрый день.
Где лучше в плагине сделать/добавить наценку стоимости заказа. Пробовал добавить в интеграции к платёжной системе, но стоит также проверка платежа и на этом этапе выдаёт ошибку (якобы заказа не был оплачен, хотя все в норме, платеж прошёл, клиент получил билеты), скорее всего из за того что суммы разные получаются по итогам.
Интересует более правильный подход к данной проблеме. Думаю данный вопрос заинтересует многих пользователей данного плагина.
Заранее большое спасибо.

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16986
2
11:12

Добрый день, вы же сами устанавливаете стоимости мест, какая еще наценка требуется, поясните плиз

0
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
3
11:15

Сервисный сбор, типа налога, у многих онлайн касс есть, это дополнительные сборы к стоимости билетов, обычно в процентах, т.е. билет стоит например 1000р., к нему ещё прилагается сервисный сбор в размере 10% в итоге пользователь платить 1100 рублей.

0
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
4
11:17

Типа вот так:

Вы не можете просматривать опубликованные ссылки
Редакции сообщения
08.10.2018 11:19aleksey.pankratovПричина: не указано
0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16986
5
11:21

если вы уже внесли изменения в порядок формирования корзины и выводите эту информацию, то также сможете пересчитать общую стоимость прибавляя размер сбора и в момент сохранения данных заказа в БД соответственно потребуется увеличить стоимость заказа на эту сумму, тогда при проведении оплаты стоимость заказа будет биться с размером оплаты и проблем возникать не должно

1
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
6
11:25

Так в этом и вопрос, где именно сделать прибавление в момент сохранение данных заказа в бд?

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16986
7
13:52

сохранение данных заказа происходит в файле /wp-content/plugins/events-and-places/class-save-order.php
также все данные заказа перед сохранением можно изменить через фильтр "evpl_pre_insert_order"

1
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
8
16:11

Получилось. А как можно сделать, чтобы было уникальное присвоение сбора/наценки к каждому мероприятию?

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16986
9
20:46

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

1
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
10
10:55

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

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16986
11
11:17

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

Вы не можете просматривать опубликованные ссылки

()

1
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
12
16:41

Сделал вот так:

$percent = get_post_meta( $post_id, 'collection', true );

        $args = apply_filters('evpl_pre_insert_order', array(
            'user_data' => $this->user_data,
            'order_price' => $this->cart->price*$percent,
            'place_amount' => $this->cart->amount,
            'order_details' => serialize($this->details),
            'order_date' => current_time('mysql'),
            'order_status' => $order_status,
            'order_hash' => md5(current_time('mysql'))
        ));

На странице мероприятия, показывается значение из таблицы, но в сам фильтр не добавляется...

Редакции сообщения
09.10.2018 16:42aleksey.pankratovПричина: не указано
0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16986
13
17:36

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

0
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
14
18:50

Про это я читал, но не понял или просто уже не доходит, как именно:

Андрей CS сказал(а)
в ней изменить текущие значения

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16986
15
19:51

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

0
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
16
14:05

add_filter('evpl_pre_insert_order', 'my_evpl_pre_insert_order');
function my_evpl_pre_insert_order($data){
$post = get_post();
$percent = get_post_meta( $post_id, 'collection', true );
$data['order_price'] = $data['order_price'] *$percent;
return $data;
}

При оформлении заказа, получается сумма 0 рублей.

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16986
17
16:11

Заказ еще не создан, не понятно к какому именно мероприятию данные отнести, поэтому придется работать с данными корзины пользователей:

add_filter('evpl_pre_insert_order', 'my_evpl_pre_insert_order');
function my_evpl_pre_insert_order($data){

    $cartData = evpl_get_cart_data();

    if(!$cartData) return $data;

    foreach($this->cart->places as $event_id => $date_places){

        if(!$date_places) continue;

        $percent = get_post_meta( $event_id, 'collection', 1 );

        if(!$percent) continue;

        $data['order_price'] *= $percent;

    }

    return $data;
}

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

1
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
18
16:39

Андрей CS сказал(а)
не совсем уверен насчет порядка увеличения стоимости заказа, возможно вместо умножения надо использовать сложение, но это уже вам решать, логику можете изменить и сами

Потому что проценты указываются как 1.1 ))

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16986
19
17:08

поправил код

add_filter('evpl_pre_insert_order', 'my_evpl_pre_insert_order');
function my_evpl_pre_insert_order($data){

    $cartData = evpl_get_cart_data();

    if(!$cartData) return $data;

    foreach($cartData->places as $event_id => $date_places){

        if(!$date_places) continue;

        $percent = get_post_meta( $event_id, 'collection', 1 );

        if(!$percent) continue;

        $data['order_price'] *= $percent;

    }

    return $data;
}

1
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
20
17:33

Второй вариант добавляет % к стоимости билета в БД .

0
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
21
18:20

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

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16986
22
18:25

потому что в каждом последующем мероприятии общая стоимость увеличивается на процент указанный для этого мероприятия, т.е. увеличение неравномерное. Допустим стоимость заказа 100р. первое мероприятие увеличит его на 10 процентов, станет 110, а второе уже 110 будет увеличивать на 10 процентов и станет 121 и так далее. Надо вносить коррективы в логику увеличения, а именно в строку

$data['order_price'] *= $percent;

1
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
23
18:30

Да, я написал и до меня дошло ...

0
Fruit
не в сети 2 года
На сайте с 15.11.2017
Участник
Тем 22
Сообщения 155
24
21:47

В принципе вопрос решён, вот так это теперь выглядит:

Вы не можете просматривать опубликованные ссылки

, можно закрыть тему.

0
Тема закрыта. Публикация новых сообщений запрещена.