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

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

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

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

Созданное Событие уведомлений автоматически создается у всех нижестоящих Реселлеров (подробнее см. Делегирование Шаблонов интерфейса, Шаблонов уведомлений, Событий уведомлений и Категорий уведомлений).

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

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



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

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

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

    • >

    • <

    • >=

    • <=

    • =

    • !=

    • 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 )

    При создании Шаблонов уведомлений доступна возможность использовать открытый язык шаблонов Liquid, который позволяет создавать сложные Уведомления. Подробнее https://shopify.github.io/liquid/basics/introduction/.

     Пример Правила обработки события
    subscription.days_left = 10 AND subscription.status = "active" 

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

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

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

СобытиеОписание
Приближается финансовая блокировка клиента (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 a Reseller's Correction status). В поле Правило можно указать ID Сотрудника, подтвердившего Корректировку. Уведомление отправляется на email Владельца Клиента.
Закрытие Акта (Invoice closed)
Происходит в Финансовый день при выставлении Акта за потребленную Услугу (подробнее см. Управление Актами).
Счет был подтвержден (The Invoice was approved)
Событие наступает при вызове сторонней ERP-системой API-метода (см. Approve a postpaid Invoice of a Reseller Account) для Акта по модели Постоплата с внешним управлением (см. Управление Актами по модели Постоплата сторонней ERP-системой). Чтобы определить, был ли прикреплен к связанному Платежу Счет на оплату, в Правиле обработки события используется Плейсхолдер invoice.has_attached.
Недостаточно средств на балансе (Low balance)
Происходит если Баланс аккаунта меньше либо равен нулю.
Сотрудник создан (Manager created)Происходит при создании Сотрудника через Панель управления Оператора (см. Добавление Сотрудника) или по API (см. Create a Reseller's 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)Происходит при запросе письма с инструкциями по сбросу пароля к Панели управления Клиента (подробнее см. Resetting the password to the Customer Control Panel)
Запрос сброса пароля менеджера (Manager password reset request)Происходит при запросе письма с инструкциями по сбросу пароля к Панели управления Оператора (подробнее см. Сброс пароля к учетной записи Сотрудника).
До окончания периода подписки (Before subscription expiration)Происходит ежедневно для всех Подписок, у которых нет связи с Заказом на продление в статусе Ожидает предоставления или Предоставляется. Для корректной работы требует обязательной настройки Правила обработки События.
После окончания периода подписки (After subscription expiration)Происходит ежедневно для всех Подписок. Для корректной работы требует обязательной настройки Правила обработки События
Подписка переведена из пробного статуса в платный (After subscription switched from trial to no-trial)Происходит при переходе Подписки из пробного в тарифицируемый период.
Подписка изменена (Subscription changed)

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

  • Смене статуса Подписки на:
    • Активная.
    • Удалена, кроме перехода в статус Удалена из статуса Новый заказ.
    • Остановлена, кроме случая административной блокировки Аккаунта.
    • Доставлена.
    • Просрочена оплата.
    • Ошибка установки.
    • Ошибка активации.
    • Ошибка продления.
    • Ошибка обновления.
  • Переходе Подписки из пробного в тарифицируемый период.
  • Продлении активной подписки в Панели управления Оператора (см. Ручное продление Подписки) или в Панели управления Клиента (см. Renewing a Subscription).
  • Автопродлении Подписки (см. Автоматическое продление Подписки).
  • Изменении Ресурсов Подписки (см. Изменение количества Ресурсов Подписки).
Подтверждение email (Verify email)Происходит при регистрации нового пользователя в Панели управления Клиента, после нажатия кнопки Зарегистрироваться (подробнее см. Short registration).
Приглашение пользователя (User invitation)Происходит при приглашении внешнего пользователя Владельцем или Администратором Аккаунта (подробнее см. Inviting an External User).
Заказ изменён (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, ESET solutions for ISP (Monthly), G Suite, Оплата в полном объеме и Без возврата, в поле Правило нужно добавить следующее условие:

    monthly_billing = "true"
  • Количество дней, которые остались до даты Финансового дня: задается при помощи Плейсхолдера billing_day_left. Чтобы Уведомления приходили только за определенное количество дней до наступления уникального Финансового дня, в поле Правило нужно добавить следующее условие:

    billing_day_left = {количество дней до Финансового дня, за которое нужно отправить Уведомление}

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

  • Число месяца, на которое установлен Финансовый день. Задается при помощи Плейсхолдера billing_day.
  • Сумма Cписаний в статусе Открыто, которые будут закрыты или заблокированы в Финансовый день, для которого было вызвано событие. Учитываются только Подписки, у которых Точка автоматического продления = 0. Если Списания в статусе Открыто не существуют, то производится расчет суммы на основе предварительной генерации Списаний на будущий Финансовый период. Задается при помощи Плейсхолдера billing_day_open_charges_amount.
  • 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-го, так и 1-го числа каждого месяца за 23 и за 24 дня до до наступления Финансового дня. Всего будет отправлено четыре Уведомления.

Также для формирования Правила можно использовать арифметические операторы + и -, операторы сравнения значений Плейсхолдеров> <, менять порядок значений (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 подписки, у 2-х из них финансовый день 5 число, у 1-ой — 10, соответственно событие будет вызываться дважды — 5 и 10 числа.
  2. Выполняются условия, заданные в поле Правило.

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

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

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

В поле Получатель на странице создания и редактирования Шаблона уведомлений можно указать Плейсхолдер {{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 — ссылка для перехода в Панель управления Клиента на страницу Аналитика той Подписки, для которой сработало Событие, с предустановленными фильтрами (см. Viewing Charges for a Subscription):
    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><div style="height: {{ totals['total'] | times: 140 | divided_by: subscription.max_totals_sum_weekly }}px; background-color: {{totals['chart_color']}};"></div></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 раз.

 Пример

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

subscription_postpay.credit_limit % 70 < subscription_postpay.current_debt

Закрывающие документы сформированы (Closing documents generated)Событие наступает при вызове API-метода (см. Send notifications on Closing documents) для рассылки уведомлений Клиентам Реселлера о том, что Закрывающие документы за указанный период получены из сторонней ERP-системы и доступны для скачивания по ссылкам и через Панель управления Клиента в разделе Закрывающие документы (см. Managing 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 Реселлера. Правило обработки для События не настраивается. В качестве получателя уведомления можно указать только конкретный email Сотрудника без использования Плейсхолдеров. См. Настройка уведомлений для Подписок Microsoft Azure Plan в руководстве Services. Operator Guide.

Отзыв | Feedback