Реалізація двосторонньої синхронізації каталогу товарів з ERP-системою

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Реалізація двосторонньої синхронізації каталогу товарів з ERP-системою
Складна
від 2 тижнів до 3 місяців
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Реалізація двосторонньої синхронізації каталогу товарів з ERP-системою

ERP (SAP, Oracle NetSuite, Microsoft Dynamics, Odoo) — система управління ресурсами підприємства. На відміну від 1С, ERP-системи мають зрілі REST API або SOAP/OData-інтерфейси, але кожна зі своєю моделлю даних та логікою версіонування.

Варіанти інтеграційних протоколів

ERP Протокол Формат
SAP S/4HANA OData v4, REST JSON/XML
Oracle NetSuite REST (SuiteQL) JSON
Microsoft Dynamics 365 OData v4 JSON
Odoo JSON-RPC / REST JSON
1С:ERP CommerceML + REST XML/JSON

Паттерн інтеграції: Event-Driven vs Polling

Polling — сайт періодично запитує зміни в ERP. Простіше реалізувати, але створює затримку.

Webhooks / Change Data Capture — ERP сповіщає сайт про кожну зміну. Мінімальна затримка, але потребує підтримки з боку ERP.

Гібридний підхід (рекомендується): webhooks для критичних даних (ціни, остатки), polling раз на годину для менш термінових (описи, характеристики).

Приклад інтеграції з Odoo

import xmlrpc.client

class OdooConnector:
    def __init__(self, url, db, username, password):
        self.url = url
        self.db  = db
        # Аутентифікація
        common = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/common')
        self.uid = common.authenticate(db, username, password, {})
        self.models = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/object')

    def get_products(self, since: datetime = None):
        domain = [['active', '=', True]]
        if since:
            domain.append(['write_date', '>', since.isoformat()])

        return self.models.execute_kw(
            self.db, self.uid, self.password,
            'product.template', 'search_read',
            [domain],
            {'fields': ['id', 'name', 'default_code', 'list_price',
                        'qty_available', 'categ_id', 'description_sale']}
        )

Обробка змін

class ERPSyncService:
    def sync_products(self):
        last_sync = SyncState.get_last_sync('erp_products')
        products  = self.erp.get_products(since=last_sync)

        updated = 0
        for erp_product in products:
            product, created = Product.objects.update_or_create(
                erp_id=erp_product['id'],
                defaults={
                    'name':     erp_product['name'],
                    'sku':      erp_product.get('default_code', ''),
                    'price':    erp_product['list_price'],
                    'stock':    erp_product['qty_available'],
                    'category': self.map_category(erp_product['categ_id']),
                }
            )
            updated += 1

        SyncState.update_last_sync('erp_products', datetime.now())
        return updated

Терміни

Інтеграція з конкретною ERP через API з двосторонньою синхронізацією: 12–20 робочих днів залежно від якості документації та доступності тестового середовища ERP.