Хорошая тема. Любые вопросы по CS-Cart и не только

Только в статистике? По сути я ей не пользуюсь здесь, вся статистика через CRM

Из ченджлога

[*] Статусы заказа: В статусы заказа добавлен новый параметр «Считать заказ оплаченным». Только заказ с этим параметром будет рассматриваться в статистике как оплаченный заказ.

Здравствуйте.
Подскажите, как в аднминке при оформлении заказа можно реализовать добавление услуги грузчика 1,2 или 3? Или добавить список всех опций и услуг? 2023-04-02_15-13-50.png — Яндекс.Диск

Либо добавлять в заказ как товар через промоакцию по весу товаров, либо использовать модуль “Персональные варианты опций для товара и его вариаций CMS CS-Cart” если необходимо для разных товаров покупателю давать выбор или не давать его выбирать, но заводить условие для товара по умолчанию.

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

Вы неправильно поняли посыл с опциями - Вы заводите опцию “Требуется грузчик” и задаете варианты “Нет, один, два, три, четыре, пять, шесть” и для одного товара настраиваете доступные варианты “Нет, два”, а для другого “Нет, три” потому что в одного не упереть. Или допустим “Нет, два+есть лифт”, “Нет, три, три+лифт” и таким образом на опцию уже под условие выставлять цену клиенту более точечную и то что будет нужен минимум для выполнения заказа.

ВАРИАНТЫ ОПЦИЙ ДЛЯ ТОВАРА И ВАРИАЦИЙ ТОВАРОВ

Модуль расширяет возможности настройки персональных опций для отдельных товаров и его вариаций товаров.

ТОЧЕЧНАЯ НАСТРОЙКА ОПЦИЙ

Некоторые группы товаров предполагают возможность оказания дополнительных услуг: подъем на этаж, сборка, установка и настройка. Эти услуги можно оформить, как отдельные товары, однако удобнее сделать их опциями к товару. В настройках опций можно указать стоимость услуги в твердой денежной сумме или в процентах от стоимости товара.

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

Чтобы упростить работу и уменьшить количество опций, мы создали для вас модуль «Варианты опций для товара или вариаций товара».

ФУНКЦИОНАЛ МОДУЛЯ

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

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

Сделать это предельно просто. В карточке товара появляется новая вкладка – «Опции». Нужно просто перейти в нее, выбрать нужную опцию и установить подходящие для этого товара варианты опций.

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

Возможно, нужно завтра попробовать. Напишите в телеграмм, дам демку

Посмотрите от коллег, скорее всего это то что вам надо Extra Services Add-on

2 лайка

Можно создать два разных способа доставки - с грузчиком и без. И покупатель сможет делать выбор при оформлении заказа, и через админку можно менять способ доставки, ее стоимость. Если услуга универсальная и не зависит от специфики товара, то нет и смысла ее как-то привязывать к товарам.

Надо вывести новое поле профиля для модуля уведомлений. Вот часть кода из модуля (607 строка):
Pastebin

Вот что я добавил:

if (!empty($order['req_source'])) {
$message .= 'Запрос: ' . '<b>' . $order['req_source'] . '</b>' . "\r\n";
}

req_source - уник. код поля профиля, и его значение пустое в уведомлениях, однако в самом заказе значение поля отображается. Возможно что-то упускаю?

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

Функция fn_get_order_info достает это поле из базы? В уведомлениях какой код используете?

Если я правильно понял, этот метод я тоже пробовал и он не выводит ничего:
$message .= 'Запрос: ' . '<b>' . fn_get_order_info($order['req_source']) . '</b>' . "\r\n";

вообще-то

fn_get_order_info($order['order_id'])

и результат вызова - массив (смотрите исходный код)

Коллеги, подскажите решал ли кто то такую проблему.

Есть комбинация товаров сделанная через модуль АБ «Вместе дешевле» например 4 товара со скидкой 5% каждый.
Есть акция для корзины через Промокод еще на 5%.
И 2 из 4х товаров комбинации попадают под нее по бренду, например.

И вот при применении Промокода он применяется на эти 2 товара. И общая скидка на них уже 10% получается.
Что слишком много.

Как сделать, чтобы:

  1. Если на товар в комбинации уже есть скидка, то промокод на него не применялся?
  2. Чтобы на все Комбинации не применялись промокоды?

Ниже правильно написали. И что за уведомление?

если это поле профиля - то это уже не order, а user_info

у вас функция

function fn_sw_telegram_add_discussion_post_post($post_data, $send_notifications)

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

        if (!empty($order['req_source'])) {
        $message .= 'Запрос: ' . '<b>' . $order['req_source'] . '</b>' . "\r\n";
        }  
        // Это тоже не работает
        $message .= 'Запрос: ' . '<b>' . $order_info['req_source'] . '</b>' . "\r\n";
        $message .= 'Запрос: ' . '<b>' . $user_data['req_source'] . '</b>' . "\r\n";
        $message .= 'Запрос: ' . '<b>' . $order['req_source'] . '</b>' . "\r\n";
        $message .= 'Запрос: ' . '<b>' . $product_data_full['req_source'] . '</b>' . "\r\n";
        $message .= 'Запрос: ' . '<b>' . $get_profile['req_source'] . '</b>' . "\r\n";

при этом массив order (как и все остальные) нигде ранее в функции не определен и неинициализирован

@sweetcode ваш код во всеобщее обозрение?

2 лайка

Здравствуйте.

Оригинал функции в модуле выглядит так:

/** Discussion send notice
 */
function fn_sw_telegram_add_discussion_post_post($post_data, $send_notifications)
{

    $tg_rewiew_notification = Registry::get('addons.sw_telegram.tg_rewiev_notification');
    $tg_review_vendor_notification = Registry::get('addons.sw_telegram.tg_review_vendor_notification');

    if (AREA == 'C') {
        $site = Registry::get('config.current_host');

        $post_disqus = __('sw_telegrame_get_new_post_disqus');
        $rating_value_stars = __('sw_telegrame_rating_value_stars');

        $message = $post_disqus . "\r\n";


        $product_id = db_get_field('SELECT object_id FROM ?:discussion WHERE thread_id = ?i', $post_data['thread_id']);

        $product_data = fn_get_product_data($product_id, $_SESSION['auth']);
        $message .= __('product') . ': ' . $product_data['product'] . "\r\n";

        if (!empty($product_data['product_code'])) {
            $message .= __('sku') . ': ' . $product_data['product_code'] . "\r\n";
        }


        if (fn_allowed_for('MULTIVENDOR')) {
            $message .= __('vendor') . ': ' . fn_get_company_name($product_data['company_id']) . "\r\n";
        }

        if (isset($post_data['name'])) {
            $message .= __('first_name') . ': ' . $post_data['name'] . "\r\n";
        }

        if (isset($post_data['rating_value'])) {
            $message .= $rating_value_stars . ' ' . $post_data['rating_value'] . "\r\n";
        }

        if (isset($post_data['message'])) {
            $message .= __('message') . ': ' . $post_data['message'] . "\r\n";
        }

        if (isset($_REQUEST['redirect_url'])) {
            $message .=  __('url') . ': ' . $_SERVER['HTTP_REFERER'] . "\r\n";
        }

        if (isset($post_data['email'])) {
            $message .= __('email_user') . ': ' . $post_data['email_user'] . "\r\n";
        }

        if ($tg_rewiew_notification == "Y") {
            fn_sw_telegram_send_tg('sendMessage', $chat_id = '', $message);
        }

        if (
            fn_allowed_for('MULTIVENDOR')
            && $tg_review_vendor_notification == "Y"
        ) {

            $vendor_chats = fn_sw_telegram_get_vendor_chats($product_data['company_id']);
            if (!empty($vendor_chats)) {
                foreach ($vendor_chats as $vendor_chat_id) {

                    if (empty($vendor_chat_id) || $vendor_chat_id == false) {
                        continue;
                    }

                    fn_sw_telegram_send_tg('sendMessage', trim($vendor_chat_id), $message);
                }
            }
        }
    }
}