Николай Савин

Николай Савин

С нами с 06 июня 2015; Место в рейтинге пользователей: #5
Николай Савин
24 мая 2017, 12:14
0
Здравствуйте. Уведомление о чем?
Николай Савин
17 мая 2017, 06:06
-2
Здравствуйте. Специализируюсь на интеграции MODX и различных CRM.
Готов и Вам помочь.
Стоимость работы 5 тыс. руб.
Срок — неделя.
Если предложение устраивает все контактные данные можете посмотреть в профиле.
Николай Савин
15 мая 2017, 14:02
0
Спасибо за сигнал. Я использовал заготовку от modsendpulse. Видимо где то забыл заменить адрес каталога.
Николай Савин
15 мая 2017, 06:58
0
Здравствуйте. Если заказ еще свободен с удовольствием поработаю с вами.
Мои контакты в профиле
Николай Савин
10 мая 2017, 20:35
0
Здравствуйте. Готов обсудить.
Все контакты в профиле.
Николай Савин
10 мая 2017, 07:18
0
5000 дорого видимо. Хотя дешевле никто предложить не смог.
Николай Савин
06 мая 2017, 20:42
+2
Готова интеграция с обсуждаемой RetailCRM
Николай Савин
06 мая 2017, 09:10
+1
<?php
if (!$RetailCrm = $modx->getService('RetailCrm','modretailcrm',MODX_CORE_PATH.'components/modretailcrm/model/modretailcrm/')) {
    $modx->log(1, '[RetailCrm] - Not found class RetailCrm');
    return;
} 
$site = $modx->getOption('modretailcrm_siteCode');
/** @var modX $modx */
switch ($modx->event->name) {
   
    case 'msOnCreateOrder':
        $Address = $msOrder->getOne('Address');
        $orderData = array();
        $orderData['customer']['externalId'] = $Address->get('user_id');
        //Отправляем данные клиента
        if ($profile = $modx->getObject('modUserProfile', $Address->get('user_id'))) {
            $customer = array();
            $customer['externalId'] =  $Address->get('user_id');
            $customer['firstName'] = $profile->fullname;
            $customer['email'] = $profile->email;
            if(!empty($profile->phone)){
                $customer['phones'][]['number'] = $profile->phone;
            }
            if(!empty($profile->mobilephone)){
                $customer['phones'][]['number'] = $profile->mobilephone;
            }
            $response = $RetailCrm->customersCreate($customer, $site);  
        }
        
        $orderData['externalId'] = $Address->get('id');
        $orderData['firstName'] = $Address->get('receiver');
        $orderData['phone'] = $Address->get('phone');
        $orderData['email'] = $Address->get('email');
        
        $Products = $msOrder->getMany('Products');
        
        $items = array();
        $key = 0;
        foreach ($Products as $pr) {
            $options = $pr->toArray();
            $orderData['items'][$key]['initialPrice'] = $pr->get('cost');
            $orderData['items'][$key]['purchasePrice'] = $pr->get('cost');
            $orderData['items'][$key]['productName'] = $pr->get('name');
            $orderData['items'][$key]['quantity'] = $pr->get('count');
            $orderData['items'][$key]['offer']['externalId'] = $pr->get('id');
            $key ++;
		}
        //Указываем какие поля заполняются в корзине
        $fields = array(
            'index' => 'Индекс', 
            'country' => 'Страна', 
            'region' => 'Регион', 
            'city' => 'Город', 
            'metro' => 'Метро', 
            'street' => 'Улица', 
            'building' => 'Дом', 
            'room' => 'Квартира\офис',
            'comment' => 'Комментарий к адресу'
        );
        $address = '';
        foreach($fields as $field=>$comment){
            if(!empty($Address->get($field))){
                $address .= $comment.':'.$Address->get($field).' ';
                $orderData['delivery']['address'][$field] = $Address->get($field);
            }
        }
        $orderData['delivery']['address']['text'] = $address;
//Оплата и доставка довольно индивидуальны
//Если надо заполнять данные о сервисе и методе доставки заполняем поля раздела order[delivery] 
	//Данные об оплате заполняются в order[paymentType] order[paymentStatus] order[paymentDetail]
        $response = $RetailCrm->ordersCreate($orderData, $site);
      
        break;
}
Николай Савин
05 мая 2017, 15:19
-1
Здравствуйте. Если стоимость обсуждаема — готов обсудить. Навскидку 5000 руб.
Контакты в профиле.
Николай Савин
04 мая 2017, 12:26
+2
По переходу это совсем просто. Добавить GET параметр в адресную строку, через JS отловить его и запустить событие $.fancybox.open (или как там по документации)
По клику тоже думаю несложно. Все так же через JS. Отловить событие вызова fancybox (в документации есть события), и через callback из документации добавить нужный параметр в строку. Id можно отловить через data атрибуты
Николай Савин
24 апреля 2017, 14:53
0
Имя, Email и ссылка на фото или на профиль сохраняются в поле properties самого комментария.
Далее при помощи записанного Email можно определять автора комментария для каких либо действий в будущем.
Ну а задача проекта, насколько я понимаю просто скрыть форму комментрирования и показывать ее, тем кто в сессию добавил данные о себе из соц сети.
Николай Савин
24 апреля 2017, 00:35
+1
Интересное решение. Пока не знаю где применить, но жопой чую уверен, что пригодится и не раз.
P.S. Ссылка на Git не работает.
Николай Савин
24 апреля 2017, 00:31
0
Лучшее спасибо — ваш плюсик в рейтинге статьи.
Шучу — деньги конечно. Но плюсик тоже приятно.
Николай Савин
22 апреля 2017, 18:32
+1
Ну может. Я не вникал и аналогов не искал.
Появилась задача — сделал — рассказал как.
Спасибо за наводку.
Николай Савин
22 апреля 2017, 18:19
-3
Нет.
1. Там старая версия Api
2. Там все равно нужно координаты указывать в TV
Николай Савин
19 апреля 2017, 20:29
+9
Я делал интеграцию для конкретного интернет-магазина.
При создании заказа — данные отправляются в CRM. Там менеджер уже видит всю информацию по заказчику и товарным позициям. Может позвонить, уточнить, подкорректировать карточку заказа и карточку клиента. Там же можно управлять позициями и видеть остатки на складе.
Там же можно оформить заказ на склад, оформить дозаказ недостающего товара.
К примеру можно объединить заказ с другими. Система автоматически показывает совпадения по email или номеру телефона. Можно управлять системой лояльности и бонусной системой. В общем нормальная такая система управления взаимоотношениями с клиентом.

При онлайн оплате на сайте — данный факт так же фиксируется и отправляется в CRM.
Я честно говоря данную CRM впервые вижу и не знаю, насколько она популярна и востребована.
API мне понравился. Очень детально документировано все + примеры. Есть какие то модули готовые, но мне было проще и интереснее разобраться именно через API, дабы знать возможности системы.

Посмотрим в этой теме, если будет реальный интерес — попробую собрать пакет.
Николай Савин
19 апреля 2017, 18:58
2
+6
Интернет-магазин — это по сути онлайн-витрина, а не средство управления складом, взаимоотношениями с клиентами и прочим.
Для ваших целей Вам нужно использовать CRM систему. А конкретно — RetailCRM. Там вы можете делать уже что угодно.
Данная система прекрасно интегрируется с MODX через API.
Modx передает первоначальный заказ, и профиль пользователя, в сам магазин даже заходить не надо для обработки заказа.
А дальше менеджер уже в CRM, где ему положено находиться обрабатывает заказ, меняет позиции, управляет доставкой и оплатой, передает в ответственные отделы и так далее.
Николай Савин
18 апреля 2017, 21:15
0
Публикуете форму на странице, делаете ее скрытой через CSS.
<div class="hiddenForm" style="display:none>
	<form id="myForm"></form>
</div>
Далее в любом месте на этой же странице публикуем ссылку, в которой ссылаемся на данную форму. Остальное fancybox сделает сам.
<a href="#myForm" class=«fancybox>Открыть форму

Если вы хотите вызвать форму, которой нет на странице — создаете пустую страницу, там выводите форму.
Далее в ссылке просто ссылаетесь на нее
<a href=»formpage.html" class=«fancybox>Открыть форму