Merge lp:magentoerpconnect/magento-module-oerp6.x-stable into lp:magentoerpconnect

Proposed by Maarten Van Ruitenburg on 2013-07-31
Status: Rejected
Rejected by: Guewen Baconnier @ Camptocamp on 2013-08-05
Proposed branch: lp:magentoerpconnect/magento-module-oerp6.x-stable
Merge into: lp:magentoerpconnect
Diff against target: 3969 lines (+3801/-0)
27 files modified
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Helper/Data.php (+6/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Catalog/Product/Api.php (+80/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Observer.php (+24/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Oerpcatalog/Category/Api.php (+91/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Oerpstock/Item/Api.php (+75/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Categories.php (+111/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Attribute.php (+109/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Attributegroup.php (+167/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Attributeset.php (+58/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Link.php (+277/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Tierprice.php (+71/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Products.php (+325/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore/Groups.php (+167/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore/Storeviews.php (+167/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore/Website.php (+195/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Address.php (+241/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Customer.php (+182/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Group.php (+142/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Subscriber.php (+163/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Sales/Order/Api.php (+187/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/controllers/Adminhtml/InitController.php (+61/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/controllers/OpenerpconnectorController.php (+5/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/etc/api.xml (+630/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/etc/config.xml (+88/-0)
Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/sql/openerpconnector_setup/mysql4-install-0.0.1.php (+54/-0)
Openlabs_OpenERPConnector-1.1.0/app/etc/modules/Openlabs_OpenERPConnector.xml (+41/-0)
package.xml (+84/-0)
To merge this branch: bzr merge lp:magentoerpconnect/magento-module-oerp6.x-stable
Reviewer Review Type Date Requested Status
MagentoERPConnect core editors 2013-07-31 Pending
Review via email: mp+177738@code.launchpad.net
To post a comment you must log in.

This is likely a manipulation mistake, so I put this MP as "rejected".

Unmerged revisions

42. By Guewen Baconnier @ Camptocamp on 2015-10-27

Merge from magento-module-catalog-manager

Add better methods for attributes (update option, addOption returns the id of
the option, ...).

41. By Katja Matthes on 2014-11-14

Add missing code for older magento versions. Needed for inventory synchonization.

40. By Guewen Baconnier @ Camptocamp on 2014-06-18

Fix previous commit: event declared at the wrong place (last commit and this one are courtesy of Alexandre Khayrullin)

39. By Guewen Baconnier @ Camptocamp on 2014-05-16

add bundle informations in ol_catalog_product.info

38. By Guewen Baconnier @ Camptocamp on 2013-03-18

[ADD] search method on product categories

37. By Guewen Baconnier @ Camptocamp on 2013-02-25

[ADD] ol_storeviews.search and ol_groups.search: returns list of ids, including admin ones with ids '0'

36. By Guewen Baconnier @ Camptocamp on 2013-02-25

[ADD] ol_website.search: must be used because ol_website.info and list do not return the website '0'

35. By Sébastien BEAU - http://www.akretion.com on 2012-10-07

[IMP] add two new webservice oerp_catalog_category (move) and oerp_catalog_inventory (update, massive_update)

34. By Sébastien BEAU - http://www.akretion.com on 2012-10-05

[CLEAN] clean syntax code, removing useless space and replacing tab per 4 spaces

33. By Sébastien BEAU - http://www.akretion.com on 2012-10-04

[IMP] adding method to retrieve invoice and shipment ids from the order

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory 'Openlabs_OpenERPConnector-1.1.0'
2=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs'
3=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector'
4=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Helper'
5=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Helper/Data.php'
6--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Helper/Data.php 1970-01-01 00:00:00 +0000
7+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Helper/Data.php 2013-07-31 04:42:30 +0000
8@@ -0,0 +1,6 @@
9+<?php
10+class Openlabs_OpenERPConnector_Helper_Data extends Mage_Core_Helper_Abstract
11+{
12+ //Linux4ever_MagentoXtender_Model_Api
13+}
14+?>
15\ No newline at end of file
16
17=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model'
18=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Catalog'
19=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Catalog/Product'
20=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Catalog/Product/Api.php'
21--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Catalog/Product/Api.php 1970-01-01 00:00:00 +0000
22+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Catalog/Product/Api.php 2013-07-31 04:42:30 +0000
23@@ -0,0 +1,80 @@
24+<?php
25+
26+/**
27+ * @author Mohammed NAHHAS
28+ * @package Openlabs_OpenERPConnector
29+ */
30+
31+class Openlabs_OpenERPConnector_Model_Catalog_Product_Api extends Mage_Catalog_Model_Product_Api
32+{
33+ /**
34+ * Set additional data before product saved
35+ *
36+ * @param Mage_Catalog_Model_Product $product
37+ * @param array $productData
38+ * @return object
39+ */
40+ protected function _prepareDataForSave ($product, $productData)
41+ {
42+ if (isset($productData['categories']) && is_array($productData['categories'])) {
43+ $product->setCategoryIds($productData['categories']);
44+ }
45+
46+ if (isset($productData['websites']) && is_array($productData['websites'])) {
47+ foreach ($productData['websites'] as &$website) {
48+ if (is_string($website)) {
49+ try {
50+ $website = Mage::app()->getWebsite($website)->getId();
51+ } catch (Exception $e) { }
52+ }
53+ }
54+ $product->setWebsiteIds($productData['websites']);
55+ }
56+
57+ if (Mage::app()->isSingleStoreMode()) {
58+ $product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId()));
59+ }
60+
61+ if (isset($productData['stock_data']) && is_array($productData['stock_data'])) {
62+ $product->setStockData($productData['stock_data']);
63+ } else {
64+ $product->setStockData(array('use_config_manage_stock' => 0));
65+ }
66+
67+ if (isset($productData['tier_price']) && is_array($productData['tier_price'])) {
68+ $tierPrices = Mage::getModel('catalog/product_attribute_tierprice_api')->prepareTierPrices($product, $productData['tier_price']);
69+ $product->setData(Mage_Catalog_Model_Product_Attribute_Tierprice_Api::ATTRIBUTE_CODE, $tierPrices);
70+ }
71+
72+ /*
73+ * Check if configurable product data array passed
74+ */
75+ if(isset($productData['configurable_products_data']) && is_array($productData['configurable_products_data'])) {
76+ $product->setConfigurableProductsData($productData['configurable_products_data']);
77+ }
78+
79+ if(isset($productData['configurable_attributes_data']) && is_array($productData['configurable_attributes_data'])) {
80+ foreach($productData['configurable_attributes_data'] as $key => $data) {
81+
82+ //Check to see if these values exist, otherwise try and populate from existing values
83+ $data['label'] = (!empty($data['label'])) ? $data['label'] : $product->getResource()->getAttribute($data['attribute_code'])->getStoreLabel();
84+ $data['frontend_label'] = (!empty($data['frontend_label'])) ? $data['frontend_label'] : $product->getResource()->getAttribute($data['attribute_code'])->getFrontendLabel();
85+ $productData['configurable_attributes_data'][$key] = $data;
86+ }
87+ $product->setConfigurableAttributesData($productData['configurable_attributes_data']);
88+ $product->setCanSaveConfigurableAttributes(true);
89+ }
90+
91+ /*
92+ * Check if bundle product data, options and bundle items arrays passed
93+ */
94+ if(isset($productData['bundle_items_data']) && isset($productData['options_data']) && is_array($productData['bundle_items_data']) && is_array($productData['options_data'])) {
95+
96+ $product->setBundleOptionsData($productData['options_data']);
97+ $product->setBundleSelectionsData($productData['bundle_items_data']);
98+ $product->setCanSaveBundleSelections(true);
99+ $product->setAffectBundleProductSelections(true);
100+ Mage::register('product', $product); // product must be registred in order to get the store_id, see _beforeSave() in Mage/Bundle/Model/Selection.php
101+ }
102+ }
103+}
104\ No newline at end of file
105
106=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Observer.php'
107--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Observer.php 1970-01-01 00:00:00 +0000
108+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Observer.php 2013-07-31 04:42:30 +0000
109@@ -0,0 +1,24 @@
110+<?php
111+/**
112+ *
113+ * @author Mohammed NAHHAS
114+ * @package Openlabs_OpenERPConnector
115+ *
116+ */
117+
118+class Openlabs_OpenERPConnector_Model_Observer extends Mage_Core_Model_Abstract {
119+
120+ /* Initialize attribtue 'imported' if version < 1.4.0.0 */
121+ public function initImported($observer) {
122+ if(str_replace('.','',Mage::getVersion()) < 1400) {
123+ $order = $observer->getOrder();
124+ try {
125+ $order->setImported(0)->save();
126+ }catch (Exception $e) {
127+ /* If logs are enabled (backend : system->configuration->developer->logSettings), it creates a file named OpenErp_Connector.log in /var/log/ which contains the errors */
128+ Mage::log('Error, order increment_id = '.$order->getIncrementId().', attribute "imported" was not initialized - error : '.$e->getMessage(), null, 'OpenErp_Connector.log');
129+ }
130+ $order->setImported(0)->save();
131+ }
132+ }
133+}
134\ No newline at end of file
135
136=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Oerpcatalog'
137=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Oerpcatalog/Category'
138=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Oerpcatalog/Category/Api.php'
139--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Oerpcatalog/Category/Api.php 1970-01-01 00:00:00 +0000
140+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Oerpcatalog/Category/Api.php 2013-07-31 04:42:30 +0000
141@@ -0,0 +1,91 @@
142+<?php
143+
144+# -*- encoding: utf-8 -*-
145+###############################################################################
146+#
147+# Webservice extension for Magento
148+# Copyright (C) 2012-TODAY Akretion <http://www.akretion.com>. All Rights Reserved
149+# @author Sébastien BEAU <sebastien.beau@akretion.com>
150+# This program is free software: you can redistribute it and/or modify
151+# it under the terms of the GNU Affero General Public License as
152+# published by the Free Software Foundation, either version 3 of the
153+# License, or (at your option) any later version.
154+#
155+# This program is distributed in the hope that it will be useful,
156+# but WITHOUT ANY WARRANTY; without even the implied warranty of
157+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
158+# GNU Affero General Public License for more details.
159+#
160+# You should have received a copy of the GNU Affero General Public License
161+# along with this program. If not, see <http://www.gnu.org/licenses/>.
162+#
163+###############################################################################
164+
165+class Openlabs_OpenERPConnector_Model_Oerpcatalog_category_api extends Mage_Catalog_Model_Category_Api
166+{
167+
168+ /**
169+ * Return the list of products category ids
170+ *
171+ * @param array $filters
172+ * @param string|int $store
173+ * @return array
174+ */
175+ public function search($filters = null, $store = null)
176+ {
177+ $collection = Mage::getModel('catalog/category')->getCollection()
178+ ->setStoreId($this->_getStoreId($store))
179+ ->addAttributeToSelect('name');
180+
181+ if (is_array($filters)) {
182+ try {
183+ foreach ($filters as $field => $value) {
184+ if (isset($this->_filtersMap[$field])) {
185+ $field = $this->_filtersMap[$field];
186+ }
187+
188+ $collection->addFieldToFilter($field, $value);
189+ }
190+ } catch (Mage_Core_Exception $e) {
191+ $this->_fault('filters_invalid', $e->getMessage());
192+ }
193+ }
194+
195+ $result = array();
196+
197+ foreach ($collection as $product) {
198+ $result[] = $product->getId();
199+ }
200+
201+ return $result;
202+ }
203+
204+ public function move($categoryId, $parentId, $afterId = null)
205+ {
206+ $category = $this->_initCategory($categoryId);
207+ $parent_category = $this->_initCategory($parentId);
208+
209+ $parentChildren = $parent_category->getChildren();
210+ $child = explode(',', $parentChildren);
211+ // TODO Improve speed when using $afterId
212+ if (!in_array($categoryId, $child) || $afterId != null) {
213+ // if $afterId is null - move category to the down
214+ if ($afterId === null && $parent_category->hasChildren()) {
215+
216+ $afterId = array_pop($child);
217+ }
218+
219+ if( strpos($parent_category->getPath(), $category->getPath()) === 0) {
220+ $this->_fault('not_moved', "Operation do not allow to move a parent category to any of children category");
221+ }
222+
223+ try {
224+ $category->move($parentId, $afterId);
225+ } catch (Mage_Core_Exception $e) {
226+ $this->_fault('not_moved', $e->getMessage());
227+ }
228+ }
229+ return true;
230+ }
231+
232+}
233
234=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Oerpstock'
235=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Oerpstock/Item'
236=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Oerpstock/Item/Api.php'
237--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Oerpstock/Item/Api.php 1970-01-01 00:00:00 +0000
238+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Oerpstock/Item/Api.php 2013-07-31 04:42:30 +0000
239@@ -0,0 +1,75 @@
240+<?php
241+
242+# -*- encoding: utf-8 -*-
243+###############################################################################
244+#
245+# Webservice extension for Magento
246+# Copyright (C) 2012-TODAY Akretion <http://www.akretion.com>. All Rights Reserved
247+# @author Sébastien BEAU <sebastien.beau@akretion.com>
248+# This program is free software: you can redistribute it and/or modify
249+# it under the terms of the GNU Affero General Public License as
250+# published by the Free Software Foundation, either version 3 of the
251+# License, or (at your option) any later version.
252+#
253+# This program is distributed in the hope that it will be useful,
254+# but WITHOUT ANY WARRANTY; without even the implied warranty of
255+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
256+# GNU Affero General Public License for more details.
257+#
258+# You should have received a copy of the GNU Affero General Public License
259+# along with this program. If not, see <http://www.gnu.org/licenses/>.
260+#
261+###############################################################################
262+
263+/* Inspired from http://www.sonassi.com/knowledge-base/magento-kb/mass-update-stock-levels-in-magento-fast/
264+*/
265+
266+class Openlabs_OpenERPConnector_Model_Oerpstock_item_api extends Mage_CatalogInventory_Model_Stock_Item_Api
267+{
268+
269+ protected function _getProduct($productId, $store = null, $identifierType = 'id')
270+ {
271+ $product = Mage::helper('catalog/product')->getProduct($productId, $this->_getStoreId($store), $identifierType);
272+ if (is_null($product->getId())) {
273+ $this->_fault('product_not_exists');
274+ }
275+ return $product;
276+ }
277+
278+ protected function _updateStock($productId, $data)
279+ {
280+ // test if product exist
281+ $product = $this->_getProduct($productId);
282+
283+ $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
284+ $stockItemId = $stockItem->getId();
285+
286+ if (!$stockItemId) {
287+ $stockItem->setData('product_id', $productId);
288+ $stockItem->setData('stock_id', 1);
289+ } else {
290+ $stock = $stockItem->getData();
291+ }
292+
293+ foreach($data as $field=>$value) {
294+ $stockItem->setData($field, $value?$value:0);
295+ }
296+
297+ $stockItem->save();
298+ return true;
299+ }
300+
301+ public function update($productId, $data)
302+ {
303+ return $this->_updateStock($productId, $data);
304+ }
305+
306+ public function massive_update($datas)
307+ {
308+ foreach($datas as $productId=>$data) {
309+ $this->_updateStock($productId, $data);
310+ }
311+ return true;
312+ }
313+
314+} // Class Mage_CatalogInventory_Model_Stock_Item_Api End
315
316=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog'
317=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Categories.php'
318--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Categories.php 1970-01-01 00:00:00 +0000
319+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Categories.php 2013-07-31 04:42:30 +0000
320@@ -0,0 +1,111 @@
321+<?php
322+
323+
324+/**
325+ * @author Sharoon Thomas
326+ * Inspired from Dieter's Magento Extender
327+ * @copyright 2009
328+ */
329+
330+class Openlabs_OpenERPConnector_Model_Olcatalog_Categories extends Mage_Catalog_Model_Api_Resource
331+{
332+ public function items($filters = null) {
333+ try {
334+ $collection = Mage :: getModel('catalog/category/attribute')->getCollection()->addAttributeToSelect('image');
335+ } catch (Mage_Core_Exception $e) {
336+ $this->_fault('category_not_exists');
337+ }
338+ if (is_array($filters)) {
339+ try {
340+ foreach ($filters as $field => $value) {
341+ $collection->addFieldToFilter($field, $value);
342+ }
343+ } catch (Mage_Core_Exception $e) {
344+ $this->_fault('filters_invalid', $e->getMessage());
345+ // If we are adding filter on non-existent attribute
346+ }
347+ }
348+ $result = array ();
349+ foreach ($collection as $category) {
350+ //$result[] = $customer->toArray();
351+ $result[] = array (
352+ 'category_id' => $category->getId(),
353+ 'image' => $category->getImage(),
354+ );
355+ }
356+ return $result;
357+ }
358+
359+ public function info($categoryId = null) {
360+ if (is_numeric($categoryId)) {
361+ try {
362+ $collection = Mage :: getModel('catalog/category/attribute')->load($categoryId)->getCollection()->addAttributeToSelect('image');
363+ $result = array ();
364+ foreach ($collection as $category) {
365+ //$result[] = $customer->toArray();
366+ if ($category->getId() == $categoryId) {
367+ $image = $category->getImage();
368+ if ($image) {
369+ $path = Mage :: getBaseDir('media') . DS . 'catalog' . DS . 'category' . DS;
370+ $fullpath = $path . $image;
371+ try {
372+ $fp = fopen($fullpath, "rb");
373+ $imagebin = fread($fp, filesize($fullpath));
374+ $img_data = base64_encode($imagebin);
375+ fclose($fp);
376+ } catch (Exception $e) {
377+ $this->_fault('not_media');
378+ }
379+ }
380+ $result[] = array (
381+ 'category_id' => $category->getId(),
382+ 'image' => $category->getImage(),
383+ 'image_data' => $img_data
384+ );
385+ }
386+ }
387+
388+ return $result;
389+
390+ } catch (Mage_Core_Exception $e) {
391+ $this->_fault('group_not_exists');
392+ }
393+
394+ }
395+
396+ }
397+
398+public function create($filename,$imgdata) {
399+ if ($filename)
400+ {
401+ $path = Mage :: getBaseDir('media') . DS . 'catalog' . DS . 'category' . DS;
402+ $fullpath = $path . $filename;
403+ try
404+ {
405+ $fp = fopen($fullpath, "w");
406+ if ($fp==false)
407+ {
408+ return "Error in file creation";
409+ }
410+ $img_data = base64_decode($imgdata);
411+ $imagebin = fwrite($fp,$img_data);
412+ fclose($fp);
413+ return $imagebin;
414+ }
415+ catch (Exception $e)
416+ {
417+ $this->_fault('not_created');
418+ }
419+ return False;
420+ }
421+}
422+public function update($something=null)
423+{
424+ return "Not implemented yet";
425+}
426+public function remove($something=null)
427+{
428+ return "Not implemented yet";
429+}
430+}
431+?>
432
433=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product'
434=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Attribute.php'
435--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Attribute.php 1970-01-01 00:00:00 +0000
436+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Attribute.php 2013-07-31 04:42:30 +0000
437@@ -0,0 +1,109 @@
438+<?php
439+
440+
441+/**
442+ * @author Sharoon Thomas
443+ * Inspired from Dieter's Magento Extender
444+ * @copyright 2009
445+ */
446+
447+class Openlabs_OpenERPConnector_Model_Olcatalog_Product_Attribute extends Mage_Catalog_Model_Api_Resource {
448+ public function __construct() {
449+ $this->_storeIdSessionField = 'product_store_id';
450+ $this->_ignoredAttributeCodes[] = 'type_id';
451+ $this->_ignoredAttributeTypes[] = 'gallery';
452+ $this->_ignoredAttributeTypes[] = 'media_image';
453+ }
454+
455+ /**
456+ * Retrieve attributes from specified attribute set
457+ *
458+ * @param int $setId
459+ * @return array
460+ */
461+ public function relations($setId){
462+ $attributes = Mage :: getModel('catalog/product')->getResource()->loadAllAttributes()->getSortedAttributes($setId);
463+ $result = array ();
464+ foreach ($attributes as $attribute){
465+ $result[] = Array(
466+ 'attribute_id' => $attribute->getId()
467+ );
468+ }
469+ return $result;
470+
471+ }
472+ public function items($setId) {
473+ $attributes = Mage :: getModel('catalog/product')->getResource()->loadAllAttributes()->getSortedAttributes($setId);
474+ $result = array ();
475+
476+ foreach ($attributes as $attribute) {
477+ /* @var $attribute Mage_Catalog_Model_Resource_Eav_Attribute */
478+ if ((!$attribute->getId() || $attribute->isInSet($setId)) && $this->_isAllowedAttribute($attribute)) {
479+
480+ if (!$attribute->getId() || $attribute->isScopeGlobal()) {
481+ $scope = 'global';
482+ }
483+ elseif ($attribute->isScopeWebsite()) {
484+ $scope = 'website';
485+ } else {
486+ $scope = 'store';
487+ }
488+
489+ /*$result[] = array (
490+ 'attribute_id' => $attribute->getId(),
491+ 'code' => $attribute->getAttributeCode(),
492+ 'type' => $attribute->getFrontendInput(),
493+ 'required' => $attribute->getIsRequired(),
494+ 'attributeset' => $attribute->getattribute_set_info(),
495+ 'scope' => $scope
496+ );*/
497+ //Override hooray
498+ $attribute['scope'] = $scope;
499+ $result[]=$attribute->toArray();
500+ }
501+ }
502+
503+ return $result;
504+ }
505+
506+ public function info($attributeId) {
507+ try {
508+ return 'hello';
509+ $attribute = Mage :: getModel('catalog/product')->getResource()->getAttribute($attributeId);
510+ return $attribute->toArray();
511+ } catch (Exception $e) {
512+ $this->_fault('not_exists');
513+ }
514+ }
515+ /**
516+ * Retrieve attribute options
517+ *
518+ * @param int $attributeId
519+ * @param string|int $store
520+ * @return array
521+ */
522+ public function options($attributeId, $store = null) {
523+ $storeId = $this->_getStoreId($store);
524+ $attribute = Mage :: getModel('catalog/product')->setStoreId($storeId)->getResource()->getAttribute($attributeId)->setStoreId($storeId);
525+
526+ /* @var $attribute Mage_Catalog_Model_Entity_Attribute */
527+ if (!$attribute) {
528+ $this->_fault('not_exists');
529+ }
530+
531+ $options = array ();
532+ foreach ($attribute->getSource()->getAllOptions() as $optionId => $optionValue) {
533+ if (is_array($optionValue)) {
534+ $options[] = $optionValue;
535+ }
536+ else {
537+ $options[] = array (
538+ 'value' => $optionId,
539+ 'label' => $optionValue
540+ );
541+ }
542+ }
543+ return $options;
544+ }
545+}
546+?>
547
548=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Attributegroup.php'
549--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Attributegroup.php 1970-01-01 00:00:00 +0000
550+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Attributegroup.php 2013-07-31 04:42:30 +0000
551@@ -0,0 +1,167 @@
552+<?php
553+
554+
555+/**
556+ * @author Sharoon Thomas
557+ * Inspired from Dieter's Magento Extender
558+ * @copyright 2009
559+ */
560+
561+class Openlabs_OpenERPConnector_Model_Olcatalog_Product_Attributegroup extends Mage_Catalog_Model_Api_Resource {
562+ public function olditems($setId = null) {
563+ $groups = Mage :: getModel('eav/entity_attribute_group')->getResourceCollection();
564+
565+ if (!is_null($setId) && !empty ($setId) && is_numeric($setId)) {
566+ $groups->setAttributeSetFilter($setId);
567+ }
568+
569+ $groups->load();
570+
571+ $arrGroups = array ();
572+
573+ foreach ($groups as $group) {
574+ $arrGroups[] = array (
575+ 'attribute_group_id' => $group->getAttributeGroupId(),
576+ 'attribute_set_id' => $group->getAttributeSetId(),
577+ 'attribute_group_name' => $group->getAttributeGroupName(),
578+ 'sort_order' => $group->getSortOrder(),
579+ 'default_id' => $group->getDefaultId()
580+ );
581+ }
582+
583+ return $arrGroups;
584+ }
585+
586+ public function items($filters = null) {
587+ try {
588+ $collection = Mage :: getModel('eav/entity_attribute_group')->getCollection();
589+ } catch (Mage_Core_Exception $e) {
590+ $this->_fault('group_not_exists');
591+ }
592+
593+ if (is_array($filters)) {
594+ try {
595+ foreach ($filters as $field => $value) {
596+ $collection->addFieldToFilter($field, $value);
597+ }
598+ } catch (Mage_Core_Exception $e) {
599+ $this->_fault('filters_invalid', $e->getMessage());
600+ // If we are adding filter on non-existent attribute
601+ }
602+ }
603+
604+ $result = array ();
605+ foreach ($collection as $collection_item) {
606+ $result[] = $collection_item->toArray();
607+ }
608+
609+ return $result;
610+
611+ }
612+ /*
613+ <param><value><string>cl19t0dqhmheafqc0ccdeejc76</string></value></param>
614+ <param><value><string>catalog_product_attribute_group.create</string></value></param>
615+ <param>
616+ <value>
617+ <array>
618+ <data>
619+ <value><i4>26</i4></value>
620+ <value><string>Leonelle</string></value>
621+ </data>
622+ </array>
623+ </value>
624+ </param>
625+ */
626+ public function create($setId, array $data) {
627+ try {
628+ // $attrOption = Mage_Eav_Model_Entity_Attribute_Group
629+ $attrOption = Mage :: getModel("eav/entity_attribute_group");
630+
631+ $attrOption->addData($data);
632+
633+ // check if there already exists a group with the give groupname
634+ if ($attrOption->itemExists()) {
635+ $this->_fault("group_already_exists");
636+ }
637+
638+ $attrOption->save();
639+
640+ return (int) $attrOption->getAttributeGroupId();
641+ } catch (Exception $ex) {
642+ return false;
643+ }
644+ }
645+ /*
646+ <param><value><string>cl19t0dqhmheafqc0ccdeejc76</string></value></param>
647+ <param><value><string>catalog_product_attribute_group.update</string></value></param>
648+ <param>
649+ <value>
650+ <array>
651+ <data>
652+ <value><i4>85</i4></value>
653+ <value><string>Leonelle2</string></value>
654+ <value><i4>85</i4></value>
655+ <value><i4>85</i4></value>
656+ </data>
657+ </array>
658+ </value>
659+ </param>
660+ */
661+ public function update(array $data) {
662+ try {
663+ // $attrOption = Mage_Eav_Model_Entity_Attribute_Group
664+ $attrOption = Mage :: getModel("eav/entity_attribute_group");
665+
666+ $attrOption->load($data["attribute_group_id"]);
667+
668+ // check if the requested group exists...
669+ if (!$attrOption->getAttributeGroupId()) {
670+ $this->_fault("group_not_exists");
671+ }
672+
673+ $attrOption->addData($data);
674+
675+ $attrOption->save();
676+
677+ return true;
678+ } catch (Exception $ex) {
679+ return false;
680+ }
681+ }
682+
683+ /*
684+ <param><value><string>cl19t0dqhmheafqc0ccdeejc76</string></value></param>
685+ <param><value><string>catalog_product_attribute_group.delete</string></value></param>
686+ <param>
687+ <value>
688+ <array>
689+ <data>
690+ <value><i4>85</i4></value>
691+ </data>
692+ </array>
693+ </value>
694+ </param>
695+ */
696+ public function delete($groupId) {
697+ try {
698+ // $attrOption = Mage_Eav_Model_Entity_Attribute_Group
699+ $attrOption = Mage :: getModel("eav/entity_attribute_group");
700+
701+ $attrOption->load($groupId);
702+
703+ // check if the requested group exists...
704+ if (!$attrOption->getAttributeGroupId()) {
705+ $this->_fault("group_not_exists");
706+ }
707+
708+ // save data
709+ $attrOption->delete();
710+
711+ return true;
712+ } catch (Exception $ex) {
713+ return false;
714+ }
715+ }
716+
717+}
718+?>
719
720=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Attributeset.php'
721--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Attributeset.php 1970-01-01 00:00:00 +0000
722+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Attributeset.php 2013-07-31 04:42:30 +0000
723@@ -0,0 +1,58 @@
724+<?php
725+/**
726+ * Magento
727+ *
728+ * NOTICE OF LICENSE
729+ *
730+ * This source file is subject to the Open Software License (OSL 3.0)
731+ * that is bundled with this package in the file LICENSE.txt.
732+ * It is also available through the world-wide-web at this URL:
733+ * http://opensource.org/licenses/osl-3.0.php
734+ * If you did not receive a copy of the license and are unable to
735+ * obtain it through the world-wide-web, please send an email
736+ * to license@magentocommerce.com so we can send you a copy immediately.
737+ *
738+ * DISCLAIMER
739+ *
740+ * Do not edit or add to this file if you wish to upgrade Magento to newer
741+ * versions in the future. If you wish to customize Magento for your
742+ * needs please refer to http://www.magentocommerce.com for more information.
743+ *
744+ * @category Mage
745+ * @package Mage_Catalog
746+ * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
747+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
748+ */
749+
750+/**
751+ * Catalog product attribute set api
752+ *
753+ * @category Mage
754+ * @package Mage_Catalog
755+ * @author Magento Core Team <core@magentocommerce.com>
756+ */
757+class Openlabs_OpenERPConnector_Model_Olcatalog_Product_Attributeset extends Mage_Api_Model_Resource_Abstract
758+{
759+ /**
760+ * Retrieve attribute set list
761+ *
762+ * @return array
763+ */
764+ public function items()
765+ {
766+ $entityType = Mage::getModel('catalog/product')->getResource()->getEntityType();
767+ $collection = Mage::getResourceModel('eav/entity_attribute_set_collection')
768+ ->setEntityTypeFilter($entityType->getId());
769+
770+ $result = array();
771+ foreach ($collection as $attributeSet) {
772+ $result[] = array(
773+ 'attribute_set_id' => $attributeSet->getId(),
774+ 'attribute_set_name' => $attributeSet->getAttributeSetName()
775+ );
776+
777+ }
778+
779+ return $result;
780+ }
781+} // Class Mage_Catalog_Model_Product_Attribute_Set_Api End
782\ No newline at end of file
783
784=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Link.php'
785--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Link.php 1970-01-01 00:00:00 +0000
786+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Link.php 2013-07-31 04:42:30 +0000
787@@ -0,0 +1,277 @@
788+<?php
789+
790+/**
791+ * @author Raimon Esteve
792+ * Inspired from Dieter's Magento Extender
793+ * @copyright 2009
794+ */
795+
796+class Openlabs_OpenERPConnector_Model_Olcatalog_Product_Link extends Mage_Catalog_Model_Product_Link_Api //Mage_Core_Model_Abstract
797+{
798+
799+ /**
800+ * get list product_super_link
801+ *
802+ * @param int $productId
803+ * @return array
804+ */
805+ public function items($productId)
806+ {
807+ $product = $this->_initProduct($productId);
808+
809+ $childProducts=array();
810+
811+ //$configurableAttributes = $product->getTypeInstance()->getConfigurableAttributesAsArray();
812+
813+ //print_r($configurableAttributes);
814+ $collection = $product->getTypeInstance()->getUsedProducts();//getUsedProductCollection();
815+
816+ foreach($collection as $simpleProduct)
817+ {
818+ $row = $simpleProduct->toArray();
819+
820+ // naming convention
821+ $row["product_id"] = $row["entity_id"];
822+ $row["type"] = $row["type_id"];
823+ $row["set"] = $row["attribute_set_id"];
824+ $childProducts[] = $row;// $simpleProduct->toArray();
825+ }
826+
827+ return $childProducts;
828+
829+ return array();
830+ }
831+
832+ /**
833+ * set product_super_link
834+ *
835+ * @param int $productId
836+ * @param array $linkedProductIds
837+ * @param array $data
838+ * @return array
839+ */
840+ public function assign($productId, $linkedProductIds, $data = array())
841+ {
842+ $product = $this->_initProduct($productId);
843+ $tmpProductIds = $product->getTypeInstance()->getUsedProductIds();
844+ $productIds = array();
845+
846+ foreach($tmpProductIds as $key => $prodId)
847+ {
848+ $productIds[$prodId] = $prodId;
849+ }
850+
851+ if(is_array($linkedProductIds)) {
852+ foreach($linkedProductIds as $prodId)
853+ {
854+ if(!key_exists($prodId,$productIds)) {$productIds[$prodId] = $prodId;}
855+ }
856+ } elseif(is_numeric($linkedProductIds)) {
857+ if(!key_exists($linkedProductIds,$productIds)) {$productIds[$linkedProductIds] = $linkedProductIds;}
858+ } else {
859+ return false;
860+ }
861+
862+ $product->setConfigurableProductsData($productIds);
863+ $product->save();
864+
865+ return true;
866+ }
867+
868+ /**
869+ * remove product_super_link
870+ *
871+ * @param int $productId
872+ * @param array $linkedProductIds
873+ * @return array
874+ */
875+ public function remove($productId, $linkedProductIds)
876+ {
877+ $product = $this->_initProduct($productId);
878+ $tmpProductIds = $product->getTypeInstance()->getUsedProductIds();
879+ $productIds = array();
880+
881+ foreach($tmpProductIds as $key => $prodId)
882+ {
883+ if(is_array($linkedProductIds))
884+ {
885+ if(!in_array($prodId, $linkedProductIds))
886+ {
887+
888+ $productIds[$prodId] = $prodId;
889+ }
890+ }
891+ elseif(is_numeric($linkedProductIds))
892+ {
893+ if($prodId!=$linkedProductIds)
894+ {
895+ $productIds[$prodId] = $prodId;;
896+ }
897+ }
898+ }
899+
900+ $product->setConfigurableProductsData($productIds);
901+ $product->save();
902+
903+ return true;
904+ }
905+
906+ private function _getStores()
907+ {
908+ $stores = Mage::getModel('core/store')
909+ ->getResourceCollection()
910+ ->setLoadDefault(true)
911+ ->load();
912+ return $stores;
913+ }
914+
915+ /**
916+ * List Configurables Atributes
917+ *
918+ * @param int $productId
919+ * @return array
920+ */
921+ public function listSuperAttributes($productIdOrSku)
922+ {
923+ try
924+ {
925+ // check if product Exists
926+ $product = $this->_initProduct($productIdOrSku);
927+
928+ if($product->getTypeId()!="configurable") $this->_fault("not a configurable product");
929+
930+ $productId = $product->getEntityId();
931+
932+ $stores = $this->_getStores();
933+
934+ $superAttributes=array();
935+
936+ foreach($stores as $store)
937+ {
938+ $product = $product = Mage::getModel('catalog/product')->setStoreId($store->getStoreId());
939+ $product->load($productId);
940+ $attrs = $product->getTypeInstance()->getConfigurableAttributesAsArray();
941+
942+ foreach($attrs as $key=>$attr)
943+ {
944+ if(!isset($superAttributes[$attr["id"]]))
945+ {
946+ $superAttributes["".$attr["id"].""] = $attr;
947+ $superAttributes["".$attr["id"].""]["product_id"] = $product->getEntityId();
948+ $superAttributes["".$attr["id"].""]["product_super_attribute_id"] = $attr["id"];
949+ unset($superAttributes["".$attr["id"].""]["id"]);
950+ }
951+
952+ unset($superAttributes["".$attr["id"].""]["label"]);
953+
954+ $superAttributes["".$attr["id"].""]["labels"][$store->getStoreId()] = $attr["label"];
955+ }
956+ }
957+ //print_r($superAttributes);
958+
959+ return array_values($superAttributes);
960+ }
961+ catch (Exception $ex)
962+ {
963+ echo $ex;
964+ }
965+
966+ }
967+
968+ /**
969+ * Create Configurables Atributes
970+ *
971+ * @param int $productId
972+ * @param int $attributeID
973+ * @param int position
974+ * @param array labels
975+ * @param array prices
976+ * @return ID
977+ */
978+ public function createSuperAttribute($productIDorSku, $attributeID, $position, array $labels, array $prices = null)
979+ {
980+ $product = $this->_initProduct($productIDorSku);
981+ //$confAttributes = $product->getTypeInstance()->getUsedProductIds();
982+
983+ $superAttr = Mage::getModel("catalog/product_type_configurable_attribute");
984+
985+ $superAttr->setProductId($product->getId());
986+ $superAttr->setAttributeId($attributeID);
987+ $superAttr->setPosition($position);
988+
989+ if(is_string($labels))
990+ {
991+ $superAttr->setStoreId(0);
992+ $superAttr->setLabel($labels);
993+ $superAttr->save();
994+ }
995+ elseif(is_array($labels))
996+ {
997+ foreach($labels as $storeID => $label)
998+ {
999+ $superAttr->setStoreId($storeID);
1000+ $superAttr->setLabel($label);
1001+ $superAttr->save();
1002+ }
1003+ }
1004+
1005+ if(is_array($prices))
1006+ {
1007+ $superAttr->setValues($prices);
1008+ $superAttr->save();
1009+ }
1010+
1011+ return (int)$superAttr->getId();
1012+ }
1013+
1014+ /**
1015+ * Set Configurables Atributes
1016+ *
1017+ * @param int $product
1018+ * @param int $attribute
1019+ * @return True
1020+ */
1021+ public function setSuperAttributeValues($product, $attribute)
1022+ {
1023+ #get if product exists
1024+ $product = Mage::getModel('catalog/product')->load($product)->getID();
1025+ if(!$product){
1026+ return False;
1027+ }
1028+ #get if attribute exists
1029+ $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'attribute_id')->load($attribute)->getID();
1030+ if(!$attribute){
1031+ return False;
1032+ }
1033+
1034+ #try add catalog_product_super_attribute
1035+ try {
1036+ $resource = Mage::getSingleton('core/resource');
1037+ $writeConnection = $resource->getConnection('core_write');
1038+ $query = 'INSERT INTO '.$resource->getTableName('catalog_product_super_attribute').' (product_id, attribute_id) VALUES ('.$product.', '.$attribute.');';
1039+ $writeConnection->query($query);
1040+ return True;
1041+ } catch (Exception $e) {
1042+ return False;
1043+ }
1044+ }
1045+
1046+ /**
1047+ * Remove Configurables Atributes
1048+ *
1049+ * @param int $superAttributeID
1050+ * @return ID
1051+ */
1052+ public function removeSuperAttribute($superAttributeID)
1053+ {
1054+ $superAttr = Mage::getModel("catalog/product_type_configurable_attribute");
1055+ $superAttr->load($superAttributeID);
1056+
1057+ $superAttr->delete();
1058+ //$superAttr->setValues($prices);
1059+ //$superAttr->save();
1060+ return true;
1061+ }
1062+}
1063+
1064+?>
1065
1066=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Tierprice.php'
1067--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Tierprice.php 1970-01-01 00:00:00 +0000
1068+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Product/Tierprice.php 2013-07-31 04:42:30 +0000
1069@@ -0,0 +1,71 @@
1070+<?php
1071+
1072+/**
1073+ * Magento
1074+ *
1075+ * NOTICE OF LICENSE
1076+ *
1077+ * This source file is subject to the Open Software License (OSL 3.0)
1078+ * that is bundled with this package in the file LICENSE.txt.
1079+ * It is also available through the world-wide-web at this URL:
1080+ * http://opensource.org/licenses/osl-3.0.php
1081+ * If you did not receive a copy of the license and are unable to
1082+ * obtain it through the world-wide-web, please send an email
1083+ * to license@magentocommerce.com so we can send you a copy immediately.
1084+ *
1085+ * DISCLAIMER
1086+ *
1087+ * Do not edit or add to this file if you wish to upgrade Magento to newer
1088+ * versions in the future. If you wish to customize Magento for your
1089+ * needs please refer to http://www.magentocommerce.com for more information.
1090+ *
1091+ * @category Mage
1092+ * @package Mage_Catalog
1093+ * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
1094+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
1095+ */
1096+
1097+/**
1098+ * Catalog Product tier price api
1099+ *
1100+ * @category Mage
1101+ * @package Mage_Catalog
1102+ * @author Magento Core Team <core@magentocommerce.com>
1103+ */
1104+class Openlabs_OpenERPConnector_Model_Olcatalog_Product_Tierprice extends Mage_Catalog_Model_Api_Resource {
1105+ const ATTRIBUTE_CODE = 'tier_price';
1106+
1107+
1108+ public function items($productIds=null) {
1109+ if (is_array($productIds)) {
1110+ $result = array ();
1111+ foreach ($productIds as $productId) {
1112+ $product = Mage :: getModel('catalog/product')->load($productId);
1113+ if (!$product->getId()) {
1114+ $this->_fault('product_not_exists');
1115+ }
1116+ $tierPrices = $product->getData(self :: ATTRIBUTE_CODE);
1117+ $result[$productId] = $tierPrices;
1118+ }
1119+ }
1120+ return $result;
1121+
1122+ }
1123+
1124+ public function items2($productIds=null) {
1125+ $product = Mage :: getModel('catalog/product_attribute_backend_tierprice')->_get_set_go();
1126+ if (!$product->getId()) {
1127+ $this->_fault('product_not_exists');
1128+ }
1129+
1130+ $tierPrices = $product->getPriceModel()->getTierPriceCount();
1131+ return 'hello';
1132+ $result[$productIds] = $tierPrices;
1133+
1134+
1135+ return $result;
1136+
1137+
1138+ }
1139+
1140+}
1141\ No newline at end of file
1142
1143=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Products.php'
1144--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Products.php 1970-01-01 00:00:00 +0000
1145+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcatalog/Products.php 2013-07-31 04:42:30 +0000
1146@@ -0,0 +1,325 @@
1147+<?php
1148+
1149+class Openlabs_OpenERPConnector_Model_Olcatalog_Products extends Mage_Catalog_Model_Api_Resource
1150+{
1151+ protected $_filtersMap = array(
1152+ 'product_id' => 'entity_id',
1153+ 'set' => 'attribute_set_id',
1154+ 'type' => 'type_id'
1155+ );
1156+
1157+ public function __construct()
1158+ {
1159+ $this->_storeIdSessionField = 'product_store_id';
1160+ $this->_ignoredAttributeTypes[] = 'gallery';
1161+ $this->_ignoredAttributeTypes[] = 'media_image';
1162+ }
1163+
1164+ /**
1165+ * Return the list of products ids
1166+ *
1167+ * @param array $filters
1168+ * @param string|int $store
1169+ * @return array
1170+ */
1171+ public function search($filters = null, $store = null)
1172+ {
1173+ $collection = Mage::getModel('catalog/product')->getCollection()
1174+ ->setStoreId($this->_getStoreId($store))
1175+ ->addAttributeToSelect('name');
1176+
1177+ if (is_array($filters)) {
1178+ try {
1179+ foreach ($filters as $field => $value) {
1180+ if (isset($this->_filtersMap[$field])) {
1181+ $field = $this->_filtersMap[$field];
1182+ }
1183+
1184+ $collection->addFieldToFilter($field, $value);
1185+ }
1186+ } catch (Mage_Core_Exception $e) {
1187+ $this->_fault('filters_invalid', $e->getMessage());
1188+ }
1189+ }
1190+
1191+ $result = array();
1192+
1193+ foreach ($collection as $product) {
1194+ $result[] = $product->getId();
1195+ }
1196+
1197+ return $result;
1198+ }
1199+
1200+ /**
1201+ * Retrieve list of products with basic info (id, sku, type, set, name)
1202+ *
1203+ * @param array $filters
1204+ * @param string|int $store
1205+ * @return array
1206+ */
1207+ public function items($filters = null, $store = null)
1208+ {
1209+ $collection = Mage::getModel('catalog/product')->getCollection()
1210+ ->setStoreId($this->_getStoreId($store))
1211+ ->addAttributeToSelect('name');
1212+
1213+ if (is_array($filters)) {
1214+ try {
1215+ foreach ($filters as $field => $value) {
1216+ if (isset($this->_filtersMap[$field])) {
1217+ $field = $this->_filtersMap[$field];
1218+ }
1219+
1220+ $collection->addFieldToFilter($field, $value);
1221+ }
1222+ } catch (Mage_Core_Exception $e) {
1223+ $this->_fault('filters_invalid', $e->getMessage());
1224+ }
1225+ }
1226+
1227+ $result = array();
1228+
1229+ foreach ($collection as $product) {
1230+// $result[] = $product->getData();
1231+ $result[] = array( // Basic product data
1232+ 'product_id' => $product->getId(),
1233+ 'sku' => $product->getSku(),
1234+ 'name' => $product->getName(),
1235+ 'set' => $product->getAttributeSetId(),
1236+ 'type' => $product->getTypeId(),
1237+ 'category_ids' => $product->getCategoryIds()
1238+ );
1239+ }
1240+
1241+ return $result;
1242+ }
1243+
1244+ /**
1245+ * Retrieve product info
1246+ *
1247+ * @param int|string $productId
1248+ * @param string|int $store
1249+ * @param array $attributes
1250+ * @return array
1251+ */
1252+ public function biglist($productId, $store = null, $filters = null)
1253+ {
1254+ $collection = Mage::getModel('catalog/product')->getCollection()
1255+ ->setStoreId($this->_getStoreId($store))
1256+ ->addAttributeToSelect('name');
1257+
1258+ if (is_array($filters)) {
1259+ try {
1260+ foreach ($filters as $field => $value) {
1261+ if (isset($this->_filtersMap[$field])) {
1262+ $field = $this->_filtersMap[$field];
1263+ }
1264+
1265+ $collection->addFieldToFilter($field, $value);
1266+ }
1267+ } catch (Mage_Core_Exception $e) {
1268+ $this->_fault('filters_invalid', $e->getMessage());
1269+ }
1270+ }
1271+ foreach ($collection as $product) {
1272+ $data = array();
1273+ $data = array( // Basic product data
1274+ 'product_id' => $product->getId(),
1275+ 'sku' => $product->getSku(),
1276+ 'set' => $product->getAttributeSetId(),
1277+ 'type' => $product->getTypeId(),
1278+ 'categories' => $product->getCategoryIds(),
1279+ 'websites' => $product->getWebsiteIds()
1280+ );
1281+
1282+ foreach ($product->getTypeInstance(true)->getEditableAttributes($product) as $attribute) {
1283+ $data[$attribute->getAttributeCode()] = $product->getData($attribute->getAttributeCode());
1284+ }
1285+ $result[]=$data;
1286+ }
1287+ return $result;
1288+ }
1289+
1290+ /**
1291+ * Create new product.
1292+ *
1293+ * @param string $type
1294+ * @param int $set
1295+ * @param array $productData
1296+ * @return int
1297+ */
1298+ public function create($type, $set, $sku, $productData)
1299+ {
1300+ if (!$type || !$set || !$sku) {
1301+ $this->_fault('data_invalid');
1302+ }
1303+
1304+ $product = Mage::getModel('catalog/product');
1305+ /* @var $product Mage_Catalog_Model_Product */
1306+ $product->setStoreId($this->_getStoreId($store))
1307+ ->setAttributeSetId($set)
1308+ ->setTypeId($type)
1309+ ->setSku($sku);
1310+
1311+ if (isset($productData['website_ids']) && is_array($productData['website_ids'])) {
1312+ $product->setWebsiteIds($productData['website_ids']);
1313+ }
1314+
1315+ foreach ($product->getTypeInstance(true)->getEditableAttributes($product) as $attribute) {
1316+ if ($this->_isAllowedAttribute($attribute)
1317+ && isset($productData[$attribute->getAttributeCode()])) {
1318+ $product->setData(
1319+ $attribute->getAttributeCode(),
1320+ $productData[$attribute->getAttributeCode()]
1321+ );
1322+ }
1323+ }
1324+
1325+ $this->_prepareDataForSave($product, $productData);
1326+
1327+ if (is_array($errors = $product->validate())) {
1328+ $this->_fault('data_invalid', implode("\n", $errors));
1329+ }
1330+
1331+ try {
1332+ $product->save();
1333+ } catch (Mage_Core_Exception $e) {
1334+ $this->_fault('data_invalid', $e->getMessage());
1335+ }
1336+
1337+ return $product->getId();
1338+ }
1339+
1340+ /**
1341+ * Update product data
1342+ *
1343+ * @param int|string $productId
1344+ * @param array $productData
1345+ * @param string|int $store
1346+ * @return boolean
1347+ */
1348+ public function update($productId, $productData = array(), $store = null)
1349+ {
1350+ $product = $this->_getProduct($productId, $store);
1351+
1352+ if (!$product->getId()) {
1353+ $this->_fault('not_exists');
1354+ }
1355+
1356+ if (isset($productData['website_ids']) && is_array($productData['website_ids'])) {
1357+ $product->setWebsiteIds($productData['website_ids']);
1358+ }
1359+
1360+ foreach ($product->getTypeInstance(true)->getEditableAttributes($product) as $attribute) {
1361+ if ($this->_isAllowedAttribute($attribute)
1362+ && isset($productData[$attribute->getAttributeCode()])) {
1363+ $product->setData(
1364+ $attribute->getAttributeCode(),
1365+ $productData[$attribute->getAttributeCode()]
1366+ );
1367+ }
1368+ }
1369+
1370+ $this->_prepareDataForSave($product, $productData);
1371+
1372+ try {
1373+ if (is_array($errors = $product->validate())) {
1374+ $this->_fault('data_invalid', implode("\n", $errors));
1375+ }
1376+ } catch (Mage_Core_Exception $e) {
1377+ $this->_fault('data_invalid', $e->getMessage());
1378+ }
1379+
1380+ try {
1381+ $product->save();
1382+ } catch (Mage_Core_Exception $e) {
1383+ $this->_fault('data_invalid', $e->getMessage());
1384+ }
1385+
1386+ return true;
1387+ }
1388+
1389+ /**
1390+ * Set additional data before product saved
1391+ *
1392+ * @param Mage_Catalog_Model_Product $product
1393+ * @param array $productData
1394+ * @return object
1395+ */
1396+ protected function _prepareDataForSave ($product, $productData)
1397+ {
1398+ if (isset($productData['categories']) && is_array($productData['categories'])) {
1399+ $product->setCategoryIds($productData['categories']);
1400+ }
1401+
1402+ if (isset($productData['websites']) && is_array($productData['websites'])) {
1403+ foreach ($productData['websites'] as &$website) {
1404+ if (is_string($website)) {
1405+ try {
1406+ $website = Mage::app()->getWebsite($website)->getId();
1407+ } catch (Exception $e) { }
1408+ }
1409+ }
1410+ $product->setWebsiteIds($productData['websites']);
1411+ }
1412+
1413+ if (isset($productData['stock_data']) && is_array($productData['stock_data'])) {
1414+ $product->setStockData($productData['stock_data']);
1415+ }
1416+ }
1417+
1418+ /**
1419+ * Update product special price
1420+ *
1421+ * @param int|string $productId
1422+ * @param float $specialPrice
1423+ * @param string $fromDate
1424+ * @param string $toDate
1425+ * @param string|int $store
1426+ * @return boolean
1427+ */
1428+ public function setSpecialPrice($productId, $specialPrice = null, $fromDate = null, $toDate = null, $store = null)
1429+ {
1430+ return $this->update($productId, array(
1431+ 'special_price' => $specialPrice,
1432+ 'special_from_date' => $fromDate,
1433+ 'special_to_date' => $toDate
1434+ ), $store);
1435+ }
1436+
1437+ /**
1438+ * Retrieve product special price
1439+ *
1440+ * @param int|string $productId
1441+ * @param string|int $store
1442+ * @return array
1443+ */
1444+ public function getSpecialPrice($productId, $store = null)
1445+ {
1446+ return $this->info($productId, $store, array('special_price', 'special_from_date', 'special_to_date'));
1447+ }
1448+
1449+ /**
1450+ * Delete product
1451+ *
1452+ * @param int|string $productId
1453+ * @return boolean
1454+ */
1455+ public function delete($productId)
1456+ {
1457+ $product = $this->_getProduct($productId);
1458+
1459+ if (!$product->getId()) {
1460+ $this->_fault('not_exists');
1461+ }
1462+
1463+ try {
1464+ $product->delete();
1465+ } catch (Mage_Core_Exception $e) {
1466+ $this->_fault('not_deleted', $e->getMessage());
1467+ }
1468+
1469+ return true;
1470+ }
1471+} // Class Mage_Catalog_Model_Product_Api End
1472\ No newline at end of file
1473
1474=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore'
1475=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore/Groups.php'
1476--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore/Groups.php 1970-01-01 00:00:00 +0000
1477+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore/Groups.php 2013-07-31 04:42:30 +0000
1478@@ -0,0 +1,167 @@
1479+<?php
1480+
1481+/**
1482+ * @author Sharoon Thomas
1483+ * Inspired from Dieter's Magento Extender
1484+ * @copyright 2009
1485+ */
1486+
1487+class Openlabs_OpenERPConnector_Model_Olcore_Groups extends Mage_Catalog_Model_Api_Resource
1488+{
1489+
1490+ /**
1491+ * Return the list of partner ids which match the filters
1492+ *
1493+ * @param array $filters
1494+ * @return array
1495+ */
1496+ public function search($filters)
1497+ {
1498+
1499+ $collection = Mage::getModel('core/store_group')->getCollection();
1500+
1501+ if (is_array($filters)) {
1502+ try {
1503+ foreach ($filters as $field => $value) {
1504+ $collection->addFieldToFilter($field, $value);
1505+ }
1506+ } catch (Mage_Core_Exception $e) {
1507+ $this->_fault('filters_invalid', $e->getMessage());
1508+ }
1509+ }
1510+
1511+ return $collection->getAllIds();
1512+ }
1513+
1514+ public function items($filters=null)
1515+ {
1516+ try
1517+ {
1518+ $collection = Mage::getModel('core/store_group')->getCollection();//->addAttributeToSelect('*');
1519+ }
1520+ catch (Mage_Core_Exception $e)
1521+ {
1522+ $this->_fault('group_not_exists');
1523+ }
1524+
1525+ if (is_array($filters)) {
1526+ try {
1527+ foreach ($filters as $field => $value) {
1528+ $collection->addFieldToFilter($field, $value);
1529+ }
1530+ } catch (Mage_Core_Exception $e) {
1531+ $this->_fault('filters_invalid', $e->getMessage());
1532+ // If we are adding filter on non-existent attribute
1533+ }
1534+ }
1535+
1536+ $result = array();
1537+ foreach ($collection as $customer) {
1538+ $result[] = $customer->toArray();
1539+ }
1540+
1541+ return $result;
1542+ }
1543+
1544+ public function info($groupIds = null)
1545+ {
1546+ $groups = array();
1547+
1548+ if(is_array($groupIds))
1549+ {
1550+ foreach($groupIds as $groupId)
1551+ {
1552+ try
1553+ {
1554+ $groups[] = Mage::getModel('core/store_group')->load($groupId)->toArray();
1555+ }
1556+ catch (Mage_Core_Exception $e)
1557+ {
1558+ $this->_fault('group_not_exists');
1559+ }
1560+ }
1561+ return $groups;
1562+ }
1563+ elseif(is_numeric($groupIds))
1564+ {
1565+ try
1566+ {
1567+ return Mage::getModel('core/store_group')->load($groupIds)->toArray();
1568+ }
1569+ catch (Mage_Core_Exception $e)
1570+ {
1571+ $this->_fault('group_not_exists');
1572+ }
1573+
1574+ }
1575+
1576+ }
1577+
1578+ public function create($groupdata)
1579+ {
1580+ try
1581+ {
1582+ $group = Mage::getModel('core/store_group')
1583+ ->setData($groupdata)
1584+ ->save();
1585+
1586+ }
1587+ catch (Magento_Core_Exception $e)
1588+ {
1589+ $this->_fault('data_invalid',$e->getMessage());
1590+ }
1591+ catch (Exception $e)
1592+ {
1593+ $this->_fault('data_invalid',$e->getMessage());
1594+ }
1595+ return $group->getId();
1596+ }
1597+
1598+ public function update($groupid,$groupdata)
1599+ {
1600+ try
1601+ {
1602+ $group = Mage::getModel('core/store_group')
1603+ ->load($groupid);
1604+ if (!$group->getId())
1605+ {
1606+ $this->_fault('group_not_exists');
1607+ }
1608+ $group->addData($groupdata)->save();
1609+ }
1610+ catch (Magento_Core_Exception $e)
1611+ {
1612+ $this->_fault('data_invalid',$e->getMessage());
1613+ }
1614+ catch (Exception $e)
1615+ {
1616+ $this->_fault('data_invalid',$e->getMessage());
1617+ }
1618+ return true;
1619+ }
1620+
1621+ public function delete($groupid)
1622+ {
1623+ try
1624+ {
1625+ $group = Mage::getModel('core/store_group')
1626+ ->load($groupid);
1627+ if (!$group->getId())
1628+ {
1629+ $this->_fault('group_not_exists');
1630+ }
1631+ $group->delete();
1632+
1633+ }
1634+ catch (Magento_Core_Exception $e)
1635+ {
1636+ $this->_fault('data_invalid',$e->getMessage());
1637+ }
1638+ catch (Exception $e)
1639+ {
1640+ $this->_fault('data_invalid',$e->getMessage());
1641+ }
1642+ return true;
1643+ }
1644+}
1645+?>
1646
1647=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore/Storeviews.php'
1648--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore/Storeviews.php 1970-01-01 00:00:00 +0000
1649+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore/Storeviews.php 2013-07-31 04:42:30 +0000
1650@@ -0,0 +1,167 @@
1651+<?php
1652+
1653+/**
1654+ * @author Sharoon Thomas
1655+ * Inspired from Dieter's Magento Extender
1656+ * @copyright 2009
1657+ */
1658+
1659+class Openlabs_OpenERPConnector_Model_Olcore_Storeviews extends Mage_Catalog_Model_Api_Resource
1660+{
1661+
1662+ /**
1663+ * Return the list of storeviews ids which match the filters
1664+ *
1665+ * @param array $filters
1666+ * @return array
1667+ */
1668+ public function search($filters)
1669+ {
1670+
1671+ $collection = Mage::getModel('core/store')->getCollection();
1672+
1673+ if (is_array($filters)) {
1674+ try {
1675+ foreach ($filters as $field => $value) {
1676+ $collection->addFieldToFilter($field, $value);
1677+ }
1678+ } catch (Mage_Core_Exception $e) {
1679+ $this->_fault('filters_invalid', $e->getMessage());
1680+ }
1681+ }
1682+
1683+ return $collection->getAllIds();
1684+ }
1685+
1686+ public function items($filters=null)
1687+ {
1688+ try
1689+ {
1690+ $collection = Mage::getModel('core/store')->getCollection();//->addAttributeToSelect('*');
1691+ }
1692+ catch (Mage_Core_Exception $e)
1693+ {
1694+ $this->_fault('store_not_exists');
1695+ }
1696+
1697+ if (is_array($filters)) {
1698+ try {
1699+ foreach ($filters as $field => $value) {
1700+ $collection->addFieldToFilter($field, $value);
1701+ }
1702+ } catch (Mage_Core_Exception $e) {
1703+ $this->_fault('filters_invalid', $e->getMessage());
1704+ // If we are adding filter on non-existent attribute
1705+ }
1706+ }
1707+
1708+ $result = array();
1709+ foreach ($collection as $customer) {
1710+ $result[] = $customer->toArray();
1711+ }
1712+
1713+ return $result;
1714+ }
1715+
1716+ public function info($storeIds = null)
1717+ {
1718+ $stores = array();
1719+
1720+ if(is_array($storeIds))
1721+ {
1722+ foreach($storeIds as $storeId)
1723+ {
1724+ try
1725+ {
1726+ $stores[] = Mage::getModel('core/store')->load($storeId)->toArray();
1727+ }
1728+ catch (Mage_Core_Exception $e)
1729+ {
1730+ $this->_fault('store_not_exists');
1731+ }
1732+ }
1733+ return $stores;
1734+ }
1735+ elseif(is_numeric($storeIds))
1736+ {
1737+ try
1738+ {
1739+ return Mage::getModel('core/store')->load($storeIds)->toArray();
1740+ }
1741+ catch (Mage_Core_Exception $e)
1742+ {
1743+ $this->_fault('store_not_exists');
1744+ }
1745+
1746+ }
1747+
1748+ }
1749+
1750+ public function create($storedata)
1751+ {
1752+ try
1753+ {
1754+ $store = Mage::getModel('core/store')
1755+ ->setData($storedata)
1756+ ->save();
1757+
1758+ }
1759+ catch (Magento_Core_Exception $e)
1760+ {
1761+ $this->_fault('data_invalid',$e->getMessage());
1762+ }
1763+ catch (Exception $e)
1764+ {
1765+ $this->_fault('data_invalid',$e->getMessage());
1766+ }
1767+ return $store->getId();
1768+ }
1769+
1770+ public function update($storeid,$storedata)
1771+ {
1772+ try
1773+ {
1774+ $store = Mage::getModel('core/store')
1775+ ->load($storeid);
1776+ if (!$store->getId())
1777+ {
1778+ $this->_fault('store_not_exists');
1779+ }
1780+ $store->addData($storedata)->save();
1781+ }
1782+ catch (Magento_Core_Exception $e)
1783+ {
1784+ $this->_fault('data_invalid',$e->getMessage());
1785+ }
1786+ catch (Exception $e)
1787+ {
1788+ $this->_fault('data_invalid',$e->getMessage());
1789+ }
1790+ return true;
1791+ }
1792+
1793+ public function delete($storeid)
1794+ {
1795+ try
1796+ {
1797+ $store = Mage::getModel('core/store')
1798+ ->load($storeid);
1799+ if (!$store->getId())
1800+ {
1801+ $this->_fault('store_not_exists');
1802+ }
1803+ $store->delete();
1804+
1805+ }
1806+ catch (Magento_Core_Exception $e)
1807+ {
1808+ $this->_fault('data_invalid',$e->getMessage());
1809+ }
1810+ catch (Exception $e)
1811+ {
1812+ $this->_fault('data_invalid',$e->getMessage());
1813+ }
1814+ return true;
1815+ }
1816+}
1817+?>
1818
1819=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore/Website.php'
1820--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore/Website.php 1970-01-01 00:00:00 +0000
1821+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcore/Website.php 2013-07-31 04:42:30 +0000
1822@@ -0,0 +1,195 @@
1823+<?php
1824+
1825+/**
1826+ * @author Sharoon Thomas
1827+ * Inspired from Dieter's Magento Extender
1828+ * @copyright 2009
1829+ */
1830+
1831+class Openlabs_OpenERPConnector_Model_Olcore_Website extends Mage_Catalog_Model_Api_Resource
1832+{
1833+
1834+ /**
1835+ * Return the list of website ids which match the filters
1836+ *
1837+ * @param array $filters
1838+ * @return array
1839+ */
1840+ public function search($filters)
1841+ {
1842+
1843+ $collection = Mage::getModel('core/website')->getCollection();
1844+
1845+ if (is_array($filters)) {
1846+ try {
1847+ foreach ($filters as $field => $value) {
1848+ $collection->addFieldToFilter($field, $value);
1849+ }
1850+ } catch (Mage_Core_Exception $e) {
1851+ $this->_fault('filters_invalid', $e->getMessage());
1852+ }
1853+ }
1854+
1855+ return $collection->getAllIds();
1856+ }
1857+
1858+ public function items($filters=null)
1859+ {
1860+ try
1861+ {
1862+ $collection = Mage::getModel('core/website')->getCollection();//->addAttributeToSelect('*');
1863+ }
1864+ catch (Mage_Core_Exception $e)
1865+ {
1866+ $this->_fault('store_not_exists');
1867+ }
1868+
1869+ if (is_array($filters)) {
1870+ try {
1871+ foreach ($filters as $field => $value) {
1872+ $collection->addFieldToFilter($field, $value);
1873+ }
1874+ } catch (Mage_Core_Exception $e) {
1875+ $this->_fault('filters_invalid', $e->getMessage());
1876+ // If we are adding filter on non-existent attribute
1877+ }
1878+ }
1879+
1880+ $result = array();
1881+ foreach ($collection as $customer) {
1882+ $result[] = $customer->toArray();
1883+ }
1884+
1885+ return $result;
1886+ }
1887+
1888+ public function info($storeIds = null)
1889+ {
1890+ $stores = array();
1891+
1892+ if(is_array($storeIds))
1893+ {
1894+ foreach($storeIds as $storeId)
1895+ {
1896+ try
1897+ {
1898+ $stores[] = Mage::getModel('core/website')->load($storeId)->toArray();
1899+ }
1900+ catch (Mage_Core_Exception $e)
1901+ {
1902+ $this->_fault('store_not_exists');
1903+ }
1904+ }
1905+ return $stores;
1906+ }
1907+ elseif(is_numeric($storeIds))
1908+ {
1909+ try
1910+ {
1911+ return Mage::getModel('core/website')->load($storeIds)->toArray();
1912+ }
1913+ catch (Mage_Core_Exception $e)
1914+ {
1915+ $this->_fault('store_not_exists');
1916+ }
1917+
1918+ }
1919+
1920+ }
1921+ //This is a protected function used by items & info for fetching website information
1922+
1923+ public function create($websitedata)
1924+ {
1925+ try
1926+ {
1927+ $website = Mage::getModel('core/website')
1928+ ->setData($websitedata)
1929+ ->save();
1930+
1931+ }
1932+ catch (Magento_Core_Exception $e)
1933+ {
1934+ $this->_fault('data_invalid',$e->getMessage());
1935+ }
1936+ catch (Exception $e)
1937+ {
1938+ $this->_fault('data_invalid',$e->getMessage());
1939+ }
1940+ return $website->getId();
1941+ }
1942+
1943+ public function update($websiteid,$websitedata)
1944+ {
1945+ try
1946+ {
1947+ $website = Mage::getModel('core/website')
1948+ ->load($websiteid);
1949+ if (!$website->getId())
1950+ {
1951+ $this->_fault('website_not_exists');
1952+ }
1953+ $website->addData($websitedata)->save();
1954+ }
1955+ catch (Magento_Core_Exception $e)
1956+ {
1957+ $this->_fault('data_invalid',$e->getMessage());
1958+ }
1959+ catch (Exception $e)
1960+ {
1961+ $this->_fault('data_invalid',$e->getMessage());
1962+ }
1963+ return true;
1964+ }
1965+
1966+ public function delete($websiteid)
1967+ {
1968+ try
1969+ {
1970+ $website = Mage::getModel('core/website')
1971+ ->load($websiteid);
1972+ if (!$website->getId())
1973+ {
1974+ $this->_fault('website_not_exists');
1975+ }
1976+ $website->delete();
1977+
1978+ }
1979+ catch (Magento_Core_Exception $e)
1980+ {
1981+ $this->_fault('data_invalid',$e->getMessage());
1982+ }
1983+ catch (Exception $e)
1984+ {
1985+ $this->_fault('data_invalid',$e->getMessage());
1986+ }
1987+ return true;
1988+ }
1989+
1990+ public function tree()
1991+ {
1992+ $tree = array();
1993+
1994+ $websites = $this->websites();
1995+
1996+ foreach($websites as $website)
1997+ {
1998+ $groups = $this->groups($website['group_ids']);
1999+ $tree[$website['code']] = $website;
2000+ foreach($groups as $group)
2001+ {
2002+ $stores = $this->stores($group["store_ids"]);
2003+
2004+ $tree[$website['code']]['groups']['group_'.$group['group_id']] = $group;
2005+
2006+ foreach($stores as $store)
2007+ {
2008+ $tree[$website['code']]['groups']['group_'.$group['group_id']]['stores'][$store['code']] = $store;
2009+ }
2010+ }
2011+ }
2012+
2013+ return $tree;
2014+ }
2015+
2016+}
2017+?>
2018
2019=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer'
2020=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Address.php'
2021--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Address.php 1970-01-01 00:00:00 +0000
2022+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Address.php 2013-07-31 04:42:30 +0000
2023@@ -0,0 +1,241 @@
2024+<?php
2025+/**
2026+ * Magento
2027+ *
2028+ * NOTICE OF LICENSE
2029+ *
2030+ * This source file is subject to the Open Software License (OSL 3.0)
2031+ * that is bundled with this package in the file LICENSE.txt.
2032+ * It is also available through the world-wide-web at this URL:
2033+ * http://opensource.org/licenses/osl-3.0.php
2034+ * If you did not receive a copy of the license and are unable to
2035+ * obtain it through the world-wide-web, please send an email
2036+ * to license@magentocommerce.com so we can send you a copy immediately.
2037+ *
2038+ * DISCLAIMER
2039+ *
2040+ * Do not edit or add to this file if you wish to upgrade Magento to newer
2041+ * versions in the future. If you wish to customize Magento for your
2042+ * needs please refer to http://www.magentocommerce.com for more information.
2043+ *
2044+ * @category Mage
2045+ * @package Mage_Customer
2046+ * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
2047+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
2048+ */
2049+
2050+/**
2051+ * Customer address api
2052+ *
2053+ * @category Mage
2054+ * @package Mage_Customer
2055+ * @author Magento Core Team <core@magentocommerce.com>
2056+ */
2057+class Openlabs_OpenERPConnector_Model_Olcustomer_Address extends Mage_Customer_Model_Api_Resource
2058+{
2059+ protected $_mapAttributes = array(
2060+ 'customer_id' => 'entity_id'
2061+ );
2062+
2063+ public function __construct()
2064+ {
2065+ $this->_ignoredAttributeCodes[] = 'parent_id';
2066+ }
2067+
2068+ /**
2069+ * Retrive customer addresses list
2070+ *
2071+ * @param int $customerId
2072+ * @return array
2073+ */
2074+ public function items($customerId)
2075+ {
2076+ $customer = Mage::getModel('customer/customer')
2077+ ->load($customerId);
2078+ /* @var $customer Mage_Customer_Model_Customer */
2079+
2080+ if (!$customer->getId()) {
2081+ $this->_fault('customer_not_exists');
2082+ }
2083+
2084+ $result = array();
2085+ foreach ($customer->getAddresses() as $address) {
2086+ $data = $address->toArray();
2087+ $data['default_billing'] = $customer->getDefaultBilling() == $address->getId();
2088+ $data['default_shipping'] = $customer->getDefaultShipping() == $address->getId();
2089+ $result[] = $data;
2090+ /*$data = $address->toArray();
2091+ $row = array();
2092+
2093+ foreach ($this->_mapAttributes as $attributeAlias => $attributeCode) {
2094+ $row[$attributeAlias] = isset($data[$attributeCode]) ? $data[$attributeCode] : null;
2095+ }
2096+
2097+ foreach ($this->getAllowedAttributes($address) as $attributeCode => $attribute) {
2098+ if (isset($data[$attributeCode])) {
2099+ $row[$attributeCode] = $data[$attributeCode];
2100+ }
2101+ }
2102+
2103+ $row['is_default_billing'] = $customer->getDefaultBillingAddress() == $address->getId();
2104+ $row['is_default_shipping'] = $customer->getDefaultShippingAddress() == $address->getId();
2105+
2106+ $result[] = $row;*/
2107+
2108+ }
2109+
2110+ return $result;
2111+ }
2112+
2113+ /**
2114+ * Create new address for customer
2115+ *
2116+ * @param int $customerId
2117+ * @param array $addressData
2118+ * @return int
2119+ */
2120+ public function create($customerId, $addressData)
2121+ {
2122+ $customer = Mage::getModel('customer/customer')
2123+ ->load($customerId);
2124+ /* @var $customer Mage_Customer_Model_Customer */
2125+
2126+ if (!$customer->getId()) {
2127+ $this->_fault('customer_not_exists');
2128+ }
2129+
2130+ $address = Mage::getModel('customer/address');
2131+
2132+ foreach ($this->getAllowedAttributes($address) as $attributeCode=>$attribute) {
2133+ if (isset($addressData[$attributeCode])) {
2134+ $address->setData($attributeCode, $addressData[$attributeCode]);
2135+ }
2136+ }
2137+
2138+ if (isset($addressData['is_default_billing'])) {
2139+ $address->setIsDefaultBilling($addressData['is_default_billing']);
2140+ }
2141+
2142+ if (isset($addressData['is_default_shipping'])) {
2143+ $address->setIsDefaultShipping($addressData['is_default_shipping']);
2144+ }
2145+
2146+ $address->setCustomerId($customer->getId());
2147+
2148+ $valid = $address->validate();
2149+
2150+ if (is_array($valid)) {
2151+ $this->_fault('data_invalid', implode("\n", $valid));
2152+ }
2153+
2154+ try {
2155+ $address->save();
2156+ } catch (Mage_Core_Exception $e) {
2157+ $this->_fault('data_invalid', $e->getMessage());
2158+ }
2159+
2160+ return $address->getId();
2161+ }
2162+
2163+ /**
2164+ * Retrieve address data
2165+ *
2166+ * @param int $addressId
2167+ * @return array
2168+ */
2169+ public function info($addressId)
2170+ {
2171+ $address = Mage::getModel('customer/address')
2172+ ->load($addressId);
2173+
2174+ if (!$address->getId()) {
2175+ $this->_fault('not_exists');
2176+ }
2177+
2178+ $result = array();
2179+
2180+ foreach ($this->_mapAttributes as $attributeAlias => $attributeCode) {
2181+ $result[$attributeAlias] = $address->getData($attributeCode);
2182+ }
2183+
2184+ foreach ($this->getAllowedAttributes($address) as $attributeCode => $attribute) {
2185+ $result[$attributeCode] = $address->getData($attributeCode);
2186+ }
2187+
2188+
2189+ if ($customer = $address->getCustomer()) {
2190+ $result['is_default_billing'] = $customer->getDefaultBillingAddress() == $address->getId();
2191+ $result['is_default_shipping'] = $customer->getDefaultShippingAddress() == $address->getId();
2192+ }
2193+
2194+ return $result;
2195+ }
2196+
2197+ /**
2198+ * Update address data
2199+ *
2200+ * @param int $addressId
2201+ * @param array $addressData
2202+ * @return boolean
2203+ */
2204+ public function update($addressId, $addressData)
2205+ {
2206+ $address = Mage::getModel('customer/address')
2207+ ->load($addressId);
2208+
2209+ if (!$address->getId()) {
2210+ $this->_fault('not_exists');
2211+ }
2212+
2213+ foreach ($this->getAllowedAttributes($address) as $attributeCode=>$attribute) {
2214+ if (isset($addressData[$attributeCode])) {
2215+ $address->setData($attributeCode, $addressData[$attributeCode]);
2216+ }
2217+ }
2218+
2219+ if (isset($addressData['is_default_billing'])) {
2220+ $address->setIsDefaultBilling($addressData['is_default_billing']);
2221+ }
2222+
2223+ if (isset($addressData['is_default_shipping'])) {
2224+ $address->setIsDefaultShipping($addressData['is_default_shipping']);
2225+ }
2226+
2227+ $valid = $address->validate();
2228+ if (is_array($valid)) {
2229+ $this->_fault('data_invalid', implode("\n", $valid));
2230+ }
2231+
2232+ try {
2233+ $address->save();
2234+ } catch (Mage_Core_Exception $e) {
2235+ $this->_fault('data_invalid', $e->getMessage());
2236+ }
2237+
2238+ return true;
2239+ }
2240+
2241+ /**
2242+ * Delete address
2243+ *
2244+ * @param int $addressId
2245+ * @return boolean
2246+ */
2247+ public function delete($addressId)
2248+ {
2249+ $address = Mage::getModel('customer/address')
2250+ ->load($addressId);
2251+
2252+ if (!$address->getId()) {
2253+ $this->_fault('not_exists');
2254+ }
2255+
2256+ try {
2257+ $address->delete();
2258+ } catch (Mage_Core_Exception $e) {
2259+ $this->_fault('not_deleted', $e->getMessage());
2260+ }
2261+
2262+ return true;
2263+ }
2264+} // Class Mage_Customer_Model_Address_Api End
2265\ No newline at end of file
2266
2267=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Customer.php'
2268--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Customer.php 1970-01-01 00:00:00 +0000
2269+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Customer.php 2013-07-31 04:42:30 +0000
2270@@ -0,0 +1,182 @@
2271+<?php
2272+
2273+/**
2274+ * @author Sharoon Thomas
2275+ * Inspired from Dieter's Magento Extender
2276+ * @copyright 2009
2277+ */
2278+
2279+class Openlabs_OpenERPConnector_Model_Olcustomer_Customer extends Mage_Catalog_Model_Api_Resource
2280+{
2281+
2282+ protected $_mapFilters = array(
2283+ 'customer_id' => 'entity_id'
2284+ );
2285+
2286+ /**
2287+ * Return the list of partner ids which match the filters
2288+ *
2289+ * @param array $filters
2290+ * @return array
2291+ */
2292+ public function search($filters)
2293+ {
2294+
2295+ $collection = Mage::getModel('customer/customer')->getCollection()
2296+ ->addAttributeToSelect('*');
2297+
2298+ if (is_array($filters)) {
2299+ try {
2300+ foreach ($filters as $field => $value) {
2301+ if (isset($this->_mapFilters[$field])) {
2302+ $field = $this->_mapFilters[$field];
2303+ }
2304+
2305+ $collection->addFieldToFilter($field, $value);
2306+ }
2307+ } catch (Mage_Core_Exception $e) {
2308+ $this->_fault('filters_invalid', $e->getMessage());
2309+ }
2310+ }
2311+
2312+ $result = array();
2313+
2314+ foreach ($collection as $product) {
2315+ $result[] = $product->getId();
2316+ }
2317+
2318+ return $result;
2319+ }
2320+
2321+ public function items($filters=null)
2322+ {
2323+ try
2324+ {
2325+ $collection = Mage::getModel('customer/customer')->getCollection();//->addAttributeToSelect('*');
2326+ }
2327+ catch (Mage_Core_Exception $e)
2328+ {
2329+ $this->_fault('customer_not_exists');
2330+ }
2331+
2332+ if (is_array($filters)) {
2333+ try {
2334+ foreach ($filters as $field => $value) {
2335+ $collection->addFieldToFilter($field, $value);
2336+ }
2337+ } catch (Mage_Core_Exception $e) {
2338+ $this->_fault('filters_invalid', $e->getMessage());
2339+ // If we are adding filter on non-existent attribute
2340+ }
2341+ }
2342+
2343+ $result = array();
2344+ foreach ($collection as $customer) {
2345+ $result[] = $customer->toArray();
2346+ }
2347+
2348+ return $result;
2349+ }
2350+
2351+ public function info($groupIds = null)
2352+ {
2353+ $groups = array();
2354+
2355+ if(is_array($groupIds))
2356+ {
2357+ foreach($groupIds as $groupId)
2358+ {
2359+ try
2360+ {
2361+ $groups[] = Mage::getModel('customer')->load($groupId)->toArray();
2362+ }
2363+ catch (Mage_Core_Exception $e)
2364+ {
2365+ $this->_fault('customer_not_exists');
2366+ }
2367+ }
2368+ return $groups;
2369+ }
2370+ elseif(is_numeric($groupIds))
2371+ {
2372+ try
2373+ {
2374+ return Mage::getModel('customer')->load($groupIds)->toArray();
2375+ }
2376+ catch (Mage_Core_Exception $e)
2377+ {
2378+ $this->_fault('customer_not_exists');
2379+ }
2380+
2381+ }
2382+
2383+ }
2384+
2385+ public function create($groupdata)
2386+ {
2387+ try
2388+ {
2389+ $group = Mage::getModel('customer')
2390+ ->setData($groupdata)
2391+ ->save();
2392+
2393+ }
2394+ catch (Magento_Core_Exception $e)
2395+ {
2396+ $this->_fault('data_invalid',$e->getMessage());
2397+ }
2398+ catch (Exception $e)
2399+ {
2400+ $this->_fault('data_invalid',$e->getMessage());
2401+ }
2402+ return $group->getId();
2403+ }
2404+
2405+ public function update($groupid,$groupdata)
2406+ {
2407+ try
2408+ {
2409+ $group = Mage::getModel('customer')
2410+ ->load($groupid);
2411+ if (!$group->getId())
2412+ {
2413+ $this->_fault('customer_not_exists');
2414+ }
2415+ $group->addData($groupdata)->save();
2416+ }
2417+ catch (Magento_Core_Exception $e)
2418+ {
2419+ $this->_fault('data_invalid',$e->getMessage());
2420+ }
2421+ catch (Exception $e)
2422+ {
2423+ $this->_fault('data_invalid',$e->getMessage());
2424+ }
2425+ return true;
2426+ }
2427+
2428+ public function delete($groupid)
2429+ {
2430+ try
2431+ {
2432+ $group = Mage::getModel('customer')
2433+ ->load($groupid);
2434+ if (!$group->getId())
2435+ {
2436+ $this->_fault('customer_not_exists');
2437+ }
2438+ $group->delete();
2439+
2440+ }
2441+ catch (Magento_Core_Exception $e)
2442+ {
2443+ $this->_fault('data_invalid',$e->getMessage());
2444+ }
2445+ catch (Exception $e)
2446+ {
2447+ $this->_fault('data_invalid',$e->getMessage());
2448+ }
2449+ return true;
2450+ }
2451+}
2452+?>
2453
2454=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Group.php'
2455--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Group.php 1970-01-01 00:00:00 +0000
2456+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Group.php 2013-07-31 04:42:30 +0000
2457@@ -0,0 +1,142 @@
2458+<?php
2459+
2460+/**
2461+ * @author Sharoon Thomas
2462+ * Inspired from Dieter's Magento Extender
2463+ * @copyright 2009
2464+ */
2465+
2466+class Openlabs_OpenERPConnector_Model_Olcustomer_Group extends Mage_Catalog_Model_Api_Resource
2467+{
2468+ public function items($filters=null)
2469+ {
2470+ try
2471+ {
2472+ $collection = Mage::getModel('customer/group')->getCollection();//->addAttributeToSelect('*');
2473+ }
2474+ catch (Mage_Core_Exception $e)
2475+ {
2476+ $this->_fault('group_not_exists');
2477+ }
2478+
2479+ if (is_array($filters)) {
2480+ try {
2481+ foreach ($filters as $field => $value) {
2482+ $collection->addFieldToFilter($field, $value);
2483+ }
2484+ } catch (Mage_Core_Exception $e) {
2485+ $this->_fault('filters_invalid', $e->getMessage());
2486+ // If we are adding filter on non-existent attribute
2487+ }
2488+ }
2489+
2490+ $result = array();
2491+ foreach ($collection as $customer) {
2492+ $result[] = $customer->toArray();
2493+ }
2494+
2495+ return $result;
2496+ }
2497+
2498+ public function info($groupIds = null)
2499+ {
2500+ $groups = array();
2501+
2502+ if(is_array($groupIds))
2503+ {
2504+ foreach($groupIds as $groupId)
2505+ {
2506+ try
2507+ {
2508+ $groups[] = Mage::getModel('customer/group')->load($groupId)->toArray();
2509+ }
2510+ catch (Mage_Core_Exception $e)
2511+ {
2512+ $this->_fault('group_not_exists');
2513+ }
2514+ }
2515+ return $groups;
2516+ }
2517+ elseif(is_numeric($groupIds))
2518+ {
2519+ try
2520+ {
2521+ return Mage::getModel('customer/group')->load($groupIds)->toArray();
2522+ }
2523+ catch (Mage_Core_Exception $e)
2524+ {
2525+ $this->_fault('group_not_exists');
2526+ }
2527+
2528+ }
2529+
2530+ }
2531+
2532+ public function create($groupdata)
2533+ {
2534+ try
2535+ {
2536+ $group = Mage::getModel('customer/group')
2537+ ->setData($groupdata)
2538+ ->save();
2539+
2540+ }
2541+ catch (Magento_Core_Exception $e)
2542+ {
2543+ $this->_fault('data_invalid',$e->getMessage());
2544+ }
2545+ catch (Exception $e)
2546+ {
2547+ $this->_fault('data_invalid',$e->getMessage());
2548+ }
2549+ return $group->getId();
2550+ }
2551+
2552+ public function update($groupid,$groupdata)
2553+ {
2554+ try
2555+ {
2556+ $group = Mage::getModel('customer/group')
2557+ ->load($groupid);
2558+ if (!$group->getId())
2559+ {
2560+ $this->_fault('group_not_exists');
2561+ }
2562+ $group->addData($groupdata)->save();
2563+ }
2564+ catch (Magento_Core_Exception $e)
2565+ {
2566+ $this->_fault('data_invalid',$e->getMessage());
2567+ }
2568+ catch (Exception $e)
2569+ {
2570+ $this->_fault('data_invalid',$e->getMessage());
2571+ }
2572+ return true;
2573+ }
2574+
2575+ public function delete($groupid)
2576+ {
2577+ try
2578+ {
2579+ $group = Mage::getModel('customer/group')
2580+ ->load($groupid);
2581+ if (!$group->getId())
2582+ {
2583+ $this->_fault('group_not_exists');
2584+ }
2585+ $group->delete();
2586+
2587+ }
2588+ catch (Magento_Core_Exception $e)
2589+ {
2590+ $this->_fault('data_invalid',$e->getMessage());
2591+ }
2592+ catch (Exception $e)
2593+ {
2594+ $this->_fault('data_invalid',$e->getMessage());
2595+ }
2596+ return true;
2597+ }
2598+}
2599+?>
2600
2601=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Subscriber.php'
2602--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Subscriber.php 1970-01-01 00:00:00 +0000
2603+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Olcustomer/Subscriber.php 2013-07-31 04:42:30 +0000
2604@@ -0,0 +1,163 @@
2605+<?php
2606+/**
2607+ * Magento
2608+ *
2609+ * NOTICE OF LICENSE
2610+ *
2611+ * This source file is subject to the Open Software License (OSL 3.0)
2612+ * that is bundled with this package in the file LICENSE.txt.
2613+ * It is also available through the world-wide-web at this URL:
2614+ * http://opensource.org/licenses/osl-3.0.php
2615+ * If you did not receive a copy of the license and are unable to
2616+ * obtain it through the world-wide-web, please send an email
2617+ * to license@magentocommerce.com so we can send you a copy immediately.
2618+ *
2619+ * DISCLAIMER
2620+ *
2621+ * Do not edit or add to this file if you wish to upgrade Magento to newer
2622+ * versions in the future. If you wish to customize Magento for your
2623+ * needs please refer to http://www.magentocommerce.com for more information.
2624+ *
2625+ * @category Mage
2626+ * @package Mage_Customer
2627+ * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
2628+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
2629+ */
2630+
2631+/**
2632+ * Customer address api
2633+ *
2634+ * @category Mage
2635+ * @package Mage_Customer
2636+ * @author Magento Core Team <core@magentocommerce.com>
2637+ */
2638+class Openlabs_OpenERPConnector_Model_Olcustomer_Subscriber extends Mage_Customer_Model_Api_Resource
2639+{
2640+ protected $_mapAttributes = array(
2641+ 'customer_id' => 'entity_id'
2642+ );
2643+
2644+ public function __construct()
2645+ {
2646+ $this->_ignoredAttributeCodes[] = 'parent_id';
2647+ }
2648+
2649+ /**
2650+ * Retrive subscriber list
2651+ *
2652+ * @param int $filters
2653+ * @return array
2654+ */
2655+ public function items($filters=null)
2656+ {
2657+ $collection = Mage::getModel('customer/customer')->getCollection()
2658+ ->addAttributeToSelect('*');
2659+
2660+
2661+ if (is_array($filters)) {
2662+ try {
2663+ foreach ($filters as $field => $value) {
2664+ $collection->addFieldToFilter($field, $value);
2665+ }
2666+ } catch (Mage_Core_Exception $e) {
2667+ $this->_fault('filters_invalid', $e->getMessage());
2668+ // If we are adding filter on non-existent attribute
2669+ }
2670+ }
2671+
2672+ $result = array();
2673+
2674+ foreach ($collection as $customer) {
2675+ $subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($customer['email']);
2676+ if($subscriber->getId())
2677+ $result[] = $subscriber->getId();
2678+ }
2679+
2680+ return $result;
2681+ }
2682+
2683+ /**
2684+ * Create new address for customer
2685+ *
2686+ * @param int $customerId
2687+ * @param array $email
2688+ * @return int
2689+ */
2690+ public function create($customerId,$email)
2691+ {
2692+ if($customerId && $email):
2693+ $customer = Mage::getModel("newsletter/subscriber");
2694+
2695+ $customer->setCustomerId($customerId);
2696+ $customer->setEmail($email);
2697+ $customer->subscriber_status = "1";
2698+
2699+ $customer->save();
2700+
2701+ return $customer->getId();
2702+ else:
2703+ return False;
2704+ endif;
2705+ }
2706+
2707+ /**
2708+ * Retrieve subscriber data
2709+ *
2710+ * @param int $subscriberId
2711+ * @return array
2712+ */
2713+ public function info($subscriberId)
2714+ {
2715+ $subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
2716+
2717+ if($subscriber->getId()):
2718+ $result[] = $subscriber->toArray();
2719+ endif;
2720+
2721+ return $result;
2722+ }
2723+
2724+ /**
2725+ * Update subscriber data (subscriber)
2726+ *
2727+ * @param $email
2728+ * @return boolean
2729+ */
2730+ public function update($email)
2731+ {
2732+ if($email):
2733+ $subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
2734+
2735+ if($subscriber->getId()):
2736+ $customer = Mage::getModel("newsletter/subscriber")->load($subscriber->getId());
2737+ $customer->subscriber_status = "1";
2738+ $customer->save();
2739+ endif;
2740+
2741+ return $subscriber->getId();
2742+ else:
2743+ return False;
2744+ endif;
2745+ }
2746+
2747+ /**
2748+ * Delete subscriber (unsubscriber)
2749+ *
2750+ * @param $email
2751+ * @return boolean
2752+ */
2753+ public function delete($email)
2754+ {
2755+ if($email):
2756+ $subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
2757+
2758+ if($subscriber->getId()):
2759+ Mage::getModel('newsletter/subscriber')->load($subscriber->getId())->unsubscribe();
2760+ endif;
2761+
2762+ return $subscriber->getId();
2763+ else:
2764+ return False;
2765+ endif;
2766+ }
2767+} // Class Mage_Customer_Model_Address_Api End
2768
2769=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Sales'
2770=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Sales/Order'
2771=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Sales/Order/Api.php'
2772--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Sales/Order/Api.php 1970-01-01 00:00:00 +0000
2773+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/Model/Sales/Order/Api.php 2013-07-31 04:42:30 +0000
2774@@ -0,0 +1,187 @@
2775+<?php
2776+
2777+/**
2778+ *
2779+ * @author Mohammed NAHHAS
2780+ * @package Openlabs_OpenERPConnector
2781+ *
2782+ */
2783+
2784+class Openlabs_OpenERPConnector_Model_Sales_Order_Api extends Mage_Sales_Model_Order_Api {
2785+
2786+ /**
2787+ * Return the list of products ids that match with the filter
2788+ * The filter imported is required
2789+ * @param array
2790+ * @return array
2791+ */
2792+ public function search($data) {
2793+
2794+ $result = array();
2795+ if(isset($data['imported'])) {
2796+
2797+ $collection = Mage::getModel("sales/order")->getCollection()
2798+ ->addAttributeToSelect('increment_id')
2799+ ->addAttributeToFilter('imported', array('eq' => $data['imported']));
2800+
2801+ if(isset($data['limit'])) {
2802+ $collection->setPageSize($data['limit']);
2803+ $collection->setOrder('entity_id', 'ASC');
2804+ }
2805+
2806+ if(isset($data['filters']) && is_array($data['filters'])) {
2807+ $filters = $data['filters'];
2808+ foreach($filters as $field => $value) {
2809+ $collection->addAttributeToFilter($field, $value);
2810+ }
2811+ }
2812+
2813+ foreach ($collection as $order) {
2814+ $result[] = $order['increment_id'];
2815+ }
2816+
2817+ return $result;
2818+ }else{
2819+ $this->_fault('data_invalid', "Error, the attribut 'imported' need to be specified");
2820+ }
2821+ }
2822+
2823+
2824+ /**
2825+ *
2826+ * Retrieve orders data based on the value of the flag 'imported'
2827+ * @param array
2828+ * @return array
2829+ */
2830+ public function retrieveOrders($data) {
2831+
2832+ $result = array();
2833+ if(isset($data['imported'])) {
2834+
2835+ $collection = Mage::getModel("sales/order")->getCollection()
2836+ ->addAttributeToSelect('*')
2837+ ->addAttributeToFilter('imported', array('eq' => $data['imported']));
2838+
2839+ /* addAddressFields() is called only if version >= 1400 */
2840+ if(str_replace('.','',Mage::getVersion()) >= 1400) {
2841+ $collection->addAddressFields();
2842+ }
2843+
2844+ if(isset($data['limit'])) {
2845+ $collection->setPageSize($data['limit']);
2846+ $collection->setOrder('entity_id', 'ASC');
2847+ }
2848+
2849+ if(isset($data['filters']) && is_array($data['filters'])) {
2850+ $filters = $data['filters'];
2851+ foreach($filters as $field => $value) {
2852+ $collection->addAttributeToFilter($field, $value);
2853+ }
2854+ }
2855+
2856+ foreach ($collection as $order) {
2857+ $tmp = $this->_getAttributes($order, 'order');
2858+
2859+ /* if version < 1400, billing and shipping information are added manually to order data */
2860+ if(str_replace('.','',Mage::getVersion()) < 1400) {
2861+ $address_data = $this->_getAttributes($order->getShippingAddress(), 'order_address');
2862+ if(!empty($address_data)) {
2863+ $tmp['shipping_firstname'] = $address_data['firstname'];
2864+ $tmp['shipping_lastname'] = $address_data['lastname'];
2865+ }
2866+
2867+ $address_data = $this->_getAttributes($order->getBillingAddress(), 'order_address');
2868+ if(!empty($address_data)) {
2869+ $tmp['billing_firstname'] = $address_data['firstname'];
2870+ $tmp['billing_lastname'] = $address_data['lastname'];
2871+ }
2872+ }
2873+
2874+ $result[] = $tmp;
2875+ }
2876+ return $result;
2877+ }else{
2878+ $this->_fault('data_invalid', "Error, the attribut 'imported' need to be specified");
2879+ }
2880+ }
2881+
2882+ public function setFlagForOrder($incrementId) {
2883+ $_order = $this->_initOrder($incrementId);
2884+ $_order->setImported(1);
2885+ try {
2886+ $_order->save();
2887+ return true;
2888+ } catch (Mage_Core_Exception $e) {
2889+ $this->_fault('data_invalid', $e->getMessage());
2890+ }
2891+ }
2892+
2893+ /* Retrieve increment_id of the child order */
2894+ public function getOrderChild($incrementId) {
2895+
2896+ $order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
2897+ /**
2898+ * Check order existing
2899+ */
2900+ if (!$order->getId()) {
2901+ $this->_fault('order_not_exists');
2902+ }
2903+
2904+ if($order->getRelationChildId()) {
2905+ return $order->getRelationChildRealId();
2906+ }else{
2907+ return false;
2908+ }
2909+ }
2910+
2911+ /* Retrieve increment_id of the parent order */
2912+ public function getOrderParent($incrementId) {
2913+
2914+ $order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
2915+ /**
2916+ * Check order existing
2917+ */
2918+ if (!$order->getId()) {
2919+ $this->_fault('order_not_exists');
2920+ }
2921+
2922+ if($order->getRelationParentId()) {
2923+ return $order->getRelationParentRealId();
2924+ }else{
2925+ return false;
2926+ }
2927+ }
2928+
2929+ /* Retrieve invoices increment ids of the order */
2930+ public function getInvoiceIds($incrementId) {
2931+ $order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
2932+ /**
2933+ * Check order existing
2934+ */
2935+ if (!$order->getId()) {
2936+ $this->_fault('order_not_exists');
2937+ }
2938+ $res = array();
2939+ foreach($order->getInvoiceCollection() as $invoice){
2940+ array_push($res, $invoice->getIncrementId());
2941+ };
2942+ return $res;
2943+ }
2944+
2945+ /* Retrieve shipment increment ids of the order */
2946+ public function getShipmentIds($incrementId) {
2947+ $order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
2948+ /**
2949+ * Check order existing
2950+ */
2951+ if (!$order->getId()) {
2952+ $this->_fault('order_not_exists');
2953+ }
2954+ $res = array();
2955+ foreach($order->getShipmentsCollection() as $shipping){
2956+ array_push($res, $shipping->getIncrementId());
2957+ };
2958+ return $res;
2959+ }
2960+
2961+}
2962
2963=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/controllers'
2964=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/controllers/Adminhtml'
2965=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/controllers/Adminhtml/InitController.php'
2966--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/controllers/Adminhtml/InitController.php 1970-01-01 00:00:00 +0000
2967+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/controllers/Adminhtml/InitController.php 2013-07-31 04:42:30 +0000
2968@@ -0,0 +1,61 @@
2969+<?php
2970+
2971+/**
2972+ *
2973+ * @author Mohammed NAHHAS
2974+ * @package Openlabs_OpenERPConnector
2975+ *
2976+ */
2977+
2978+class Openlabs_OpenERPConnector_Adminhtml_InitController extends Mage_Adminhtml_Controller_Action
2979+{
2980+ protected $_imported = 'imported';
2981+
2982+ /* Initialize the Attribute 'Imported' for orders placed before installing Openlabs_OpenERPConnector Extension */
2983+ public function ordersAction() {
2984+ /* 'imported' value will be initialized if magento version is < 1.4.0.0 */
2985+ if(str_replace('.','',Mage::getVersion()) < 1400) {
2986+ $orders = array();
2987+
2988+ /* 'imported' attribute values are stored in sales_order_int */
2989+ $imported_attribute_table_name = 'sales_order_int';
2990+
2991+ /* retrieve entity_type_id for order */
2992+ $entity_type = Mage::getModel('eav/entity_type')->loadByCode('order');
2993+
2994+ /* Load 'imported' attribute to get its attribute_id */
2995+ $attributeInfo = Mage::getResourceModel('eav/entity_attribute_collection')
2996+ ->setCodeFilter($this->_imported)
2997+ ->setEntityTypeFilter($entity_type->getEntityTypeId())
2998+ ->getFirstItem();
2999+
3000+ /* load order collection */
3001+ $collection = Mage::getResourceModel('sales/order_collection')
3002+ ->addAttributeToSelect($this->_imported);
3003+
3004+ if(count($collection->getItems()) > 0) {
3005+ foreach($collection as $order) {
3006+ try{
3007+ $test = $order->getResource()->getAttribute($this->_imported);
3008+ $orders[] = $order->getIncrementId();
3009+ $order->setImported(0)->save();
3010+ $request = "INSERT IGNORE INTO ".$imported_attribute_table_name." (entity_type_id, attribute_id, entity_id, value) VALUES (".$entity_type->getEntityTypeId().", ".$attributeInfo->getAttributeId().", ".$order->getEntityId().", 0)";
3011+ $write = Mage::getSingleton('core/resource')->getConnection('core_write');
3012+ $query = $write->query($request);
3013+ }catch (Exception $e) {
3014+ echo 'Error : '.$e->getMessage();
3015+ }
3016+ }
3017+
3018+ echo 'Number of Orders Initialized : '.count($collection->getItems()) .'<br />';
3019+ echo 'Orders List : '.'<br />';
3020+ echo '<pre>';
3021+ print_r($orders);
3022+ echo '</pre>';
3023+ }
3024+ }else{
3025+ echo 'Magento Version : '.Mage::getVersion().'<br />';
3026+ echo 'There is no need to initialize orders';
3027+ }
3028+ }
3029+}
3030\ No newline at end of file
3031
3032=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/controllers/OpenerpconnectorController.php'
3033--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/controllers/OpenerpconnectorController.php 1970-01-01 00:00:00 +0000
3034+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/controllers/OpenerpconnectorController.php 2013-07-31 04:42:30 +0000
3035@@ -0,0 +1,5 @@
3036+<?php
3037+class Openlabs_OpenERPConnector_OpenerpconnectorController extends Mage_Core_Controller_Front_Action
3038+{
3039+
3040+}
3041
3042=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/etc'
3043=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/etc/api.xml'
3044--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/etc/api.xml 1970-01-01 00:00:00 +0000
3045+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/etc/api.xml 2013-07-31 04:42:30 +0000
3046@@ -0,0 +1,630 @@
3047+
3048+<config>
3049+ <api>
3050+ <resources>
3051+ <ol_websites translate="title" module="core">
3052+ <title>Website Management</title>
3053+ <model>openerpconnector/olcore_website</model>
3054+ <acl>core/store</acl>
3055+ <methods>
3056+ <search translate="title" module="core">
3057+ <title>Return the list of website ids that match with the filter</title>
3058+ <method>search</method>
3059+ </search>
3060+ <list translate="title" module="core">
3061+ <title>Enumerate websites</title>
3062+ <method>items</method>
3063+ </list>
3064+ <create translate="title" module="core">
3065+ <title>Create Websites</title>
3066+ <!--Parameters are code,name,is_default,sort_order,default_group_id,group_ids-->
3067+ <method>create</method>
3068+ </create>
3069+ <info translate="title" module="core">
3070+ <title>Fetch detail of websites</title>
3071+ <method>info</method>
3072+ </info>
3073+ <update translate="title" module="core">
3074+ <title>Update websites info</title>
3075+ <method>update</method>
3076+ </update>
3077+ <delete translate="title" module="core">
3078+ <title>Delete websites</title>
3079+ <method>delete</method>
3080+ </delete>
3081+ </methods>
3082+ <faults module="core">
3083+ <website_not_exists>
3084+ <code>101</code>
3085+ <message>Requested website not found.</message>
3086+ </website_not_exists>
3087+ <data_invalid>
3088+ <code>102</code>
3089+ <message>Website creation failed due to invalid data.</message>
3090+ </data_invalid>
3091+ </faults>
3092+ </ol_websites>
3093+ <ol_groups translate="title" module="core">
3094+ <title>Groups Management</title>
3095+ <model>openerpconnector/olcore_groups</model>
3096+ <acl>core/store</acl>
3097+ <methods>
3098+ <search translate="title" module="core">
3099+ <title>Return the list of groups ids that match with the filter</title>
3100+ <method>search</method>
3101+ </search>
3102+ <list translate="title" module="core">
3103+ <title>Enumerate groups</title>
3104+ <method>items</method>
3105+ </list>
3106+ <create translate="title" module="core">
3107+ <title>Create groups</title>
3108+ <!--Parameters are code,name,is_default,sort_order,default_group_id,group_ids-->
3109+ <method>create</method>
3110+ </create>
3111+ <info translate="title" module="core">
3112+ <title>Fetch detail of groups</title>
3113+ <method>info</method>
3114+ </info>
3115+ <update translate="title" module="core">
3116+ <title>Update groups info</title>
3117+ <method>update</method>
3118+ </update>
3119+ <delete translate="title" module="core">
3120+ <title>Delete groups</title>
3121+ <method>delete</method>
3122+ </delete>
3123+ </methods>
3124+ <faults module="core">
3125+ <group_not_exists>
3126+ <code>101</code>
3127+ <message>Requested group not found.</message>
3128+ </group_not_exists>
3129+ <data_invalid>
3130+ <code>102</code>
3131+ <message>group creation failed due to invalid data.</message>
3132+ </data_invalid>
3133+ <filters_invalid>
3134+ <code>103</code>
3135+ <message>Invalid data fetch filter.</message>
3136+ </filters_invalid>
3137+ </faults>
3138+ </ol_groups>
3139+ <ol_storeviews translate="title" module="core">
3140+ <title>Stores Management</title>
3141+ <model>openerpconnector/olcore_storeviews</model>
3142+ <acl>core/store</acl>
3143+ <methods>
3144+ <search translate="title" module="core">
3145+ <title>Return the list of storeviews ids that match with the filter</title>
3146+ <method>search</method>
3147+ </search>
3148+ <list translate="title" module="core">
3149+ <title>Enumerate stores</title>
3150+ <method>items</method>
3151+ </list>
3152+ <create translate="title" module="core">
3153+ <title>Create stores</title>
3154+ <!--Parameters are code,name,is_default,sort_order,default_group_id,group_ids-->
3155+ <method>create</method>
3156+ </create>
3157+ <info translate="title" module="core">
3158+ <title>Fetch detail of stores</title>
3159+ <method>info</method>
3160+ </info>
3161+ <update translate="title" module="core">
3162+ <title>Update stores info</title>
3163+ <method>update</method>
3164+ </update>
3165+ <delete translate="title" module="core">
3166+ <title>Delete stores</title>
3167+ <method>delete</method>
3168+ </delete>
3169+ </methods>
3170+ <faults module="core">
3171+ <store_not_exists>
3172+ <code>101</code>
3173+ <message>Requested store not found.</message>
3174+ </store_not_exists>
3175+ <data_invalid>
3176+ <code>102</code>
3177+ <message>Store creation failed due to invalid data.</message>
3178+ </data_invalid>
3179+ <filters_invalid>
3180+ <code>103</code>
3181+ <message>Invalid data fetch filter.</message>
3182+ </filters_invalid>
3183+ </faults>
3184+ </ol_storeviews>
3185+ <ol_catalog_category_media translate="title" module="catalog">
3186+ <title>Product Images API</title>
3187+ <model>openerpconnector/olcatalog_categories</model>
3188+ <acl>catalog/category</acl>
3189+ <methods>
3190+ <list translate="title" module="catalog">
3191+ <title>Retrieve product image list</title>
3192+ <method>items</method>
3193+ </list>
3194+ <info translate="title" module="catalog">
3195+ <title>Retrieve product category image</title>
3196+ </info>
3197+ <types translate="title" module="catalog">
3198+ <title>Retrieve product category image types</title>
3199+ </types>
3200+ <create translate="title" module="catalog">
3201+ <title>Upload new product category image </title>
3202+ <acl>catalog/product/media/create</acl>
3203+ </create>
3204+ <update translate="title" module="catalog">
3205+ <title>Update product category image</title>
3206+ <acl>catalog/product/media/update</acl>
3207+ </update>
3208+ <remove translate="title" module="catalog">
3209+ <title>Remove product category image</title>
3210+ <acl>catalog/product/media/remove</acl>
3211+ </remove>
3212+ </methods>
3213+ <faults module="catalog">
3214+ <create_failure>
3215+ <code>100</code>
3216+ <message>Could not create file, check permissions.</message>
3217+ </create_failure>
3218+ <category_not_exists>
3219+ <code>101</code>
3220+ <message>Product not exists.</message>
3221+ </category_not_exists>
3222+ <data_invalid>
3223+ <code>102</code>
3224+ <message>Invalid data given. Details in error message.</message>
3225+ </data_invalid>
3226+ <not_exists>
3227+ <code>103</code>
3228+ <message>Requested image not exists in product images' gallery.</message>
3229+ </not_exists>
3230+ <not_created>
3231+ <code>104</code>
3232+ <message>Image creation failed. Details in error message.</message>
3233+ </not_created>
3234+ <not_updated>
3235+ <code>105</code>
3236+ <message>Image not updated. Details in error message.</message>
3237+ </not_updated>
3238+ <not_removed>
3239+ <code>106</code>
3240+ <message>Image not removed. Details in error message.</message>
3241+ </not_removed>
3242+ <not_media>
3243+ <code>107</code>
3244+ <message>Error in opening image file</message>
3245+ </not_media>
3246+ <filters_invalid>
3247+ <code>108</code>
3248+ <message>Invalid data fetch filter.</message>
3249+ </filters_invalid>
3250+ </faults>
3251+ </ol_catalog_category_media>
3252+ <ol_catalog_product_attribute translate="title" module="catalog">
3253+ <title>Product Images API</title>
3254+ <model>openerpconnector/olcatalog_product_attribute</model>
3255+ <acl>catalog/category</acl>
3256+ <methods>
3257+ <list translate="title" module="catalog">
3258+ <title>Retrieve attribute list</title>
3259+ <method>items</method>
3260+ </list>
3261+ <relations translate="title" module="catalog">
3262+ <title>Retrieve attribute sets attribute ids</title>
3263+ <method>relations</method>
3264+ </relations>
3265+ <info translate="title" module="catalog">
3266+ <title>Retrieve full attribute details</title>
3267+ <method>info</method>
3268+ </info>
3269+ <options translate="title" module="catalog">
3270+ <title>Retrieve options of attributes</title>
3271+ <method>options</method>
3272+ </options>
3273+ </methods>
3274+ <faults>
3275+ </faults>
3276+ </ol_catalog_product_attribute>
3277+ <ol_catalog_product_attribute_group translate="title" module="catalog">
3278+ <title>Product Images API</title>
3279+ <model>openerpconnector/olcatalog_product_attributegroup</model>
3280+ <acl>catalog/category</acl>
3281+ <methods>
3282+ <list translate="title" module="catalog">
3283+ <title>Retrieve attribute group list</title>
3284+ <method>items</method>
3285+ </list>
3286+ <info translate="title" module="catalog">
3287+ <title>Retrieve full attribute details</title>
3288+ <method>info</method>
3289+ </info>
3290+ </methods>
3291+ <faults>
3292+ </faults>
3293+ </ol_catalog_product_attribute_group>
3294+ <ol_customer_groups translate="title" module="core">
3295+ <title>Groups Management</title>
3296+ <model>openerpconnector/olcustomer_group</model>
3297+ <acl>customer/group</acl>
3298+ <methods>
3299+ <list translate="title" module="core">
3300+ <title>Enumerate groups</title>
3301+ <method>items</method>
3302+ </list>
3303+ <create translate="title" module="core">
3304+ <title>Create groups</title>
3305+ <method>create</method>
3306+ </create>
3307+ <info translate="title" module="core">
3308+ <title>Fetch detail of groups</title>
3309+ <method>info</method>
3310+ </info>
3311+ <update translate="title" module="core">
3312+ <title>Update groups info</title>
3313+ <method>update</method>
3314+ </update>
3315+ <delete translate="title" module="core">
3316+ <title>Delete groups</title>
3317+ <method>delete</method>
3318+ </delete>
3319+ </methods>
3320+ <faults module="core">
3321+ <group_not_exists>
3322+ <code>101</code>
3323+ <message>Requested group not found.</message>
3324+ </group_not_exists>
3325+ <data_invalid>
3326+ <code>102</code>
3327+ <message>group creation failed due to invalid data.</message>
3328+ </data_invalid>
3329+ <filters_invalid>
3330+ <code>103</code>
3331+ <message>Invalid data fetch filter.</message>
3332+ </filters_invalid>
3333+ </faults>
3334+ </ol_customer_groups>
3335+ <ol_customer_address translate="title" module="core">
3336+ <title>Address Management</title>
3337+ <model>openerpconnector/olcustomer_address</model>
3338+ <acl>customer/group</acl>
3339+ <methods>
3340+ <list translate="title" module="core">
3341+ <title>Enumerate groups</title>
3342+ <method>items</method>
3343+ </list>
3344+ <create translate="title" module="core">
3345+ <title>Create groups</title>
3346+ <method>create</method>
3347+ </create>
3348+ <info translate="title" module="core">
3349+ <title>Fetch detail of groups</title>
3350+ <method>info</method>
3351+ </info>
3352+ <update translate="title" module="core">
3353+ <title>Update groups info</title>
3354+ <method>update</method>
3355+ </update>
3356+ <delete translate="title" module="core">
3357+ <title>Delete groups</title>
3358+ <method>delete</method>
3359+ </delete>
3360+ </methods>
3361+ <faults module="core">
3362+ <customer_not_exists>
3363+ <code>101</code>
3364+ <message>Requested Customer not found.</message>
3365+ </customer_not_exists>
3366+ <data_invalid>
3367+ <code>102</code>
3368+ <message>group creation failed due to invalid data.</message>
3369+ </data_invalid>
3370+ <filters_invalid>
3371+ <code>103</code>
3372+ <message>Invalid data fetch filter.</message>
3373+ </filters_invalid>
3374+ </faults>
3375+ </ol_customer_address>
3376+ <ol_customer_subscriber translate="title" module="core">
3377+ <title>Subscriber Management</title>
3378+ <model>openerpconnector/olcustomer_subscriber</model>
3379+ <acl>customer/group</acl>
3380+ <methods>
3381+ <list translate="title" module="core">
3382+ <title>Enumerate subscriber</title>
3383+ <method>items</method>
3384+ </list>
3385+ <create translate="title" module="core">
3386+ <title>Create subscriber</title>
3387+ <method>create</method>
3388+ </create>
3389+ <info translate="title" module="core">
3390+ <title>Fetch detail of subscriber</title>
3391+ <method>info</method>
3392+ </info>
3393+ <update translate="title" module="core">
3394+ <title>Update subscriber info</title>
3395+ <method>update</method>
3396+ </update>
3397+ <delete translate="title" module="core">
3398+ <title>Delete subscriber</title>
3399+ <method>delete</method>
3400+ </delete>
3401+ </methods>
3402+ <faults module="core">
3403+ <customer_not_exists>
3404+ <code>101</code>
3405+ <message>Requested Customer not found.</message>
3406+ </customer_not_exists>
3407+ <data_invalid>
3408+ <code>102</code>
3409+ <message>group creation failed due to invalid data.</message>
3410+ </data_invalid>
3411+ <filters_invalid>
3412+ <code>103</code>
3413+ <message>Invalid data fetch filter.</message>
3414+ </filters_invalid>
3415+ </faults>
3416+ </ol_customer_subscriber>
3417+ <ol_customer translate="title" module="core">
3418+ <title>Customers Management</title>
3419+ <model>openerpconnector/olcustomer_customer</model>
3420+ <acl>customer/group</acl>
3421+ <methods>
3422+ <search translate="title" module="core">
3423+ <title>Return the list of customer ids that match with the filter</title>
3424+ <method>search</method>
3425+ </search>
3426+ <list translate="title" module="core">
3427+ <title>Enumerate Customers</title>
3428+ <method>items</method>
3429+ </list>
3430+ <create translate="title" module="core">
3431+ <title>Create Customers</title>
3432+ <method>create</method>
3433+ </create>
3434+ <info translate="title" module="core">
3435+ <title>Fetch detail of customers</title>
3436+ <method>info</method>
3437+ </info>
3438+ <update translate="title" module="core">
3439+ <title>Update customers info</title>
3440+ <method>update</method>
3441+ </update>
3442+ <delete translate="title" module="core">
3443+ <title>Delete customers</title>
3444+ <method>delete</method>
3445+ </delete>
3446+ </methods>
3447+ <faults module="core">
3448+ <customer_not_exists>
3449+ <code>101</code>
3450+ <message>Requested customer not found.</message>
3451+ </customer_not_exists>
3452+ <data_invalid>
3453+ <code>102</code>
3454+ <message>Customer creation failed due to invalid data.</message>
3455+ </data_invalid>
3456+ <filters_invalid>
3457+ <code>103</code>
3458+ <message>Invalid data fetch filter.</message>
3459+ </filters_invalid>
3460+ </faults>
3461+ </ol_customer>
3462+ <ol_catalog_product_tierprice translate="title" module="catalog">
3463+ <title>Product Tier Price API</title>
3464+ <model>openerpconnector/olcatalog_product_tierprice</model>
3465+ <acl>catalog/category</acl>
3466+ <methods>
3467+ <list translate="title" module="catalog">
3468+ <title>Retrieve attribute list</title>
3469+ <method>items</method>
3470+ </list>
3471+ <items2 translate="title" module="catalog">
3472+ <title>Retrieve attribute list</title>
3473+ <method>items2</method>
3474+ </items2>
3475+ </methods>
3476+ <faults>
3477+ <product_not_exists>
3478+ <code>101</code>
3479+ <message>Requested product not found.</message>
3480+ </product_not_exists>
3481+ <filters_invalid>
3482+ <code>103</code>
3483+ <message>Invalid data fetch filter.</message>
3484+ </filters_invalid>
3485+ </faults>
3486+ </ol_catalog_product_tierprice>
3487+ <ol_catalog_product translate="title" module="core">
3488+ <title>Address Management</title>
3489+ <model>openerpconnector/olcatalog_products</model>
3490+ <acl>catalog/product</acl>
3491+ <methods>
3492+ <search translate="title" module="core">
3493+ <title>Return the list of products ids that match with the filter</title>
3494+ <method>search</method>
3495+ </search>
3496+ <list translate="title" module="core">
3497+ <title>Enumerate Products</title>
3498+ <method>items</method>
3499+ </list>
3500+ <create translate="title" module="core">
3501+ <title>Create Products</title>
3502+ <method>create</method>
3503+ </create>
3504+ <biglist translate="title" module="core">
3505+ <title>Fetch detail of products</title>
3506+ <method>biglist</method>
3507+ </biglist>
3508+ <update translate="title" module="core">
3509+ <title>Update groups info</title>
3510+ <method>update</method>
3511+ </update>
3512+ <delete translate="title" module="core">
3513+ <title>Delete groups</title>
3514+ <method>delete</method>
3515+ </delete>
3516+ </methods>
3517+ <faults module="core">
3518+ <customer_not_exists>
3519+ <code>101</code>
3520+ <message>Requested Customer not found.</message>
3521+ </customer_not_exists>
3522+ <data_invalid>
3523+ <code>102</code>
3524+ <message>group creation failed due to invalid data.</message>
3525+ </data_invalid>
3526+ <filters_invalid>
3527+ <code>103</code>
3528+ <message>Invalid data fetch filter.</message>
3529+ </filters_invalid>
3530+ </faults>
3531+ </ol_catalog_product>
3532+ <ol_catalog_product_attributeset translate="title" module="core">
3533+ <title>Attribute Set Management</title>
3534+ <model>openerpconnector/olcatalog_product_attributeset</model>
3535+ <acl>catalog/product</acl>
3536+ <methods>
3537+ <list translate="title" module="core">
3538+ <title>Enumerate Attribute sets</title>
3539+ <method>items</method>
3540+ </list>
3541+ </methods>
3542+ <faults module="core">
3543+ <customer_not_exists>
3544+ <code>101</code>
3545+ <message>Requested Customer not found.</message>
3546+ </customer_not_exists>
3547+ <data_invalid>
3548+ <code>102</code>
3549+ <message>group creation failed due to invalid data.</message>
3550+ </data_invalid>
3551+ <filters_invalid>
3552+ <code>103</code>
3553+ <message>Invalid data fetch filter.</message>
3554+ </filters_invalid>
3555+ </faults>
3556+ </ol_catalog_product_attributeset>
3557+ <ol_catalog_product_link>
3558+ <title>Product Link</title>
3559+ <model>openerpconnector/olcatalog_product_link</model>
3560+ <acl>catalog/product</acl>
3561+ <methods>
3562+ <list translate="title" module="core">
3563+ <title>Enumerate configurable Products</title>
3564+ <method>items</method>
3565+ </list>
3566+ <assign translate="title" module="catalog">
3567+ <title>Assign simple product in configurable product</title>
3568+ </assign>
3569+ <remove translate="title" module="catalog">
3570+ <title>Remove simple products in configurable product</title>
3571+ </remove>
3572+ <listSuperAttributes translate="title" module="catalog">
3573+ <title>Get configurable attribute values for a configurable product</title>
3574+ </listSuperAttributes>
3575+ <createSuperAttribute translate="title" module="catalog">
3576+ <title>Create configurable attribute for a configurable product</title>
3577+ </createSuperAttribute>
3578+ <removeSuperAttribute translate="title" module="catalog">
3579+ <title>Remove super attribute</title>
3580+ </removeSuperAttribute>
3581+ <setSuperAttributeValues translate="title" module="catalog">
3582+ <title>Set configurable attribute values for super attribute</title>
3583+ </setSuperAttributeValues>
3584+ </methods>
3585+ </ol_catalog_product_link>
3586+ <sales_order translate="title" module="Openlabs_OpenERPConnector">
3587+ <model>sales/order_api</model>
3588+ <title>Custom Sales Orders API</title>
3589+ <methods>
3590+ <search translate="title" module="Openlabs_OpenERPConnector">
3591+ <title>Return the list of products ids that match with the filter</title>
3592+ <method>search</method>
3593+ </search>
3594+ <retrieve translate="title" module="Openlabs_OpenERPConnector">
3595+ <title>Retrieve list of orders by filters, nb max, etc...</title>
3596+ <method>retrieveOrders</method>
3597+ </retrieve>
3598+ <done translate="title" module="Openlabs_OpenERPConnector">
3599+ <title>Set Flag to TRUE for imported orders</title>
3600+ <method>setFlagForOrder</method>
3601+ </done>
3602+ <get_child translate="title" module="Openlabs_OpenERPConnector">
3603+ <title>get The Child of The Order Edited</title>
3604+ <method>getOrderChild</method>
3605+ </get_child>
3606+ <get_parent translate="title" module="Openlabs_OpenERPConnector">
3607+ <title>get The Parent of the order annulated</title>
3608+ <method>getOrderParent</method>
3609+ </get_parent>
3610+ <get_invoice_ids translate="title" module="Openlabs_OpenERPConnector">
3611+ <title>get The Invoices Increment ids of the order</title>
3612+ <method>getInvoiceIds</method>
3613+ </get_invoice_ids>
3614+ <get_shipment_ids translate="title" module="Openlabs_OpenERPConnector">
3615+ <title>get The Shipment Increment ids of the order</title>
3616+ <method>getShipmentIds</method>
3617+ </get_shipment_ids>
3618+ </methods>
3619+ </sales_order>
3620+ <catalog_product translate="title" module="catalog">
3621+ <title>Product API</title>
3622+ <model>catalog/product_api</model>
3623+ <acl>catalog/product</acl>
3624+ <methods>
3625+ <create_bundle translate="title" module="Openlabs_OpenERPConnector">
3626+ <title>Create Bundle Products with Custom Options and Bundle Items</title>
3627+ <method>createBundleProducts</method>
3628+ </create_bundle>
3629+ </methods>
3630+ </catalog_product>
3631+ <oerp_catalog_category translate="title" module="Openlabs_OpenERPConnector">
3632+ <title>Product Category API</title>
3633+ <model>openerpconnector/oerpcatalog_category_api</model>
3634+ <acl>catalog/category/move</acl>
3635+ <methods>
3636+ <search translate="title" module="core">
3637+ <title>Return the list of product category ids that match with the filter</title>
3638+ <method>search</method>
3639+ </search>
3640+ <move translate="title" module="Openlabs_OpenERPConnector">
3641+ <title>Move category in tree</title>
3642+ <method>move</method>
3643+ </move>
3644+ </methods>
3645+ </oerp_catalog_category>
3646+
3647+ <oerp_cataloginventory_stock_item translate="title" module="Openlabs_OpenERPConnector">
3648+ <model>openerpconnector/oerpstock_item_api</model>
3649+ <title>Inventory API</title>
3650+ <acl>cataloginventory</acl>
3651+ <methods>
3652+ <update translate="title" module="Openlabs_OpenERPConnector">
3653+ <title>Update product stock data</title>
3654+ <acl>cataloginventory/update</acl>
3655+ <method>update</method>
3656+ </update>
3657+ <massive_update translate="title" module="Openlabs_OpenERPConnector">
3658+ <title>Massive Update product stock data</title>
3659+ <acl>cataloginventory/update</acl>
3660+ <method>massive_update</method>
3661+ </massive_update>
3662+ </methods>
3663+ <faults module="cataloginventory">
3664+ <product_not_exists>
3665+ <code>101</code>
3666+ <message>Product not exists.</message>
3667+ </product_not_exists>
3668+ <not_updated>
3669+ <code>102</code>
3670+ <message>Product inventory not updated. Details in error message.</message>
3671+ </not_updated>
3672+ </faults>
3673+ </oerp_cataloginventory_stock_item>
3674+ </resources>
3675+ </api>
3676+</config>
3677
3678=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/etc/config.xml'
3679--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/etc/config.xml 1970-01-01 00:00:00 +0000
3680+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/etc/config.xml 2013-07-31 04:42:30 +0000
3681@@ -0,0 +1,88 @@
3682+<?xml version="1.0"?>
3683+<config>
3684+ <modules>
3685+ <Openlabs_OpenERPConnector>
3686+ <version>0.0.1</version>
3687+ </Openlabs_OpenERPConnector>
3688+ </modules>
3689+ <frontend>
3690+ <routers>
3691+ <openerpconnector>
3692+ <use>standard</use>
3693+ <args>
3694+ <module>Openlabs_OpenERPConnector</module>
3695+ <frontName>openerpconnector</frontName>
3696+ </args>
3697+ </openerpconnector>
3698+ </routers>
3699+ </frontend>
3700+ <global>
3701+ <models>
3702+ <openerpconnector>
3703+ <class>Openlabs_OpenERPConnector_Model</class>
3704+ </openerpconnector>
3705+ <sales>
3706+ <rewrite>
3707+ <order_api>Openlabs_OpenERPConnector_Model_Sales_Order_Api</order_api>
3708+ </rewrite>
3709+ </sales>
3710+ <catalog>
3711+ <rewrite>
3712+ <product_api>Openlabs_OpenERPConnector_Model_Catalog_Product_Api</product_api>
3713+ </rewrite>
3714+ </catalog>
3715+ </models>
3716+ <resources>
3717+ <openerpconnector_setup>
3718+ <setup>
3719+ <module>Openlabs_OpenERPConnector</module>
3720+ </setup>
3721+ <connection>
3722+ <use>core_setup</use>
3723+ </connection>
3724+ </openerpconnector_setup>
3725+ <openerpconnector_write>
3726+ <connection>
3727+ <use>core_write</use>
3728+ </connection>
3729+ </openerpconnector_write>
3730+ <openerpconnector_read>
3731+ <connection>
3732+ <use>core_read</use>
3733+ </connection>
3734+ </openerpconnector_read>
3735+ </resources>
3736+ <blocks>
3737+ <openerpconnector>
3738+ <class>Openlabs_OpenERPConnector_Block</class>
3739+ </openerpconnector>
3740+ </blocks>
3741+ <helpers>
3742+ <openerpconnector>
3743+ <class>Openlabs_OpenERPConnector_Helper</class>
3744+ </openerpconnector>
3745+ </helpers>
3746+ <events>
3747+ <sales_order_place_after>
3748+ <observers>
3749+ <init_imported_after_place_order>
3750+ <type>singleton</type>
3751+ <class>openerpconnector/observer</class>
3752+ <method>initImported</method>
3753+ </init_imported_after_place_order>
3754+ </observers>
3755+ </sales_order_place_after>
3756+ </events>
3757+ </global>
3758+ <admin>
3759+ <routers>
3760+ <openerpconnector>
3761+ <use>admin</use>
3762+ <args>
3763+ <module>Openlabs_OpenERPConnector</module>
3764+ <frontName>connector</frontName>
3765+ </args>
3766+ </openerpconnector>
3767+ </routers>
3768+ </admin>
3769+</config>
3770\ No newline at end of file
3771
3772=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/sql'
3773=== added directory 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/sql/openerpconnector_setup'
3774=== added file 'Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/sql/openerpconnector_setup/mysql4-install-0.0.1.php'
3775--- Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/sql/openerpconnector_setup/mysql4-install-0.0.1.php 1970-01-01 00:00:00 +0000
3776+++ Openlabs_OpenERPConnector-1.1.0/Openlabs/OpenERPConnector/sql/openerpconnector_setup/mysql4-install-0.0.1.php 2013-07-31 04:42:30 +0000
3777@@ -0,0 +1,54 @@
3778+<?php
3779+/**
3780+ *
3781+ * @author Mohammed NAHHAS
3782+ * @package Openlabs_OpenERPConnector
3783+ *
3784+ */
3785+
3786+/* Retrieve the version of Magento */
3787+$version = Mage::getVersion();
3788+
3789+/* Need to add a sales_order attribute if the version < 1.4.x.x - sales_order is an EAV Model */
3790+/* Else add a simple column to sales_flat_order Table */
3791+$version = str_replace('.','',$version);
3792+if($version >= 1400) {
3793+ $installer = $this;
3794+ $installer->startSetup();
3795+ $tableName='sales_flat_order';
3796+ $db = $installer->getConnection();
3797+
3798+ /* Delete the column if it exists before re-create it */
3799+ if($db->tableColumnExists($this->getTable($tableName), 'imported')) {
3800+ $installer->run("ALTER TABLE {$this->getTable($tableName)} drop column imported");
3801+ }
3802+
3803+ /* re-create 'imported' column */
3804+ if(!$db->tableColumnExists($this->getTable($tableName), 'imported')) {
3805+ $installer->run("
3806+ ALTER TABLE {$this->getTable($tableName)} ADD imported tinyint(1) unsigned NOT NULL default '0';
3807+ ");
3808+ }
3809+}else{
3810+ $installer = new Mage_Eav_Model_Entity_Setup('core_setup');
3811+ $installer->startSetup();
3812+
3813+ /* Attribute Data */
3814+ $attribute_data = array(
3815+ 'type' => 'int',
3816+ 'default' => 0,
3817+ 'visible' => false,
3818+ 'required' => false,
3819+ 'user_defined' => false,
3820+ 'searchable' => false,
3821+ 'filterable' => false,
3822+ 'comparable' => false
3823+ );
3824+ /* Add a sales_order attribute named 'imported' */
3825+ $installer->addAttribute('order', 'imported', $attribute_data);
3826+
3827+}
3828+
3829+
3830+/* End */
3831+$installer->endSetup();
3832
3833=== added directory 'Openlabs_OpenERPConnector-1.1.0/app'
3834=== added directory 'Openlabs_OpenERPConnector-1.1.0/app/etc'
3835=== added directory 'Openlabs_OpenERPConnector-1.1.0/app/etc/modules'
3836=== added file 'Openlabs_OpenERPConnector-1.1.0/app/etc/modules/Openlabs_OpenERPConnector.xml'
3837--- Openlabs_OpenERPConnector-1.1.0/app/etc/modules/Openlabs_OpenERPConnector.xml 1970-01-01 00:00:00 +0000
3838+++ Openlabs_OpenERPConnector-1.1.0/app/etc/modules/Openlabs_OpenERPConnector.xml 2013-07-31 04:42:30 +0000
3839@@ -0,0 +1,41 @@
3840+<?xml version="1.0"?>
3841+
3842+<!--
3843+##############################################################################
3844+#
3845+# OpenERP, Open Source Management Solution
3846+# Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
3847+# Sharoon Thomas
3848+#
3849+# This program is free software: you can redistribute it and/or modify
3850+# it under the terms of the GNU General Public License as published by
3851+# the Free Software Foundation, either version 3 of the License, or
3852+# (at your option) any later version.
3853+#
3854+# This program is distributed in the hope that it will be useful,
3855+# but WITHOUT ANY WARRANTY; without even the implied warranty of
3856+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3857+# GNU General Public License for more details.
3858+#
3859+# You should have received a copy of the GNU General Public License
3860+# along with this program. If not, see <http://www.gnu.org/licenses/>.
3861+#
3862+##############################################################################
3863+# * @category Community
3864+# * @package
3865+# * @copyright Copyright (c) 2009 Sharoon Thomas, openlabs.co.in
3866+# * @license GPL-3
3867+# */
3868+-->
3869+<config>
3870+ <modules>
3871+ <Openlabs_OpenERPConnector>
3872+ <codePool>community</codePool>
3873+ <active>true</active>
3874+ <depends>
3875+ <Mage_Api />
3876+ <Mage_Catalog />
3877+ </depends>
3878+ </Openlabs_OpenERPConnector>
3879+ </modules>
3880+</config>
3881
3882=== added file 'package.xml'
3883--- package.xml 1970-01-01 00:00:00 +0000
3884+++ package.xml 2013-07-31 04:42:30 +0000
3885@@ -0,0 +1,84 @@
3886+<?xml version="1.0" encoding="UTF-8"?>
3887+<package packagerversion="1.7.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
3888+ http://pear.php.net/dtd/tasks-1.0.xsd
3889+ http://pear.php.net/dtd/package-2.0
3890+ http://pear.php.net/dtd/package-2.0.xsd">
3891+ <name>Openlabs_OpenERPConnector</name>
3892+ <channel>connect.magentocommerce.com/community</channel>
3893+ <summary>Magento extension for multiwebsite Open ERP connector by Open Labs</summary>
3894+ <description>This magento extension provides additional API methods for use by the Multi website, Multi Store, Multi Product category synchronization connector.
3895+
3896+Contents:
3897+
3898+Magento Websites API
3899+Magento Stores(groups) API
3900+Magento Store Views API
3901+Magento Category Images API (Partial : list, info, create)
3902+
3903+Contact sharoon.thomas@openlabs.co.in for further details</description>
3904+ <lead>
3905+ <name>Sharoon Thomas</name>
3906+ <user>sharoonthomas</user>
3907+ <email>sharoonthomas@teagarden.in</email>
3908+ <active>yes</active>
3909+ </lead>
3910+ <date>2009-08-27</date>
3911+ <time>15:23:56</time>
3912+ <version>
3913+ <release>1.1.0</release>
3914+ <api>2.0</api>
3915+ </version>
3916+ <stability>
3917+ <release>beta</release>
3918+ <api>beta</api>
3919+ </stability>
3920+ <license>GPL</license>
3921+ <notes>Magento Websites API
3922+Magento Stores(groups) API
3923+Magento Store Views API
3924+Magento Category Images API</notes>
3925+ <contents>
3926+ <dir name="/">
3927+ <dir name="app">
3928+ <dir name="etc">
3929+ <dir name="modules">
3930+ <file md5sum="fc14d089cce44cc1e2ac08fa6c6c20a6" name="Openlabs_OpenERPConnector.xml" role="mage" />
3931+ </dir> <!-- /app/etc/modules -->
3932+ </dir> <!-- /app/etc -->
3933+ </dir> <!-- /app -->
3934+ <dir name="Openlabs">
3935+ <dir name="OpenERPConnector">
3936+ <dir name="etc">
3937+ <file md5sum="12668c63dc2e626940c5651510acdd95" name="api.xml" role="magecommunity" />
3938+ <file md5sum="c9ab22309066dc8d181061a0f158dc6f" name="config.xml" role="magecommunity" />
3939+ </dir> <!-- /Openlabs/OpenERPConnector/etc -->
3940+ <dir name="Helper">
3941+ <file md5sum="a2ea05cfc56bcd06be442f75844e3fc1" name="Data.php" role="magecommunity" />
3942+ </dir> <!-- /Openlabs/OpenERPConnector/Helper -->
3943+ <dir name="Model">
3944+ <dir name="Olcatalog">
3945+ <file md5sum="43c11c180f0f1ccfc576bb0d8b238015" name="Categories.php" role="magecommunity" />
3946+ </dir> <!-- /Openlabs/OpenERPConnector/Model/Olcatalog -->
3947+ <dir name="Olcore">
3948+ <file md5sum="568a59414cd61bb14dd9899bd3d74edc" name="Groups.php" role="magecommunity" />
3949+ <file md5sum="03e476e465b5794d8deee99fd027d35c" name="Storeviews.php" role="magecommunity" />
3950+ <file md5sum="5abd4c8db3b68b4dfd5bdd7ebbb7ec93" name="Website.php" role="magecommunity" />
3951+ </dir> <!-- /Openlabs/OpenERPConnector/Model/Olcore -->
3952+ </dir> <!-- /Openlabs/OpenERPConnector/Model -->
3953+ </dir> <!-- /Openlabs/OpenERPConnector -->
3954+ </dir> <!-- /Openlabs -->
3955+ </dir> <!-- / -->
3956+ </contents>
3957+ <dependencies>
3958+ <required>
3959+ <php>
3960+ <min>5.2.0</min>
3961+ <max>6.0.0</max>
3962+ </php>
3963+ <pearinstaller>
3964+ <min>1.6.2</min>
3965+ </pearinstaller>
3966+ </required>
3967+ </dependencies>
3968+ <phprelease />
3969+</package>