Magento Forum

   
Решено: Не видятся товары созданные через SOAP Api
 
Shapilov_Alexander
Jr. Member
 
Total Posts:  23
Joined:  2008-09-10
 

Доброго времени суток.

Странная ситуация товары, созданные через api начинают просматриваться во frontend-e только после пересохранения в admin-ке.
Причем при пересохранении никакие реквизиты не меняются.
После создания товара через api:
status=enable,
Manage Stock = No (галочка ‘Использовать настройки конфигурации’ включена)
Видимость = Каталог, поиск

в конфигурации стоит
Manage Stock = No
Set Items’ Status to be In Stock When Order is Cancelled = Yes
Уменьшать количество товара в момент оформления заказа = No
Возвратные заказы=No
Максимальное количество разрешенное в корзине=10000
Qty for Items’ Status to become Out of Stock=
Минимальное количество разрешенное в корзине=1
Уведомлять по количеству ниже=1

Пробовал дополнительно к товару писать stock data: ‘qty’=>1, ‘is_in_stock’=>1 - не помогает,

На форуме http://www.magentocommerce.com/boards/viewthread/20227/ нашел информацию, что это связано с тем, что запись в таблице catalog_product_enabled_index появляется только после сохранения в admin-ке

К сожалению дело не только в таблице catalog_product_enabled_index (если она вообще виновата) - добавление в нее записей на результат не повлияло(еще чегото не хватает)

 
Magento Community Magento Community
Magento Community
Magento Community
 
Shapilov_Alexander
Jr. Member
 
Total Posts:  23
Joined:  2008-09-10
 

После сравнения баз данных до и после сохранения товара в админке выяснил следующее, что бызы отличаются записью в таблице catalog_product_website, до сохранения у нового товара website_id=0, после website_id=1
website_id=0 получается если при создании передавать ‘websites’ => array(’base’) (как сделано в примере), если передать ‘websites’ => array(1)(это в примере закоментировано) - то сразу пишется website_id=1. Таблица catalog_product_enabled_index не при чем. Вот такая странная ситуация.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Killoff
Magento Team
 
Avatar
Total Posts:  17
Joined:  2008-05-22
 

В документация допущена ошибка, которая уже исправлена.
Таким образом, в websites нужно передавать массив из id website’ов, к которым мы хотим отнести создаваемый продукт.
Спасибо за внимательность smile

 
Magento Community Magento Community
Magento Community
Magento Community
 
Shapilov_Alexander
Jr. Member
 
Total Posts:  23
Joined:  2008-09-10
 

Хочу еще добавить следующее по поводу создания товара через SOAP API.
Если дополнительно к созданному товару не записать stock data черз product_stock.update, то будет ломаться frontend:
файл app/design/frontend/default/default/template/sales/reorder/sidebar.phtml строка 48 код $_item->getProduct()->getStockItem()->getIsInStock()
Я думаю этот момент тоже имеет смысл отразить в документации

 
Magento Community Magento Community
Magento Community
Magento Community
 
Killoff
Magento Team
 
Avatar
Total Posts:  17
Joined:  2008-05-22
 

Возможность указать stock_data не предусмотрена при создании и обновлении продукта (product.create, product.update)
Для этого есть API в модуле catalog_inventory (cataloginventory_stock_item.update)

Так или иначе, мы добавили эту возможность. Теперь можно будет передавать stock_data в $productData:

‘stock_data’ => array(’qty’ => 10, ‘is_in_stock’ => 1)

Также добавилась возможность передавать websiites как по айди, так и по коду вебсайтов.
То есть следующие строки эквивалентны:
‘websites’ => array(’base’)
и
‘websites’ => array(1)

Проделанные изменения будут доступны в след. релизе. Документация также будет изменена.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
    Back to top