Модуль Generic Condition

Generic Condition - це модуль, розроблений компанією Center of Research & Development. Він дозволяє створювати універсальні умови, за допомогою яких програмується певна логіка в роботі з об'єктами Odoo.

Модуль Generic Condition інтегрується та може використовуватися в інших додатках Odoo за допомогою додаткових модулів (наприклад в додатку Generic Request за допомогою модуля Generic Request (Conditions)).


Універсальні умови

В додатку Generic Request після встановлення модулю Generic Condition і Generic Request (Conditions) можна побачити нову опцію Універсальні умови в меню Конфігурація.

Натисніть Універсальні умови. Ви перейдете на сторінку універсальних умов.

Тут можна побачити всі створені універсальні умови. Базові умови вже створені і доступні за замовчуванням.

На сторінці можна створювати нові умови, редагувати та видаляти вже існуючі.

Створення і налаштування нової універсальної умови

Для створення нової універсальної умови натисніть Створити зліва вгорі.

Відкриється форма для створення нової умови. Заповніть всі поля, виділені фіолетовим кольором.

У верхньому полі введіть назву нової умови.

Натисніть випадаюче меню напроти поля Базується на моделі та оберіть модель, на якій базується умова. Моделлю може бути будь-який об'єкт Odoo, який вам потрібен для роботи.

Натисніть випадаюче меню Тип та оберіть тип умови.

В залежності від обраного типу будуть різні варіанти продовження програмування умови:

  1. Якщо обрати типом умови Вираз:
    Ви зможете описати умову виразом мовою програмування Python (наприклад вираз "obj.request_text == 'do assign'" буде означати, що текст запиту має дорівнювати "do assign")

    Вираз не обмежується одним рядком, можна писати великі фрагменти коду, натискаючи Enter в кінці рядка для переходу на наступний.
    При написанні коду можете використовувати наступні змінні:
    - obj - обʼєкт, що перевіряється
    - record - запис обʼєкту, що перевіряється (те саме що obj)
    - env - середовище
    - model - модель
    - uid - ID поточного користувача
    - user - поточний користувач
    - time - модуль python "time"
    - datetime - модуль python "datetime"
    - dateutil - модуль python "dateutil"
    - timezone - модуль python "timezone"
  2. Тип умови Фільтр:
    Напроти поля Умова необхідно вказати фільтр, за яким буде проводитись перевірка. Цей тип використовується для роботи з користувацькими фільтрами Odoo.
    Натисніть випадаюче меню і оберіть фільтр зі списку, або створіть власний, натиснувши Створити і редагувати
  3. Якщо вибрати тип Умова:
    Тут ви можете обрати одну з вже створених умов в даній умові (це корисно наприклад для виконання цієї ж умови, але з інверсією чи як суперкористувач). Натисніть випадаюче меню напроти поля Умова та оберіть зі списку. Щоб побачити більше варіантів натисніть Шукати ще, для створення нової умови натисніть Створити і редагувати.
  4. Тип умови Група умов:
    Цей тип умови дозволяє використовувати одночасно декілька умов.
    - Напроти поля Умова (група умов) оператор виберіть один з двох логічних операторів ("Або" - загальна умова буде виконуватись, якщо буде виконуватись хоч одна із зазначених умов; "І" - загальна умова буде виконуватись, якщо всі зазначені умови будуть виконані).
    - Напроти поля Умова (група умов) послідовно оберіть всі необхідні умови або створіть нові, натискаючи Створити і редагувати.
  5. Тип умови Різниця дат:
    Цей тип умови дозволяє оцінити різницю дат між певними подіями.
    - В колонці Дата завершення та Дата початку ви можете вказати дату, час, поточну дату, або прив'язати дату до поля (створено, призначено, переміщено і т.д.).
    - В колонці Оператор виберіть оператор порівняння.
    - В колонці Результат введіть необхідну вам цифру.
    - В наступній колонці виберіть одиниці виміру для різниці дат.
    - Щоб результат різниці дат завжди був додатній, поставте галочку у колонці По модулю.
  6. Тип Просте поле:
    Тут ви можете створити умову, яка відноситься до простого поля об'єкту Odoo.
    - У колонці Поле оберіть з меню необхідне поле.
    - В колонці Оператор виберіть необхідний оператор. В залежності від обраного поля він може бути математичним, булевим тощо. Якщо вказане поле містить текст, за допомогою оператора можна виконувати пошук по тексту із заданими параметрами (незалежно від регістру, пошук за допомогою регулярного виразу).
    - В полі Значення введіть необхідне значення умови або текст (регулярний вираз) для пошуку та порівняння.
  7. Тип умови Зв'язане поле:
    Ця умова відноситься до зв'язаного поля.
    - В колонці Поле оберіть з меню необхідне поле.
    - У колонці Оператор оберіть один з трьох доступних операторів (Встановлено, Не встановлено або включає). Якщо вибраний оператор Включає, з'явиться ще одна колонка Значення, оберіть тут бажане значення.
  8. Тип Поточний користувач:
    Цей тип умови відноситься до поточного користувача та перевіряє чи є поточний користувач у заданому полі. Напроти поля Поле користувача натисніть випадаюче меню і оберіть поле, в якому буде проходити перевірка.
  9. Тип умови Грошове поле:
    За цим типом можна створити умову, яка буде порівнювати грошові показники.
    - В колонці Поле оберіть поле, з якого буде братися інформація, нижче оберіть валюту.
    - У колонці Оператор оберіть оператор порівняння.
    - В колонці Результат вкажіть результат для порівняння і нижче валюту.
    - В колонці Дата обліку вкажіть дату обліку або пов'язане з датою поле.
  10. Тип Зв'язані умови:
    Використовується для перевірки властивостей пов'язаних об'єктів.

    Тут необхідно ввести наступні дані:
    1 - спосіб перевірки пов'язаних записів:
    - Cпівпадіння - коли всі вибрані записи відповідають умовам перевірки
    - Включає - коли хоча б один із записів відповідає умовам перевірки
    2 - поле, за яким будемо проводити пошук пов'язаного об'єкту
    3 - оператор умови фільтру:
    - "І" - дійсний коли всі умови фільтру дійсні
    - "Або" - дійсний коли хоча б одна з умов фільтру дійсна
    4 - умови фільтру пов'язаних записів
    5 - оператор пов'язаних умов перевірки:
    - "І" - дійсний коли всі умови перевірки дійсні
    - "Або" - дійсний коли хоча б одна з умов перевірки дійсна
    6 - пов'язані умови перевірки

В центральній частині форми створення умови розташовані додаткові параметри, які можна задавати, поставивши галочки.

Опція Ввімкнути кешування означає, що результат перевірки кожного окремого об'єкту буде кешовано протягом перевірки одного ланцюжка умов. Це може прискорити обробку умов.

Параметр Інвертувати (НЕ) використовується, якщо ви хочете інвертувати умову (отримати умову протилежну даній).

Опція Використати sudo включається для використання суперкористувачем.

Внизу сторінки можна додати опис універсальної умови. Для цього натисніть Опис і введіть необхідну інформацію.

Щоб зберегти створену умову натисніть Зберегти зліва над формою.

У правій верхій частині форми знаходиться кнопка Test. Вона використовується для перевірки створеної вами універсальної умови.

Натисніть Test. Відкриється вікно перевірки створеної умови.

Під міткою Condition показано умову, за якою ви будете перевіряти об'єкт.

Під Object натисніть випадаюче меню. Тут будуть всі створені під час роботи документи (об'єкти). Вони відображаються за своїм ID. Оберіть зі списку об'єкт, який ви хочете перевірити за даною умовою.

Для початку перевірки натисніть TEST зліва знизу.

Після проходження перевірки відкриється вікно з результатами.

Під Condition Result показано загальний результат перевірки. В разі успішного результату ви побачите повідомлення Гаразд. В іншому випадку ви побачите Провал.

Під Condition Debug Log можна побачити покрокову перевірку умови з проміжними результатами.


Щоб редагувати умову натисніть на неї. На сторінці форми умови натисніть Редагувати.

Далі повторіть дії з попереднього розділу.

Для видалення умов виберіть їх зі списку, поставивши галочки. Далі у меню Дія натисніть Видалити.