Добрый день!
Основной мой вопрос: как можно пересчитать количество товаров в каталоге в соответствии с доступным количеством на складах?
Существует проблема с несоответствием доступного количества на складах и в каталоге. Например вызов CCatalogSKU::getOffersList([100500], 1, [], ['ID', 'IBLOCK_ID', 'CATALOG_QUANTITY']) возвращает массив с значением CATALOG_QUANTITY больше нуля. Но если посмотреть в админке по остаткам на складах или вызвать CCatalogStoreProduct::GetList([], ['PRODUCT_ID' => 12345]) для нужного предложения, то можно увидеть, что наличие на всех складах нулевое.
И это не единичный случай, таких товаров в каталоге достаточно. Проверял запросом
Вообще почему такое может происходить, почему доступное количество товаров может обновляться некорректно? И как это правильно можно исправить, как пересчитать количество товаров в соответствием с количеством по складам? Из-за этого возникают проблемы с реальным отображением наличия товара для покупателя в компонентах каталога.
Спасибо.
Основной мой вопрос: как можно пересчитать количество товаров в каталоге в соответствии с доступным количеством на складах?
Существует проблема с несоответствием доступного количества на складах и в каталоге. Например вызов CCatalogSKU::getOffersList([100500], 1, [], ['ID', 'IBLOCK_ID', 'CATALOG_QUANTITY']) возвращает массив с значением CATALOG_QUANTITY больше нуля. Но если посмотреть в админке по остаткам на складах или вызвать CCatalogStoreProduct::GetList([], ['PRODUCT_ID' => 12345]) для нужного предложения, то можно увидеть, что наличие на всех складах нулевое.
И это не единичный случай, таких товаров в каталоге достаточно. Проверял запросом
| Код |
|---|
SEL ECT a.ID, a.QUANTITY, b.amount FR OM b_catalog_product AS a LEFT JOIN (SELECT PRODUCT_ID, SUM(AMOUNT) as amount FR OM b_catalog_store_product GROUP BY PRODUCT_ID) AS b ON a.ID = b.PRODUCT_ID WH ERE (a.QUANTITY + a.QUANTITY_RESERVED) <> b.amount |
Спасибо.