|
Здравствуйте.
Мы столкнулись с проблемой синхронизации остатков товаров в WooCommerce при использовании WPML и обновлении stock через внешний источник.
Описание окружения
WooCommerce
WPML + WooCommerce Multilingual
Основной язык магазина: русский
Дополнительные языки: английский, эстонский, финский
Остатки товаров синхронизируются из MSI (ConnectPOS) в WooCommerce через webhook / API
Товары переведены через WPML (это не отдельные независимые товары)
Описание проблемы
Если остаток товара в MSI равен 0 и мы изменяем его на положительное значение в MSI:
синхронизация с WooCommerce происходит сразу
остаток корректно обновляется только у товара на основном языке (RU)
переводы товара (EN / ET / FI):
не получают обновление _stock и _stock_status
остаются со статусом «Нет в наличии»
информация на других языках обновляется только после ручного сохранения товара в админке WooCommerce
Проблема воспроизводится как на простых, так и на вариативных товарах.
Ожидаемое поведение
При программном обновлении остатков (через webhook / API / импорт):
остатки и статус наличия должны автоматически синхронизироваться между всеми переводами товара
все языковые версии одного товара должны иметь одинаковый stock и stock status
Вопросы
Есть ли в WPML / WooCommerce Multilingual настройка, которая отвечает за автоматическую синхронизацию _stock и _stock_status между переводами при программном обновлении товара (не через ручное сохранение)?
Существует ли официальный хук / action / функция WPML или WCML, которую необходимо вызывать после обновления stock, чтобы принудительно инициировать синхронизацию на всех языках?
Какой рекомендуемый WPML-подход для мультиязычного магазина, если остатки обновляются сторонней системой (POS / ERP) через webhook?
Возможное временное решение
Если проблема связана с тем, что при программном обновлении stock не вызываются необходимые хуки WPML/WCML, подскажите, пожалуйста:
можно ли принудительно вызвать эти хуки после изменения _stock / _stock_status
существует ли рекомендуемый сниппет (workaround) от WPML, который:
отлавливает изменение остатков товара
и синхронизирует stock / stock status между всеми переводами
Мы понимаем, что источник обновления — сторонний плагин, но будем благодарны за любой рекомендованный временный подход со стороны WPML.
При необходимости можем предоставить видео с воспроизведением проблемы и доступ к тестовому товару.
скрытая ссылка
Также получили ответ от поддержки ConnectPos где они подтвердили что синхронизация происходит только по ID товара на основном языке, соответственно данные не меняются на других ID
MSI only handles RU products. Even though the RU and ENG products share the same SKU, they still have different product IDs. When you update inventory through MSI, the system updates inventory based on product ID, not SKU.
Because of this, the inventory sync only affects the RU product ID, which is why you can see the update on the RU items but not on the ENG items.
Just to confirm the way they update based on which attribute/criteria ?
Возможно у вас уже имеется какое то решение в виде сниппета который бы вызывал хуки если бы изменения поступали бы по REST API от ConnectPOS MSI to Woo и принужительно бы проверял другие вариации переводов.
Заранее спасибо за помощь.
|