Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

Добрый день, коллеги.

Встал вопрос изменения порядка подключения доставки в зависимости от суммы с учетом всех скидок.

Похожие вопросы находил, но конкретно темы по этому вопросу не встречал. Предложенные там решения пробовал - ни одно не сработало.

 

Задача:

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

Необходимо определять сумму не до применения скидок по картам, купонам, бонусным баллам, а после них. То есть, пользователь сделал заказ на 1600 рублей - доставка бесплатная. Он применил дисконтную карту на 5% и сумма заказа стала 1520 рублей. Доставка при этом еще остается бесплатной. Но пользователь применяет еще и купон на 50 баллов (50 рублей) и сумма заказа становится 1470 рублей. При этом доставка должна стать платной, так как итоговая сумма заказа уже ниже порога в 1500 рублей.

То есть - необходимо учитывать в доставке не промежуточную сумму, а итоговую, с учетом всех скидок.

 

Побочная задача:

Обратил внимание уже на этапе попыток решения основной задачи. Дисконтная карта применяет скидку только на единицу товара. Когда добавляешь две и более единиц одного товара - скидка по дисконтной карте не умножается на количество товара.

То есть, покупатель кладет в корзину товар за 760 рублей, по дисконтной карте получает скидку 38 рублей, сумма получается 722 рубля. Затем он решает взять две единицы этого товара и должен, по идее, получить скидку в 76 рублей, а сумму 1444, а по факту получает 1482 рубля.

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

 

Учитывать в заказе:

3pgxjy5h.jpg

 

Прошу любой помощи по любой из задач - советы, решения, ссылки на решения.

Змінено користувачем Helloween
Надіслати
Поділитися на інших сайтах


вторая проблема - копать модуль "дисконтная карта" он кривой.

первая проблема в модуле доставки вместо cart->getsubtotal вписать итоговую сумму заказа.

А не подскажете, где копать? Адрес файла. А то я второй день копаюсь и не могу понять.

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

Надіслати
Поділитися на інших сайтах


Ну если уже допил, тогда как протрезвеет пусть ftp и админку в скайп скинет, я гляну.

p.s. это необязательно.

Ладно, это позже докопаю.

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

Что самое интересное, скрипт формирования XML всего один, но добавление в него новых тегов не влияет на структуру выходящего файла.

То есть - я добавил теги <promokody></promokody> а в XML они не появились. Хотя, вполне возможно, что XML формируется каким-нибудь другим файлом, который запрятан куда-нибудь очень глубоко...

Змінено користувачем Helloween
Надіслати
Поділитися на інших сайтах


//промокупон начало
$order_total_diskprc = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order_total` WHERE `code` = 'coupon' AND `order_id` = '" . (int)$order_id . "'");
	if($order_total_diskprc->num_rows) {
		preg_match('/\((.+)\)/', $order_total_diskprc[title], $m);
		$order_coupon = $m[1];
		$order_prc = $this->db->query("SELECT * FROM `" . DB_PREFIX . "coupon` WHERE `code` = '".$order_coupon."'");
		if($order_prc->num_rows) {
			$discPrc = $order_prc[discount];
			$xml .= "<discPrc>" . $discPrc . "</discPrc>";
		}
	}
//промокупон конец

Пытаюсь добавить в выгрузку 1С новый тег с добавлением размера скидки по промокупону.

Что-то не отрабатывает, заказ повисает. Подскажите, плиз, где косяк.

Этот код - часть кода catalog/model/checkout/order.php

Змінено користувачем Helloween
Надіслати
Поділитися на інших сайтах


Друзья, прошу помощи.
Нужно получить из таблицы заказов (order_total) title купона, разобрать полученное значение, выделив текст внутри скобок и из таблицы coupon получить значение discount по совпадению с полученным значением.
короче, в файле catalog/model/checkout/order.php
обращаемся к БД и получаем из таблицы order_total значение title по условию

 [code] == 'coupon' и [order_id] == '$order_id'

если при этих условиях существует title - разбираем его и вытаскиваем значение внутри скобок

preg_match('/\((.+)\)/', $dickcoupon, $m);
$order_coupon = $m[1];

Полученное значение используем для выборки из таблицы coupon как условие совпадения.
выбираем из таблицы coupon значение discount при условии 

[code] == '$order_coupon'

Само значение discount нужно вынести в переменную для дальнейшего ее использования в создании XML выгрузки для 1С.
 
Выше я привел свою попытку, но что-то не получается. Я пока еще процедурник, с MVC у меня не так хорошо.

Змінено користувачем Helloween
Надіслати
Поділитися на інших сайтах


Вроде получилось переписать. По крайней мере, в таблицу выгрузки в 1с пишет как надо.

//промокупон начало
$diskprc_total_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order_total` WHERE `code` = 'coupon' AND `order_id` = '" . (int)$order_id . "'");
foreach ($diskprc_total_query->rows as $order_total) {
    if ($order_total['code'] == "coupon") {
        $match_p = array();
        if(preg_match('/\((.+)\)/', $order_total['title'], $m)) {
            $order_coupon = $m[1];
			$order_prc = $this->db->query("SELECT * FROM `" . DB_PREFIX . "coupon` WHERE `code` = '".$order_coupon."'");
			$discPrc = $order_prc->row['discount'];
        }
    }
}
//промокупон конец
Надіслати
Поділитися на інших сайтах


Да, все хорошо, с задачей справился.

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.