Идаже
мы автоматизируем бизнес
мы это сделали

Битрикс24
Учет поступления платежей и задолженности клиентов

Учет частичной оплаты от клиентов и состояния взаиморасчетов с помощью смарт-процессов и бизнес-процессов Битрикс24
Штатный функционал Битрикс24 не позволяет вести учет поступлений частичной оплаты, и это не устраивает многих наших клиентов. Есть возможность выставлять несколько счетов по одной сделке: например, счет на предоплату и счет на финальный расчет. Но отслеживать остаток задолженности этот подход тоже не позволяет.

В этой статье мы покажем как реализовать учет отдельных платежей по сделке и автоматически рассчитывать остаток задолженности. Для этого мы используем смарт-процесс и бизнес-процессы. Поехали.
Для реализации данного подхода вам потребуется "Профессиональный" тариф Битрикс24, поскольку возможность использования бизнес-процессов на младших тарифах отсутствует.
Общая логика
При поступлении оплаты менеджер или бухгалтер сможет добавить новый платеж, привязав его к нужной сделке. Битрикс24 автоматически суммирует все поступившие по сделке платежи и запишет общую сумму поступлений в поле сделки "Оплачено". Разница между суммой сделки и поступившей оплатой отразиться в поле "Задолженность". Если сумма сделки оплачена полностью, бизнес-процесс переведет сделку на этап "Оплата поступила". А в аналитике появится отчет, отражающий задолженность клиентов.
Смарт-процесс и поля в сделке
Для хранения данных об общей сумме поступивших платежей и об остатке задолженности добавляем в сделке поля "Оплачено" и "Задолженность" с типом "Деньги":
Создаем смарт-процесс "Оплата". Для этого переходим в левом меню в CRM, затем в верхнем меню Настройки > Список смарт-процессов, кнопка "Создать". Выбираем вариант "С чистого листа".

На вкладке "Основные настройки" придумываем название смарт-процесса, например, "Оплата", и отмечаем галочками пункты: "Использовать в смарт-процессе свои стадии и канбан" и "Использовать в смарт-процессе дизайнер бизнес-процессов".


На вкладке "Смарт-процесс" отмечаем только пункт "Клиент". Это позволит нам добавлять в карточку оплаты ссылку на контакт или компанию, от которой поступила оплата:
На вкладке "Связи" включаем "Привязать к этому смарт-процессу", выбираем в поле выбора объектов "Сделка", добавляем галку в пункте "Добавить список со связанными элементами в карточку" и в появившемся поле также добавляем "Сделка".
Эти настройки означают, что каждая создаваемая оплата может быть привязана к определенной сделке. Для этого в карточке оплаты появится поле, где будет храниться ссылка на соответствующую сделку.

Галочка "Добавить список..." работает следующим образом: в сделке добавится вкладка с названием, соответствующим названию смарт-процесса. В нашем случае - "Оплата". И в этой вкладке можно будет добавлять новые платежи, которые будут автоматически привязываться к сделке:
Вкладки "Привязка к элементам" и "Показ вне CRM" пропускаем: в данной логике работы эти настройки нас не интересуют.
Теперь создадим необходимые поля в карточке смарт-процесса "Оплата". Выберите в верхнем меню раздела CRM пункт Смарт-процессы > Оплата. Если штатные поля "Сделка" и "Клиент" скрыты, выберите их для отображения. Создайте пользовательские поля "Сумма" (тип "Деньги"), "Дата оплаты" и "ID сделки" (тип "Число").
Поле "ID сделки" мы будем использовать в бизнес-процессе, чтобы выбрать все оплаты, привязанные именно к нужной сделке. Дело в том, что штатное поле "Сделка", которое также содержит ID сделки, к сожалению, не может быть использовано для фильтрации в активити "Получить информацию об элементе CRM". Поэтому мы добавляем поле с типом число и будем автоматически помещать туда ID сделки при сохранении оплаты.
Нужно также настроить воронку Оплата. Мы выбрали подход где сначала оплата создается в статусе "Черновик" и может быть перемещена на успешную стадию "Оплата поступила" или на негативную стадию "Отмена". Отмененные платежи не будут учитываться в сумме поступлений.
Бизнес-процессы расчета поступившей оплаты и задолженности по сделке
Теперь нам нужно создать два бизнес-процесса:
1
процесс, запускающийся при добавлении / изменении оплаты;
2
процесс по сделке, который будет собирать общую сумму поступлений и рассчитывать задолженность.
1. Процесс по смарт-процессу "Оплата"
Для создания бизнес-процесса по смарт-процессу "Оплата" идем в верхнем меню раздела CRM в Настройки > Настройки CRM. Выбираем вкладку "Роботы и бизнес-процессы" и пункт "Бизнес-процессы":
Внизу открывшегося списка нужно найти пункт с заголовком соответствующим названию нашего смарт-процесса - в нашем случае это "Оплата" - и нажать "Добавить шаблон".

Процесс должен запускаться как при добавлении новой оплаты, так и при изменении, поэтому отмечаем оба пункта галочками:
Общая логика процесса: сначала мы получим поля сделки, к которой привязана оплата; запишем в карточку оплаты клиента из сделки и ID сделки; и затем запустим бизнес-процесс по сделке, который посчитает общую сумму платежей и остаток задолженности.

Вот как будет выглядеть бизнес-процесс после добавления в него всех необходимых шагов:
Получить информацию о привязанном элементе - речь идет о получении полей сделки, привязанной к оплате:
Теперь запишем в карточку оплаты компанию (и/или контакт из сделки) и ID сделки:
При этом в поле ID сделки мы просто передаем значение из поля оплаты "Сделка", а компанию получаем из результатов предыдущей активити:
Теперь запускаем бизнес-процесс для сделки (только сначала его нужно будет создать, поэтому возможно к этому шагу придется вернуться чуть позже). Чтобы Битрикс24 понял для какой сделки нужно запустить процесс, в поле "ID документа" передаем значение из поле оплаты "Сделка".
Перейдем к настройке процесса, который запускается по сделке.
2. Процесс по сделке
Возвращаемся в "Бизнес-процессы" и добавляем новый шаблон для сделок. Этот процесс тоже следует запускать и при создании и при изменении сделки: если сумма сделки измениться, значение поля "Задолженность" должна быть пересчитана.
Кроме этого, в этом процессе нам необходимо будет суммировать все платежи по сделке. Для этого потребуется переменная, которую нужно добавить на вкладке "Переменные". В качестве типа переменной выбираем "Число", придумываем название переменной и идентификатор на латинице, в качестве значения по умолчанию ставим 0.
Общая логика процесса: сначала нужно получить суммы всех платежей по данной сделке, затем пройтись по ним и суммировать, получив общую сумму платежей в нашей переменной, и наконец записать получившуюся сумму в поле сделки "Оплачено", а разницу между суммой сделки и суммой оплат - в поле "Задолженность". Если задолженность стала равна нулю, нужно изменить статус сделки на "Оплата поступила".

Вот как будет выглядеть бизнес-процесс после добавления в него всех необходимых шагов:
На первом шаге получим все суммы оплат, отобрав те элементы смарт-процесса "Оплата", в которых поле "ID сделки" содержит ID сделки, по которой запущен бизнес-процесс:
Результат такой активити будет содержать массив всех сумм оплат по данной сделке. Теперь мы можем использовать активити "Итератор", чтобы пройтись по этим суммам и сложить их значения:
Например, если по данной сделке поступило три платежа, итератор (точнее все активити, расположенные внутри блока "Итаратор") сработает три раза. И каждый раз в дополнительных результатах нам будет доступна сумма одной из трех оплат.

Поэтому, внутри блока "Итаратор" мы добавляем активити "Изменение переменных", где к имеющемуся значению нашей переменной добавляем каждую следующую сумму оплаты:
Всего оплачено - это наша переменная. А в левом поле содержится операция сложения: переменная "Всего оплачено" плюс сумма из очередного элемента смарт-процесса "Оплата", которую предоставил нам итератор.

Вручную вписывать никаких названий переменных и кодов полей не нужно. Для того, чтобы в левое поле добавить переменную "Всего оплачено", нажимаем на три точки и выбираем нужную переменную:
А для подстановки суммы очередной оплаты, снова нажимаем на три точки и в пункте "Дополнительные результаты" выбираем значение итератора:
После того как итератор отработал, в переменной будет содержаться полная сумма поступивших платежей по сделке. Теперь нужно записать эту сумму в поле сделки "Оплачено", а разницу с суммой сделки - в поле "Задолженность":
И последний штрих. Если сумма платежей больше или равно сумме сделки, это значит, что оплата поступила полностью и можно переводить сделку на соответствующую стадию. Для этого добавляем конструкцию "Условие", где в одной из веток - если оплата поступила полностью - будем изменять стадию сделки на "Оплата поступила". Вторую ветку можно не трогать.
Вот так настраиваем условие:
И изменяем статус, если условие сработало:
Итоги
В результате, мы получили механизм, который позволяет добавлять поступления платежей вручную или через кастомную интеграцию с 1С или онлайн-банкингом. Сделки, оплаченные полностью, будут автоматически переводиться на стадию "Оплата поступила". А перечень сделок, по которым имеется задолженность, может быть выведен в отчет.

  • Если у Вас есть вопросы,
  • Если Вы задумываетесь: «А подойдет ли это мне?»,
  • Если в Вашем бизнесе Вы учитываете платежи и взаиморассчеты иначе,
Напишите нам!

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

Мы понимаем ценность Вашего бизнеса и работаем на результат
Сергей Березовский
Человек творящий