Налаштування базової автоматизації
Базова автоматизація дозволяє автоматичну синхронізацію API, що запускається конкретними подіями в Odoo. Цей посібник пояснює, як налаштувати автоматизовані робочі процеси для безперебійної синхронізації даних.
Огляд
Базова автоматизація дозволяє вам:
- Запускати API виклики при створенні, оновленні або видаленні записів
- Планувати періодичну синхронізацію для пакетної обробки
- Реагувати на зміни полів з негайними оновленнями API
- Ланцюжити кілька автоматизацій для складних робочих процесів
Налаштування базової автоматизації
Передумови
- Конфігурація API має бути завершена
- Зіставлення полів мають бути визначені
- Користувач повинен мати увімкнені Технічні функції
- Модуль Базова автоматизація має бути встановлений
Покрокове налаштування
1. Доступ до правил автоматизації
Перейдіть до: Налаштування → Технічні → Автоматизація → Правила автоматизації
Інтерфейс налаштування базової автоматизації
2. Створення нового правила
Натисніть Створити та налаштуйте:
Name: Синхронізувати клієнта з зовнішнім API
Model: Контакт (res.partner)
Trigger: При створенні та оновленні
Active: Так
3. Налаштування умов тригера
Визначте, коли має запускатися автоматизація:
# Умови тригера
Trigger: При створенні та оновленні
Before Update Domain: [('is_company', '=', True)]
Apply on: [('customer_rank', '>', 0)]
Watch Fields: name, email, phone, vat
Типи тригерів
При створенні
Синхронізувати нові записи негайно:
# Правило автоматизації
Name: Синхронізувати нових клієнтів
Model: res.partner
Trigger: При створенні
Action: Виконати код Python
# Код Python
# config_index - замініть на свій індекс конфігурації API
env['bj.api.sync.config']._make_outbound_http_request(record_ids=records, config_id_ref=config_index)
При оновл енні
Синхронізувати при зміні конкретних полів:
# Правило автоматизації
Name: Оновити зміни клієнта
Model: res.partner
Trigger: При оновленні
Watch Fields: ['name', 'email', 'phone', 'street']
# Код Python
# config_index - замініть на свій індекс конфігурації API
env['bj.api.sync.config']._make_outbound_http_request(record_ids=records, config_id_ref=config_index)
При видаленні
Повідомити зовнішню систему про видалення:
# Правило автоматизації
Name: Синхронізувати видалення клієнта
Model: res.partner
Trigger: При видаленні
# Код Python
# config_index - замініть на свій індекс конфігурації API
env['bj.api.sync.config']._make_outbound_http_request(record_ids=records, config_id_ref=config_index)
Заплановані дії
Налаштувати періодичну синхронізацію:
# Запланована дія
Name: Щоденна синхронізація клієнтів
Model: ir.cron
Active: Так
Interval: 1 День
Next Execution: 2024-01-01 02:00:00
# Код Python
def run_daily_sync():
"""Синхронізувати всіх змінених клієнтів щодня"""
yesterday = datetime.now() - timedelta(days=1)
customers = env['res.partner'].search([
('write_date', '>=', yesterday),
('customer_rank', '>', 0)
])
# config_index - замініть на свій індекс конфігурації API
env['bj.api.sync.config']._make_outbound_http_request(record_ids=customers, config_id_ref=config_index)
Розширені шаблони автоматизації
Умовна синхронізація
Синхронізація на основі складних умов:
def should_sync_customer(record):
"""Визначити, чи повинен клієнт бути синхронізований"""
# Перевірити кілька умов
conditions = [
record.customer_rank > 0,
record.email and '@' in record.email,
record.country_id.code in ['US', 'CA', 'MX'],
not record.is_blacklisted
]
return all(conditions)
# У правилі автоматизації
if should_sync_customer(record):
# config_index - замініть на свій індекс конфігурації API
env['bj.api.sync.config']._make_outbound_http_request(record_ids=record, config_id_ref=config_index)