Стенд GuardLabs. OkayCMS 2.x та 3.x

Ціни та залишки постачальника в OkayCMS двома шляхами: імпорт або SQL

Типова біль магазину на OkayCMS: раз на тиждень приходить прайс, і хтось руками переносить ціни в адмінку. На кількох сотнях позицій це вечір роботи та гарантовані помилки. Нижче живий інструмент: вставте прайс, отримайте одразу два артефакти, CSV для штатного імпорту та SQL для прямого оновлення бази по артикулу.

Біль

Чому «просто залити прайс» не виходить

Чужа структура файла

Колонки постачальника не збігаються зі схемою імпорту OkayCMS: назви інші, порядок інший, ціни з «грн» і пробілами.

Оновлення, а не створення

Потрібно оновити ціну та залишок наявних товарів за артикулом, не наплодивши дублікатів карток при повторному імпорті.

Варіанти товару

В OkayCMS ціна і склад живуть не в товарі, а у варіанті: таблиця ok_variants, поле sku. Оновлювати треба саме її.

Рішення

Живий генератор: спробуйте прямо тут

Вхід: прайс постачальника, CSV з будь яким роздільником
Звіт перевірки рядків
Звіт з'явиться після генерації. Кнопка «Вставити тестовий прайс» покаже роботу на навмисно кривому файлі.
Як перевірити

Два шляхи, обидва зі звіркою

  1. Натисніть «Вставити тестовий прайс», потім «Згенерувати». У звіті видно: дубль артикула відсіяно, рядок без коду та рядок без ціни позначені й не потрапили у вихід.
  2. Шлях 1, штатний імпорт: скачайте okay_import.csv, в адмінці OkayCMS відкрийте Каталог, Імпорт, завантажте файл, звірте відповідність колонок у прев'ю та запустіть. Зіставлення йде за артикулом, наявні товари оновлюються, нові створюються.
  3. Шлях 2, SQL напряму: перед виконанням зробіть бекап, перший рядок скрипта нагадує команду mysqldump. Виконайте скрипт у phpMyAdmin або консолі: він працює в транзакції та оновлює лише наявні артикули.
  4. Звірка після SQL: запит SELECT наприкінці скрипта повертає sku, price, stock оновлених варіантів. Числа мають збігтися зі звітом на цій сторінці.
Специфіка OkayCMS, яку враховує генератор: ціна і залишок зберігаються у варіанті товару, таблиця ok_variants, зіставлення за полем sku; префікс таблиць ok_ стандартний, якщо у вашій збірці інший, він задається однією заміною; SQL оновлює тільки наявні артикули та не чіпає товари, яких немає у прайсі, тому знятий з продажу асортимент не постраждає.
Чесно

Це власний стенд GuardLabs, а не клієнтський кейс: комерційних проєктів на OkayCMS ми не заявляємо. Інструмент робочий, все рахується локально у вашому браузері, дані нікуди не надсилаються. Для реальних магазинів такий самий підхід ми загортаємо в автоматичне щоденне оновлення: скрипт забирає прайс поштою або за посиланням і сам оновлює базу зі звітом у Telegram.