CRM роботы 2.0 + AI (300+ роботов)

Рассчитать стоимость неполного периода услуги

Робот «Рассчитать стоимость неполного периода услуги» вычисляет часть переданного тарифа по фактическим календарным дням и явно выбранным границам периода.

Настройки робота «Рассчитать стоимость неполного периода услуги» в Битрикс24

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

Для кого и какую задачу решает

Администратору расчётов услуг и менеджеру, который согласует стоимость фактических дней внутри полного оплачиваемого периода.

Фраза «за половину месяца» неоднозначна: важны даты, включение последнего дня и округление денег. Робот делает эти правила явными и возвращает учтённые дни вместе с суммой. Банковские соглашения вроде 30/360 автоматически не предполагаются.

Параметры и подготовка

Поле Как заполнить
Единая валюта, код из трех латинских букв (CURRENCY) Обязательное поле
Число дробных знаков: 0–6 (SCALE) Обязательное поле
Тариф полного периода (FULL_AMOUNT) Обязательное поле
Начало полного периода (PERIOD_START) Обязательное поле
Конец полного периода (PERIOD_END) Обязательное поле
Начало фактического периода (ACTIVE_START) Обязательное поле
Конец фактического периода (ACTIVE_END) Обязательное поле
База дней (DAY_BASIS) Обязательное поле. Фактические календарные дни (actual)
Границы периода (BOUNDARY) Обязательное поле. Конец не включен [start,end) (half_open); Обе даты включены (inclusive_dates)
Выход за полный период (OUTSIDE_POLICY) Обязательное поле. Отклонить (reject); Взять пересечение (clip)
Округление (ROUNDING) Обязательное поле. Только точная сумма (exact); Ближайшее, половина вверх (half_up); Вниз (down); Вверх (up)

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

Как использовать

  1. Укажите тариф полного периода, валюту и SCALE. Заполните даты полного и фактического периодов строго YYYY-MM-DD, без времени.
  2. Выберите DAY_BASIS=actual. Для BOUNDARY задайте half_open, если конец не включён, либо inclusive_dates для включения обеих дат.
  3. Явно выберите OUTSIDE_POLICY: reject отклоняет выход за полный период, clip берёт пересечение. Затем выберите правило округления суммы.
  4. Проверьте статус, fullDays, billedDays и clipped. Передайте расчёт в согласование; для изменения счёта потребуется отдельное действие.

Учебный пример и ожидаемый результат

FULL_AMOUNT=300.00 RUB, SCALE=2, полный период 2026-10-01 → 2026-10-31, фактический 2026-10-01 → 2026-10-16. При DAY_BASIS=actual, BOUNDARY=half_open, OUTSIDE_POLICY=reject, ROUNDING=exact полный период содержит 30 дней, фактический 15. Ожидаются amount=150.00 и ratio=15/30. При включении обеих дат число дней изменится.

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

Что возвращает и как продолжить процесс

  • «Сумма неполного периода» (amount).
  • «Дней полного периода» (fullDays).
  • «Учтено фактических дней» (billedDays).
  • «Отношение учтенных дней к полным» (ratio).
  • «Фактический период ограничен» (clipped).
  • «Начало пересечения» (effectiveStart).
  • «Конец пересечения» (effectiveEnd).
  • «Валюта» (currency).
  • «Дробных знаков» (scale).

Эффективные начало и конец показывают учтённое пересечение, а ratio хранит отношение дней дробью. Пустое пересечение даёт нулевую сумму и пустые эффективные даты. clipped помогает увидеть, что исходный фактический период выходил за границы полного.

Выход «Статус выполнения» проверяйте перед передачей результата дальше. При отрицательном статусе прочитайте «Пояснение ошибки» и направьте процесс на исправление исходных данных. Успешный статус подтверждает выполнение действия; содержательные признаки результата проверяйте отдельно.

Ограничения и разбор ошибок

Все даты строго YYYY-MM-DD, без времени. DAY_BASIS=actual выбирается явно; 30/360 и банковские соглашения не выводятся. BOUNDARY=half_open считает [начало,конец), inclusive_dates включает обе даты. Полный период должен иметь положительное число дней; фактический может быть пустым в half_open. OUTSIDE_POLICY=reject запрещает выход за полный период, clip берет пересечение. Сумма = FULL_AMOUNT × фактические дни / полные дни. ROUNDING выбирается явно: exact/half_up/down/up. Возвращает расчет и число дней, не изменяет счета/CRM. Пустое пересечение или нулевой тариф дают валидный ноль. Валюта и SCALE от 0 до 6 обязательны; тариф неотрицательный, меньше 10^24, до 36 значащих и 18 дробных цифр и точно соответствует SCALE. Налоговые правила не вычисляются.

Робот не определяет условия договора и не рассчитывает налоги. Положительный полный период обязателен. Если exact не позволяет выразить сумму при выбранном SCALE, действие завершится с ошибкой; выберите согласованное правило округления явно.