Создание события уведомлений

Перед созданием события уведомлений необходимо создать шаблон уведомлений, на основе которого будет формироваться текст уведомления для этого события уведомления (см. Управление шаблонами уведомлений). Для СМС-уведомлений также требуется создать SMS-шлюз (см. Управление SMS-шлюзами). Созданное событие уведомлений автоматически создается у всех нижестоящих реселлеров (подробнее см. Делегирование шаблонов интерфейса, шаблонов уведомлений, событий уведомлений и категорий уведомлений).

В этой статье:

Создание события уведомлений

Чтобы создать событие уведомлений:

  1. Перейдите в раздел События уведомлений (см. Навигация по Панели управления Оператора). Отобразится список событий уведомлений (см. Просмотр списка событий уведомлений).
  2. Нажмите Создать. Отобразится страница Добавить обработчик.



    Так как событие уведомлений делегируется всем нижестоящим реселлерам, то оно должно быть уникальным. Набор параметров Событие, Тип Шаблона уведомлений, Шаблон уведомлений и Правило не должен совпадать с соответствующим набором параметров существующих событий уведомлений у текущего реселлера и всех его нижестоящих реселлеров.
  3. В списке Событие выберите событие, при наступлении которого должно срабатывать событие уведомлений. Список событий см. в таблице ниже.

  4. В списке Тип шаблона уведомлений выберите один из способов отправки уведомлений: EmailСМС или Панель управления Клиента.
  5. В списке Шаблон уведомлений выберите ранее созданный шаблон уведомлений выбранного типа (см. Просмотр списка шаблонов уведомлений). Доступен поиск по части ID и названия шаблонов уведомлений.
  6. Если требуется настроить рассылку уведомлений в определенное время:
    1. Снимите флажок Добавить в очередь на отправку сразу. Поле Добавить в очередь на отправку в определенное время (час суток) станет доступным.
    2. В поле Добавить в очередь на отправку в определенное время (час суток) введите час суток, в который задачи на отправку уведомлений по этому событию должны быть поставлены в очередь на отправку.
  7. В поле Правило введите условия обработки события, используя плейсхолдеры (см. Плейсхолдеры для описания правила обработки события).

    При описании правила обработки события возможны следующие операции с плейсхолдерами:

    • >

    • <

    • >=

    • <=

    • =

    • !=

    • include? (например, order.type = "SalesOrder" and (order.plans_ids include? 2000030)) — обработчик события сработает, если в заказ на покупку включен тарифный план с id =2000030)

    • exclude? (исключить определенные сущности (по id, ключу, имени) из выбранного массива сущностей, например, чтобы исключить отправку уведомления о создании заказа на подписку по тарифному плану с id = 2000, используйте следующее правило: order.plans_ids exclude? 2000)
    • and (например, чтобы исключить несколько сущностей из массива, используйте(product_ids exclude? 34650) and (product_ids exclude? 34702))

    • or. Для нескольких or после and используйте дополнительные скобки: order.type = "RenewalOrder" and order.renewal_is_positive = true and subscription.payment_model = "prepay" and ((order.plans_ids include? 293827) or (order.plans_ids include? 293824) or (order.plans_ids include? 294340))
    • % (например, 30% от порога срабатывания финансовой блокировки: account.financial_blocking_threshold % 30 )
    subscription.days_left = 10 AND subscription.status = "active" 

    Этот запрос означает, что обработчик будет работать для всех активных подписок, которые истекают через 10 дней.

  8. Нажмите Создать. Новое событие будет создано и появится в списке событий уведомлений текущего реселлера и его нижестоящих реселлеров.

Список событий

СобытиеОписание
Приближается финансовая блокировка клиента (Account credit hold is coming)

Происходит если баланс клиента становится равным либо меньше заданной доли (от 1% до 99% включительно) от порога срабатывания финансовой блокировки, но не меньше порога срабатывания финансовой блокировки. Для корректной работы требует обязательной настройки правила обработки события.

Например, при следующем правиле обработки события, событие произойдет когда баланс клиента будет составлять менее 35% от порога срабатывания финансовой блокировки:

account.financial_blocking_threshold % 35 < -account.balance

Клиент изменен (Account changed)
Происходит при блокировке клиента (финансовой или административной, см. Переход клиента в финансовую блокировку и Перевод клиента в административную блокировку) и при активации клиента после блокировки (см. Выход клиента из финансовой блокировки и Активация клиента после административной блокировки).
Клиент создан (Account created)
Происходит при создании нового клиента (см. Создание клиента).
Порог срабатывания финансовой блокировки изменен (Financial blocking threshold was changed)
Происходит при изменении значения порога срабатывания финансовой блокировки в правиле обслуживания (см. Создание правила обслуживания) или при изменении индивидуального значения для клиента (см. Просмотр и обновление информации о клиенте). Событие происходит также и при создании нового клиента. Если клиенту назначается другое правило обслуживания, а порог срабатывания финансовой блокировки не изменяется, то событие не происходит.
Менеджер клиента изменен (Account manager changed)
Происходит при изменении или назначении менеджера клиента (см. Просмотр и обновление информации о клиенте).
Корректировка баланса подтверждена (Correction approved)
Происходит при подтверждении корректировки в Панели управления Оператора (см. Подтверждение корректировки) или по API (см. Update correction status). В поле Правило можно указать ID менеджера, подтвердившего корректировку. Уведомление отправляется на email Владельца клиента.
Закрытие Акта (Invoice closed)
Происходит в финансовый день при выставлении акта за потребленную услугу (подробнее см. Управление актами). Также используется для ручной отправки акта на email (см. Пересылка акта по email)
Счет был подтвержден (The Invoice was approved)
Событие наступает при подтверждении акта по модели Постоплата с внешним управлением (см. Управление актами по модели Постоплата сторонней ERP-системой). Чтобы определить, был ли прикреплен к связанному платежу счет на оплату, в правиле обработки события используется плейсхолдер invoice.has_attached.
Недостаточно средств на балансе (Low balance)
Происходит если баланс клиента меньше либо равен нулю.
Сотрудник создан (Manager created)Происходит при создании менеджера через Панель управления Оператора (см. Добавление сотрудника) или по API (см. Create manager). Используется для отправки менеджеру учетных данных для входа (см. Плейсхолдеры в шаблонах уведомлений для отдельных событий уведомлений). Не требует настройки правила обработки события.
Ручная операция (Manual operation)Происходит при:
Платеж получен (Payment has been received)Происходит при смене статуса платежа:
Срок оплаты платежа приближается (Payment due date is coming)

Происходит только для подписок по модели Постоплата. В зависимости от условий в правиле происходит либо за заданное в правиле количество дней до истечения периода отсрочки платежа (см. Плейсхолдеры для описания правила обработки события), либо при переходе платежа в статус Просрочен и блокировке связанных подписок (см. Просмотр акта для модели Постоплата). При отсутствии условий в правиле событие произойдет в дату истечения периода отсрочки платежа.

Для отправки уведомлений за несколько дней до истечения периода отсрочки платежа используйте правило следующего вида:

payment.days_left = N

где N — количество дней до истечения периода отсрочки платежа, за которое нужно отправить уведомление.

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

payment.days_left = 0

или оставьте поле Правило пустым.

Email-уведомление включает счет в формате PDF. PDF-счет формируется для платежа, связанного с актом по модели Постоплата. PDF-счет формируется только для клиентов, у которых в качестве способа оплаты по умолчанию задан активный способ оплаты на основе модуля CheckCash (см. Просмотр и обновление типа клиентов).

Платеж по постоплате создан (Postpay payment created)Происходит на следующий день после финансового дня, когда платформа закрывает акт по модели Постоплата и создает связанный платеж. Email-уведомление включает PDF-счет для платежа. PDF-счет формируется только для клиентов, у которых в качестве способа оплаты по умолчанию задан активный способ оплаты на основе модуля CheckCash (см. Просмотр и обновление типа клиентов).
Запрос сброса пароля (Password reset request)Происходит при запросе письма с инструкциями по сбросу пароля к Панели управления Клиента (подробнее см. Reset password).
Запрос сброса пароля менеджера (Manager password reset request)Происходит при запросе письма с инструкциями по сбросу пароля к Панели управления Оператора (подробнее см. Сброс пароля к учетной записи сотрудника).
До окончания периода подписки (Before subscription expiration)Происходит ежедневно для всех подписок, у которых нет связи с заказом на продление в статусе Ожидает предоставления или Предоставляется. Для корректной работы требует обязательной настройки правила обработки события.
После окончания периода подписки (After subscription expiration)Происходит ежедневно для всех подписок. Для корректной работы требует обязательной настройки правила обработки события. 
Подписка переведена из пробного статуса в платный (After subscription switched from trial to no-trial)Происходит при переходе подписки из пробного на платный период как для модели Предоплата, так и Постоплата.
Подписка изменена (Subscription changed)

Происходит при:

  • Смене статуса подписки на:
    • Активная.
    • Удалена, кроме перехода в статус Удалена из статуса Новый заказ.
    • Остановлена, кроме случая административной блокировки клиента.
    • Доставлена.
    • Просрочена оплата.
    • Ошибка установки.
    • Ошибка активации.
    • Ошибка продления.
    • Ошибка обновления.
  • Переходе подписки из пробного на платный период.
  • Продлении активной подписки в Панели управления Оператора (см. Ручное продление подписки) или в Панели управления Клиента (см. Renew subscription).
  • Автопродлении подписки (см. Автоматическое продление подписки).
  • Изменении ресурсов подписки (см. Изменение количества ресурсов подписки).
Подтверждение email (Verify email)Происходит при регистрации нового пользователя в Панели управления Клиента, после нажатия кнопки Зарегистрироваться (подробнее см. Quick registration).
Приглашение пользователя (User invitation)Происходит при приглашении внешнего пользователя Владельцем или Администратором клиента (подробнее см. Приглашение Внешнего пользователя).
Заказ изменён (Order changed)Происходит при смене статуса заказа на:
  • Отменен (при ручной отмене заказа или при отмене платежа по заказу в Панели управления Клиента и Панели управления Оператора). 
  • Предоставляется.
  • Завершен (см. Просмотр списка заказов).

Счет к уведомлению не прикрепляется.

Заказ создан (Order created)

Происходит при создании нового заказа (Создание заказа). В том числе, срабатывает как при ручном, так и при автоматическом создании заказа на продление.

Чтобы исключить отправку клиентам счетов на оплату по заказам на пролонгацию, создаваемым в финансовый день для автоматической оплаты с баланса клиента (см. Пролонгация подписки), необходимо чтобы для подписок, у которых установлена Точка автоматического продления (в днях) = 0, события Заказ создан и Заказ изменён не срабатывали. Для этого в правиле обработки этих событий задайте условие order.type = "ProlongOrder" AND order.renewal_is_positive = true (см. Плейсхолдеры для описания правила обработки события). События будут срабатывать только для подписок, у которых Точка автоматического продления (в днях) больше 0.

Обещанный платеж создан (Guaranteed payment created)Происходит при:
  • Ручном создании обещанного платежа через Панель управления Оператора или через Панель управления Клиента.
  • Автоматическом создании обещанного платежа в статусе Предоставлен в связи с пополнением.

Подробнее см. Управление обещанными платежами.

Обещанный платёж изменён (Guaranteed payment changed)Происходит при автоматическом или ручном отзыве обещанного платежа. Подробнее см. Управление обещанными платежами.
Обещанный платёж истекает (Guaranteed payment will expire)Происходит за указанное количество дней до наступления даты истечения обещанного платежа. Подробнее см. Управление обещанными платежами.
Осталось дней до оплаты (Days left to pay)Происходит ежедневно для всех подписок. Для корректной работы требует обязательной настройки правила обработки события.
Телефонная верификация (Phone verification)Происходит при нажатии кнопки Получить код на шаге SMS верификация в процессе полной регистрации клиента (см. Full registration).
Финансовый день наступает (Billing day is coming)
Происходит ежедневно для каждого уникального финансового дня. Пользователю клиента с ролью Владелец отправляется email-сообщение о дате финансового дня и о сумме предстоящего списания средств с баланса клиента. Если у клиента есть подписки с типом биллинга Pay as you go, в тексте уведомления укажите, что сумма, на которую нужно пополнить баланс, может измениться. В сообщении также может быть размещена ссылка на страницу пополнения баланса клиента (см. Пополнение Баланса Клиента). Пользователи, авторизованные в Панели управления Оператора с ролью Системный администратор и Менеджер по продажам (см. Роли сотрудников), также могут перейти по этой ссылке в Панель управления Клиента в рамках одного реселлера, если у них в браузере нет сессии с авторизацией в Панели управления Клиента.
Учитываются только подписки в следующих статусах (см. Просмотр списка подписок):
  • Активная.
  • Ожидает ручного подтверждения для остановки подписки.
  • Просрочена оплата.

Для корректной работы требует обязательной настройки правила обработки события.

Если не задать правило обработки, то событие уведомления будет срабатывать во всех возможных ситуациях: ежедневно для каждого уникального финансового дня, независимо от типа биллинга подписки. Например, если у клиента есть три подписки с типами биллинга Предзаказ, CSP annual, Pay as you go и тремя разными финансовыми днями, то в течение всего месяца ему будет приходить по три уведомления в день.

Чтобы этого избежать, задайте следующие параметры (см. Плейсхолдеры для описания правила обработки события):

  • Наличие подписок с определенной моделью оплаты — при помощи плейсхолдера subscription.payment_model:

    • Если subscription.payment_model = "postpay", уведомление отправляется, только если у клиента есть неудаленные подписки по модели Постоплата, у которых наступает финансовый день.
    • Если subscription.payment_model = "prepay", уведомление отправляется, только если у Клиента есть неудаленные Подписки по модели Предоплата, у которых наступает финансовый день.
  • Наличие подписок с определенным типом биллинга у клиента — при помощи плейсхолдера monthly_billing. Чтобы уведомления приходили только клиентам, у которых есть подписки с ежемесячными платежами (например, типы биллинга CSP месячный, Monthly Commitment), используйте следующее условие в правиле: monthly_billing = "true".

  • Количество дней, которые остались до даты финансового дня — при помощи плейсхолдера billing_day_left. Чтобы уведомления приходили только за определенное количество дней до наступления уникального финансового дня, используйте следующее условие в правиле: billing_day_left = {количество дней до финансового дня, за которое нужно отправить уведомление}.

Дополнительно можно задать следующие параметры:

  • Число месяца, на которое установлен финансовый день — при помощи плейсхолдера billing_day.
  • Сумма списаний в статусе Открыто, которые будут закрыты или заблокированы в финансовый день, для которого было вызвано событие — при помощи плейсхолдера billing_day_open_charges_amount. Учитываются только подписки, у которых Точка автоматического продления = 0. Если списания в статусе Открыто не существуют, то производится расчет суммы на основе предварительной генерации списаний на будущий финансовый период.
  • ID планов активных подписок клиента — при помощи плейсхолдера plan_ids.
  • ID продуктов активных подписок клиента — при помощи плейсхолдера product_ids.
  • Ключ типа клиента — при помощи плейсхолдера account.type_key.
  • Ключ правила обслуживания клиента — при помощи плейсхолдера account.class_key.
  • Доступный баланс клиента — при помощи плейсхолдера account.balance.
  • Порог срабатывания финансовой блокировки клиента — при помощи плейсхолдера account.financial_blocking_threshold.

Например:

billing_day = 1 and billing_day_left = 28 and account.type_key = "personal" and account.class_key = "default" and account.financial_blocking_threshold = 0 and monthly_billing = true and (plan_ids include? 1420) and (product_ids include? 498)

Если нужно добавить несколько условий, которые должны выполняться одновременно, то следует использовать оператор and: billing_day = 1 and billing_day_left = 28. В этом примере уведомление будет отправлено для подписок, финансовый день которых установлен 1-го числа каждого месяца, за 28 дней до наступления финансового дня. Всего будет отправлено одно уведомление.

Если нужно добавить несколько условий, одно из которых должно выполняться обязательно, то следует использовать оператор or: billing_day = 1 or billing_day = 5. В этом примере по одному уведомлению будет отправляться каждый день финансового периода для подписок, финансовый день которых установлен как 1-го, так и 5-го числа каждого месяца.

Для группировки и объединения условий можно использовать скобки (): (billing_day = 1 or billing_day = 2) and (billing_day_left = 3 or billing_day_left = 4) . В этом примере уведомления будут отправлены для подписок, финансовый день которых установлен как 1-го, так и 2-го числа каждого месяца за 3 и за 4 дня до наступления финансового дня. Всего будет отправлено четыре уведомления.

Также для формирования правила можно использовать арифметические операторы + и -, операторы сравнения значений плейсхолдеров > <, менять порядок значений (1 = billing_day).

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

  • next_billing_period_start_day — дата начала следующего финансового периода относительно финансового дня, для которого было вызвано событие.
  • next_billing_period_end_day — дата окончания следующего финансового периода относительно финансового дня, для которого было вызвано событие.
  • Плейсхолдеры для сущности Подписка (см. Плейсхолдеры для сущности Подписка).

Финансовый день по подпискам менеджера наступил (Billing day for manager's subscriptions has come)

(ранее — Финансовый день наступил (Billing day has come))

Событие происходит после прохождения биллинг-процесса и закрытия списаний для каждого менеджера при выполнении следующего условия:
  1. Хотя бы один клиент этого менеджера имеет неудаленную подписку с финансовым днем, равным текущей дате выполнения биллинг-процесса. Например, у менеджера один клиент, и у этого клиента 3 подписки, у двух из них финансовый день 5 число, у одной — 10. Событие будет происходить дважды — 5 и 10 числа.
  2. Выполняются условия, заданные в поле Правило.

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

Финансовый день по подписке клиента наступил (Billing day for account's subscription has come)
Событие происходит после прохождения биллинг-процесса и закрытия списаний для каждого клиента при выполнении всех следующих условий:
  1. У клиента есть подписка с финансовым днем, равным текущей дате выполнения биллинг-процесса. 
  2. У этой подписки есть списания в статусе Закрыто за прошедший финансовый период.
  3. Сумма хотя бы одного из этих списаний больше 0.
  4. Выполняются условия, заданные в поле Правило.

Если у клиента несколько подписок с одним финансовым днем, то событие срабатывает для каждой подписки в отдельности.

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

По подпискам Microsoft Azure Plan и Microsoft Azure для события может использоваться специально подготовленный шаблон уведомления с разбивкой данных по категориям ресурсов:

Шаблон уведомления поддерживает отображение следующих данных:

  1. Блок Spend Dynamics:
    1. Сумма расходов за последний завершенный финансовый период (поддерживается сумма до 11 знаков), а также обозначение валюты реселлера.
    2. Месяц и год последнего завершенного финансового периода.
    3. Сумма расходов за предпоследний завершенный финансовый период (поддерживается сумма до 11 знаков), а также обозначение валюты реселлера.
    4. Месяц и год предпоследнего завершенного финансового периода.
    5. Темп прироста в процентах, рассчитанный по формуле:

      ( (Прошлый период - Позапрошлый период) / Позапрошлый период ) × 100

      Для величины прироста предусмотрена цветовая индикация: положительный прирост — красный, отрицательный прирост — зеленый, 0 — серый.

    6. Блок не отображается, если отсутствуют данные за последний или предпоследний финансовый период.
  2. Блок Cost structure in <название прошедшего месяца> by resource category:
    1. Линейная диаграмма:
      1. Количество частей диаграммы соответствует числу категорий ресурсов, которые были потреблены за прошедший финансовый период:
      2. Каждая часть диаграммы обладает своим цветом.
      3. Части диаграммы располагаются от большего к меньшему слева направо.
      4. Максимальное число категорий ресурсов: 5, остальные категории объединяются в группу others.
    2. Легенда диаграммы:
      1. Отображается название категории ресурсов и процент ее вклада в общее потребление за прошедший финансовый период. 
      2. Поддерживается отображение до 3-х категорий ресурсов. 
      3. Названия категорий ресурсов располагаются от большего к меньшему слева направо.
      4. Рядом с названием категории ресурсов отображается цвет, который соответствует цвету блока линейной диаграммы для этой категории ресурсов.
    3. Таблица:
      1. Таблица содержит следующие столбцы:
        1. Цвет, который соответствует цвету блока линейной диаграммы для этой категории ресурсов.
        2. Resource Category — название категории ресурсов.
        3. Cost, <обозначение валюты реселлера> — размер потребления категории ресурсов за прошедший финансовый период в валюте реселлера.
      2. Строки в таблице отсортированы по столбцу Cost от большего к меньшему.
  3. Блок Last month weekly cost dynamic — столбчатая диаграмма:
    1. Количество частей в столбцах диаграммы соответствует числу категорий ресурсов, потребленных за прошедший финансовый период.
    2. Максимальное число категорий ресурсов: 5, остальные категории объединяются в группу others.
    3. Каждая часть диаграммы обладает своим цветом и соответствует линейной диаграмме.
    4. Столбцы отображают потребление категорий ресурсов по неделям прошедшего финансового периода.
  4. Explore more analytics — ссылка для перехода в Панель управления Клиента на страницу Аналитика той подписки, для которой сработало событие, с предустановленными фильтрами (см. -Subscription analytics):
    1. Детализация — по дням или месяцам.
    2. Период — в зависимости от детализации:
      • По дням — прошедший или текущий биллинг период.
      • По месяцам — 3, 6 или 12 биллинг периодов.

Точность и разделители сумм в шаблоне уведомления отображаются в соответствии с настройками для валюты реселлера (см. Валюты). Названия месяцев автоматически отображаются на языке, установленном по умолчанию в Панели управления Оператора (см. Управление языковыми настройками), остальной текст указывается вручную.

Пример отображения данных (English)Пример кода шаблона уведомления
<!-- CHART_COLORS = %w(#5c4aa7 #d4e689 #94db99 #bd8c75 #5e4ca9 #db577d) -->
<!-- SHOULD BE MAPPED IN CORE FOR SORTED BY 'percent_usage' for last_billing_period -->
<table width="100%" bgcolor="#ffffff">
<tr>
  <td height="30"></td>
</tr>
<tr>
  <td>
    <table width="640" cellpadding="0" cellspacing="0" align="center" bgcolor="#ffffff" style="">

<!-- BODY -->
<tr>
  <td align="left" colspan="3" valign="top" width='580' style="padding: 0 30px;">
    <table>
      <tr>
        <td>
          <p style="margin:0;padding:0;"> <font color="#333333" face="Arial, sans-serif" style="font-size: 20px;">
            <br>Hello, {{owner.first_name}} {{owner.last_name}}!
            </font>
            <br>
            <br> <font color="#333333" face="Arial, sans-serif" style="font-size: 14px;">
            The expenses of the company <strong> # {{account.id}} "{{account.name}}" </strong> for the subscription <strong> # {{subscription.id}} "{{subscription.name}}" </strong>
            in the past billing period (from {{subscription.last_billing_period_start_day}} to {{subscription.last_billing_period_end_day}}) were
            <strong>{{ subscription.last_billing_period_amount_with_currency }}</strong>
            </font>
          </p>
        </td>
      </tr>
    </table>
  </td>
</tr>
<tr>
  <td height="24"></td>
</tr>


{% if subscription.last_billing_period_amount > 0 and subscription.pre_last_billing_period_amount > 0 %} 

<tr>
  <td align="left" colspan="3" valign="center" width='580' style="padding: 0 30px;">
    <table>
      <tr>
        <td height="12"></td>
      </tr>
      <tr>
        <td>
          <p style="font: 16px Arial, sans-serif; color: #333333; line-height: 22px; margin: 0 0 0px 0;"> <strong>Spend Dynamics</strong>
            <br />
            <br />
          </p>
        </td>
      </tr>
      <tr>
        <td align="center" valign="center" width='190' style='border-right: 2px solid; border-right-color: #f1f1f1;'>
          <p style="font: 16px Arial, sans-serif; color: #333333; line-height: 2px; margin: 0 0 0px 0; font-weight: bold;">
            <br>{{ subscription.pre_last_billing_period_amount_with_currency }}
            <br />
          </p>
          <p style="font: 14px Arial, sans-serif; color: #808080; line-height: 22px; margin: 0 0 0px 0;">
            <br>{{subscription.pre_last_billing_period_month}} {{subscription.pre_last_billing_period_year}}
            <br>
          </p>
        </td>
        <td align="center" valign="center" width='190' style='border-right: 2px solid; border-right-color: #f1f1f1;'>
          <p style="font: 16px Arial, sans-serif; color: #333333; line-height: 2px; margin: 0 0 0px 0; font-weight: bold;">
            <br>{{ subscription.last_billing_period_amount_with_currency }}
            <br />
          </p>
          <p style="font: 14px Arial, sans-serif; color: #808080; line-height: 22px; margin: 0 0 0px 0;">
            <br>{{subscription.last_billing_period_month}} {{subscription.last_billing_period_year}}
            <br>
          </p>
        </td>
        <td align="center" valign="center" width='190'>

        {% if subscription.change_in_periods > 0  %}
          <p style="font: 16px Arial, sans-serif; color: red; line-height: 2px; margin: 0 0 0px 0; font-weight: bold;">
          <br>+{{subscription.change_in_periods}}%
          <br>
        {% elsif subscription.change_in_periods < 0 %}  
          <p style="font: 16px Arial, sans-serif; color: green; line-height: 2px; margin: 0 0 0px 0; font-weight: bold;">
          <br>{{subscription.change_in_periods}}%
        {% else %}
          <p style="font: 16px Arial, sans-serif; color: grey; line-height: 2px; margin: 0 0 0px 0; font-weight: bold;">
          <br>{{subscription.change_in_periods}}%
        {% endif %}
          </p>
          <p style="font: 14px Arial, sans-serif; color: #808080; line-height: 22px; margin: 0 0 0px 0;">
            <br><br>
          </p>
        </td>
      </tr>
    </table>
  </td>
</tr>

{% endif %}

<tr>
  <td align="left" valign="top" width='580' style="padding: 0 30px;">
    <table>
      <tr>
        <td height="12"></td>
      </tr>
      <tr>
        <td>
          <p style="font: 16px Arial, sans-serif; color: #333333; line-height: 22px; margin: 0 0 0px 0;">
            <br><strong>Cost Structure in {{subscription.last_billing_period_month}} by resource category</strong>
            <br />
            <br />
          </p>
        </td>
      </tr>
      <tr>
        <td align="left" valign="top" width='640'>
          <table>
            <tr>
            {% assign counter = 0 %}
            {% for item in subscription.resource_categories %}
              {% if counter < 3 %}
                {% assign counter = counter | plus:1 %}
                <td align="left" valign="center" width='15' height='15' style="background-color: {{item['chart_color']}}; border-radius: 1px;"> </td>
                <td>&nbsp;&nbsp;</td>
                <td align="left" valign="center" height='15'>
                    <p style="font: 12px Arial, sans-serif; color: #555555; line-height: 15px; margin: 0;"> {{ item['name'] }} {{ item['percent_usage'] }}% </p>
                </td>
                <td>&nbsp;&nbsp;</td>
              {% endif %}
            {% endfor %}
            </tr>
          </table>
        </td>
      </tr>
      <tr>
        <td height="12"></td>
      </tr>
      <tr>
        <td align="left" valign="top" width='640'>
          <table>
            <tr>
              {% for item in subscription.resource_categories %}
              
              <td align="center" valign="center" width="{{ item['percent_usage'] | times: 630 | divided_by: 100 }}" height='25' style="background-color: {{item['chart_color']}}; border-radius: 1px;">&nbsp;</td>
              
              {% endfor %}
            </tr>
          </table>
        </td>
      </tr>
      <tr>
        <td align="center" colspan="6" valign="center" width='640'>
          <table>
            <tr>
              <td height="24"></td>
            </tr>
            <tr>
              <td width='20' height='20' style='background-color: none;'> </td>
              <td valign="center" width='300' style='padding-left: 20px;'>
                <p style="font: 16px Arial, sans-serif; color: #808080; line-height: 2px;">
                  <br>RESOURCE CATEGORY
                  <br />
                </p>
              </td>
              <td valign="center" width='300'>
                <p style="font: 16px Arial, sans-serif; color: #808080; line-height: 2px;">
                  <br>COST, {{reseller.currency}}
                  <br />
                  <br>
                </p>
              </td>
              <br>
            </tr>
            <br>
            <tr><td><br></td></tr>

            {% for item in subscription.resource_categories %}
            <tr>
              <td align="left" valign="center" width='15' height='15' style="background-color: {{item['chart_color']}}; border-radius: 1px;"> </td>
              <td valign="center" width='300' style='padding-left: 20px;'>
                <p style="font: 14px Arial, sans-serif; color: #333333; line-height: 2px;">
                  <br>{{ item['name'] }}
                  <br />
                </p>
              </td>
              <td valign="center" width='300'>
                <p style="font: 14px Arial, sans-serif; color: #333333; line-height: 2px;">
                  <br>{{ item['total_for_current_billing_period'] }}
                  <br />
                </p>
              </td>
            </tr>
            <tr>
              <td height="8"></td>
            </tr>
            {% endfor %}
          </table>
        </td>
      </tr>
      <tr> </tr>
    </table>
  </td>
</tr>
<tr>
  <td align="left" valign="top" width='580' style="padding: 0 30px;">
    <table>
      <tr>
        <td height="12"></td>
      </tr>
      <tr>
        <td>
          <p style="font: 16px Arial, sans-serif; color: #333333; line-height: 22px; margin: 0 0 0px 0;">
            <br><strong>Last month weekly cost dynamic</strong>
            <br />
            <br />
          </p>
        </td>
      </tr>
      <!--
        max_totals_sum_weekly
        decorated_steps ['200K', '190K', '180K' .. '20K', '10K'] (max and first el == decorated max_totals_sum_weekly), size == 10
        resources_total_by_weeks [['3 Feb. - 9 Feb.', [[46000, '#5c4aa7'], [15000,'#d4e689'], ... ]], ...]] -->

        <!-- maybe refactor this.... -->
      <tr>
        <td align="center" colspan="7" valign="center" width='640' height='280'>
          <table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt;">
            <tr>
              <td style="vertical-align:bottom; border-right: 2px solid #ebebeb;">
                <table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border: none; border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; width:20px;">
                  {% for step in subscription.decorated_steps %}
                  <tr>
                    <td style="height: 28; font: 12px Arial, sans-serif; color: #808080;" align="center">{{step}}</td>
                  </tr>
                  {% endfor %}
                </table>
              </td>
              {% for item in subscription.resources_total_by_weeks %}
              <td style="padding: 0 16px; vertical-align:bottom;">
                <table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border: none; border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; width:80px;">
                    {% for totals in item['totals'] %}
                    <tr> 
                        <td style="height: {{ totals['total'] | times: 140 | divided_by: subscription.max_totals_sum_weekly }}px; background-color: {{totals['chart_color']}};"></td>
                    </tr> 
  
                    {% endfor %}
                </table>
              </td>
              {% endfor %}
            </tr>
            <tr style='border-top: 2px solid #ebebeb;'>
              <td align="center" valign="center"> </td>
              {% for item in subscription.resources_total_by_weeks %}
              <td align="center" valign="center">
                <p style="font: 12px Arial, sans-serif; color: #808080; line-height: 14px;">
                  <br>{{ item['week'] }}
                  <br />
                </p>
              </td>
              {% endfor %}
            </tr>
          </table>
        </td>
      </tr>
      <tr> </tr>
    </table>
  </td>
</tr>
<tr>
  <td height="24"></td>
</tr>
<td>
  <table>
    <tr>
      <p style="font: 14px Arial, sans-serif; font-color: #333333; line-height: 22px; margin: 12px 0; text-align: center;">
        <a style="display: inline-block;" href="https://{{domain}}/subscriptions/{{subscription.id}}/analytic"> <span style="display: inline-block; color: #ffffff; background-color: rgb(22, 155, 213); padding: 12px 60px; border-radius: 5px;">
        EXPLORE MORE ANALYTICS
        </span> </a>
      </p>
    </tr>
  </table>
</td>
</tr>
<tr>
  <td colspan="3" align="center" valign="top" height="30"></td>
</tr>
Себестоимость изменена (Net cost has been changed)

Происходит при изменении себестоимости тарифного плана на уровне текущего реселлера (см. Просмотр прайс-листа).

При создании этого события уведомления оставьте поле Правило пустым.

Платформа собирает данные об изменении себестоимости раз в сутки ночью. При этом в выборку тарифных планов включаются только те планы, себестоимость которых изменилась с 00:00:00 до 23:59:59 предыдущих суток. Если себестоимость тарифного плана изменилась, например, в 00:01 текущих суток, то этот тарифный план попадет в выборку только на следующие сутки.

Кредитный лимит для постоплатной подписки изменен (Credit limit for postpaid subscription was changed)Событие происходит для клиентов, у которых есть подписка по модели Постоплата в статусе отличном от Удалена, в случае:
    • Изменения кредитного лимита по подписке в правиле обслуживания.
    • Изменения кредитного лимита по подписке на странице клиента с моделью оплаты по умолчанию Постоплата.
    • Изменения кредитного лимита по подписке на странице подписки по модели Постоплата.
    • Переключения настройки Использовать из правил обслуживания в настройках клиента, если при этом значение кредитного лимита по подписке для клиента изменяется.
    • Переключения настройки Использовать из настроек Клиента на странице подписки, если при этом значение кредитного лимита по подписке для подписки изменяется.
    • Изменения правила обслуживания для клиента при включенной настройке Использовать из правил обслуживания, если при этом значение кредитного лимита по подписке для клиента изменяется.
    • Создания новой подписки по модели Постоплата.

Событие происходит, если перечисленные выше действия выполняются как через Панель управления Оператора, так и по API.

Приближение к кредитному лимиту постоплатной подписки (Credit limit for postpaid subscription is approaching)

Событие происходит, если величина текущей задолженности по подписке пересекла установленный % (1...99) кредитного лимита для этой подписки, вне зависимости от статуса подписки. Уведомление отправляется 1 раз.

Например, при следующем правиле обработки события событие произойдет, когда величина текущей задолженности по подписке превысит 70% от кредитного лимита для этой подписки:

subscription_postpay.credit_limit % 70 < subscription_postpay.current_debt

Закрывающие документы сформированы (Closing documents generated)Событие происходит при вызове API-метода (см. Send notifications on closing documents) для рассылки уведомлений клиентам реселлера о том, что закрывающие документы за указанный период получены из сторонней ERP-системы и доступны для скачивания по ссылкам и через Панель управления Клиента в разделе Закрывающие документы (см. Closing documents). Уведомление отправляется только для документов в статусе Новый. После отправки уведомления статус этих документов меняется на Отправлен.
Создан объединенный платеж (Joined payment created)Событие происходит при автоматическом или ручном объединении платежей (см. Объединение платежей по модели Предоплата).
Повторная отправка заказа (Resend the order)Происходит через указанное количество дней после создания заказа для заказов в статусе Ожидает оплаты, у которых платеж связан только с одним заказом (то есть заказ не связан с объединенным платежом — см. Объединение платежей по модели Предоплата).
Повторная отправка объединенного платежа (Resend the joined payment)Происходит через указанное количество дней после создания объединенного платежа для платежей в статусе Ожидает оплаты.
Запрос на сброс пароля при создании пользователя (Request to reset the password after the user creation)Происходит при сбросе пароля пользователя, если пользователь был создан в Панели управления Оператора (Создание пользователя).
Обновление себестоимости CSP (Update CSP net costs)Происходит ежедневно для всех подписок. Для корректной работы требует обязательной настройки правила обработки события.
Загрузка себестоимости CSP (Upload CSP net costs)

Происходит:

  • После загрузки нового файла с ценами (см. Updating the net costs of the Resources of the Microsoft Office 365 Plans).
  • После утверждения нового файла с ценами, в случае когда файл с ценами из статуса Требуется подтверждение переходит в статус Будущий или Текущий.
  • После перехода файла из статуса Будущий в статус Текущий.
Заявка на создание счёта отправлена (Request for creating bill was sent)Сформирована ручная операция на создание счета на оплату.
Счёт на пополнение баланса готов (Bill on balance replenishment is ready)Счет на оплату для пополнения баланса клиента сформирован вручную.
Отчётный период закрыт (The accounting period was closed)Уведомление о закрытии отчетного периода при получении от 1С запроса для сверки баланса клиентов отправляется в случае совпадения балансов в 1С и ActivePlatform.
VSP ресурсы изменились (VSP resources changed)Происходит при смене статуса подписки на тарифный план, переданный из Vendor Portal, с Обновление на Активная при изменении количества ресурсов подписки.
VSP подписка создана (VSP subscription created)Происходит при смене статуса подписки на тарифный план, переданный из Vendor Portal, с Устанавливается на Активная (см. Синхронизация продуктов и тарифных планов между Vendor Portal и ActivePlatform).
Создание сервера (Create instance)Происходит при создании нового сервера CloudServer (см. Создание Сервера).
Сброс пароля сервера (Reset instance password)Происходит при сбросе пароля сервера CloudServer. Сброс пароля возможен через пользовательский веб-интерфейс управления услугой CloudServer (Сброс пароля администратора сервера через раздел Серверы и Сброс пароля администратора сервера через раздел раздел Дата-центры).
Обработка данных по подпискам Azure Plan завершена (Data processing for Azure Plan subscriptions completed)Происходит на уровне того реселлера, для которого созданы настройки модуля Office365 и шаблон услуги на основе модуля Microsoft CSP Products. Происходит после завершения обработки детализированных данных о потреблении по всем подпискам Microsoft Azure Plan реселлера через 2 дня после закрытия актов. Правило обработки для события не настраивается. В качестве получателя уведомления можно указать только конкретный email менеджера без использования плейсхолдеров. См. Настройка уведомлений для Подписок Microsoft Azure Plan в руководстве Services. Operator Guide.
Расходы по подписке приближаются к установленному бюджету расходов на период (Spending budget for a period is approaching)

Если в подписке с типом биллинга Pay as you go клиент установил процент от бюджета расходов для отправки уведомления, событие срабатывает, когда потребление по подписке (сумма списаний в статусе Заблокировано) за выбранный период достигло или превысило порог, но при этом остается меньше бюджета расходов. Указывать правило обработки для события не требуется.

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

Расходы по подписке достигли установленного бюджета расходов на период (Spending budget has been reached)

Если в подписке с типом биллинга Pay as you go клиент установил бюджет расходов за выбранный период, событие срабатывает, когда потребление по подписке (сумма списаний в статусе Заблокировано) за выбранный период достигло или превысило бюджет. Указывать правило обработки для события не требуется.

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