ice_import - Version 1.6.0

Version Notes

Bugfixes:
- fixed bug with database table prefix
- fixed bug with checking required attributes in default attribute set
Improvements:
- Changed logic of assigning categories, products assigned only to the last category in the tree
- Added ability to save data in dropdown fields as example "Brand", then it's possible to use in layered navigation

Download this release

Release Info

Developer IceShop
Extension ice_import
Version 1.6.0
Comparing to
See all releases


Code changes from version 1.5.0 to 1.6.0

app/code/community/Iceshop/Iceimport/Model/Convert/Adapter/Product.php CHANGED
@@ -106,6 +106,15 @@ class Iceshop_Iceimport_Model_Convert_Adapter_Product extends Mage_Catalog_Model
106
  $message = Mage::helper('catalog')->__('Skip import row, required field "%s" not defined', 'categories');
107
  Mage::throwException($message);
108
  }
 
 
 
 
 
 
 
 
 
109
  $category = $iceimportAttributes['categories'];
110
  if (empty($iceimportAttributes['unspsc'])) {
111
  $message = Mage::helper('catalog')->__('Skip import. Category UNSPSC not defined in store');
@@ -116,8 +125,20 @@ class Iceshop_Iceimport_Model_Convert_Adapter_Product extends Mage_Catalog_Model
116
  $message = Mage::helper('catalog')->__('Skip import. Category UNSPSC path not defined in store');
117
  Mage::throwException($message);
118
  }
 
 
 
 
 
 
 
 
 
119
  $unspscPath = $iceimportAttributes['unspsc_path'];
120
-
 
 
 
121
  // set in / out of stock
122
  $isInStock = 0;
123
  if (!empty($iceimportAttributes['is_in_stock'])) {
@@ -222,14 +243,15 @@ class Iceshop_Iceimport_Model_Convert_Adapter_Product extends Mage_Catalog_Model
222
  // check import type (Import only price & qty or all product info)
223
  $stockConf = (int)Mage::getStoreConfig('importprod_root/importprod/import_stock', $storeId);
224
  $priceConf = (int)Mage::getStoreConfig('importprod_root/importprod/import_prices', $storeId);
 
225
  $productId = $this->_coreSave($productData, $productId, $storeId, $sku, $categoryIds);
226
  $this->_corePriceStock($websiteId, $productId, $price, $qty, $sku, $isInStock, $stockConf, $priceConf);
227
- $this->_connRes->query('INSERT INTO iceshop_iceimport_imported_product_ids (product_id, product_sku) VALUES (:prod_id, :sku) ON DUPLICATE KEY UPDATE product_sku = :sku', array(':prod_id' => $productId, ':sku' => $sku));
228
  } else {
229
  $productId = $this->_coreSave($productData, $productId, $storeId, $sku, $categoryIds);
230
  // add price & stock
231
  $this->_corePriceStock($websiteId, $productId, $price, $qty, $sku, $isInStock);
232
- $this->_connRes->query('INSERT INTO iceshop_iceimport_imported_product_ids (product_id, product_sku) VALUES (:prod_id, :sku) ON DUPLICATE KEY UPDATE product_sku = :sku', array(':prod_id' => $productId, ':sku' => $sku));
233
  }
234
 
235
  // add product image to queue
@@ -282,6 +304,44 @@ class Iceshop_Iceimport_Model_Convert_Adapter_Product extends Mage_Catalog_Model
282
 
283
  return true;
284
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
285
 
286
  protected function _coreSave(array $entityData, $productId = null, $storeId = 0, $sku, $categoryIds)
287
  {
@@ -315,6 +375,7 @@ class Iceshop_Iceimport_Model_Convert_Adapter_Product extends Mage_Catalog_Model
315
  }
316
  }
317
  }
 
318
  $bindArray[':store_id'] = $storeId;
319
 
320
  foreach ($entityData as $type => $typeAttributes) {
@@ -322,12 +383,23 @@ class Iceshop_Iceimport_Model_Convert_Adapter_Product extends Mage_Catalog_Model
322
  if ($type != 'spec') {
323
  $tailCoreSaveSQL = '';
324
  $attributesInit = '';
325
-
 
 
 
 
 
326
  if (!empty($typeAttributes)) {
327
  $tailCoreSaveSQL .= "
328
  INSERT INTO `" . $this->_tablePrefix . "catalog_product_entity_" . $type . "` (`entity_type_id`, `attribute_id`, `store_id`, `entity_id`, `value`) VALUES ";
329
- foreach ($typeAttributes as $attribute => $value) {
330
-
 
 
 
 
 
 
331
  $attributesInit .= "
332
  SELECT @" . $attribute . "_id := `attribute_id` FROM `" . $this->_tablePrefix . "eav_attribute` WHERE
333
  `attribute_code` = '" . $attribute . "' AND entity_type_id = @product_entity_type_id;
@@ -338,7 +410,7 @@ class Iceshop_Iceimport_Model_Convert_Adapter_Product extends Mage_Catalog_Model
338
  (@product_entity_type_id, @" . $attribute . "_id, :store_id, @product_id, :" . $attribute . " ), ";
339
  $bindArray[':' . $attribute] = $value;
340
 
341
- }
342
  $tailCoreSaveSQL = substr($tailCoreSaveSQL, 0, -2);
343
  $tailCoreSaveSQL .= "
344
  ON DUPLICATE KEY UPDATE
@@ -346,13 +418,13 @@ class Iceshop_Iceimport_Model_Convert_Adapter_Product extends Mage_Catalog_Model
346
  ";
347
  }
348
  $coreSaveSQL .= $attributesInit . $tailCoreSaveSQL;
349
- } else {
350
  foreach ($typeAttributes as $attribute => $attributeData) {
351
  $prod_id_field = $attributeData['prod_id_field'];
352
  $table = $attributeData['table'];
353
  $field = $attributeData['field'];
354
  $value = $attributeData['value'];
355
- if (!empty($table) && !empty($field)) {
356
  $coreSaveSQL .= "
357
  UPDATE `" . $this->_tablePrefix . $table . "` SET `" . $field . "` = :" . $attribute . " WHERE `" . $prod_id_field . "` = @product_id;
358
  ";
@@ -364,15 +436,24 @@ class Iceshop_Iceimport_Model_Convert_Adapter_Product extends Mage_Catalog_Model
364
  // categories
365
  $coreSaveSQL .= "INSERT INTO `" . $this->_tablePrefix . "catalog_category_product` (`category_id`, `product_id`, `position`) VALUES ";
366
  $counter = 1;
367
- $categoryIds[] = Mage::app()->getStore(1)->getRootCategoryId();
368
- foreach ($categoryIds as $categoryId) {
369
- if ($counter < count($categoryIds)) {
 
 
 
 
370
  $coreSaveSQL .= " (" . (int)$categoryId . ", @product_id, 1) , ";
371
- } else if ($counter == count($categoryIds)) {
372
- $coreSaveSQL .= " (" . (int)$categoryId . ", @product_id, 1) ON DUPLICATE KEY UPDATE `position` = 1 ";
373
  }
374
  $counter++;
375
  }
 
 
 
 
 
376
  try {
377
  $bindArray[':' . $attribute] = $value;
378
 
@@ -749,12 +830,24 @@ class Iceshop_Iceimport_Model_Convert_Adapter_Product extends Mage_Catalog_Model
749
  }
750
  }
751
 
 
 
 
 
 
 
 
 
 
 
 
 
752
  // map custom attributes
753
  if (!empty($importData)) {
754
  foreach ($importData as $attributeCode => $value) {
755
  $backendTypeFetch = $this->_connRes->fetchRow("SELECT backend_type FROM `" . $this->_tablePrefix . "eav_attribute` WHERE `attribute_code` = :code", array(':code' => $attributeCode));
756
  $backendType = $backendTypeFetch['backend_type'];
757
- if ($backendType != 'static' && !empty($backendType) && $value != '') {
758
  $productData[$backendType][$attributeCode] = $value;
759
  unset($importData[$attributeCode]);
760
  }
@@ -776,6 +869,7 @@ class Iceshop_Iceimport_Model_Convert_Adapter_Product extends Mage_Catalog_Model
776
 
777
  protected function _getDefaultAttributesList()
778
  {
 
779
  return array(
780
  'varchar' => array(
781
  'gift_message_available',
@@ -785,7 +879,6 @@ class Iceshop_Iceimport_Model_Convert_Adapter_Product extends Mage_Catalog_Model
785
  'options_container',
786
  'page_layout',
787
  'mpn',
788
- 'brand_name',
789
  'name',
790
  'url_key',
791
  'meta_description',
106
  $message = Mage::helper('catalog')->__('Skip import row, required field "%s" not defined', 'categories');
107
  Mage::throwException($message);
108
  }
109
+ if (!empty($iceimportAttributes['categories'])) {
110
+ $cat_names = explode('/', $iceimportAttributes['categories']);
111
+ foreach($cat_names as $cat_name){
112
+ if(empty($cat_name)){
113
+ $message = Mage::helper('catalog')->__('Skip import row, some of categories does not have name');
114
+ Mage::throwException($message);
115
+ }
116
+ }
117
+ }
118
  $category = $iceimportAttributes['categories'];
119
  if (empty($iceimportAttributes['unspsc'])) {
120
  $message = Mage::helper('catalog')->__('Skip import. Category UNSPSC not defined in store');
125
  $message = Mage::helper('catalog')->__('Skip import. Category UNSPSC path not defined in store');
126
  Mage::throwException($message);
127
  }
128
+ if (!empty($iceimportAttributes['unspsc_path'])) {
129
+ $cat_unspscs = explode('/', $iceimportAttributes['unspsc_path']);
130
+ foreach($cat_unspscs as $cat_unspsc){
131
+ if(empty($cat_unspsc)){
132
+ $message = Mage::helper('catalog')->__('Skip import row, some of categories does not have UNSPSC');
133
+ Mage::throwException($message);
134
+ }
135
+ }
136
+ }
137
  $unspscPath = $iceimportAttributes['unspsc_path'];
138
+ if(!empty($cat_unspscs) && !empty($cat_names) && count($cat_names) != count($cat_unspscs)){
139
+ $message = Mage::helper('catalog')->__('Skip import row, categories names does not match categories UNSPSC');
140
+ Mage::throwException($message);
141
+ }
142
  // set in / out of stock
143
  $isInStock = 0;
144
  if (!empty($iceimportAttributes['is_in_stock'])) {
243
  // check import type (Import only price & qty or all product info)
244
  $stockConf = (int)Mage::getStoreConfig('importprod_root/importprod/import_stock', $storeId);
245
  $priceConf = (int)Mage::getStoreConfig('importprod_root/importprod/import_prices', $storeId);
246
+
247
  $productId = $this->_coreSave($productData, $productId, $storeId, $sku, $categoryIds);
248
  $this->_corePriceStock($websiteId, $productId, $price, $qty, $sku, $isInStock, $stockConf, $priceConf);
249
+ $this->_connRes->query('INSERT INTO ' . $this->_tablePrefix . 'iceshop_iceimport_imported_product_ids (product_id, product_sku) VALUES (:prod_id, :sku) ON DUPLICATE KEY UPDATE product_sku = :sku', array(':prod_id' => $productId, ':sku' => $sku));
250
  } else {
251
  $productId = $this->_coreSave($productData, $productId, $storeId, $sku, $categoryIds);
252
  // add price & stock
253
  $this->_corePriceStock($websiteId, $productId, $price, $qty, $sku, $isInStock);
254
+ $this->_connRes->query('INSERT INTO ' . $this->_tablePrefix . 'iceshop_iceimport_imported_product_ids (product_id, product_sku) VALUES (:prod_id, :sku) ON DUPLICATE KEY UPDATE product_sku = :sku', array(':prod_id' => $productId, ':sku' => $sku));
255
  }
256
 
257
  // add product image to queue
304
 
305
  return true;
306
  }
307
+ public function getAttributeOptionValue($arg_attribute, $arg_value) {
308
+ $attribute_model = Mage::getModel('eav/entity_attribute');
309
+ $attribute_options_model= Mage::getModel('eav/entity_attribute_source_table') ;
310
+
311
+ $attribute_code = $attribute_model->getIdByCode('catalog_product', $arg_attribute);
312
+ $attribute = $attribute_model->load($attribute_code);
313
+
314
+ $attribute_table = $attribute_options_model->setAttribute($attribute);
315
+
316
+ $options = $attribute_options_model->getAllOptions(false);
317
+
318
+ foreach($options as $option) {
319
+ if ($option['label'] == $arg_value) {
320
+ return $option['value']; }
321
+ }
322
+ return false;
323
+ }
324
+
325
+
326
+ public function addAttributeOption($arg_attribute, $arg_value) {
327
+ $attribute_model = Mage::getModel('eav/entity_attribute');
328
+ $attribute_options_model= Mage::getModel('eav/entity_attribute_source_table') ;
329
+
330
+ $attribute_code = $attribute_model->getIdByCode('catalog_product', $arg_attribute);
331
+ $attribute = $attribute_model->load($attribute_code);
332
+
333
+ $attribute_table = $attribute_options_model->setAttribute($attribute);
334
+ $options = $attribute_options_model->getAllOptions(false);
335
+
336
+ $value['option'] = array($arg_value,$arg_value);
337
+ $result = array('value' => $value);
338
+
339
+ $attribute->setData('option',$result);
340
+ $attribute->save();
341
+
342
+ return $this->getAttributeOptionValue($arg_attribute, $arg_value);
343
+ }
344
+
345
 
346
  protected function _coreSave(array $entityData, $productId = null, $storeId = 0, $sku, $categoryIds)
347
  {
375
  }
376
  }
377
  }
378
+
379
  $bindArray[':store_id'] = $storeId;
380
 
381
  foreach ($entityData as $type => $typeAttributes) {
383
  if ($type != 'spec') {
384
  $tailCoreSaveSQL = '';
385
  $attributesInit = '';
386
+ if($type == 'select'){
387
+ $type = 'int';
388
+ $is_select = 1;
389
+ }else{
390
+ $is_select = 0;
391
+ }
392
  if (!empty($typeAttributes)) {
393
  $tailCoreSaveSQL .= "
394
  INSERT INTO `" . $this->_tablePrefix . "catalog_product_entity_" . $type . "` (`entity_type_id`, `attribute_id`, `store_id`, `entity_id`, `value`) VALUES ";
395
+ foreach ($typeAttributes as $attribute => $value) {
396
+ if($is_select == 1){
397
+ $option_id = $this->getAttributeOptionValue($attribute, $value);
398
+ if(empty($option_id)){
399
+ $option_id = $this->addAttributeOption($attribute, $value);
400
+ }
401
+ $value = $option_id;
402
+ }
403
  $attributesInit .= "
404
  SELECT @" . $attribute . "_id := `attribute_id` FROM `" . $this->_tablePrefix . "eav_attribute` WHERE
405
  `attribute_code` = '" . $attribute . "' AND entity_type_id = @product_entity_type_id;
410
  (@product_entity_type_id, @" . $attribute . "_id, :store_id, @product_id, :" . $attribute . " ), ";
411
  $bindArray[':' . $attribute] = $value;
412
 
413
+ }
414
  $tailCoreSaveSQL = substr($tailCoreSaveSQL, 0, -2);
415
  $tailCoreSaveSQL .= "
416
  ON DUPLICATE KEY UPDATE
418
  ";
419
  }
420
  $coreSaveSQL .= $attributesInit . $tailCoreSaveSQL;
421
+ }else{
422
  foreach ($typeAttributes as $attribute => $attributeData) {
423
  $prod_id_field = $attributeData['prod_id_field'];
424
  $table = $attributeData['table'];
425
  $field = $attributeData['field'];
426
  $value = $attributeData['value'];
427
+ if (!emptcy($table) && !empty($field)) {
428
  $coreSaveSQL .= "
429
  UPDATE `" . $this->_tablePrefix . $table . "` SET `" . $field . "` = :" . $attribute . " WHERE `" . $prod_id_field . "` = @product_id;
430
  ";
436
  // categories
437
  $coreSaveSQL .= "INSERT INTO `" . $this->_tablePrefix . "catalog_category_product` (`category_id`, `product_id`, `position`) VALUES ";
438
  $counter = 1;
439
+
440
+ $mapCategoryIds = array();
441
+ $mapCategoryIds[] = array_pop($categoryIds);
442
+ $delCategoryIds = array_diff($categoryIds, $mapCategoryIds);
443
+
444
+ foreach ($mapCategoryIds as $categoryId) {
445
+ if ($counter < count($mapCategoryIds)) {
446
  $coreSaveSQL .= " (" . (int)$categoryId . ", @product_id, 1) , ";
447
+ } else if ($counter == count($mapCategoryIds)) {
448
+ $coreSaveSQL .= " (" . (int)$categoryId . ", @product_id, 1) ON DUPLICATE KEY UPDATE `position` = 1; ";
449
  }
450
  $counter++;
451
  }
452
+ if(!empty($delCategoryIds)){
453
+ foreach ($delCategoryIds as $delCategoryId) {
454
+ $coreSaveSQL .= "DELETE FROM `" . $this->_tablePrefix . "catalog_category_product` WHERE `category_id` = ". (int)$delCategoryId ." AND `product_id` = @product_id;";
455
+ }
456
+ }
457
  try {
458
  $bindArray[':' . $attribute] = $value;
459
 
830
  }
831
  }
832
 
833
+ if (!empty($importData)) {
834
+ foreach ($importData as $attributeCode => $value) {
835
+ $frontendTypeFetch = $this->_connRes->fetchRow("SELECT frontend_input FROM `" . $this->_tablePrefix . "eav_attribute` WHERE `attribute_code` = :code", array(':code' => $attributeCode));
836
+ if($frontendTypeFetch['frontend_input'] == 'select'){
837
+ $frontendType = $frontendTypeFetch['frontend_input'];
838
+ if ($frontendType != 'static' && !empty($frontendType) && $value != '') {
839
+ $productData[$frontendType][$attributeCode] = $value;
840
+ unset($importData[$attributeCode]);
841
+ }
842
+ }
843
+ }
844
+ }
845
  // map custom attributes
846
  if (!empty($importData)) {
847
  foreach ($importData as $attributeCode => $value) {
848
  $backendTypeFetch = $this->_connRes->fetchRow("SELECT backend_type FROM `" . $this->_tablePrefix . "eav_attribute` WHERE `attribute_code` = :code", array(':code' => $attributeCode));
849
  $backendType = $backendTypeFetch['backend_type'];
850
+ if (($backendType != 'static' && !empty($backendType) && $value != '')) {
851
  $productData[$backendType][$attributeCode] = $value;
852
  unset($importData[$attributeCode]);
853
  }
869
 
870
  protected function _getDefaultAttributesList()
871
  {
872
+
873
  return array(
874
  'varchar' => array(
875
  'gift_message_available',
879
  'options_container',
880
  'page_layout',
881
  'mpn',
 
882
  'name',
883
  'url_key',
884
  'meta_description',
app/code/community/Iceshop/Iceimport/Model/Dataflow/Convert/Parser/Csv.php CHANGED
@@ -14,14 +14,9 @@ class Iceshop_Iceimport_Model_Dataflow_Convert_Parser_Csv extends Mage_Dataflow_
14
 
15
  public function parse()
16
  {
17
- $entityTypeId = Mage::getModel('eav/entity')
18
- ->setType('catalog_product')
19
- ->getTypeId();
20
- $attributeSetCollection = Mage::getModel('eav/entity_attribute_set')
21
- ->getCollection()
22
- ->setEntityTypeFilter($entityTypeId);
23
- $default_attr_set = $attributeSetCollection->getData();
24
- $attributes = Mage::getModel('catalog/product_attribute_api')->items($default_attr_set[0]['attribute_set_id'] );
25
  $req_attributes = array('brand_name', 'ean', 'mpn', 'delivery_eta', 'is_iceimport');
26
  $not_found_attr = array();
27
  foreach($req_attributes as $req_attribute){
14
 
15
  public function parse()
16
  {
17
+ $default_attr_set_id = Mage::getModel('catalog/product')->getResource()->getEntityType()->getDefaultAttributeSetId();
18
+ $attributes = Mage::getModel('catalog/product_attribute_api')->items($default_attr_set_id);
19
+
 
 
 
 
 
20
  $req_attributes = array('brand_name', 'ean', 'mpn', 'delivery_eta', 'is_iceimport');
21
  $not_found_attr = array();
22
  foreach($req_attributes as $req_attribute){
app/code/community/Iceshop/Iceimport/etc/config.xml CHANGED
@@ -99,5 +99,24 @@
99
  </run>
100
  </iceimport>
101
  </jobs>
102
- </crontab>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  </config>
99
  </run>
100
  </iceimport>
101
  </jobs>
102
+ </crontab>
103
+ <default>
104
+ <importprod_root>
105
+ <importprod>
106
+ <category_active>1</category_active>
107
+ <import_product_ean>1</import_product_ean>
108
+ <import_product_mpn>1</import_product_mpn>
109
+ <import_product_brand>1</import_product_brand>
110
+ <import_product_name>1</import_product_name>
111
+ <import_product_short_description>1</import_product_short_description>
112
+ <import_product_description>1</import_product_description>
113
+ <import_product_short_summary_description>1</import_product_short_summary_description>
114
+ <import_product_summary_description>1</import_product_summary_description>
115
+ <import_prices>1</import_prices>
116
+ <import_stock>1</import_stock>
117
+ <import_delivery_eta>1</import_delivery_eta>
118
+ <import_images>1</import_images>
119
+ </importprod>
120
+ </importprod_root>
121
+ </default>
122
  </config>
app/code/community/Iceshop/Iceimport/etc/system.xml CHANGED
@@ -54,6 +54,7 @@
54
  <show_in_default>1</show_in_default>
55
  <show_in_website>1</show_in_website>
56
  <show_in_store>1</show_in_store>
 
57
  </import_product_brand>
58
  <import_product_name translate="label">
59
  <label>Import product name</label>
54
  <show_in_default>1</show_in_default>
55
  <show_in_website>1</show_in_website>
56
  <show_in_store>1</show_in_store>
57
+ <enabled>1</enabled>
58
  </import_product_brand>
59
  <import_product_name translate="label">
60
  <label>Import product name</label>
package.xml CHANGED
@@ -1,22 +1,23 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>ice_import</name>
4
- <version>1.5.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v.3</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Import categories &amp;amp; products</summary>
10
  <description>This extension can use to import products with categories, multiple images and custom options from CSV file.</description>
11
- <notes>- Added Magento V1.8 Compatibility&#xD;
12
- - Added batch of settings for information to be imported (desription, name, stock, price and etc)&#xD;
13
- - Speed improvements&#xD;
14
- - Fixed issues with TimeOut&#xD;
15
- - Changed namespaces</notes>
 
16
  <authors><author><name>Iceshop</name><user>Iceshop</user><email>support@iceshop.nl</email></author></authors>
17
- <date>2013-11-13</date>
18
- <time>19:52:32</time>
19
- <contents><target name="magecommunity"><dir name="Iceshop"><dir name="Iceimport"><dir name="Model"><dir name="Convert"><dir name="Adapter"><file name="Product.php" hash="04350eb3276aa632cd70c98b8c44b2d5"/></dir></dir><dir name="Dataflow"><dir name="Batch"><file name="Import.php" hash="90a3fdd194991e4b1a0c1e6dd2ba3db1"/></dir><dir name="Convert"><dir name="Parser"><file name="Csv.php" hash="9f1dbe6d5117d92a19038cc1d64bd162"/></dir></dir></dir><file name="Observer.php" hash="b392ef90dec09ff51e3a0984f3523677"/><dir name="System"><dir name="Config"><file name="Categoryactivity.php" hash="c60f739b06f29e47f3098bf91bc0b8fd"/><file name="Defaulttax.php" hash="d5d3b7b5862ef1264ee4b960e8dbb627"/><file name="Imageimport.php" hash="d4f67a21d5b8731716c6246a30f7a01f"/><file name="Importdeliveryeta.php" hash="0807017f687f4adeb76129dcb7f5358c"/><file name="Importprices.php" hash="1367181841e8c93f67160dbc497fa658"/><file name="Importproductbrand.php" hash="5b210f5ae30bcd69c8215f0db15f873f"/><file name="Importproductdescription.php" hash="47e0df7a29e9eb9b35e6b9b85a94d757"/><file name="Importproductean.php" hash="4e5ba806f6c31705df6797e9703a714c"/><file name="Importproductmpn.php" hash="9dc525200e8782f9161e59ea20d97517"/><file name="Importproductname.php" hash="c9a6c970105bf3ce9a368351fa27d2d6"/><file name="Importproductshdescription.php" hash="86b361fe2a483757cbd3c37a7cd556bb"/><file name="Importproductshsudescription.php" hash="c0b75d1b619f39db30d4529cc2981652"/><file name="Importproductsudescription.php" hash="8b21d2e05ac3e8f47a6eda5380fb0f49"/><file name="Importstock.php" hash="dcd5838f2b8d21f374b621bc440d9a7c"/><file name="Lockproddetails.php" hash="66107a746bb9a50c8d74e3f27bdaaedf"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="5faff23af0e722d7e92af56b5eff63d4"/><file name="system.xml" hash="e76ed11ef4b797c0cf3d8553e1409e8d"/></dir><dir name="sql"><dir name="iceimport_setup"><file name="mysql4-install-1.5.0.php" hash="c90722a11b7de7d23d92f12bd37d3706"/><file name="mysql4-upgrade-0.1.0-1.5.0.php" hash="26cded28767c71f2d4945e9866b7feb0"/><file name="mysql4-upgrade-1.4.0-1.5.0.php" hash="07b4b6f1e01d253db017038bd1985170"/><file name="uninstall-old-version.php" hash="291f724845f8e62d51ccdf61baf81b37"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Iceshop_Iceimport.xml" hash="c22b6e566abee45bbb2102b3239cd6a2"/></dir></target></contents>
20
  <compatible/>
21
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
22
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>ice_import</name>
4
+ <version>1.6.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v.3</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Import categories &amp;amp; products</summary>
10
  <description>This extension can use to import products with categories, multiple images and custom options from CSV file.</description>
11
+ <notes>Bugfixes:&#xD;
12
+ - fixed bug with database table prefix&#xD;
13
+ - fixed bug with checking required attributes in default attribute set&#xD;
14
+ Improvements:&#xD;
15
+ - Changed logic of assigning categories, products assigned only to the last category in the tree&#xD;
16
+ - Added ability to save data in dropdown fields as example "Brand", then it's possible to use in layered navigation</notes>
17
  <authors><author><name>Iceshop</name><user>Iceshop</user><email>support@iceshop.nl</email></author></authors>
18
+ <date>2014-02-19</date>
19
+ <time>12:18:02</time>
20
+ <contents><target name="magecommunity"><dir name="Iceshop"><dir name="Iceimport"><dir name="Model"><dir name="Convert"><dir name="Adapter"><file name="Product.php" hash="7125fba31031669fb49188975581cf65"/></dir></dir><dir name="Dataflow"><dir name="Batch"><file name="Import.php" hash="90a3fdd194991e4b1a0c1e6dd2ba3db1"/></dir><dir name="Convert"><dir name="Parser"><file name="Csv.php" hash="9d655cf42f686084327f2e6de215d9fb"/></dir></dir></dir><file name="Observer.php" hash="b392ef90dec09ff51e3a0984f3523677"/><dir name="System"><dir name="Config"><file name="Categoryactivity.php" hash="c60f739b06f29e47f3098bf91bc0b8fd"/><file name="Defaulttax.php" hash="d5d3b7b5862ef1264ee4b960e8dbb627"/><file name="Imageimport.php" hash="d4f67a21d5b8731716c6246a30f7a01f"/><file name="Importdeliveryeta.php" hash="0807017f687f4adeb76129dcb7f5358c"/><file name="Importprices.php" hash="1367181841e8c93f67160dbc497fa658"/><file name="Importproductbrand.php" hash="5b210f5ae30bcd69c8215f0db15f873f"/><file name="Importproductdescription.php" hash="47e0df7a29e9eb9b35e6b9b85a94d757"/><file name="Importproductean.php" hash="4e5ba806f6c31705df6797e9703a714c"/><file name="Importproductmpn.php" hash="9dc525200e8782f9161e59ea20d97517"/><file name="Importproductname.php" hash="c9a6c970105bf3ce9a368351fa27d2d6"/><file name="Importproductshdescription.php" hash="86b361fe2a483757cbd3c37a7cd556bb"/><file name="Importproductshsudescription.php" hash="c0b75d1b619f39db30d4529cc2981652"/><file name="Importproductsudescription.php" hash="8b21d2e05ac3e8f47a6eda5380fb0f49"/><file name="Importstock.php" hash="dcd5838f2b8d21f374b621bc440d9a7c"/><file name="Lockproddetails.php" hash="66107a746bb9a50c8d74e3f27bdaaedf"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="9dd90caa78c5eeac27c8c02858b9738a"/><file name="system.xml" hash="17cbe85949a33a4eb3fa301092714fa0"/></dir><dir name="sql"><dir name="iceimport_setup"><file name="mysql4-install-1.5.0.php" hash="c90722a11b7de7d23d92f12bd37d3706"/><file name="mysql4-upgrade-0.1.0-1.5.0.php" hash="26cded28767c71f2d4945e9866b7feb0"/><file name="mysql4-upgrade-1.4.0-1.5.0.php" hash="07b4b6f1e01d253db017038bd1985170"/><file name="uninstall-old-version.php" hash="291f724845f8e62d51ccdf61baf81b37"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Iceshop_Iceimport.xml" hash="c22b6e566abee45bbb2102b3239cd6a2"/></dir></target></contents>
21
  <compatible/>
22
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
23
  </package>