Мы уже рассказывали об архитектуре внешних систем, формирующих хостинг-инфраструктуру нашего проекта 1cloud, однако в этом материале не раскрыт важный для бизнеса вопрос организации процесса приема платежей и формирования отчетности. Сегодня мы восполним этот пробел.
Что-то пошло не так
Как часто бывает в случае новых проектов, события в реальной жизни развиваются совсем не так, как это задумывалось изначально. В ходе работы над проектом 1cloud мы столкнулись с целым рядом сюрпризов, повлиявших в том числе и на организацию бухгалтерских задач.
Например, мы предполагали, что основную массу клиентов составят физические лица — и, соответственно, ориентировались на удовлетворение потребностей именно этого сегмента аудитории в первую очередь. На деле же оказалось, что наши услуги востребованы и у юридических лиц — число заказчиков-компаний стало расти, что привело к определенным проблемам. Нам приходилось «обрабатывать» таких клиентов в ручном режиме (прием платежей, закрытие периодов).
Со временем объём такой ручной работы превысил все разумные пороги и стал отнимать очень много времени. Нам ничего не оставалось, кроме как приступить к автоматизации этой задачи.
Автоматизация проведения платежей
К этому моменту мы осуществили редизайн внешнего сайта и хостинговой панели администратора (этому процессу посвящен отдельный топик). В ее новой версии был облегчен процесс формирования счетов — пользователю необходимо было зайти в панель управления, указать реквизиты юрлица и нажать кнопку для формирования счета на оплату по безналичному расчету.
Счет выглядит вот так:
После сохранения он доступен в раздел биллинга (там же показывается статус оплаты счета):
После оплаты счета деньги поступают на расчетный счет 1cloud, и мы видим их только через банк-клиент, откуда он попадает в 1С. После этого начинается автоматизация — по расиписанию запускается обработчик 1С, который смотрит, какие поступившие платежи еще не синхронизированы с панелью управления (для каждой операции пополнения счета создается регистр сведений с булевым значением) и по ним формирует POST-запрос к API панели управления. В теле этого запроса передается XML, содержащий подробные сведения о платежи и открытый ключ валидации операции.
На стороне 1cloud этот запрос обрабатывается, по аналогичным правилам формируется открытый ключ валидации (его система сравнивает с переданным в запросе, в случае несовпадения возвращается ошибка 500 — для простоты мы используем HTTP-коды). Если запись о данной операции (транзакции) отсутствует в базе данных, то создается новая операция, привязанная к выставленному счету, хранящемуся в базе. В том случае, если запись о транзакции уже существует, то сервер отдает код ошибки 404.
Формирование актов для юрлиц
Юрлицам необходимо предоставлять отчетные документы об оказанных услугах — акты. Для этого первого числа каждого месяца 1C обращается к API панели управления за данными биллинга за предыдущий месяц. В ответ на данный запрос отдается информация по затратам на инфраструктуру каждого клиента, который совершал оплату по безналичному расчету (или у которого есть незакрытые счета — оплата по ним поступила, но не вся оплаченная сумма учтена в актах). Строки акта разбиваются по остаткам от каждого счета.
Затем на основе этих данных формируются сами акты выполненных работ, они рассылаются клиентам по email, а их реквизиты передаются обратно в панель управления в виде отдельного POST-запроса.
Само собой, в панели управления осуществляется валидация открытого ключа — если он корректен, то к оплаченным счетам будут сформированы акты. Если счет полностью «закрыт» актами, он переводится в состояние Closed.
Что это нам дало
Данная автоматизация позволила компании решить целый ряд задач:
- Теперь нам не приходится отдельно отслеживать поступление денег от клиентов через банк-клиент.
- Ускорился процесс зачисления денег на расчетный счет клиента в системе хостинга.
- Нет необходимости вручную формировать акты — это разгрузило технических специалистов, которые ранее вынуждены были «выгружать» данные биллинга для бухгалтеров, рассылавших эти акты клиентам вручную.
- Клиент теперь всегда видит статус оплаты своего счета, а также может легко получить информацию о том, какая сумма уже учтена в актах выполненных работ.
- Стало возможным получение дубликата акта прямо из панели управления.
Итоги
Несмотря на то, что в ходе проекта по автоматизации бухгалтерских задач мы не совершили никакой технологической революции, это усовершенствование позволило избавиться от непрофильной для компании работы (и высвободить неэффективно тратившиеся ресурсы для решения более важных задач, а также повысить удобство работы с панелью управления для клиентов.
Теперь клиенты-юрлица могут видеть полную информацию о состоянии счета и получать копии бухгалтерских документов для своих нужд прямо из браузера — первоначально все эти задачи решались в ручном режиме, что стало следствием очевидного промаха в планировании, последствия которого пришлось исправлять на ходу.