Главное Авторские колонки Вакансии Вопросы
😼
Выбор
редакции
274 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Prosklad: как мы развиваем аналог 1С в Казахстане

Интегрировали казахстанскую ERP-систему с платежными терминалами iiko, системой r_keeper, и весами. А еще долго боролись с документацией и и помогли компании Prosklad выйти на новых клиентов.
Мнение автора может не совпадать с мнением редакции

Привет! Это «Софториум» — команда из Сибири с хард-подходом к разработке. Мы пишем код с нуля и работаем с легаси-проектами, чтобы помочь компаниям, у которых горят сроки или не хватает специалистов инхаус.

Мы сотрудничали с отечественными SOKOLOV, Nolim, InnTravel, «Неофармом», «Столичками». А с проектом Prosklad укрепились и на рынке Казахстана.


Кемеровские разработчики идут в Казахстан

Prosklad — IT-компания из Алматы, которая помогает бизнесу автоматизировать складской учет. Их главный продукт — ERP-система, которая контролирует товарооборот и показывает статистику продаж. Совсем как наша 1C — только казахстанская.

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

Prosklad ищет новых клиентов

Большая цель Prosklad — проникнуть в максимальное количество отраслей, чтобы выйти на новых клиентов и обороты. Начать клиент решил с ресторанов.

Чтобы их ERP-система стала удобной для общепита, к уже существующей функциональности нужно было подключить:

  1. 4 платежных терминала
  2. Одну онлайн-кассу
  3. r_keeper
  4. iiko
  5. Торговые весы


Каждая интеграция — отдельное приключение, о котором мы подробно расскажем. Располагайтесь поудобнее.

9 месяцев ждали доставку платёжных терминалов из Казахстана

Первой нашей задачей стала интеграция платёжных терминалов с системой Prosklad и казахстанскими банками.

Платёжные терминалы, или POS-терминалы — это устройства для приема к оплате банковских карт. Все мы сталкиваемся с этой штукой хотя бы раз в день: когда идем в супермаркет, покупаем одежду или обедаем в ресторане.

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


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

Сами написали ТЗ

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

В ТЗ должны быть описаны все важные требования к системе: если не обозначить, что там-то должна быть такая-то кнопка, её и не будет. А если не продумать, какие ошибки могут возникнуть в будущем, то позднее система отвалится в любой момент.

Когда специалисты двигаются «на ощупь», они рискуют допустить много ошибок, исправлять которые будет долго и дорого. Поэтому, если у клиента нет ТЗ, мы собираем и прописываем требования самостоятельно


Дополнили документацию на устройства

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


Документация в программировании — это четкие и подробные текстовые материалы, которые объясняют, как работает программный код, библиотека, приложение или система. Это своего рода «инструкция по эксплуатации» для разработчиков, тестировщиков и других специалистов.

Зачем вообще это делать? Представьте: на проекте работает 10 программистов. Чтобы каждому досконально разобраться в коде, нащупать его слабые места и не допустить ошибок, нужно потратить десятки часов. Проще один раз разобраться и отдать готовую инструкцию всей команде — чтобы каждый сотрудник приступил к основной задаче сразу.

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

Неделями ждали ответа от банков

Два месяца переговоров и согласований — и мы завели платежи в систему. Почему так долго?

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

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

Итог: два месяца переговоров и согласований — и мы завели платежи в систему. Подключили к Forte Bank, Halyk Bank и Jusan Bank 4 POS-терминала:

  1. Forte Bank — Verifone VX 675;
  2. Forte Bank — Verifone 520X;
  3. Halyk Bank — Ingenico ICT220;
  4. Jusan Bank — Pax A930.


Интегрировали стационарную онлайн-кассу PAX Е500

Стационарная касса — звучит как что-то ультрамассивное. Но на самом деле, это такой планшет на Android с надстройкой в виде платёжного терминала и принтера для чеков. Касса не очень большая, но и в одной руке её не удержишь. Выглядит она так:


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

Документация, относящаяся к кассе, не имела ничего общего с реальностью.

Мобильное приложение для кассового оборудования можно было интегрировать только с 3-мя моделями платежных терминалов из 4-х. Пока мы пытались адаптировать программное обеспечение терминала-аутсайдера, выяснилось, что между технической документацией и фактической архитектурой кассы есть расхождения. Внутрянка кассы написана на Flutter, сама интеграция — на Kotlin, а документация по интеграции и примеры использования библиотек — на Java.

Трудности перевода познавали втроём: чтобы понять логику работы библиотек, мы задавали вопросы клиенту, а он — поставщику терминалов.


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

Не было возможности работать с оборудованием напрямую. Касса, которую нам прислали, была неправильно настроена, а тестовая карта, идущая в комплекте, не работала. Если с терминалами банки пошли нам навстречу, и помогли настроить их удалённо, то с кассой отказались делать это. Но решение всё-таки нашли — клиент заказал ещё одну кассу к себе в офис и подключился к нам удалённо через AnyDesk.

Оказалось, что доступ к репозиторию был временным. Репозиторий — «место», где хранится код для совместной работы. Когда нам понадобилось обратиться к нему, мы обнаружили, что срок действия доступа истёк. Мы долго запрашивали его снова, но безрезультатно. Это затруднило перенос наших наработок на тестовый стенд клиента.

Кассу всё-таки настроили и перешли к внедрению систем автоматизации общепита. Да, нам было страшно. Но мы это сделали.

Интегрировали терминалы с iiko и r_keeper

Iiko и r_keeper — это системы автоматизации работы ресторанов. Через них официанты принимают заказы и отдают их на кухню. Или, например, бронируют столики для гостей. Как уже говорили выше, Prosklad заказал у нас интеграции с ними, чтобы охватить новый сегмент рынка.

Работа с r_keeper и iiko проходила по похожему сценарию: 10 строчек ТЗ, ничего не понятно. Здесь мы тоже изучили предметную часть и расширили документацию.

Сложности возникли, когда нужно было использовать лицензионное ПО. Пришлось связаться с дилерами r_keeper и iiko, чтобы они предоставили тестовые лицензии для работы. С другой стороны — мы пошли просить клиента, чтобы он выделил нам отдельный сервер, на который мы могли бы установить софт. Достучались и до тех, и до тех.

Выписали десятикилограммовые весы из Новосибирска

Речь о тех самых весах, которые стоят в супермаркетах. Их киллерфича — обращать граммы в рубли: ты кладёшь на них товар, а они показывают, сколько он стоит.

Нам нужно было интегрировать с Prosklad три модели весов: ШТРИХ-ПРИНТ М, Rongta RLS 1000/1100 и Масса-К. У каждой модели — свои драйвера, команды и системы измерения. Поэтому нам нужно было реализовать сервис для интеграции, который бы обрабатывал разные вводные, приводил их к общему знаменателю и выводил бы в интерфейс Prosklad.

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

Повторить трюк с удалённым подключением с весами было нельзя, поэтому каждую из моделей клиент прислал к нам в офис. Но чтобы не тратить кучу ресурсов на доставку из Казахстана, проджект-менеджер Prosklad отыскала точно такое же оборудование в Новосибирске и сэкономила на логистике. Мелочь, а приятно.

Фанфакт о весах: они попали в кадр, когда местное телевидение снимало сюжет про нашу команду, — вот, посмотрите:


И всё это делали по T&M. Вот почему

На самом деле, цель благая — не разорить клиента. Если вы дочитали до этого момента, то поняли, сколько простоев здесь было. Модель оплаты Time&Materials (T&M) как раз и предполагает, что точный объём работ на проекте сложно определить, поэтому клиент оплачивает время, затраченное специалистами, постфактум: сколько часов отработали — на такую сумму и получили счет.

Именно благодаря оплате по T&M клиент не платил за недели и месяцы простоев нашей команды, пока терминалы шли из Казахстана, а банки согласовывали интеграции. Оплачивались только часы активной работы — когда мы уточняли задачи, исследовали и кодили.

Почему ещё на этом проекте была выгодна оплата по T&M

Причина 1. Помните, что было с ТЗ? Во время работы у нас то и дело появлялись новые вводные по проекту, которые на старте мы просто не могли предусмотреть. На фиксе пришлось бы пересматривать бюджет и заново согласовывать смету — на T&M мы фиксировали часы и получали оплату за выполненные задачи.

Причина 2. На T&M нет скрытых платежей: клиент не рискует столкнуться с неожиданными тратами, так как оплачивается только фактически выполненная работа.

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

Отзыв

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

Директор ТОО Вайпоинг Дамира Оразалиева, Prosklad

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

К слову, общительны мы не только на проектах. Недавно завели тг-канал, чтобы рассказывать про ребрендинг, новое позиционирование и работу с топами рынка. Подписывайтесь — будем рады с вами поболтать!

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

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.