Version Notes
Magento 1.5 version.
Download this release
Release Info
| Developer | Antonio Martinez |
| Extension | AMartinez_CustomImportExport |
| Version | 1.5.010 |
| Comparing to | |
| See all releases | |
Code changes from version 1.5.009 to 1.5.010
- app/code/community/AMartinez/CustomImportExport/Model/Import/Adapter.php +1 -1
- app/code/community/AMartinez/CustomImportExport/Model/Import/Adapter/Csv1.php +41 -17
- app/code/community/AMartinez/CustomImportExport/Model/Import/Entity/Product.php +25 -21
- app/code/community/AMartinez/CustomImportExport/Model/Import/Entity/Product/Type/Configurable.php +21 -1
- app/code/community/AMartinez/CustomImportExport/Model/Import/Entity/Product/Type/Grouped.php +21 -1
- app/code/community/AMartinez/CustomImportExport/Model/Import/Entity/Product/Type/Simple.php +21 -1
- app/code/community/AMartinez/CustomImportExport/shell/run.php +19 -6
- package.xml +5 -5
- var/customimportexport/test_multiple_stores.csv1 +145 -0
app/code/community/AMartinez/CustomImportExport/Model/Import/Adapter.php
CHANGED
|
@@ -28,7 +28,7 @@ class AMartinez_CustomImportExport_Model_Import_Adapter extends Mage_ImportExpor
|
|
| 28 |
Mage::throwException(Mage::helper('importexport')->__('Adapter type must be a non empty string'));
|
| 29 |
}
|
| 30 |
$adapterClass = __CLASS__ . '_' . ucfirst(strtolower($type));
|
| 31 |
-
|
| 32 |
if (!class_exists($adapterClass, false)) {
|
| 33 |
$adapterFile = str_replace('_', '/', $adapterClass) . '.php';
|
| 34 |
if (!@include_once($adapterFile)) {
|
| 28 |
Mage::throwException(Mage::helper('importexport')->__('Adapter type must be a non empty string'));
|
| 29 |
}
|
| 30 |
$adapterClass = __CLASS__ . '_' . ucfirst(strtolower($type));
|
| 31 |
+
|
| 32 |
if (!class_exists($adapterClass, false)) {
|
| 33 |
$adapterFile = str_replace('_', '/', $adapterClass) . '.php';
|
| 34 |
if (!@include_once($adapterFile)) {
|
app/code/community/AMartinez/CustomImportExport/Model/Import/Adapter/Csv1.php
CHANGED
|
@@ -36,6 +36,7 @@ class AMartinez_CustomImportExport_Model_Import_Adapter_Csv1 extends Mage_Import
|
|
| 36 |
*/
|
| 37 |
protected $_fileHandler;
|
| 38 |
|
|
|
|
| 39 |
protected $_values = array();
|
| 40 |
protected $_currentOffsetKey = 0;
|
| 41 |
protected $_maxOffsetKey = 0;
|
|
@@ -61,6 +62,9 @@ class AMartinez_CustomImportExport_Model_Import_Adapter_Csv1 extends Mage_Import
|
|
| 61 |
{
|
| 62 |
$this->_fileHandler = fopen($this->_source, 'r');
|
| 63 |
$this->rewind();
|
|
|
|
|
|
|
|
|
|
| 64 |
return $this;
|
| 65 |
}
|
| 66 |
|
|
@@ -73,10 +77,10 @@ class AMartinez_CustomImportExport_Model_Import_Adapter_Csv1 extends Mage_Import
|
|
| 73 |
{
|
| 74 |
if ($this->_maxOffsetKey > $this->_currentOffsetKey) {
|
| 75 |
$this->_currentOffsetKey ++;
|
| 76 |
-
$this->_setValues(
|
| 77 |
} else {
|
| 78 |
$this->_currentRow = fgetcsv($this->_fileHandler, null, $this->_delimiter, $this->_enclosure);
|
| 79 |
-
$this->_getValues(
|
| 80 |
}
|
| 81 |
|
| 82 |
$this->_currentKey = $this->_currentRow ? $this->_currentKey + 1 : null;
|
|
@@ -92,8 +96,25 @@ class AMartinez_CustomImportExport_Model_Import_Adapter_Csv1 extends Mage_Import
|
|
| 92 |
// rewind resource, reset column names, read first row as current
|
| 93 |
rewind($this->_fileHandler);
|
| 94 |
$this->_colNames = fgetcsv($this->_fileHandler, null, $this->_delimiter, $this->_enclosure);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 95 |
$this->_currentRow = fgetcsv($this->_fileHandler, null, $this->_delimiter, $this->_enclosure);
|
| 96 |
-
$this->_getValues(
|
| 97 |
|
| 98 |
if ($this->_currentRow) {
|
| 99 |
$this->_currentKey = 0;
|
|
@@ -117,10 +138,10 @@ class AMartinez_CustomImportExport_Model_Import_Adapter_Csv1 extends Mage_Import
|
|
| 117 |
$this->rewind();
|
| 118 |
}
|
| 119 |
while ($this->_currentRow = fgetcsv($this->_fileHandler, null, $this->_delimiter, $this->_enclosure)) {
|
| 120 |
-
$this->_getValues(
|
| 121 |
do {
|
| 122 |
if (++ $this->_currentKey == $position) {
|
| 123 |
-
$this->_setValues(
|
| 124 |
return;
|
| 125 |
}
|
| 126 |
} while ($this->_maxOffsetKey > $this->_currentOffsetKey ++);
|
|
@@ -130,33 +151,36 @@ class AMartinez_CustomImportExport_Model_Import_Adapter_Csv1 extends Mage_Import
|
|
| 130 |
}
|
| 131 |
}
|
| 132 |
|
| 133 |
-
protected function _getValues(
|
| 134 |
{
|
| 135 |
$this->_values = array();
|
| 136 |
$this->_currentOffsetKey = 0;
|
| 137 |
$this->_maxOffsetKey = 0;
|
| 138 |
-
|
| 139 |
-
foreach ($
|
| 140 |
{
|
| 141 |
-
$keyId = array_search($colName, $this->_colNames)
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
|
|
|
|
|
|
| 145 |
}
|
| 146 |
|
| 147 |
-
$this->_setValues(
|
| 148 |
}
|
| 149 |
|
| 150 |
-
protected function _setValues(
|
| 151 |
{
|
| 152 |
if ($this->_currentOffsetKey > 0) {
|
| 153 |
-
foreach ($this->_currentRow as $key => $value)
|
|
|
|
| 154 |
$this->_currentRow[$key] = "";
|
| 155 |
}
|
| 156 |
}
|
| 157 |
|
| 158 |
-
foreach ($
|
| 159 |
-
if ($this->_currentOffsetKey < count($this->_values[$colName]) && $this->_values[$colName][$this->_currentOffsetKey]) {
|
| 160 |
$keyId = array_search($colName, $this->_colNames);
|
| 161 |
$this->_currentRow[$keyId] = $this->_values[$colName][$this->_currentOffsetKey];
|
| 162 |
}
|
| 36 |
*/
|
| 37 |
protected $_fileHandler;
|
| 38 |
|
| 39 |
+
protected $_multiValuedColNames = array('_store', 'visibility', '_category', '_associated_sku');
|
| 40 |
protected $_values = array();
|
| 41 |
protected $_currentOffsetKey = 0;
|
| 42 |
protected $_maxOffsetKey = 0;
|
| 62 |
{
|
| 63 |
$this->_fileHandler = fopen($this->_source, 'r');
|
| 64 |
$this->rewind();
|
| 65 |
+
|
| 66 |
+
echo ":::: " . Mage::helper('importexport')->__("Multivalued column names: ") . implode(',', $this->_multiValuedColNames) . " ::::\n";
|
| 67 |
+
|
| 68 |
return $this;
|
| 69 |
}
|
| 70 |
|
| 77 |
{
|
| 78 |
if ($this->_maxOffsetKey > $this->_currentOffsetKey) {
|
| 79 |
$this->_currentOffsetKey ++;
|
| 80 |
+
$this->_setValues();
|
| 81 |
} else {
|
| 82 |
$this->_currentRow = fgetcsv($this->_fileHandler, null, $this->_delimiter, $this->_enclosure);
|
| 83 |
+
$this->_getValues();
|
| 84 |
}
|
| 85 |
|
| 86 |
$this->_currentKey = $this->_currentRow ? $this->_currentKey + 1 : null;
|
| 96 |
// rewind resource, reset column names, read first row as current
|
| 97 |
rewind($this->_fileHandler);
|
| 98 |
$this->_colNames = fgetcsv($this->_fileHandler, null, $this->_delimiter, $this->_enclosure);
|
| 99 |
+
|
| 100 |
+
$multi = array();
|
| 101 |
+
$i = 0;
|
| 102 |
+
while ($i < count($this->_colNames))
|
| 103 |
+
{
|
| 104 |
+
if (substr($this->_colNames[$i], 0, 1) == "*")
|
| 105 |
+
{
|
| 106 |
+
$this->_colNames[$i] = substr($this->_colNames[$i], 1);
|
| 107 |
+
$multi[] = $this->_colNames[$i];
|
| 108 |
+
}
|
| 109 |
+
$i++;
|
| 110 |
+
}
|
| 111 |
+
if (count($multi) > 0)
|
| 112 |
+
{
|
| 113 |
+
$this->_multiValuedColNames = $multi;
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
$this->_currentRow = fgetcsv($this->_fileHandler, null, $this->_delimiter, $this->_enclosure);
|
| 117 |
+
$this->_getValues();
|
| 118 |
|
| 119 |
if ($this->_currentRow) {
|
| 120 |
$this->_currentKey = 0;
|
| 138 |
$this->rewind();
|
| 139 |
}
|
| 140 |
while ($this->_currentRow = fgetcsv($this->_fileHandler, null, $this->_delimiter, $this->_enclosure)) {
|
| 141 |
+
$this->_getValues();
|
| 142 |
do {
|
| 143 |
if (++ $this->_currentKey == $position) {
|
| 144 |
+
$this->_setValues();
|
| 145 |
return;
|
| 146 |
}
|
| 147 |
} while ($this->_maxOffsetKey > $this->_currentOffsetKey ++);
|
| 151 |
}
|
| 152 |
}
|
| 153 |
|
| 154 |
+
protected function _getValues()
|
| 155 |
{
|
| 156 |
$this->_values = array();
|
| 157 |
$this->_currentOffsetKey = 0;
|
| 158 |
$this->_maxOffsetKey = 0;
|
| 159 |
+
|
| 160 |
+
foreach ($this->_multiValuedColNames as $colName)
|
| 161 |
{
|
| 162 |
+
if ($keyId = array_search($colName, $this->_colNames))
|
| 163 |
+
{
|
| 164 |
+
$values = explode(",", $this->_currentRow[$keyId]);
|
| 165 |
+
$this->_values[$colName] = $values;
|
| 166 |
+
$this->_maxOffsetKey = max($this->_maxOffsetKey, count($values) - 1);
|
| 167 |
+
}
|
| 168 |
}
|
| 169 |
|
| 170 |
+
$this->_setValues();
|
| 171 |
}
|
| 172 |
|
| 173 |
+
protected function _setValues()
|
| 174 |
{
|
| 175 |
if ($this->_currentOffsetKey > 0) {
|
| 176 |
+
foreach ($this->_currentRow as $key => $value)
|
| 177 |
+
{
|
| 178 |
$this->_currentRow[$key] = "";
|
| 179 |
}
|
| 180 |
}
|
| 181 |
|
| 182 |
+
foreach ($this->_multiValuedColNames as $colName) {
|
| 183 |
+
if (array_key_exists($colName, $this->_values) && $this->_currentOffsetKey < count($this->_values[$colName]) && $this->_values[$colName][$this->_currentOffsetKey]) {
|
| 184 |
$keyId = array_search($colName, $this->_colNames);
|
| 185 |
$this->_currentRow[$keyId] = $this->_values[$colName][$this->_currentOffsetKey];
|
| 186 |
}
|
app/code/community/AMartinez/CustomImportExport/Model/Import/Entity/Product.php
CHANGED
|
@@ -53,7 +53,7 @@ class AMartinez_CustomImportExport_Model_Import_Entity_Product extends Mage_Impo
|
|
| 53 |
echo ":::: " . Mage::helper('importexport')->__("New attribute option added: ") . $attrCode . " - " . $rowData[$attrCode] . " (first ocurrence in line " . ($rowNum+1) . ") ::::\n";
|
| 54 |
$this->addRowError(Mage::helper('importexport')->__("Attribute option added for '%s'"), $rowNum, $attrCode);
|
| 55 |
}
|
| 56 |
-
return false
|
| 57 |
}
|
| 58 |
break;
|
| 59 |
case 'int':
|
|
@@ -87,7 +87,7 @@ class AMartinez_CustomImportExport_Model_Import_Entity_Product extends Mage_Impo
|
|
| 87 |
|
| 88 |
protected $_entity_type_id;
|
| 89 |
protected $eav_entity_setup;
|
| 90 |
-
|
| 91 |
/**
|
| 92 |
* Add attribute option
|
| 93 |
*
|
|
@@ -126,7 +126,7 @@ class AMartinez_CustomImportExport_Model_Import_Entity_Product extends Mage_Impo
|
|
| 126 |
*/
|
| 127 |
protected function _isProductCategoryValid(array $rowData, $rowNum)
|
| 128 |
{
|
| 129 |
-
if (!empty($rowData[self::COL_CATEGORY]) && !isset($this->_categories[$rowData[self::COL_CATEGORY]])) {
|
| 130 |
if (!empty($rowData['_custom_option_store']) && isset($this->_storeCodeToId[$rowData['_custom_option_store']])) {
|
| 131 |
$storeId = $this->_storeCodeToId[$rowData['_custom_option_store']];
|
| 132 |
} else {
|
|
@@ -141,7 +141,7 @@ class AMartinez_CustomImportExport_Model_Import_Entity_Product extends Mage_Impo
|
|
| 141 |
}
|
| 142 |
|
| 143 |
/**
|
| 144 |
-
* Add category
|
| 145 |
*
|
| 146 |
* @return true
|
| 147 |
*/
|
|
@@ -149,24 +149,28 @@ class AMartinez_CustomImportExport_Model_Import_Entity_Product extends Mage_Impo
|
|
| 149 |
{
|
| 150 |
$store = Mage::app()->getStore($storeId);
|
| 151 |
$rootCategoryId = $store->getGroup()->root_category_id;
|
| 152 |
-
$rootCategoryPath =
|
| 153 |
|
| 154 |
-
$
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 167 |
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
return true;
|
| 171 |
}
|
| 172 |
}
|
| 53 |
echo ":::: " . Mage::helper('importexport')->__("New attribute option added: ") . $attrCode . " - " . $rowData[$attrCode] . " (first ocurrence in line " . ($rowNum+1) . ") ::::\n";
|
| 54 |
$this->addRowError(Mage::helper('importexport')->__("Attribute option added for '%s'"), $rowNum, $attrCode);
|
| 55 |
}
|
| 56 |
+
return true; // no false
|
| 57 |
}
|
| 58 |
break;
|
| 59 |
case 'int':
|
| 87 |
|
| 88 |
protected $_entity_type_id;
|
| 89 |
protected $eav_entity_setup;
|
| 90 |
+
|
| 91 |
/**
|
| 92 |
* Add attribute option
|
| 93 |
*
|
| 126 |
*/
|
| 127 |
protected function _isProductCategoryValid(array $rowData, $rowNum)
|
| 128 |
{
|
| 129 |
+
if (!empty($rowData[self::COL_CATEGORY]) && !isset($this->_categories[$rowData[self::COL_CATEGORY]])) {
|
| 130 |
if (!empty($rowData['_custom_option_store']) && isset($this->_storeCodeToId[$rowData['_custom_option_store']])) {
|
| 131 |
$storeId = $this->_storeCodeToId[$rowData['_custom_option_store']];
|
| 132 |
} else {
|
| 141 |
}
|
| 142 |
|
| 143 |
/**
|
| 144 |
+
* Add category
|
| 145 |
*
|
| 146 |
* @return true
|
| 147 |
*/
|
| 149 |
{
|
| 150 |
$store = Mage::app()->getStore($storeId);
|
| 151 |
$rootCategoryId = $store->getGroup()->root_category_id;
|
| 152 |
+
$rootCategoryPath = "1/" . $rootCategoryId;
|
| 153 |
|
| 154 |
+
$relativePath = $rootCategoryPath;
|
| 155 |
+
foreach (explode("/", $category) as $child)
|
| 156 |
+
{
|
| 157 |
+
$fullCategoryName = isset($fullCategoryName) ? ($fullCategoryName . "/" . $child) : ($child);
|
| 158 |
+
if (!isset($this->_categories[$fullCategoryName]))
|
| 159 |
+
{
|
| 160 |
+
$cat = Mage::getModel('catalog/category');
|
| 161 |
+
$cat->setStoreId(0)
|
| 162 |
+
->setName(trim($child))
|
| 163 |
+
->setDisplayMode(trim($child))
|
| 164 |
+
->setAttributeSetId($cat->getDefaultAttributeSetId())
|
| 165 |
+
->setIsActive(1)
|
| 166 |
+
->setPath($relativePath)
|
| 167 |
+
->setIsAnchor(true)
|
| 168 |
+
->save();
|
| 169 |
+
$this->_categories[$fullCategoryName] = $cat->getId();
|
| 170 |
+
}
|
| 171 |
+
$relativePath = $relativePath . "/" . $this->_categories[$fullCategoryName];
|
| 172 |
+
}
|
| 173 |
|
| 174 |
+
return true;
|
|
|
|
|
|
|
| 175 |
}
|
| 176 |
}
|
app/code/community/AMartinez/CustomImportExport/Model/Import/Entity/Product/Type/Configurable.php
CHANGED
|
@@ -15,5 +15,25 @@
|
|
| 15 |
class AMartinez_CustomImportExport_Model_Import_Entity_Product_Type_Configurable
|
| 16 |
extends Mage_ImportExport_Model_Import_Entity_Product_Type_Configurable
|
| 17 |
{
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
}
|
| 15 |
class AMartinez_CustomImportExport_Model_Import_Entity_Product_Type_Configurable
|
| 16 |
extends Mage_ImportExport_Model_Import_Entity_Product_Type_Configurable
|
| 17 |
{
|
| 18 |
+
/**
|
| 19 |
+
* Validate row attributes. Pass VALID row data ONLY as argument.
|
| 20 |
+
*
|
| 21 |
+
* @param array $rowData
|
| 22 |
+
* @param int $rowNum
|
| 23 |
+
* @param boolean $checkRequiredAttributes OPTIONAL Flag which can disable validation required values.
|
| 24 |
+
* @return boolean
|
| 25 |
+
*/
|
| 26 |
+
public function isRowValid(array $rowData, $rowNum, $checkRequiredAttributes = true)
|
| 27 |
+
{
|
| 28 |
+
// create sub-row's new attribute options
|
| 29 |
+
if (Mage_ImportExport_Model_Import_Entity_Product::SCOPE_NULL == $this->_entityModel->getRowScope($rowData)) {
|
| 30 |
+
foreach ($this->_getProductAttributes($rowData) as $attrCode => $attrParams) {
|
| 31 |
+
if (isset($rowData[$attrCode]) && strlen($rowData[$attrCode])) {
|
| 32 |
+
$this->_entityModel->isAttributeValid($attrCode, $attrParams, $rowData, $rowNum);
|
| 33 |
+
}
|
| 34 |
+
}
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
return Mage_ImportExport_Model_Import_Entity_Product_Type_Abstract::isRowValid($rowData, $rowNum, $checkRequiredAttributes);
|
| 38 |
+
}
|
| 39 |
}
|
app/code/community/AMartinez/CustomImportExport/Model/Import/Entity/Product/Type/Grouped.php
CHANGED
|
@@ -15,5 +15,25 @@
|
|
| 15 |
class AMartinez_CustomImportExport_Model_Import_Entity_Product_Type_Grouped
|
| 16 |
extends Mage_ImportExport_Model_Import_Entity_Product_Type_Grouped
|
| 17 |
{
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
}
|
| 15 |
class AMartinez_CustomImportExport_Model_Import_Entity_Product_Type_Grouped
|
| 16 |
extends Mage_ImportExport_Model_Import_Entity_Product_Type_Grouped
|
| 17 |
{
|
| 18 |
+
/**
|
| 19 |
+
* Validate row attributes. Pass VALID row data ONLY as argument.
|
| 20 |
+
*
|
| 21 |
+
* @param array $rowData
|
| 22 |
+
* @param int $rowNum
|
| 23 |
+
* @param boolean $checkRequiredAttributes OPTIONAL Flag which can disable validation required values.
|
| 24 |
+
* @return boolean
|
| 25 |
+
*/
|
| 26 |
+
public function isRowValid(array $rowData, $rowNum, $checkRequiredAttributes = true)
|
| 27 |
+
{
|
| 28 |
+
// create sub-row's new attribute options
|
| 29 |
+
if (Mage_ImportExport_Model_Import_Entity_Product::SCOPE_NULL == $this->_entityModel->getRowScope($rowData)) {
|
| 30 |
+
foreach ($this->_getProductAttributes($rowData) as $attrCode => $attrParams) {
|
| 31 |
+
if (isset($rowData[$attrCode]) && strlen($rowData[$attrCode])) {
|
| 32 |
+
$this->_entityModel->isAttributeValid($attrCode, $attrParams, $rowData, $rowNum);
|
| 33 |
+
}
|
| 34 |
+
}
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
return Mage_ImportExport_Model_Import_Entity_Product_Type_Abstract::isRowValid($rowData, $rowNum, $checkRequiredAttributes);
|
| 38 |
+
}
|
| 39 |
}
|
app/code/community/AMartinez/CustomImportExport/Model/Import/Entity/Product/Type/Simple.php
CHANGED
|
@@ -15,5 +15,25 @@
|
|
| 15 |
class AMartinez_CustomImportExport_Model_Import_Entity_Product_Type_Simple
|
| 16 |
extends Mage_ImportExport_Model_Import_Entity_Product_Type_Simple
|
| 17 |
{
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
}
|
| 15 |
class AMartinez_CustomImportExport_Model_Import_Entity_Product_Type_Simple
|
| 16 |
extends Mage_ImportExport_Model_Import_Entity_Product_Type_Simple
|
| 17 |
{
|
| 18 |
+
/**
|
| 19 |
+
* Validate row attributes. Pass VALID row data ONLY as argument.
|
| 20 |
+
*
|
| 21 |
+
* @param array $rowData
|
| 22 |
+
* @param int $rowNum
|
| 23 |
+
* @param boolean $checkRequiredAttributes OPTIONAL Flag which can disable validation required values.
|
| 24 |
+
* @return boolean
|
| 25 |
+
*/
|
| 26 |
+
public function isRowValid(array $rowData, $rowNum, $checkRequiredAttributes = true)
|
| 27 |
+
{
|
| 28 |
+
// create sub-row's new attribute options
|
| 29 |
+
if (Mage_ImportExport_Model_Import_Entity_Product::SCOPE_NULL == $this->_entityModel->getRowScope($rowData)) {
|
| 30 |
+
foreach ($this->_getProductAttributes($rowData) as $attrCode => $attrParams) {
|
| 31 |
+
if (isset($rowData[$attrCode]) && strlen($rowData[$attrCode])) {
|
| 32 |
+
$this->_entityModel->isAttributeValid($attrCode, $attrParams, $rowData, $rowNum);
|
| 33 |
+
}
|
| 34 |
+
}
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
return Mage_ImportExport_Model_Import_Entity_Product_Type_Abstract::isRowValid($rowData, $rowNum, $checkRequiredAttributes);
|
| 38 |
+
}
|
| 39 |
}
|
app/code/community/AMartinez/CustomImportExport/shell/run.php
CHANGED
|
@@ -25,6 +25,7 @@ class AMartinez_CustomImportExport extends Mage_Shell_Abstract
|
|
| 25 |
Mage::setIsDeveloperMode(true);
|
| 26 |
ini_set('display_errors', 1);
|
| 27 |
// ini_set("memory_limit","2048M");
|
|
|
|
| 28 |
|
| 29 |
// help
|
| 30 |
if ($this->getArg('h') || $this->getArg('help') || count($this->_args) == 0)
|
|
@@ -63,7 +64,7 @@ class AMartinez_CustomImportExport extends Mage_Shell_Abstract
|
|
| 63 |
$header = fgets($h);
|
| 64 |
while($line = fgets($h))
|
| 65 |
{
|
| 66 |
-
// first iteration
|
| 67 |
if ($i == 0 || (substr($line, 0 ,1) != ',' && substr($line, 0 ,2) != '""' && substr($line, 0 ,2) != "''" && $i > $linecount && !($linecount === true)))
|
| 68 |
{
|
| 69 |
if (defined('t'))
|
|
@@ -109,7 +110,7 @@ class AMartinez_CustomImportExport extends Mage_Shell_Abstract
|
|
| 109 |
if ($message) {
|
| 110 |
Mage::throwException(sprintf("File %s contains %s corrupt records (from a total of %s)", $file, $import->getInvalidRowsCount(), $processedRowsCount) . $message);
|
| 111 |
}
|
| 112 |
-
|
| 113 |
$import = $this->initImportModel();
|
| 114 |
$validationResult = $import->validateSource($file);
|
| 115 |
$processedRowsCount = $import->getProcessedRowsCount();
|
|
@@ -501,7 +502,7 @@ class AMartinez_CustomImportExport extends Mage_Shell_Abstract
|
|
| 501 |
public function usageHelp()
|
| 502 |
{
|
| 503 |
return <<<HELP
|
| 504 |
-
AMartinez_CustomImportExport script (v. 1.5.
|
| 505 |
|
| 506 |
NAME
|
| 507 |
run.php
|
|
@@ -511,7 +512,19 @@ SYNOPSIS
|
|
| 511 |
php -f app/code/community/AMartinez/CustomImportExport/shell/run.php [-- [OPTIONS...]]
|
| 512 |
|
| 513 |
DESCRIPTION
|
| 514 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 515 |
|
| 516 |
OPTIONS
|
| 517 |
-h
|
|
@@ -540,7 +553,7 @@ OPTIONS
|
|
| 540 |
|
| 541 |
-db [file]
|
| 542 |
-databasebackup [file]
|
| 543 |
-
output whole magento database to sql file and try to gzcompress it, if output file not specified uses time generated name
|
| 544 |
|
| 545 |
-e [file]
|
| 546 |
-export [file]
|
|
@@ -548,7 +561,7 @@ OPTIONS
|
|
| 548 |
|
| 549 |
-i [file]
|
| 550 |
-import [file]
|
| 551 |
-
import products from csv file, if source file not specified or not found uses defined in config.xml
|
| 552 |
|
| 553 |
-f
|
| 554 |
-flushimages
|
| 25 |
Mage::setIsDeveloperMode(true);
|
| 26 |
ini_set('display_errors', 1);
|
| 27 |
// ini_set("memory_limit","2048M");
|
| 28 |
+
echo "";
|
| 29 |
|
| 30 |
// help
|
| 31 |
if ($this->getArg('h') || $this->getArg('help') || count($this->_args) == 0)
|
| 64 |
$header = fgets($h);
|
| 65 |
while($line = fgets($h))
|
| 66 |
{
|
| 67 |
+
// first iteration / no "attr-only" line / line count has been reached
|
| 68 |
if ($i == 0 || (substr($line, 0 ,1) != ',' && substr($line, 0 ,2) != '""' && substr($line, 0 ,2) != "''" && $i > $linecount && !($linecount === true)))
|
| 69 |
{
|
| 70 |
if (defined('t'))
|
| 110 |
if ($message) {
|
| 111 |
Mage::throwException(sprintf("File %s contains %s corrupt records (from a total of %s)", $file, $import->getInvalidRowsCount(), $processedRowsCount) . $message);
|
| 112 |
}
|
| 113 |
+
|
| 114 |
$import = $this->initImportModel();
|
| 115 |
$validationResult = $import->validateSource($file);
|
| 116 |
$processedRowsCount = $import->getProcessedRowsCount();
|
| 502 |
public function usageHelp()
|
| 503 |
{
|
| 504 |
return <<<HELP
|
| 505 |
+
AMartinez_CustomImportExport script (v. 1.5.010)
|
| 506 |
|
| 507 |
NAME
|
| 508 |
run.php
|
| 512 |
php -f app/code/community/AMartinez/CustomImportExport/shell/run.php [-- [OPTIONS...]]
|
| 513 |
|
| 514 |
DESCRIPTION
|
| 515 |
+
This extension can Import/Export products and customers from/to CSV file. Create categories, add attribute options, reindex, refresh cache, images and price rules automatically. In addition you can backup the entire database in SQL format.
|
| 516 |
+
|
| 517 |
+
Imports:
|
| 518 |
+
(products, customers)
|
| 519 |
+
file.csv: multiple-row csv files
|
| 520 |
+
(products)
|
| 521 |
+
file.csv1: single-row csv files, with some multivalued fields ("CAT1/CAT2,CAT3","ASSOCIATED1,ASSOCIATED2"...), you can define your own multivalued column names with * prefix ("sku","name","*_category","*_associated_sku"...)
|
| 522 |
+
|
| 523 |
+
Exports:
|
| 524 |
+
(products, customers)
|
| 525 |
+
file.csv: multiple-row new csv files
|
| 526 |
+
(database)
|
| 527 |
+
backup all tables to SQL gz-compressed file
|
| 528 |
|
| 529 |
OPTIONS
|
| 530 |
-h
|
| 553 |
|
| 554 |
-db [file]
|
| 555 |
-databasebackup [file]
|
| 556 |
+
output whole magento database to sql file and try to gzcompress it, if output file not specified uses time generated name
|
| 557 |
|
| 558 |
-e [file]
|
| 559 |
-export [file]
|
| 561 |
|
| 562 |
-i [file]
|
| 563 |
-import [file]
|
| 564 |
+
import products from csv or csv1 file, if source file not specified or not found uses defined in config.xml.
|
| 565 |
|
| 566 |
-f
|
| 567 |
-flushimages
|
package.xml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>AMartinez_CustomImportExport</name>
|
| 4 |
-
<version>1.5.
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://opensource.org/licenses/osl-3.0">OSL v3.0</license>
|
| 7 |
<channel>community</channel>
|
|
@@ -15,7 +15,7 @@ Imports:
|
|
| 15 |
(products, customers)
|
| 16 |
file.csv: multiple-row new csv files
|
| 17 |
(products)
|
| 18 |
-
file.csv1:
|
| 19 |

|
| 20 |
Exports:
|
| 21 |
(products, customers)
|
|
@@ -95,9 +95,9 @@ CREDITS
|
|
| 95 |
</description>
|
| 96 |
<notes>Magento 1.5 version.</notes>
|
| 97 |
<authors><author><name>Antonio Martinez</name><user>amartinez</user><email>toniyecla@gmail.com</email></author></authors>
|
| 98 |
-
<date>2011-05-
|
| 99 |
-
<time>
|
| 100 |
-
<contents><target name="magecommunity"><dir name="AMartinez"><dir name="CustomImportExport"><dir name="Helper"><file name="Data.php" hash="798c6c9b7adc8e5a66c8d00d7d475485"/></dir><dir name="Model"><file name="Backup.php" hash="0e673d6ab8a39f33bd1185b6627fb742"/><file name="Export.php" hash="252ef36d1b5e93e9f38e8d45dd72b030"/><dir name="Import"><dir name="Adapter"><file name="Csv1.php" hash="
|
| 101 |
<compatible/>
|
| 102 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
| 103 |
</package>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>AMartinez_CustomImportExport</name>
|
| 4 |
+
<version>1.5.010</version>
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://opensource.org/licenses/osl-3.0">OSL v3.0</license>
|
| 7 |
<channel>community</channel>
|
| 15 |
(products, customers)
|
| 16 |
file.csv: multiple-row new csv files
|
| 17 |
(products)
|
| 18 |
+
file.csv1: single-row csv files, with some multivalued fields ("CAT1/CAT2,CAT3","ASSOCIATED1,ASSOCIATED2"...), you can define your own multivalued column names with * prefix ("sku","name","*_category","*_associated_sku"...)
|
| 19 |

|
| 20 |
Exports:
|
| 21 |
(products, customers)
|
| 95 |
</description>
|
| 96 |
<notes>Magento 1.5 version.</notes>
|
| 97 |
<authors><author><name>Antonio Martinez</name><user>amartinez</user><email>toniyecla@gmail.com</email></author></authors>
|
| 98 |
+
<date>2011-05-18</date>
|
| 99 |
+
<time>11:16:33</time>
|
| 100 |
+
<contents><target name="magecommunity"><dir name="AMartinez"><dir name="CustomImportExport"><dir name="Helper"><file name="Data.php" hash="798c6c9b7adc8e5a66c8d00d7d475485"/></dir><dir name="Model"><file name="Backup.php" hash="0e673d6ab8a39f33bd1185b6627fb742"/><file name="Export.php" hash="252ef36d1b5e93e9f38e8d45dd72b030"/><dir name="Import"><dir name="Adapter"><file name="Csv1.php" hash="3615d594c083da04af8596b2658ff7a6"/></dir><file name="Adapter.php" hash="b2ddc64699cab599061789ff066faf11"/><dir name="Entity"><dir name="Customer"><file name="Address.php" hash="e06e286e132d4d2ec8548ebc66f257e1"/></dir><file name="Customer.php" hash="555a87242f1a613629c5d14bde5d23b8"/><dir name="Product"><dir name="Type"><file name="Configurable.php" hash="88c4c1db1c38ad8ae5a310ee19c87eee"/><file name="Grouped.php" hash="cfebd1d4520c25776ea02d2f3b980a82"/><file name="Simple.php" hash="a58046af6ab03b3a10f0ae575abf3a27"/></dir></dir><file name="Product.php" hash="4fa62cf9a2206d161f8135cf1908e305"/></dir></dir><file name="Import.php" hash="6d182eb456ea8785d0571f640efbdaac"/></dir><dir name="etc"><file name="config.xml" hash="6a502554a8eeb6e878bfacfc4a339e74"/></dir><dir name="shell"><file name="run.php" hash="3204b4cb9d3f8cbba4652f5791a07e75"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="AMartinez_CustomImportExport.xml" hash="75ba4fbc265d1cf2b6ab61b8f3a3b95e"/></dir></target><target name="mage"><dir name="var"><dir name="customimportexport"><file name="test_configurable.csv" hash="d0447d047ef94f2f65a9fd375348cd39"/><file name="test_grouped.csv" hash="9c76b71b05c8e2b52efae4725f4119a4"/><file name="test_multiple_stores.csv1" hash="72c5977fcac5ce7ae433cf2f4f09c6d2"/><file name="test_single_row_style.csv1" hash="dfcd266cb65ab97e93f9402e4f32bffb"/></dir></dir></target></contents>
|
| 101 |
<compatible/>
|
| 102 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
| 103 |
</package>
|
var/customimportexport/test_multiple_stores.csv1
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"sku","_product_websites","_store","_type","visibility","_attribute_set","tipo_articulo","status","is_in_stock","qty","size","price","weight","tax_class_id","image","small_image","thumbnail","news_from_date","delivery_date","_category","name","short_description","description","_associated_sku"
|
| 2 |
+
"1443-S2-34","base","","simple","1","Default","Shoes","1","1","50","34","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (34) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 3 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (34) -- AVAILABLE ON: 80 days custom made","",,""
|
| 4 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (34) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 5 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (34) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 6 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (34) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 7 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (34) -- AVAILABLE ON: 80 days custom made","",,""
|
| 8 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (34) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 9 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (34) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 10 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (34) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 11 |
+
"1443-S2-35","base","","simple","1","Default","Shoes","1","1","50","35","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (35) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 12 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (35) -- AVAILABLE ON: 80 days custom made","",,""
|
| 13 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (35) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 14 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (35) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 15 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (35) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 16 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (35) -- AVAILABLE ON: 80 days custom made","",,""
|
| 17 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (35) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 18 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (35) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 19 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (35) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 20 |
+
"1443-S2-36","base","","simple","1","Default","Shoes","1","1","50","36","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (36) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 21 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (36) -- AVAILABLE ON: 80 days custom made","",,""
|
| 22 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (36) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 23 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (36) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 24 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (36) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 25 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (36) -- AVAILABLE ON: 80 days custom made","",,""
|
| 26 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (36) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 27 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (36) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 28 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (36) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 29 |
+
"1443-S2-37","base","","simple","1","Default","Shoes","1","1","50","37","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (37) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 30 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (37) -- AVAILABLE ON: 80 days custom made","",,""
|
| 31 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (37) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 32 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (37) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 33 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (37) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 34 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (37) -- AVAILABLE ON: 80 days custom made","",,""
|
| 35 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (37) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 36 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (37) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 37 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (37) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 38 |
+
"1443-S2-38","base","","simple","1","Default","Shoes","1","1","50","38","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (38) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 39 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (38) -- AVAILABLE ON: 80 days custom made","",,""
|
| 40 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (38) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 41 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (38) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 42 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (38) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 43 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (38) -- AVAILABLE ON: 80 days custom made","",,""
|
| 44 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (38) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 45 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (38) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 46 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (38) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 47 |
+
"1443-S2-39","base","","simple","1","Default","Shoes","1","1","50","39","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (39) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 48 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (39) -- AVAILABLE ON: 80 days custom made","",,""
|
| 49 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (39) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 50 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (39) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 51 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (39) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 52 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (39) -- AVAILABLE ON: 80 days custom made","",,""
|
| 53 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (39) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 54 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (39) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 55 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (39) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 56 |
+
"1443-S2-40","base","","simple","1","Default","Shoes","1","1","50","40","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (40) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 57 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (40) -- AVAILABLE ON: 80 days custom made","",,""
|
| 58 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (40) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 59 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (40) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 60 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (40) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 61 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (40) -- AVAILABLE ON: 80 days custom made","",,""
|
| 62 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (40) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 63 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (40) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 64 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (40) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 65 |
+
"1443-S2-41","base","","simple","1","Default","Shoes","1","1","50","41","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (41) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 66 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (41) -- AVAILABLE ON: 80 days custom made","",,""
|
| 67 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (41) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 68 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (41) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 69 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (41) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 70 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (41) -- AVAILABLE ON: 80 days custom made","",,""
|
| 71 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (41) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 72 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (41) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 73 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (41) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 74 |
+
"1443-S2-42","base","","simple","1","Default","Shoes","1","1","50","42","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (42) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 75 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (42) -- AVAILABLE ON: 80 days custom made","",,""
|
| 76 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (42) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 77 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (42) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 78 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (42) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 79 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (42) -- AVAILABLE ON: 80 days custom made","",,""
|
| 80 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (42) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 81 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (42) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 82 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (42) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 83 |
+
"1443-S2-43","base","","simple","1","Default","Shoes","1","1","50","43","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (43) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 84 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (43) -- AVAILABLE ON: 80 days custom made","",,""
|
| 85 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (43) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 86 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (43) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 87 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (43) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 88 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (43) -- AVAILABLE ON: 80 days custom made","",,""
|
| 89 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (43) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 90 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (43) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 91 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (43) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 92 |
+
"1443-S2-44","base","","simple","1","Default","Shoes","1","1","50","44","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (44) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 93 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (44) -- AVAILABLE ON: 80 days custom made","",,""
|
| 94 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (44) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 95 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (44) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 96 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (44) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 97 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (44) -- AVAILABLE ON: 80 days custom made","",,""
|
| 98 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (44) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 99 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (44) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 100 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (44) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 101 |
+
"1443-S2-45","base","","simple","1","Default","Shoes","1","1","50","45","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (45) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 102 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (45) -- AVAILABLE ON: 80 days custom made","",,""
|
| 103 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (45) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 104 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (45) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 105 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (45) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 106 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (45) -- AVAILABLE ON: 80 days custom made","",,""
|
| 107 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (45) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 108 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (45) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 109 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (45) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 110 |
+
"1443-S2-46","base","","simple","1","Default","Shoes","1","1","50","46","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (46) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 111 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (46) -- AVAILABLE ON: 80 days custom made","",,""
|
| 112 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (46) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 113 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (46) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 114 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (46) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 115 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (46) -- AVAILABLE ON: 80 days custom made","",,""
|
| 116 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (46) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 117 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (46) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 118 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (46) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 119 |
+
"1443-S2-47","base","","simple","1","Default","Shoes","1","1","50","47","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (47) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 120 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (47) -- AVAILABLE ON: 80 days custom made","",,""
|
| 121 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (47) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 122 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (47) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 123 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (47) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 124 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (47) -- AVAILABLE ON: 80 days custom made","",,""
|
| 125 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (47) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 126 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (47) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 127 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (47) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 128 |
+
"1443-S2-48","base","","simple","1","Default","Shoes","1","1","50","48","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","2011-7-31","COMFORT-LIGHT","1443-S2 (48) -- AVAILABLE ON: 80 days custom made","COMFORT-LIGHT",,""
|
| 129 |
+
"","","default","","1","","","","","","","","","","","","","","","","1443-S2 (48) -- AVAILABLE ON: 80 days custom made","",,""
|
| 130 |
+
"","","cas","","1","","","","","","","","","","","","","","","","1443-S2 (48) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 131 |
+
"","","fra","","1","","","","","","","","","","","","","","","","1443-S2 (48) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 132 |
+
"","","ale","","1","","","","","","","","","","","","","","","","1443-S2 (48) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 133 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","1443-S2 (48) -- AVAILABLE ON: 80 days custom made","",,""
|
| 134 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","1443-S2 (48) -- DISPONIBLE EN: 80 días por encargo","",,""
|
| 135 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","1443-S2 (48) -- DISPONIBLE LE: 80 journées sur mesure","",,""
|
| 136 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","1443-S2 (48) -- VERFÜGBAR AM: 80 tage Maßarbeit","",,""
|
| 137 |
+
"1443-S2","base","","grouped","1","Default","Shoes","1","1","750","","46.30","0.00","2","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","/img_articulos/1443-S2.jpg","2011-5-12","1899-12-31","COMFORT-LIGHT","This example merges csv1 features (categories, associated sku's) with csv style (multi-store site)","COMFORT-LIGHT",,"1443-S2-34,1443-S2-35,1443-S2-36,1443-S2-37,1443-S2-38,1443-S2-39,1443-S2-40,1443-S2-41,1443-S2-42,1443-S2-43,1443-S2-44,1443-S2-45,1443-S2-46,1443-S2-47,1443-S2-48"
|
| 138 |
+
"","","default","","1","","","","","","","","","","","","","","","","confort","",,""
|
| 139 |
+
"","","cas","","1","","","","","","","","","","","","","","","","confort","",,""
|
| 140 |
+
"","","fra","","1","","","","","","","","","","","","","","","","confort","",,""
|
| 141 |
+
"","","ale","","1","","","","","","","","","","","","","","","","confort","",,""
|
| 142 |
+
"","","default_fo","","1","","","","","","","","","","","","","","","","confort","",,""
|
| 143 |
+
"","","cas_fo","","1","","","","","","","","","","","","","","","","confort","",,""
|
| 144 |
+
"","","fra_fo","","1","","","","","","","","","","","","","","","","confort","",,""
|
| 145 |
+
"","","ale_fo","","1","","","","","","","","","","","","","","","","confort","",,""
|
