Компанія «
RACER WORLDWIDE» є міжнародним інтернет-магазином продажу одягу, взуття, ювелірних виробів, сумок та аксесуарів .
Локація - Таллінн, Естонія.
Робота компанії базується на використанні трьох систем:
- Shopify – здійснення замовлень та продажу товарів;
- Erply – організація роботи в точках продажу та управління запасами товарів;
- Erplybooks – бухгалтерський облік та звітність, здійснення банківських операцій.
Якщо вас цікавить актуальна інформація про інші можливі
інтеграції з Shopify або Erply, ви завжди можете запросити її у нашої підтримки.
Очікувані результати інтеграції «Shopify – Erply»
- Реалізація інтеграції «Shopify – Erply», забезпечення автоматизованої передачі даних між відповідними системами, впорядкування та узгодження їх функціонування. часткових повернень (відмов від замовлення).
- Основною системою для внесення даних має бути Shopify, а підтверджувати дані про замовлення, забезпечувати процеси оплати та доставку його клієнту повинен Erply. Процеси оплати та доставки забезпечує Шопіфай та інтегрований з ним сервіс https://outvio.com Ерплі відповідає за склад і веде облік собівартості, закупівлі, залишки та інше. документи продажу та оплати для подальшої передачі в Erplybooks
Передумовою роботи було технічне завдання, яке передбачало таке:
1. Організація автоматизованого завантаження замовлень в Erply.
Незалежно від статусу оплати, замовлення має бути зареєстроване в Erply, і товар на складі зарезервований. Замовлення має змінювати два статуси замовлення в Erply – статус платежу та статус виконання. Відповідно, статуси повинні правильно оновлюватись та функціонувати при внесених змінах.
2. Оптимізація процесу відшкодування оплати за замовлення у разі його повного або часткового повернення.
Базова функціональність Credit Invoice у Erply не влаштовувала компанію. Товар повертається на склад за кредитною накладною, яка не потрібна компанії. Кредитний рахунок є фінансовим документом і не повинен повертати продукт на склад. Товари мають бути повернені на склад із створенням окремого document (waybill). Завдання – врегулювання процесів інтеграції Shopify з Erply у разі повернення товару або часткового повернення та відшкодування повної чи часткової оплати за замовлення.
Отримати консультацію
3. Спочатку процес перенесення нових товарів передбачав перенесення товару в Shopify з Erply.
У процесі реалізації перших етапів робіт напрям синхронізації вирішено було замінити на зворотне (при обговоренні вдалося замінити цей процес на зворотний без зміни загальної вартості інтеграції). Завданням стало оновлення та створення нових продуктів у Shopify та автоматична передача їх у Erply за чітко обумовленими даними: фотографії, опис товару, категорія товару, тип продукту, варіації розмірів, штрих-коди товару/варіації (EAN), товар/варіація SKU, роздрібна ціна (з ПДВ), ціна продукту/ціна варіації, постачальник (бренд), країна виробника, вага товару/варіації, HS Code.
Ризики інтеграції «Shopify – Erply»
При виконанні даного технічного завдання ризики полягали в тому, щоб у момент реалізації інтеграції в Erply не були внесені зміни до вже наявних продуктів до моменту повного перенесення бази товарів з Shopify. Після зміни напряму синхронізації товарів цей ризик став не актуальним.
Етапи проведеної роботи
Перенесення даних про товари.
Найважливішим і громіздкішим, у виконанні, етапом вирішення поставлених технічних завдань з налаштування інтеграції є обов'язкове перенесення всіх товарів з Shopify до Erply. Щоб запустити завантаження замовлень, необхідно вивантажити товари або зіставити за SKU (SS22-SW-ICE-HOODIE-XL). Оскільки основним джерелом даних згідно з технічними завданнями має бути Shopify, де створюватимуться продукти та автоматично переноситимуться за таким же принципом у Erply, крім показника cost per item – значення вартості за одиницю товару, який надалі планується змінюватися компанією самостійно. Якщо статус товару змінюється у Shopify, він також повинен змінюватись і в Erply. У робочій версії інтеграції статус товарів має бути оновлено. Оновлення товарів має поширюватися на всі пункти інформації про товари та їх варіації. Щоб уникнути конфліктів, спочатку роботи були видалені попередні товари, створені раніше. Очікування полягали в тому, що всі товари будуть мати варіації, тому виникло непередбачуване - продукти, що не мали варіації (поодинокі) в Shopify, перенеслися в Erply, як матричний продукт (має варіанти), з зайвим варіантом якого в параметрах додано "Default Title". Erply має поділ на «matrix products» і «regular products».
Єдиний шлях для виправлення цієї ситуації – завантажити товари наново. При запуску робочого розвантаження товари з варіаціями стали переноситися як матричні, а товари без варіацій як одиничні.
Наступним етапом запущено процес вивантаження та оновлення замовлень із Shopify. Важливим питанням, яке виникло під час перенесення даних – у чому різниця між «EU» та «EU with VAT»? Обговорення цього питання не було порушено в оцінці інтеграції. У разі надходження замовлень із країн Євросоюзу має використовуватись лише варіант «with VAT», оскільки продаж товарів без податку у них відсутній. Інформація про податок відображається в кожному замовленні назвою самого податку ["title"]=>string(6) «AT VAT» та його ставкою (наприклад ["rate"]=> float(0.2)), тобто достатньо було лише коректно перенести у замовлення в Erply ["title"] та ["rate"] із замовлень у Shopify. У той же момент цей момент впливав на загальну вартість інтеграції, що реалізується. Її вдалося компенсувати реорганізацією та спрощенням бізнес-процесу пов'язаного з поверненнями.
Проблема підтвердження замовлень
При докладнішому вивченні роботи Erply виникла потреба внести зміни до інтеграції «Shopify – Erply». Ключовим моментом чого було підтвердження замовлень у Shopify до початку передачі даних в Erply. Відкладеною відправкою замовлення з Shopify Erply стало додавання до замовлення спеціального тега
. Також на цьому етапі було реалізовано оновлення даних замовлення та товарів у ньому, залежно від змін на стороні Shopify.
У ході робіт виникла необхідність реалізації додаткового технічного завдання, а саме – змінити порядок створення документів в Erply:
1. Замовлення вивантажується до Erply після підтвердження створення спеціального тегу .
2. Система "invoice-waybill" - в даний час створюється "invoice" та окремо "waybill" - створюються в Erply, коли статус замовлення на Shopify змінюється на "Виконано".
3. Оплата передається в Erply тільки для підтверджених (з тегом) замовлень і може передаватися з замовленням або пізніше після відправки.
Після додавання спеціального тега реалізували створення invoice-waybill, проте замовлення та пов'язані з ними invoice залишалися неоплаченими. Всі замовлення, які синхронізувалися за новим сценарієм у Shopify оплачені, а Erply – ні. У замовленні "оплачено", а в invoice - "не оплачено". Логіка API запитів Erply має на увазі автоматичне створення Payment документа, при передачі параметра, що замовлення було сплачено. Але якщо замовлення оплачено пізніше, наявна функціональність API не дозволяла ідентифікувати такий Payment документ, і виникла потреба переробити ряд запитів, і регулювати створення та зміну Payment документа окремими запитами.
Наступне тестування показало, що розрахунковий платіж створювався помилково. Це пояснювалося тим, що спочатку була здійснена прив'язка оплати до документа замовлення, тому змінена прив'язка оплат до документів. У випадках, коли вводі не було сформовано, рахунок на оплату товару не створювався. Зроблені зміни полягали в наступному: наявність invoice – до нього прикріплювалася оплата за товар, а за відсутності – до замовлення. Однак, платіж може бути створений без invoice, оскільки invoice створюється коли fullfilmment status=fulfilled, partial. Отже, оплата замовлення може здійснюватися на будь-якому етапі після створення замовлення або одночасно із замовленням, тобто до створення invoice, або після.
Прив'язка до локації видачі товару
У процесі роботи над рішенням інтеграції Shopify та Erply виникла потреба у реалізації ще одного додаткового завдання. Головною умовою було – не зламати вже налаштовані процеси у існуючій системі. У Shopify можлива видача товару з різних складів або магазинів. товар було списано також зі складу «Paljasaare Warehouse». Завдання успішно вирішене – локації автоматично ідентифікують одне одного за найменуваннями, це дозволяє працювати клієнту з новими локаціями без залучення розробників. Проведено тестування цієї настройки свідчать, що система запрацювала правильно.
Рішення інших "аномалій" інтеграції «Shopify – Erply»
Замовлення та рахунок до замовлення створювалися без доставки.
Було реалізовано механізм автоматичного зіставлення типу доставки з товарами заведеними до Erply у вигляді відповідних доставок. Механізм автоматичного зіставлення реалізований за тим самим принципом, як і локації - за найменуваннями.
У рахунку не видалялися варіації товарів при їх видаленні на замовлення на стороні Shopify
Було оптимізовано механізм зберігання раніше вивантажених товарів. Для цього була перероблена структура таблиць бази даних, якою є зв'язкою Shopify та Erply. Ці таблиці зберігають в собі інформацію про зміни, що відбуваються в реалізованій інтеграції
Під час робіт проходили не всі зміни замовлень на стороні Shopify
Дане пояснення замовнику про необхідність проведення будь-яких змін у замовленні, щоб змінювався час зміни замовлення, та замовлення повторно йшло у вибірку на перевірку змін.
Неправильне визначення податку на замовлення
Фактично перевірка країни попередньо виконана за «shipping_address». Для вирішення аномалії додано додаткову перевірку по «billing_address», у місці її відсутності – по «shipping_address».
Усі роботи, проведені з метою вирішення проблеми інтеграції «Shopify – Erply» у компанії міжнародного інтернет-магазину «RACER WORLDWIDE», вважаються успішними, про що свідчить низка проведених тестувань та спостережень. Технічні завдання, які були поставлені з метою налаштування очікуваного функціонування систем, а також додаткові технічні завдання, що виникають у процесі налаштування всієї синхронізації програмного забезпечення, успішно вирішено. Успішна реалізація проекту – задоволений замовник, адже робота його компанії чітка, злагоджена та автоматизована!