Jump to content

Recommended Posts

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

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

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

 

Задача:

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

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

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

 

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

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

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

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

 

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

3pgxjy5h.jpg

 

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

Edited by Helloween

Share this post


Link to post
Share on other sites

Никто не сталкивался?

Share this post


Link to post
Share on other sites

Редактировать / порядок сортировки.

Share this post


Link to post
Share on other sites

Редактировать / порядок сортировки.

 

 

Предложенные там решения пробовал - ни одно не сработало.

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

по первой проблеме есть и простое элегантное решение: убрать 0 в доставке вообще, и добавить учитывать в заказе в зависимости от суммы заказа и способа доставки.

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

шо за модуль дисконтные карты??

Share this post


Link to post
Share on other sites

шо за модуль дисконтные карты??

3pgxjy69.jpg

Share this post


Link to post
Share on other sites

Увы, я не могу по скриншоту определить автора модуля и скачать исходники

Share this post


Link to post
Share on other sites

Увы, я не могу по скриншоту определить автора модуля и скачать исходники

Я не уверен, что это модуль. Скорее - допил...

Share this post


Link to post
Share on other sites

 Скорее - допил...

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

Edited by Helloween

Share this post


Link to post
Share on other sites
//промокупон начало
$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

Edited by Helloween

Share this post


Link to post
Share on other sites

Друзья, прошу помощи.
Нужно получить из таблицы заказов (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 у меня не так хорошо.

Edited by Helloween

Share this post


Link to post
Share on other sites

Вроде получилось переписать. По крайней мере, в таблицу выгрузки в 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'];
        }
    }
}
//промокупон конец

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By progroman
      Модуль добавляет любое количество служб доставки с тарифами, указанными вами.
      Позволяет настраивать тарифы, скидки на доставку, регионы и города для доставки.
      Может быть полезен, например, если у вас собственная курьерская служба, или у службы доставки нет своего api, либо он слишком сложный. Или вы хотите увеличить или наоборот уменьшить стоимость доставки для клиента. В этих случаях с помощью данного модуля вы просто вбиваете соответствующие тарифы для нужных регионов.
       
      Стоимость доставки может быть:
      - фиксированной, например, 300 руб.
      - текстом, например, "уточняйте у менеджера"
      - зависимой от веса, например: 5:300,7:400,10:500
       
      Настройка тарифов по весу
      Пример
      5:300,7:400,10:500
      заказ весом меньше или равный 5 кг будет стоить 300.00 руб., весом меньше или равный 7 кг, но больше чем 5 кг, будет стоить 400 руб., от 7 до 10 кг - 500 руб.
      Чтобы указать минимальный вес заказа, оставьте значение пустым:
      3:,5:300,7:400,10:500
      в данном случае, заказ весом до 3 кг не доставляется, максимальный вес в данном случае 10 кг.
       
      Указывайте вес товаров в единицах, выбранных в настройках (Система / Настройки / Локализация / Вес). Без веса товара стоимость доставки не рассчитывается.
       
      Скидки на доставку
      Есть возможность установить скидки на доставку или сделать ее бесплатной от определонной суммы заказа.
      Пример
      3000:0,10000:50,100000000:100
      заказ стоимостью до 3 000 руб. - нет скидки
      от 3 000 до 10 000 - скидка на доставку 50
      больше 10 000 (до 100 000 000 - любое большое число) - бесплатная доставка (скидка 100%).
       
      Установка
      Скачайте архив, подходящий под вашу версию OpenCart, OcStore и т.д. Следуйте инструкции из файла readme.txt.
       
      Демо
      http://opencart.progroman.ru/demo/1/
      http://opencart.progroman.ru/demo/1/admin/index.php?route=extension/shipping
      demo / demo
       
      Лицензия
      Модуль работает по лицензии (один домен + его поддомены), выдается по запросу личным сообщением с адресом вашего сайта и темой "Лицензия Генератора доставок".
      Дополнительные лицензии на другие домены можно оплатить через Яндекс.Деньги или переводом на карту Сбербанка.
      Стоимость второй и последующих лицензий при оплате указанными способами - 400 рублей.
      Важно! Удаление или перенос лицензии на другой домен невозможно! Это уже другая лицензия, которая покупается отдельно.
       
      Обновление
      До версии 1.2
      залейте файлы из архива поверх старой версии, обновите модификатор  
      До версии 1.1
      удалите файлы, генерированные модулем для OC 2.0 - 2.2: admin/controller/shipping/progroman_shipgen{N}.php, admin/language/russian/shippnig/progroman_shipgen{N}.php, catalog/model/shipping/progroman_shipgen{N}.php для OC 2.3 и выше: admin/controller/extension/shipping/progroman_shipgen{N}.php, admin/language/ru-ru/extension/shippnig/progroman_shipgen{N}.php, catalog/model/extension/shipping/progroman_shipgen{N}.php установите новую версию модуля по инструкции
    • By progroman
      499.00 руб
      Скачать/Купить дополнение


      Генератор доставок
      Модуль добавляет любое количество служб доставки с тарифами, указанными вами.
      Позволяет настраивать тарифы, скидки на доставку, регионы и города для доставки.
      Может быть полезен, например, если у вас собственная курьерская служба, или у службы доставки нет своего api, либо он слишком сложный. Или вы хотите увеличить или наоборот уменьшить стоимость доставки для клиента. В этих случаях с помощью данного модуля вы просто вбиваете соответствующие тарифы для нужных регионов.
       
      Стоимость доставки может быть:
      - фиксированной, например, 300 руб.
      - текстом, например, "уточняйте у менеджера"
      - зависимой от веса, например: 5:300,7:400,10:500
       
      Настройка тарифов по весу
      Пример
      5:300,7:400,10:500
      заказ весом меньше или равный 5 кг будет стоить 300.00 руб., весом меньше или равный 7 кг, но больше чем 5 кг, будет стоить 400 руб., от 7 до 10 кг - 500 руб.
      Чтобы указать минимальный вес заказа, оставьте значение пустым:
      3:,5:300,7:400,10:500
      в данном случае, заказ весом до 3 кг не доставляется, максимальный вес в данном случае 10 кг.
       
      Указывайте вес товаров в единицах, выбранных в настройках (Система / Настройки / Локализация / Вес). Без веса товара стоимость доставки не рассчитывается.
       
      Скидки на доставку
      Есть возможность установить скидки на доставку или сделать ее бесплатной от определонной суммы заказа.
      Пример
      3000:0,10000:50,100000000:100
      заказ стоимостью до 3 000 руб. - нет скидки
      от 3 000 до 10 000 - скидка на доставку 50
      больше 10 000 (до 100 000 000 - любое большое число) - бесплатная доставка (скидка 100%).
       
      Установка
      Скачайте архив, подходящий под вашу версию OpenCart, OcStore и т.д. Следуйте инструкции из файла readme.txt.
       
      Демо
      http://opencart.progroman.ru/demo/1/
      http://opencart.progroman.ru/demo/1/admin/index.php?route=extension/shipping
      demo / demo
       
      Лицензия
      Модуль работает по лицензии (один домен + его поддомены), выдается по запросу личным сообщением с адресом вашего сайта и темой "Лицензия Генератора доставок".
      Дополнительные лицензии на другие домены можно оплатить через Яндекс.Деньги или переводом на карту Сбербанка.
      Стоимость второй и последующих лицензий при оплате указанными способами - 400 рублей.
      Важно! Удаление или перенос лицензии на другой домен невозможно! Это уже другая лицензия, которая покупается отдельно.
       
      Обновление
      До версии 1.2
      залейте файлы из архива поверх старой версии, обновите модификатор  
      До версии 1.1
      удалите файлы, генерированные модулем для OC 2.0 - 2.2: admin/controller/shipping/progroman_shipgen{N}.php, admin/language/russian/shippnig/progroman_shipgen{N}.php, catalog/model/shipping/progroman_shipgen{N}.php для OC 2.3 и выше: admin/controller/extension/shipping/progroman_shipgen{N}.php, admin/language/ru-ru/extension/shippnig/progroman_shipgen{N}.php, catalog/model/extension/shipping/progroman_shipgen{N}.php установите новую версию модуля по инструкции Добавил progroman Добавлено 06.03.2018 Категория Доставки Системные требования ionCube PHP Loader 5 или выше, PHP 5.4 и выше Сайт разработчика Старая цена Метод активации По запросу в ЛС Ioncube Loader Требуется OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет  
    • By drakon2517
      600.00 руб
      Скачать/Купить дополнение


      Почта России и EMS: расчет доставки
      Назначение
      Модуль предназначен для расчета стоимости доставки отправлений Почтой России и EMS. Данные о тарифах Почты России в процессе работы модуля получаются с сервиса http://postcalc.ru.
      При разработке за основу была взята библиотека PostCalcLight и адаптирована к CMS Opencart.
       
      Функционал
      - Настройки вывода данных о доставке, о сезонных ограничениях;
      - Возможность установки дополнительной фиксированной платы за доставку, скидок;
      - Расчет для внутренних и международных отправлений, мультивалютность, мультиязычность;
      - Расчет стоимости доставки наложенным платежом;
      - Возможность установки веса по умолчанию, ограничения по весу/стоимости;
      - Расчет для типов отправлений:
      Простая бандероль; Заказная бандероль; Заказная бандероль 1 класс; Ценная бандероль; Ценная посылка; Ценная бандероль 1 класс; Посылка 1 класса; Курьерская доставка EMS; Услуга "Посылка Онлайн" для корпоративных клиентов; Услуга "Курьер Онлайн" для корпоративных клиентов; Простое письмо; Заказное письмо; Ценное письмо; Простой мультиконверт; Заказной мультиконверт.  
      Лицензия
      - Приобретая модуль, вы получаете возможность использовать его в рамках одного домена. Для получения лицензии направьте запрос автору через площадку/электронный адрес a@larionov.me;
      - Для технических/тестовых доменов лицензия предоставляется бесплатно - по запросу. Желательно, чтобы суть подобных доменов очевидно определялась из их названия.
       
      Важно
      - Системные файлы CMS не затрагиваются;
      - Предпочтительно использование кодировки utf-8;
      - НДС включен в стоимость доставки;
      - Отправка в отделение отправителя - запрещена;
      - Вес для расчета берется из карточки товара;
      - Ключевым фактором при определении места назначения и расчете служит индекс (!), населенный пункт - вторичен;
      - Последняя версия базы населенных пунктов, стран и почтовых индексов находится по адресу http://www.postcalc.ru/download/PostcalcLight_SQL.zip. Обновление происходит в среднем 2 раза в мес. Рекомендуется регулярно выполнять обновление данных из модуля;
      - Разработчик модуля не имеет отношения к сервису http://postcalc.ru. Все вопросы, связанные с работой сервиса, необходимо адресовать его автору.
      - Ввиду того, что данный модуль в расчетах использует сервис Postcalc.ru, настоятельно рекомендуется ознакомиться с условиями использования данного сервиса на своих сайтах: http://postcalc.ru/conditions.html. Прежде всего стоит обратить внимание на:
      На сайте, который использует обращение к API Postcalc.RU, должна быть размещена ссылка на проект в произвольной форме, например: "Сайт использует в расчетах www.postcalc.ru" или "Наш магазин использует технологию http://www.postcalc.ru"; Для тестов ваших скриптов создан отдельный сервис test.postcalc.ru. Для рабочих версий ваших скриптов создан сервис api.postcalc.ru; Во избежание блокировок обращений, а также уменьшения количества запросов с 500 до 50 в сутки, в запросе к API postcalc.ru обязательно используются поля st (Site) и ml (Email). Данные параметры в настройках модуля не подлежат изменению и берутся из настроек магазина (CMS). Данный пункт в рамках этого модуля носит информационный характер в целях предотвращения некорректного изменения (путем изменения кода и др.) указанных параметров; Бесплатное пользование сервисом postcalc.ru предполагает ограничение в 500 запросов в сутки. При превышении 500 запросов в день необходимо перейти на платный тарифный план.  
      Совместимость
      - Работает без доработок с модулем Simple, Ajax Quick Checkout 6.2.4.1.
      - (!) Не работает с модулями/шаблонами (например, UniShop), использующими упрощенное оформление заказа - без обновления данных при изменении полей заказа.
      - Файлы, изменяющие шаблоны (OCMOD, vQmod), лишь попытка улучшить визуальный вывод типов доставки почты России при работе модуля и разработаны с расчетом на то, что затрагиваемые ими файлы (шаблоны shipping_method.tpl) - стандартны. При наличии нестандартных указанных файлов у вас, очевидно, файлы OCMOD и vQmod требуют доработки, что является ответственностью покупателя.
       
      Вопросы
      - Сумма, которую я заплатил на почте, отличается от суммы, рассчитанной модулем. Почему? Читать
      - Пользователям, которые приобрели модуль до версии 2.0 (т.е. без лицензии) и которым доступны обновления, для версии 2.0 лицензия выдается бесплатно на один домен - необходимо обратиться с заявкой в личные сообщения на форуме.
       
      Установка
      - Скопировать директории из upload/php[версия PHP]/oc[версия Opencart], где версии ПО соответствуют целевым (версия PHP, версия Opencart) в корень сайта;
      - Скопировать файлы шаблона из upload/php[версия PHP]/template_oc[версия Opencart]_[тип шаблона], где версии и тип ПО соответствуют целевым (версия PHP, версия Opencart, шаблонизатор) в корень сайта;
      - В разделе администрирования _Модули -> Доставка_ выполнить установку модуля;
      - При версии Opencart > 3 и движке шаблонов Twig необходимо обновить кэш расширений в разделе администрирования Extensions -> Modifications;
      - Настроить модуль.
       
      Для версий Opencart 2.2 и выше в директории локализаций (admin/language, catalog/language) необходимы только директории en-gb, ru-ru и т.п. Директории с названием языков (english, russian и т.п.) копировать не требуется.
       
      Демо
      Opencart 2
      * URL: http://area5.bughost.ru
      * Admin URL: http://area5.bughost.ru/admin/index.php?route=shipping/rospost
      Login: demo:demo
      Opencart 1.5.6
      * URL: http://area6.bughost.ru
      * Admin URL: http://area6.bughost.ru/admin/index.php?route=shipping/rospost
      Login: demo:demo
      Контакты
      - email: a@larionov.me
      - http://larionov.me
      Добавил drakon2517 Добавлено 01.03.2016 Категория Доставки Системные требования PHP 5.3 - 5.6 (!), php_zip (ZipArchive), ionCube Loader 5.0+ Сайт разработчика larionov.me Старая цена Метод активации По запросу на почту Ioncube Loader Требуется OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика  
    • By Serg9988
      Скачать/Купить дополнение


      Изменение стоимости на товар по производителю
      /****** Модуль Обновление стоимости товаров по производителю ******/
      Разработано SiteMix.com.ua
      Протестировано на ocstore 1.5.*
      opencart 1.5.*
      Описание:
      Модуль позволяет увеличить или уменьшить стоимость на все товары по производителю на заданный %.
      Установка:
      При установке никакие файлы перезаписаны не будут!
      Для работы модуля должен быть установлен vqmod!
      1) Распаковать архив с модулем и перенести все файлы из распакованного архива в соответствующие папки вашего сайта на сервере (Если таких не существует, их следует создать)
      2) Заходим в административную часть сайта, раздел "Дополнения" - "Модули" - устанавливаем модуль.
      Модуль готов к работе.
      Обратите внимание!
      Мождуль перед изменениями не создает копии базы данных, по этой причине изменения внесенные средствами модуля
      вернуть нельзя. Поэтому перед использованием модуля. Убедительная просьба создать бекап базы данных!!!!
      Вопросы, пожелания можно писать в форум или на почту support@sitemix.com.ua
      Добавил Serg9988 Добавлено 21.02.2016 Категория Модули Системные требования Сайт разработчика http://myopencart.club Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      1.5.6.3 ocStore 2.3
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      OcShop 1.5.6.4.х Обращение к серверу разработчика  
    • By SergeyPechenyuk
      OC-Store: Pickup lite (Opencart 2.x)
      Скачать/Купить дополнение Создание списка пунктов самовывоза при оформлении заказа.
      Возможность указать в параметрах пункта выдачи товаров: наименование, населенный пункт, адрес, время работы, телефон, email и стоимость доставки в пункт выдачи.
      Модуль "OC-Store: Pickup lite" устанавливается в систему как модуль доставки и работает со всеми популярными шаблонами.
      Добавил SergeyPechenyuk Добавлено 31.01.2016 Категория Доставки  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.