1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
26:
27: 28: 29: 30: 31: 32: 33:
34: class Mage_CatalogInventory_Model_Stock_Item_Api extends Mage_Catalog_Model_Api_Resource
35: {
36: public function __construct()
37: {
38: $this->_storeIdSessionField = 'product_store_id';
39: }
40:
41: public function items($productIds)
42: {
43: if (!is_array($productIds)) {
44: $productIds = array($productIds);
45: }
46:
47: $product = Mage::getModel('catalog/product');
48:
49: foreach ($productIds as &$productId) {
50: if ($newId = $product->getIdBySku($productId)) {
51: $productId = $newId;
52: }
53: }
54:
55: $collection = Mage::getModel('catalog/product')
56: ->getCollection()
57: ->setFlag('require_stock_items', true)
58: ->addFieldToFilter('entity_id', array('in'=>$productIds));
59:
60: $result = array();
61:
62: foreach ($collection as $product) {
63: if ($product->getStockItem()) {
64: $result[] = array(
65: 'product_id' => $product->getId(),
66: 'sku' => $product->getSku(),
67: 'qty' => $product->getStockItem()->getQty(),
68: 'is_in_stock' => $product->getStockItem()->getIsInStock()
69: );
70: }
71: }
72:
73: return $result;
74: }
75:
76: public function update($productId, $data)
77: {
78: $product = Mage::getModel('catalog/product');
79:
80: if ($newId = $product->getIdBySku($productId)) {
81: $productId = $newId;
82: }
83:
84: $product->setStoreId($this->_getStoreId())
85: ->load($productId);
86:
87: if (!$product->getId()) {
88: $this->_fault('not_exists');
89: }
90:
91: if (!$stockData = $product->getStockData()) {
92: $stockData = array();
93: }
94:
95: if (isset($data['qty'])) {
96: $stockData['qty'] = $data['qty'];
97: }
98:
99: if (isset($data['is_in_stock'])) {
100: $stockData['is_in_stock'] = $data['is_in_stock'];
101: }
102:
103: if (isset($data['manage_stock'])) {
104: $stockData['manage_stock'] = $data['manage_stock'];
105: }
106:
107: if (isset($data['use_config_manage_stock'])) {
108: $stockData['use_config_manage_stock'] = $data['use_config_manage_stock'];
109: }
110:
111: if (isset($data['use_config_backorders'])) {
112: $stockData['use_config_backorders'] = $data['use_config_backorders'];
113: }
114:
115: if (isset($data['backorders'])) {
116: $stockData['backorders'] = $data['backorders'];
117: }
118:
119: $product->setStockData($stockData);
120:
121: try {
122: $product->save();
123: } catch (Mage_Core_Exception $e) {
124: $this->_fault('not_updated', $e->getMessage());
125: }
126:
127: return true;
128: }
129: }
130: