Весь товарный учёт клиента ведется в сервисе Мой Склад. Через него же проходит и часть процесса оформления заказа, которая связана с подбором товара и отгрузкой его через одну из курьерских компаний.
Оформление каждой отгрузки вручную — процесс довольно затратный по времени и генерирующий много человеческих ошибок. Поэтому было принято решение полностью автоматизировать создание заказа на отгрузку в курьерских и транспортных компаниях. Начать решили со СДЭКа.
Варианты решений
На рынке есть только одна готовая интеграция Моего Склада со СДЭКом и в целом она удовлетворяла условиям задачи, однако в нашем случае оказалась недостаточно гибкой.
Основа нашей системы — это интернет-магазин на базе сервиса InSales, связанный с Моим Складом через отдельное интеграционное приложение, которое делает большую работу по подготовке и стандартизации всей информации о заказах и товарах, а также в автоматическом режиме решает большую часть возникающих ошибок.
Готовая интеграция работает с Моим Складом напрямую, однако большая часть информации о заказе хранится только в нашем интеграционном сервисе и не передается в Мой Склад за ненадобностью, и эту часть пришлось бы дописывать в любом случае.
Более важный фактор: в перспективе клиенту нужна интеграция с целым рядом курьерских и транспортных компаний и процесс работы с ними должен быть максимально унифицирован. Использование готовых приложений от разных компаний приведет к очень неудобному процессу создания заказов на отгрузку, что усугубит человеческие ошибки.
В итоге приняли решение писать интеграцию своими силами, тем более что основа для неё, интеграционное приложение, у нас уже имеется.
Особенности реализации
Для интеграции со СДЭКом продолжили развивать наше интеграционное приложение. С сервером СДЭКа общаться стало именно оно. Оно же отвечает за передачу всей нужной информации из Моего Склада и обратно в него.
Первая задача — понять в какой именно момент из заказа покупателя создавать заказ на отгрузку в СДЭКе или другой курьерской компании (мы помним, что система должна быть универсальной). Решили для этих целей создать специальные статусы заказа в Моем Складе, и за передачу заказа курьерской компании отвечает статус «Готов к отгрузке».
Наше интеграционное приложение ловит момент изменения заказа и смотрит на два момента: какой статус выставлен у заказа и какой курьерской компанией должен быть отправлен заказ. Если последняя СДЭК — то запускается процесс создания заказа на доставку.
После успешного создания заказа на доставку мы получаем от СДЭКа заполненный бланк накладной, которая должна быть прикреплена к заказу. Ссылку на этот бланк мы записываем в одном из полей заказа в Моем Складе и меняем статус заказа там на «Зарегистрирован перевозчиком». Таким образом кладовщик видит какие из заказов можно отправлять в СДЭК физически.
Если же заказ на доставку не создаётся, наше интеграционное приложение скажет по какой причине это происходит.
Даже при такой степени автоматизации не исключены человеческие ошибки или коррекции. Например, заказ на доставку уже создали, но покупатель в последний момент попросил что-то в заказ добавить или исключить из него. Для таких случаев мы реализовали удобное удаление заказа на доставку из СДЭКа. Нужно просто поменять статус заказа на «Удалить заказ на доставку».
И сразу после удаления статус заказа в Моем Складе поменяется на «Заказ на доставку удален».
При невозможности удаления (например, заказ уже физически отправлен покупателю) на попытку удаления получим другой статус: «Заказ на доставку НЕ удален».
А в нашем интеграционном сервисе сохраняются вся история по заказу во всех связанных с ним системах.
При создании интеграции не обошлось и без проблем. Оказалось, что тестовый сервер СДЭКа, на котором мы отлаживали всю систему, работает не совсем так, как «боевой». Когда у нас всё правильно заработало на тестовом аккаунте и мы решили переключиться в режим «боевой эксплуатации» система просто перестала работать.
Но переписка с техподдержкой СДЭКа и несколько экспериментов позволили понять как именно нам обойти эту проблему. Оказалось, что часть изменений в свою систему программисты СДЭКа внесли на «боевом» сервере, но почему-то не сделали это на тестовом и не успели описать эти особенности в своей документации.
Эффект от проведенных работ
Эффект экономии времени оказался колоссален. То, на что раньше у менеджера уходили десятки минут, теперь делается парой кликов мыши буквально за несколько секунд.
Подобная автоматизация позволяет силами небольшой команды менеджеров масштабироваться до обработки огромного количества заказов не раздувая штат сотрудников.