пятница, 15 августа 2014 г.

GPS и торговые представители



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

Про отслеживание перемещений агентов мы не раз писали (например, вот, вот и вот), но каждый новый приходящий к нам клиент продолжает про него дотошно спрашивать, вникая во всякие тонкости. Из чего мы делаем вывод, что эта тема не теряет актуальности.

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

Почти любое современное мобильное устройство с OS Android оснащено GPS-приемником. Но также у устройства есть опция ручного включения и выключения этого приемника. Выключить приемник, а потом сказать, что там, где ты был, не было связи – лазейка для лентяя? Да.
Поэтому во всех наших сборках, начиная с июля этого года, добавляется новая фишка – автоматический запрет на создание документов, если функция фиксации GPS-координат отключена.


Предупреждая вопросы – конечно же, программа проверяет не доступность спутников, а именно состояние кнопки «вкл/выкл GPS», и срабатывает именно на «выкл». Так что путаницы между «я отключил приемник» и «не было сигнала, честное слово» произойти не может.

По просьбам особо недоверчивых клиентов мы еще отрезали возможность для агента прикинуться дурачком – мол, оно само выключилось, а я не знал, как включить: при каждой попытке создать документ программа сама выводит на экран нужное окно настроек и настойчиво предлагает нажать кнопочку «вкл».


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

В общем, задача агента – всего лишь держать GPS-приемник все время включенным, а программу Napolеon на планшете – запущенной, пусть даже свернутой или в спящем режиме. Тогда руководитель в своем приложении на ПК будет получать про него просто массу информации.

Кстати, о приложении для ПК. Мы его между собой называем РМР – «рабочее место руководителя». Им мы отдельно гордимся и знаем, что наш АСМТ «Наполеон» часто выбирают в том числе из-за него. В том числе потому, что всяких недобросовестных лентяев оно позволяет вычислять еще в самом начале их негодяйства – а предотвратить проблему, конечно же, всегда проще, чем потом решать. В нужный момент и простого «внушения» достаточно.

Так вот. В РМР руководитель видит не только всю информацию о перемещениях агента с точностью до ста метров, но также четкий тайминг его действий – все остановки, их длительность, время и координаты создания каждого документа, сколько раз за день включали и выключали приложение или весь планшет. Даже уровень заряда КПК для руководителя всегда прозрачен, так что отовраться, что батарейка села, агент тоже не сможет. Как и покататься ночью по личным делам, а утром выставить счет за ГСМ – трек-то вот он, с точностью до минуты и километра.


Ну и о погрешностях сети, из-за которых могут быть сбои в слежении, теперь не надо верить на слово. Уровень сигнала и прочие сбои можно посмотреть все в том же РМР в закладке «лог».

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

среда, 13 августа 2014 г.

«Синхронно» значит «вовремя»



Сегодня поговорим о синхронизации, то есть о передаче информации с КПК торгового представителя на сервер – и, соответственно, менеджеру в приложение и на склад для формирования поставок.

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

Между прочим, видимо, не все наши коллеги осознают, насколько важно организовать процесс синхронизации. Видели мы недавно систему, в которой вся синхронизация представлена двумя кнопками: «Загрузить» и «Выгрузить». Да-да, всю базу целиком, каждый раз, как нужно передать хоть строчку, хоть бит информации. А если связь плохая? А если агент наделал фоточек на сто мегабайт? Честно говоря, не знаем, как их клиенты справляются.

В общем, решили мы поделиться со всеми, кому интересно, своими наработками.

По сути, какая информация передается при синхронизации?
Агент посылает на сервер следующее:
– все основные жизненно важные документы: оформленные заявки, продажи, визиты, съем остатков, списки выполненных задач, информация о возврате товара;
– все остальные документы, менее срочные, но тоже нужные: результаты разного рода мониторингов и анкетирования, фотографии из торговых точек,
– контрольная информация: о маршруте торгового представителя, километраже, о его рабочем времени и времени простоя.
Помимо этого, с сервера агент также получает важное:
– информация о долгах и просрочках всех контрагентов;
– данные по прайсу, количество товаров на складе по всем позициям (а оно может меняться по несколько раз в день);
– актуальные данные по скидкам и акциям на определенные товары;
– стоп-лист, то есть с какими контрагентами на данный момент не работать;
– рабочие планы, маршруты, разнарядки, которые ему посылает руководитель;
– какие-то срочные сообщения: о собраниях, документах, чем-то еще, о чем может быть менеджеру понадобится срочно сообщить.

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

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


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

«Очистить базу при приеме» – кнопка, которая «подчищает» память приложения.

«Основные данные» – то, что приходит на КПК с сервера: прайс-лист, список контрагентов, сообщения и задачи от менеджера (если есть), бланки анкет и мониторингов (если есть)

«Остатки >0» – в прайс-лист придут только те товарные позиции, остаток которых на складе ненулевой.

«Документы» – то, что агент передает с КПК на сервер: заявки, визиты, съем остатков, заполненные анкеты и т.д.

«Фотоотчеты» – все фотографии, которые агент сделал в торговых точках. Вместе с документами они не передаются для экономии трафика.

«Презентация» – фотографии товара с сервера для электронного «презентера» на КПК.

«Отгрузки и долги» – тоже с сервера: информация о задолженностях контрагентов и об отгрузках товара.

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

Перед синхронизацией агент выставляет и снимает галочки во всех пунктах – в зависимости от того, какой кусок информации ему надо передать/получить. Противники ручного труда, уверенные в скорости и качестве интернет-соединения, могут выставить любое количество галочек по умолчанию и синхронизироваться автоматически, одной кнопкой.

Но это, так сказать, только видимая часть синхронизации. А есть еще невидимая, то есть фоновая. Вот ее вручную совершать не надо, она просто есть. Фоном у нас передается информация о перемещениях агента (то есть трек), о его действиях (когда какие документы составлены – переданы) и лог приложения – то есть когда приложение было включено, выключено, когда не было связи, когда был отключен сам аппарат. Про контроль перемещений и действий торговых представителей мы много писали, знаем, что многих наших клиентов эта тема берет за живое.

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

Потому что, во-первых, тогда надо усложнять структуру самого документа «Заявка». Как минимум вводить для него статусы «Черновик» и «Готов к отправке». Чтобы полузаполненные заявки не уходили на сервер. И менять эти статусы придется вручную, для надежности. То есть никакой экономии времени и действий в рабочем процессе мы особо не получаем.

Во-вторых, даже если документ готов к отправке – у нас нет стопроцентной гарантии, что он немедленно отправится. Глюкнул КПК, глюкнула сеть, просто слабый сигнал, еще что-то – и вот вам сбой, документ никуда не ушел. А агенту не придет в голову проверить – синхронизация-то фоновая, его участия не требует. Вот и окажется, что документ может опоздать к месту назначения на несколько часов, а то и на день. А в торговом деле это может быть очень критичный срок. Если же заставлять агента каждый раз проверять, отправлен ли документ – то смысл фоновой синхронизации? Никакого, одни тревоги и лишняя суета.

Заявка – слишком важный документ, лучше потратить немного времени и усилий, чтобы убедиться, что с ним все в порядке. А чтобы свести эти усилия к минимуму, мы ко всем важным документам прикрутили собственные кнопки отправки на сервер в один клик. Составил документ – нажал кнопку «отправить» – тут же убедился, что документ отправлен.
  


Ну вот, что знали – рассказали. Очень ждем ваших мнений и пожеланий.