Magento API - Update Product Stock Levels
Another day... another magento problem!
I was asked to look into a problem with an automated stock level update script not updating the stock levels. This update script was using the Magento API and on the face of things everything looked ok as the script ran without any errors, the product prices got updated but the stock levels never changed.
After a bit of investigating I found the problem was caused by an incorrect usage of the Magento API and the original update statement was similar to:-
$proxy->call($sessionId, 'product.update', array('PRD0001', array( 'price'=>12.50, 'qty'=>12, 'is_in_stock'=>1, 'discontinued'=>0 ) ) );
However, the update of the is_in_stock and qty fields is not done against the product (via product.update) but against the product inventory (via product_stock.update) so this code had to be updated to the following:-
// UPDATE THE PRODUCT $proxy->call($sessionId, 'product.update', array('PRD0001', array( 'price'=>12.50, 'discontinued'=>0 ) ) ); // UPDATE THE PRODUCT INVENTORY $proxy->call($sessionId, 'product_stock.update', array('PRD0001', array( 'qty'=>12, 'is_in_stock'=>1, ) ) );
After the stock level update script had been adapted to this 2 step approach everything seemed to run ok and the stock level figures were then being updated with the appropriate quantities.
- November 15th, 2009