Skip to content

Reviewer Configuration Uk

Конфігурація рецензента завдань

В ERPNext є налаштування сповіщень, де можна налаштувати повідомлення прив’язані до різних подій. Але припустимо, вам потрібно створити повідомлення про призначення рецензента на якесь завдання.

Наприклад, ви створили поле «Рецензент» у типі документа «Завдання». Поле «Рецензент» є посиланням на доктайп «Працівник». Таким чином, ви можете вибрати рецензента для завдання, і ви хочете, щоб рецензент був повідомлений про цю подію.

Тому нам потрібно змінити доктайп “Повідомлення”, щоб мати можливість надсилати сповіщення рецензенту завдання.

Надіслати Рецензенту Python логіка

  1. Перейдіть до доктайпу «Завдання» та натисніть кнопку «Налаштувати».

  2. Додайте поле Рецензент і вкажіть тип “Посилання”, у формі Параметри напишіть «Працівник»

  3. Перейдіть до доктайпу “Повідомлення” і натисніть кнопку «Налаштувати».

  4. Після поля send_to_all_assignees додайте нове поле; позначте його «Надіслати рецензенту», назвіть його send_to_reviewer і виберіть тип “Check”

  5. Перейдіть до поля «Одержувачі», у формі «Обов’язковість Залежить Від», у кінці першого рядка додайте код && !doc.send_to_reviewer, щоб весь текст виглядав так:

    eval:doc.channel!=='Slack' && !doc.send_to_all_assignees && !doc.send_to_reviewer

    Після цієї конфігурації поле «Одержувачі» не буде обов’язковим, якщо ввімкнено параметр send_to_reviewer

  6. Перейдіть до наступного шляху у файловій системі Frappe Framework:

    /workspace/development/frappe-bench/apps/frappe/frappe/email/doctype/notification/notification.py

  7. у notification.py напишемо функцію get_task_reviewer, яка отримує електронну пошту рецензента завдання

    def get_task_reviewer(doc):
    reviewer = frappe.db.get_value("Task", doc.name, "reviewer")
    if reviewer:
    reviewer_email = frappe.db.get_value("Employee", reviewer, "user_id")
    if reviewer_email:
    return reviewer_email
    • Використовуючи def, ми визначаємо функцію get_task_reviewer, яка приймає параметр doc
    • Створюємо змінну reviewer і отримуємо значення з поля reviewer доктайпу «Завдання» за допомогою frappe.db.get_value (тег doc.name отримує назву поточного документа, у нашому випадку він отримує назву завдання, з якого буде надіслано сповіщення)
    • Якщо значення reviewer є істинним, оголошуємо змінну reviewer_email, вона містить електронну адресу рецензента і ім’я рецензента, яке збирається за допомогою frappe.db.get_value.
    • Якщо значення reviewer_email має значення true, функція повертає його
  8. У notification.py в методі get_list_of_recipients знайдіть такі рядки:

    if self.send_to_all_assignees:
    recipients = recipients + get_assignees(doc)
  9. Ми повинні ввести логіку опції send_to_reviewer після рядків вище

    # For Send To the Reviewer custom field
    if self.send_to_reviewer:
    if validate_email_address(get_task_reviewer(doc)):
    recipients.append(get_task_reviewer(doc))
    • У наведеному вище коді на першому кроці ми перевіряємо, чи поле send_to_reviewer об’єкта сповіщень має значення True (або увімкнено)
    • Ми перевіряємо, чи значення, яке повернула функція get_task_reviewer, є істинним, і якщо це так, це значення додається в кінець списку recipients.

Надіслати Рецензенту JavaScript логіка

Тепер, коли у нас є логіка параметра send_to_reviewer, створимо клієнтський сценарій, який показуватиме параметр Надіслати Рецензенту, якщо доктайп Завдання вказано в полі Тип Документу налаштувань Сповіщення

  1. Перейдіть до доктайпу «Клієнтський сценарій».

  2. Натисніть кнопку «Додати клієнтський сценарій».

  3. Назвіть свій клієнтський сценарій і виберіть тип документа «Завдання» в полі «Доктайп».

  4. Запишіть наступний сценарій у форму «Сценарій».

    function reviewer_hide(frm) {
    if (frm.doc.document_type === 'Task') {
    frm.set_df_property('send_to_reviewer', 'hidden', 0);
    } else {
    frm.set_df_property('send_to_reviewer', 'hidden', 1);
    frm.set_value('send_to_reviewer', 0);
    }
    }
    frappe.ui.form.on('Notification', {
    document_type(frm) {
    reviewer_hide(frm);
    },
    onload(frm) {
    reviewer_hide(frm);
    }
    })
    • Спочатку створюється функція reviewer_hide, яка приймає параметр frm
    • Якщо значення document_type дорівнює Task, змінюємо властивість hidden поля send_to_reviewer на 0 за допомогою функції frm.set_df_property; інакше ми змінюємо властивість hidden на 1
    • Ми використовуємо frappe.ui.form.on для виконання функції reviewer_hide у доктайпі ПОвідомлення
    • document_type(frm) використовується для виконання функції reviewer_hide, коли поле document_type змінилося
    • onload(frm) використовується для виконання функції reviewer_hide під час завантаження сторінки.

Використання опції «Надіслати рецензенту».

Тепер у нас є параметр Надіслати рецензенту, який можна використовувати в різних типах сповіщень. Наприклад, ми хочемо, щоб рецензент отримував сповіщення про зміну статусу завдання.

Ми можемо створити таке сповіщення за допомогою параметра Надіслати рецензенту

  1. Перейдіть до типу документа Сповіщення та натисніть кнопку Додати сповіщення

  2. Назвіть сповіщення

  3. Напишіть тему повідомлення

  4. У Send Aler On виберіть опцію Value Change

  5. У Зміна Значення виберіть параметр status (Status)

  6. Виберіть відправника (налаштований обліковий запис електронної пошти)

  7. У типі документа Тип документа виберіть параметр Завдання

  8. Увімкніть опцію Надіслати системне сповіщення

  9. У формі Одержувачі увімкніть опцію Надіслати рецензенту

  10. У формі Повідомлення введіть повідомлення, яке буде містити повідомлення

  11. Натисніть кнопку Зберегти