Version Notes
- general bugfixes
- improved performance for feed export
- added support to use the admin area for order import
Download this release
Release Info
Developer | Magento Core Team |
Extension | Channelpilotsolutions_Channelpilot |
Version | 2.2.5 |
Comparing to | |
See all releases |
Code changes from version 2.2.4.1 to 2.2.5
- app/code/community/Channelpilotsolutions/Channelpilot/Block/Adminhtml/Field/Exportfields.php +2 -0
- app/code/community/Channelpilotsolutions/Channelpilot/Block/Adminhtml/Field/Replacefields.php +3 -2
- app/code/community/Channelpilotsolutions/Channelpilot/Helper/Data.php +0 -7
- app/code/community/Channelpilotsolutions/Channelpilot/Helper/handler/CPExportHandler.php +247 -161
- app/code/community/Channelpilotsolutions/Channelpilot/Helper/handler/CPOrderHandler.php +54 -23
- app/code/community/Channelpilotsolutions/Channelpilot/etc/config.xml +2 -1
- app/code/community/Channelpilotsolutions/Channelpilot/etc/system.xml +10 -56
- app/code/community/Channelpilotsolutions/Channelpilot/sql/channelpilot_setup/mysql4-upgrade-2.2.5-2.2.6.php +60 -0
- app/locale/de_AT/Channelpilotsolutions_Channelpilot.csv +4 -1
- app/locale/de_CH/Channelpilotsolutions_Channelpilot.csv +4 -1
- app/locale/de_DE/Channelpilotsolutions_Channelpilot.csv +4 -1
- app/locale/en_AU/Channelpilotsolutions_Channelpilot.csv +4 -1
- app/locale/en_CA/Channelpilotsolutions_Channelpilot.csv +4 -1
- app/locale/en_GB/Channelpilotsolutions_Channelpilot.csv +4 -1
- app/locale/en_IE/Channelpilotsolutions_Channelpilot.csv +4 -1
- app/locale/en_NZ/Channelpilotsolutions_Channelpilot.csv +4 -1
- app/locale/en_US/Channelpilotsolutions_Channelpilot.csv +4 -1
- package.xml +7 -5
app/code/community/Channelpilotsolutions/Channelpilot/Block/Adminhtml/Field/Exportfields.php
CHANGED
@@ -53,6 +53,8 @@ class Channelpilotsolutions_Channelpilot_Block_Adminhtml_Field_Exportfields exte
|
|
53 |
$attributes[]['attribute_code'] = 'cp_color_attribute_id';
|
54 |
$attributes[]['attribute_code'] = 'type_id';
|
55 |
$attributes[]['attribute_code'] = 'parent_id';
|
|
|
|
|
56 |
asort($attributes);
|
57 |
foreach ($attributes as $attribute) {
|
58 |
if($attribute['attribute_code'] == 'group_price') {
|
53 |
$attributes[]['attribute_code'] = 'cp_color_attribute_id';
|
54 |
$attributes[]['attribute_code'] = 'type_id';
|
55 |
$attributes[]['attribute_code'] = 'parent_id';
|
56 |
+
$attributes[]['attribute_code'] = 'min_sale_qty';
|
57 |
+
$attributes[]['attribute_code'] = 'max_sale_qty';
|
58 |
asort($attributes);
|
59 |
foreach ($attributes as $attribute) {
|
60 |
if($attribute['attribute_code'] == 'group_price') {
|
app/code/community/Channelpilotsolutions/Channelpilot/Block/Adminhtml/Field/Replacefields.php
CHANGED
@@ -49,7 +49,8 @@ class Channelpilotsolutions_Channelpilot_Block_Adminhtml_Field_Replacefields ext
|
|
49 |
$attributes[]['attribute_code'] = 'qty';
|
50 |
$attributes[]['attribute_code'] = 'stock_status';
|
51 |
$attributes[]['attribute_code'] = 'cp_color_attribute_id';
|
52 |
-
|
|
|
53 |
|
54 |
$attributes[]['attribute_code'] = 'categories';
|
55 |
$attributes[]['attribute_code'] = 'cp_image_url';
|
@@ -59,7 +60,7 @@ class Channelpilotsolutions_Channelpilot_Block_Adminhtml_Field_Replacefields ext
|
|
59 |
$attributes[]['attribute_code'] = 'cp_additional_image_3';
|
60 |
asort($attributes);
|
61 |
foreach ($attributes as $attribute) {
|
62 |
-
|
63 |
}
|
64 |
$rendered .= '</select>';
|
65 |
return $rendered;
|
49 |
$attributes[]['attribute_code'] = 'qty';
|
50 |
$attributes[]['attribute_code'] = 'stock_status';
|
51 |
$attributes[]['attribute_code'] = 'cp_color_attribute_id';
|
52 |
+
$attributes[]['attribute_code'] = 'min_sale_qty';
|
53 |
+
$attributes[]['attribute_code'] = 'max_sale_qty';
|
54 |
|
55 |
$attributes[]['attribute_code'] = 'categories';
|
56 |
$attributes[]['attribute_code'] = 'cp_image_url';
|
60 |
$attributes[]['attribute_code'] = 'cp_additional_image_3';
|
61 |
asort($attributes);
|
62 |
foreach ($attributes as $attribute) {
|
63 |
+
$rendered .= '<option value="' . $attribute['attribute_code'] . '">' . $attribute['attribute_code'] . '</option>';
|
64 |
}
|
65 |
$rendered .= '</select>';
|
66 |
return $rendered;
|
app/code/community/Channelpilotsolutions/Channelpilot/Helper/Data.php
CHANGED
@@ -159,13 +159,6 @@ class Channelpilotsolutions_Channelpilot_Helper_Data extends Mage_Core_Helper_Ab
|
|
159 |
$hook = $handler->handle();
|
160 |
break;
|
161 |
|
162 |
-
// Send method + limit + shopId ( + last)
|
163 |
-
case self::GET_EXPORT:
|
164 |
-
$this->checkActivation(array($exportActive), 'export');
|
165 |
-
$handler = new CPExportHandler();
|
166 |
-
$hook = $handler->handle(CPExportHandler::METHOD_JSON);
|
167 |
-
break;
|
168 |
-
|
169 |
// Send method + limit + shopId ( + last)
|
170 |
case self::GET_DEBUG:
|
171 |
$this->checkSignature();
|
159 |
$hook = $handler->handle();
|
160 |
break;
|
161 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
// Send method + limit + shopId ( + last)
|
163 |
case self::GET_DEBUG:
|
164 |
$this->checkSignature();
|
app/code/community/Channelpilotsolutions/Channelpilot/Helper/handler/CPExportHandler.php
CHANGED
@@ -9,32 +9,31 @@ class CPExportHandler extends CPAbstractHandler {
|
|
9 |
|
10 |
private $_storeId;
|
11 |
private $_siteId;
|
|
|
12 |
private $_mediaUrl;
|
13 |
private $_webUrl;
|
14 |
private $_allCat;
|
15 |
-
private $oldCatPath;
|
16 |
private $_limit;
|
17 |
private $_last;
|
18 |
private $_blankProduct;
|
19 |
-
private $_exportMethod;
|
20 |
private $_configurableAttributes = array();
|
21 |
private $_imageBaseUrl;
|
22 |
private $_maxAdditionalImages;
|
23 |
private $_exportFields;
|
24 |
private $_currencyChange;
|
25 |
private $_replaceFields;
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
|
30 |
/**
|
31 |
* Handle status event
|
32 |
*
|
33 |
*/
|
34 |
-
public function handle(
|
|
|
35 |
$limit = Mage::app()->getRequest()->getParam('limit', null);
|
36 |
$store = Mage::app()->getRequest()->getParam('store', null);
|
37 |
-
$this->_exportMethod = $exportMethod;
|
38 |
$this->_limit = $limit;
|
39 |
$this->_last = Mage::app()->getRequest()->getParam('last', null);
|
40 |
try {
|
@@ -45,19 +44,16 @@ class CPExportHandler extends CPAbstractHandler {
|
|
45 |
}
|
46 |
|
47 |
$this->initExport();
|
48 |
-
$productData = $this->_export();
|
49 |
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
return;
|
60 |
-
}
|
61 |
}
|
62 |
|
63 |
/**
|
@@ -66,20 +62,11 @@ class CPExportHandler extends CPAbstractHandler {
|
|
66 |
*/
|
67 |
private function _handleStoreException() {
|
68 |
// The exception thrown by Mage::app()->getStore() has an empty message ...
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
echo $xml->asXML();
|
75 |
-
break;
|
76 |
-
case self::METHOD_JSON:
|
77 |
-
default:
|
78 |
-
$hook = new CPHookResponse();
|
79 |
-
$hook->resultCode = CPResultCodes::SYSTEM_ERROR;
|
80 |
-
$hook->resultMessage = "Error retrieving store.";
|
81 |
-
$hook->writeResponse(self::defaultHeader, json_encode($hook));
|
82 |
-
}
|
83 |
}
|
84 |
|
85 |
/**
|
@@ -92,20 +79,11 @@ class CPExportHandler extends CPAbstractHandler {
|
|
92 |
if ($currencyCode && $currencyCode != '') {
|
93 |
$result = Mage::getModel('directory/currency')->getCurrencyRates(Mage::app()->getBaseCurrencyCode(), $currencyCode);
|
94 |
if(count($result) === 0){
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
echo $xml->asXML();
|
101 |
-
exit();
|
102 |
-
case self::METHOD_JSON:
|
103 |
-
default:
|
104 |
-
$hook = new CPHookResponse();
|
105 |
-
$hook->resultCode = CPResultCodes::SYSTEM_ERROR;
|
106 |
-
$hook->resultMessage = "wrong currency";
|
107 |
-
$hook->writeResponse(self::defaultHeader, json_encode($hook));
|
108 |
-
}
|
109 |
}
|
110 |
$this->_currencyChange = $result[$currencyCode];
|
111 |
}
|
@@ -115,8 +93,6 @@ class CPExportHandler extends CPAbstractHandler {
|
|
115 |
* Initialize the export.
|
116 |
*/
|
117 |
private function initExport() {
|
118 |
-
ini_set('max_execution_time', 7200);
|
119 |
-
|
120 |
// Initialize the admin application
|
121 |
Mage::app('admin');
|
122 |
|
@@ -151,6 +127,7 @@ class CPExportHandler extends CPAbstractHandler {
|
|
151 |
try {
|
152 |
$store = Mage::app()->getStore($this->_storeId);
|
153 |
$this->_siteId = $store->getWebsiteId();
|
|
|
154 |
$this->_webUrl = $store->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
155 |
$this->_mediaUrl = $store->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
|
156 |
} catch (Exception $e) {
|
@@ -170,6 +147,8 @@ class CPExportHandler extends CPAbstractHandler {
|
|
170 |
$this->_maxAdditionalImages = Mage::getStoreConfig('channelpilot_export/channelpilot_productfeed/channelpilot_imagenumber');
|
171 |
$this->_exportFields = unserialize(Mage::getStoreConfig('channelpilot_export/channelpilot_productfeed/channelpilot_exportfields'));
|
172 |
$this->_replaceFields = unserialize(Mage::getStoreConfig('channelpilot_export/channelpilot_productfeed/channelpilot_replacefields'));
|
|
|
|
|
173 |
}
|
174 |
|
175 |
/**
|
@@ -177,7 +156,6 @@ class CPExportHandler extends CPAbstractHandler {
|
|
177 |
*/
|
178 |
public function buildCategoryTree() {
|
179 |
$this->_allCat = array();
|
180 |
-
$this->oldCatPath = '';
|
181 |
|
182 |
$categoryCollection = Mage::getModel('catalog/category')->getCollection()
|
183 |
->addAttributeToSelect('name')
|
@@ -257,6 +235,74 @@ class CPExportHandler extends CPAbstractHandler {
|
|
257 |
return $attributeOptions;
|
258 |
}
|
259 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260 |
/**
|
261 |
* Export the products and return them as array.
|
262 |
* @return array
|
@@ -279,14 +325,43 @@ class CPExportHandler extends CPAbstractHandler {
|
|
279 |
}
|
280 |
|
281 |
/** @var $collection Mage_Catalog_Model_Resource_Product_Collection */
|
282 |
-
$collection = Mage::getModel('catalog/product')->getCollection()
|
283 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
284 |
->joinField('qty',
|
285 |
'cataloginventory/stock_item',
|
286 |
'qty',
|
287 |
'product_id=entity_id',
|
288 |
'{{table}}.stock_id=1',
|
289 |
'left')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
290 |
->addAttributeToSort('type_id')
|
291 |
->setStoreId($this->_storeId);
|
292 |
|
@@ -305,40 +380,17 @@ class CPExportHandler extends CPAbstractHandler {
|
|
305 |
}
|
306 |
}
|
307 |
|
308 |
-
|
309 |
-
|
310 |
-
}
|
311 |
-
|
312 |
-
if($this->_limit) {
|
313 |
-
$collection->setPageSize($this->_limit);
|
314 |
-
}
|
315 |
-
|
316 |
-
/** @var $backendModel Mage_Catalog_Model_Product_Attribute_Backend_Media */
|
317 |
-
$backendModel = $collection->getResource()->getAttribute('media_gallery')->getBackend();
|
318 |
-
|
319 |
-
$onlyStockAndPriceData = (Mage::app()->getRequest()->getParam('priceStock', '') === "true");
|
320 |
-
|
321 |
-
$productData = array();
|
322 |
|
323 |
-
/** @var $
|
324 |
-
|
325 |
-
|
326 |
-
if($onlyStockAndPriceData) {
|
327 |
-
$product = $this->_getOnlyStockAndPriceData($item);
|
328 |
-
} else {
|
329 |
-
$backendModel->afterLoad($item);
|
330 |
-
$product = $this->_getFullProductData($item);
|
331 |
-
}
|
332 |
-
|
333 |
-
$productData[] = $product;
|
334 |
-
}
|
335 |
|
336 |
// stop emulating admin store and set initial environment
|
337 |
if ($flatEnabled) {
|
338 |
$emulationModel->stopEnvironmentEmulation($initialEnvironmentInfo);
|
339 |
}
|
340 |
-
|
341 |
-
return $productData;
|
342 |
}
|
343 |
|
344 |
/**
|
@@ -360,9 +412,7 @@ class CPExportHandler extends CPAbstractHandler {
|
|
360 |
$parentId = null;
|
361 |
if ($item->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_SIMPLE) {
|
362 |
$parentId = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($item->getId());
|
363 |
-
|
364 |
-
$parentId = $parentId[0];
|
365 |
-
}
|
366 |
}
|
367 |
|
368 |
$configurableAttributes = array();
|
@@ -377,8 +427,12 @@ class CPExportHandler extends CPAbstractHandler {
|
|
377 |
// workaround... $item->getProductUrl() sometimes adds store code to url (e.g. <url>?___store=default)
|
378 |
$productUrl = $this->_webUrl . $item->getUrlPath();
|
379 |
$colorText = $item->getAttributeText('color');
|
380 |
-
|
381 |
-
|
|
|
|
|
|
|
|
|
382 |
|
383 |
$product = $this->_blankProduct;
|
384 |
|
@@ -386,8 +440,8 @@ class CPExportHandler extends CPAbstractHandler {
|
|
386 |
$product['sku'] = $item->getSku();
|
387 |
$product['parent_id'] = $parentId;
|
388 |
$product['variationTheme'] = $configurableAttributes;
|
389 |
-
$product['name'] =
|
390 |
-
$product['description'] =
|
391 |
|
392 |
$product['price'] = $price;
|
393 |
if($this->_currencyChange) {
|
@@ -395,31 +449,58 @@ class CPExportHandler extends CPAbstractHandler {
|
|
395 |
}
|
396 |
|
397 |
$product['categories'] = $this->_getCategoryInformation($item);
|
398 |
-
$product['manufacturer'] =
|
399 |
-
$product['manufacturer_name'] =
|
400 |
$product['cp_product_url'] = $productUrl;
|
401 |
$product['cp_image_url'] = $imageUrl;
|
402 |
-
$product['color'] = ($colorText) ?
|
403 |
$product['weight'] = $item->getWeight();
|
404 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
405 |
$counter = 1;
|
406 |
-
|
|
|
407 |
// break if the maximum amount of additional images has been reached
|
408 |
if ($counter > $this->_maxAdditionalImages) {
|
409 |
break;
|
410 |
}
|
411 |
|
412 |
// ignore the base image; it has already been added
|
413 |
-
if ($image->getFile() == $
|
414 |
continue;
|
415 |
}
|
416 |
|
417 |
-
$
|
418 |
$counter++;
|
419 |
}
|
420 |
|
421 |
-
|
|
|
422 |
|
|
|
|
|
|
|
|
|
|
|
|
|
423 |
foreach($this->_exportFields as $field) {
|
424 |
$code = $field['productattribute'];
|
425 |
if(strpos($code, 'group_price') !== false) {
|
@@ -429,27 +510,40 @@ class CPExportHandler extends CPAbstractHandler {
|
|
429 |
$product['group_price_'.$groupCode] = $item->getData('group_price_'.$customerGroup->getId());
|
430 |
} else {
|
431 |
switch($code) {
|
|
|
|
|
|
|
432 |
case 'qty':
|
433 |
$product[$code] = $item->getQty();
|
434 |
break;
|
435 |
case 'stock_status':
|
436 |
-
$product[$code] = $item->
|
437 |
break;
|
|
|
|
|
438 |
case 'tax_class_id':
|
439 |
$product[$code] = $item->getData($code);
|
440 |
break;
|
441 |
default:
|
442 |
-
$attributeText = $item->getAttributeText($code);
|
443 |
if(is_array($attributeText)) {
|
444 |
$attributeText = implode(',',$attributeText);
|
445 |
}
|
446 |
-
$product[$code] = ($attributeText) ?
|
447 |
}
|
448 |
}
|
449 |
}
|
|
|
450 |
|
451 |
-
|
452 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
453 |
foreach($this->_replaceFields as $field) {
|
454 |
$code = $field['productattribute'];
|
455 |
if(strpos($code, 'group_price') !== false) {
|
@@ -462,29 +556,44 @@ class CPExportHandler extends CPAbstractHandler {
|
|
462 |
$product['group_price_'.$groupCode] = $groupPrice['price'];
|
463 |
}
|
464 |
}
|
|
|
|
|
465 |
} else {
|
466 |
switch($code) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
467 |
case 'qty':
|
468 |
-
$product[$code] = $parent->getStockItem->getQty();
|
469 |
break;
|
470 |
case 'stock_status':
|
471 |
$product[$code] = $parent->getStockItem()->getIsInStock();
|
472 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
473 |
case 'tax_class_id':
|
474 |
$product[$code] = $parent->getData($code);
|
475 |
break;
|
476 |
default:
|
477 |
-
$attributeText = $parent->getAttributeText($code);
|
478 |
if(is_array($attributeText)) {
|
479 |
$attributeText = implode(',',$attributeText);
|
480 |
}
|
481 |
-
$product[$code] = ($attributeText) ?
|
482 |
}
|
483 |
}
|
484 |
}
|
485 |
}
|
486 |
-
|
487 |
-
return $product;
|
488 |
}
|
489 |
|
490 |
/**
|
@@ -511,23 +620,6 @@ class CPExportHandler extends CPAbstractHandler {
|
|
511 |
return $product;
|
512 |
}
|
513 |
|
514 |
-
/**
|
515 |
-
* Creates and shows an XML based on the values of the $productData array created by the export method.
|
516 |
-
* Sends a Content-Type header.
|
517 |
-
* @param array $productData
|
518 |
-
*/
|
519 |
-
private function _toXml(array $productData) {
|
520 |
-
$xml = new SimpleXMLElement('<root></root>');
|
521 |
-
$xmlCatalog = $xml->addChild('catalog');
|
522 |
-
foreach($productData as $product) {
|
523 |
-
$xmlProduct = $xmlCatalog->addChild('product');
|
524 |
-
$this->_productToXml($product, $xmlProduct);
|
525 |
-
}
|
526 |
-
header('Content-Type: text/xml; charset=utf-8');
|
527 |
-
echo $xml->asXML();
|
528 |
-
exit();
|
529 |
-
}
|
530 |
-
|
531 |
/**
|
532 |
* Adds the values of the $product array to the $xml structure.
|
533 |
* @param array $product
|
@@ -544,59 +636,53 @@ class CPExportHandler extends CPAbstractHandler {
|
|
544 |
}
|
545 |
}
|
546 |
|
547 |
-
/**
|
548 |
-
* Shows the content of $productData as JSON.
|
549 |
-
* @param array $productData
|
550 |
-
*/
|
551 |
-
private function _toJson(array $productData) {
|
552 |
-
$hook = new CPHookResponse();
|
553 |
-
$hook->resultCode = CPResultCodes::SUCCESS;
|
554 |
-
$hook->products = $productData;
|
555 |
-
$hook->resultMessage = "ProductData of " . sizeof($hook->products) . " articles";
|
556 |
-
$hook->moreAvailable = true;
|
557 |
-
if (sizeof($hook->products) < $this->_limit) {
|
558 |
-
$hook->moreAvailable = false;
|
559 |
-
}
|
560 |
-
$hook->writeResponse(self::defaultHeader, json_encode($hook));
|
561 |
-
}
|
562 |
-
|
563 |
/**
|
564 |
* Get the category information for a product.
|
565 |
* @param Mage_Catalog_Model_Product $product
|
566 |
* @return string
|
567 |
*/
|
568 |
private function _getCategoryInformation(Mage_Catalog_Model_Product $product) {
|
569 |
-
$
|
570 |
-
$this->oldCatPath = '';
|
571 |
|
572 |
/** @var $category Mage_Catalog_Model_Category */
|
573 |
foreach($product->getCategoryCollection() as $category) {
|
574 |
-
|
575 |
-
// Start tree
|
576 |
-
if ($this->oldCatPath != '') {
|
577 |
-
if ($categorieField != '') {
|
578 |
-
$categorieField = $categorieField . ', ' . $this->_allCat[$this->oldCatPath];
|
579 |
-
} else {
|
580 |
-
$categorieField = $this->_allCat[$this->oldCatPath];
|
581 |
-
}
|
582 |
-
}
|
583 |
-
$this->oldCatPath = $category->getPath();
|
584 |
-
} else {
|
585 |
-
// Add to tree
|
586 |
-
$this->oldCatPath = $category->getPath();
|
587 |
-
}
|
588 |
-
|
589 |
}
|
590 |
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
597 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
598 |
|
599 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
600 |
}
|
601 |
}
|
602 |
|
9 |
|
10 |
private $_storeId;
|
11 |
private $_siteId;
|
12 |
+
private $_customerGroupId;
|
13 |
private $_mediaUrl;
|
14 |
private $_webUrl;
|
15 |
private $_allCat;
|
|
|
16 |
private $_limit;
|
17 |
private $_last;
|
18 |
private $_blankProduct;
|
|
|
19 |
private $_configurableAttributes = array();
|
20 |
private $_imageBaseUrl;
|
21 |
private $_maxAdditionalImages;
|
22 |
private $_exportFields;
|
23 |
private $_currencyChange;
|
24 |
private $_replaceFields;
|
25 |
+
private $_parents;
|
26 |
+
private $_onlyStockAndPriceData;
|
27 |
+
private $_backendModel;
|
28 |
|
29 |
/**
|
30 |
* Handle status event
|
31 |
*
|
32 |
*/
|
33 |
+
public function handle() {
|
34 |
+
ini_set('max_execution_time', 7200);
|
35 |
$limit = Mage::app()->getRequest()->getParam('limit', null);
|
36 |
$store = Mage::app()->getRequest()->getParam('store', null);
|
|
|
37 |
$this->_limit = $limit;
|
38 |
$this->_last = Mage::app()->getRequest()->getParam('last', null);
|
39 |
try {
|
44 |
}
|
45 |
|
46 |
$this->initExport();
|
|
|
47 |
|
48 |
+
// start the xml output right now to output the exported products as soon as
|
49 |
+
// each product has been processed
|
50 |
+
header('Content-Type: text/xml; charset=utf-8');
|
51 |
+
echo '<?xml version="1.0"?>';
|
52 |
+
echo '<root><catalog>';
|
53 |
+
|
54 |
+
$this->_export();
|
55 |
+
|
56 |
+
echo "</catalog></root>";
|
|
|
|
|
57 |
}
|
58 |
|
59 |
/**
|
62 |
*/
|
63 |
private function _handleStoreException() {
|
64 |
// The exception thrown by Mage::app()->getStore() has an empty message ...
|
65 |
+
$xml = new SimpleXMLElement('<root></root>');
|
66 |
+
$xml->addChild('error', 'Error retrieving store.');
|
67 |
+
header('Content-Type: text/xml; charset=utf-8');
|
68 |
+
echo $xml->asXML();
|
69 |
+
exit();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
}
|
71 |
|
72 |
/**
|
79 |
if ($currencyCode && $currencyCode != '') {
|
80 |
$result = Mage::getModel('directory/currency')->getCurrencyRates(Mage::app()->getBaseCurrencyCode(), $currencyCode);
|
81 |
if(count($result) === 0){
|
82 |
+
$xml = new SimpleXMLElement('<root></root>');
|
83 |
+
$xml->addChild('error', 'wrong currency');
|
84 |
+
header('Content-Type: text/xml; charset=utf-8');
|
85 |
+
echo $xml->asXML();
|
86 |
+
exit();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
}
|
88 |
$this->_currencyChange = $result[$currencyCode];
|
89 |
}
|
93 |
* Initialize the export.
|
94 |
*/
|
95 |
private function initExport() {
|
|
|
|
|
96 |
// Initialize the admin application
|
97 |
Mage::app('admin');
|
98 |
|
127 |
try {
|
128 |
$store = Mage::app()->getStore($this->_storeId);
|
129 |
$this->_siteId = $store->getWebsiteId();
|
130 |
+
$this->_customerGroupId = Mage_Customer_Model_Group::NOT_LOGGED_IN_ID;
|
131 |
$this->_webUrl = $store->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
132 |
$this->_mediaUrl = $store->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
|
133 |
} catch (Exception $e) {
|
147 |
$this->_maxAdditionalImages = Mage::getStoreConfig('channelpilot_export/channelpilot_productfeed/channelpilot_imagenumber');
|
148 |
$this->_exportFields = unserialize(Mage::getStoreConfig('channelpilot_export/channelpilot_productfeed/channelpilot_exportfields'));
|
149 |
$this->_replaceFields = unserialize(Mage::getStoreConfig('channelpilot_export/channelpilot_productfeed/channelpilot_replacefields'));
|
150 |
+
|
151 |
+
$this->_parents = array();
|
152 |
}
|
153 |
|
154 |
/**
|
156 |
*/
|
157 |
public function buildCategoryTree() {
|
158 |
$this->_allCat = array();
|
|
|
159 |
|
160 |
$categoryCollection = Mage::getModel('catalog/category')->getCollection()
|
161 |
->addAttributeToSelect('name')
|
235 |
return $attributeOptions;
|
236 |
}
|
237 |
|
238 |
+
/**
|
239 |
+
* Callback function used for the collection iterator.
|
240 |
+
* The function receives an array containing the fetched row from the database.
|
241 |
+
* Saves the product to export in the _productData array.
|
242 |
+
* @param $args array
|
243 |
+
*/
|
244 |
+
public function productCallback($args)
|
245 |
+
{
|
246 |
+
$product = Mage::getModel('catalog/product');
|
247 |
+
$product->setData($args['row']);
|
248 |
+
|
249 |
+
if($this->_onlyStockAndPriceData) {
|
250 |
+
$result = $this->_getOnlyStockAndPriceData($product);
|
251 |
+
} else {
|
252 |
+
$this->_backendModel->afterLoad($product);
|
253 |
+
$result = $this->_getFullProductData($product);
|
254 |
+
}
|
255 |
+
|
256 |
+
// instead of saving the result and creating the complete xml later,
|
257 |
+
// the xml for the product is created and echoed right now to improve time and memory usage
|
258 |
+
$productXml = new SimpleXMLElement('<product></product>');
|
259 |
+
$this->_productToXml($result, $productXml);
|
260 |
+
$dom = dom_import_simplexml($productXml);
|
261 |
+
echo $dom->ownerDocument->saveXML($dom->ownerDocument->documentElement);
|
262 |
+
}
|
263 |
+
|
264 |
+
/**
|
265 |
+
* Get all attributes that need to be selected from the database.
|
266 |
+
* @param $attributes array
|
267 |
+
* @return array
|
268 |
+
*/
|
269 |
+
private function _getAttributesForSelect($attributes) {
|
270 |
+
$attributesToSelect = array(
|
271 |
+
'entity_id',
|
272 |
+
'sku',
|
273 |
+
'name',
|
274 |
+
'description',
|
275 |
+
'price',
|
276 |
+
'manufacturer',
|
277 |
+
'color',
|
278 |
+
'weight',
|
279 |
+
'media_gallery',
|
280 |
+
'url_key',
|
281 |
+
'url_path',
|
282 |
+
'image',
|
283 |
+
'type_id'
|
284 |
+
);
|
285 |
+
|
286 |
+
$attributeCodes = array();
|
287 |
+
|
288 |
+
// save all available attribute codes
|
289 |
+
foreach($attributes as $code => $attribute) {
|
290 |
+
$attributeCodes[] = $code;
|
291 |
+
}
|
292 |
+
|
293 |
+
// add all attributes from the config if the attribute is a Magento attribute and it has
|
294 |
+
// not already been added to the $attributesToSelect array
|
295 |
+
foreach($this->_exportFields as $field) {
|
296 |
+
$attrCode = $field['productattribute'];
|
297 |
+
if(in_array($attrCode, $attributeCodes) && !in_array($attrCode, $attributesToSelect)) {
|
298 |
+
$attributesToSelect[] = $attrCode;
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
return $attributesToSelect;
|
303 |
+
|
304 |
+
}
|
305 |
+
|
306 |
/**
|
307 |
* Export the products and return them as array.
|
308 |
* @return array
|
325 |
}
|
326 |
|
327 |
/** @var $collection Mage_Catalog_Model_Resource_Product_Collection */
|
328 |
+
$collection = Mage::getModel('catalog/product')->getCollection();
|
329 |
+
$attributes = $collection->getEntity()->loadAllAttributes()->getAttributesByCode();
|
330 |
+
|
331 |
+
// only use the needed attributes instead of every available
|
332 |
+
$attributeCodes = $this->_getAttributesForSelect($attributes);
|
333 |
+
|
334 |
+
// addPriceData uses inner join to get the price data for a website_id and a customer_group id
|
335 |
+
// so all products that are not associated to $this->_siteId and the customerGroupId (NOT LOGGED IN (0) by default)
|
336 |
+
// are not included in this collection.
|
337 |
+
// addPriceData is needed for getting the minimal price for bundels
|
338 |
+
$collection
|
339 |
+
->addAttributeToSelect($attributeCodes, 'left')
|
340 |
+
->addPriceData($this->_customerGroupId, $this->_siteId)
|
341 |
->joinField('qty',
|
342 |
'cataloginventory/stock_item',
|
343 |
'qty',
|
344 |
'product_id=entity_id',
|
345 |
'{{table}}.stock_id=1',
|
346 |
'left')
|
347 |
+
->joinField('min_sale_qty',
|
348 |
+
'cataloginventory/stock_item',
|
349 |
+
'min_sale_qty',
|
350 |
+
'product_id=entity_id',
|
351 |
+
'{{table}}.stock_id=1',
|
352 |
+
'left')
|
353 |
+
->joinField('max_sale_qty',
|
354 |
+
'cataloginventory/stock_item',
|
355 |
+
'max_sale_qty',
|
356 |
+
'product_id=entity_id',
|
357 |
+
'{{table}}.stock_id=1',
|
358 |
+
'left')
|
359 |
+
->joinField('is_in_stock',
|
360 |
+
'cataloginventory/stock_item',
|
361 |
+
'is_in_stock',
|
362 |
+
'product_id=entity_id',
|
363 |
+
'{{table}}.stock_id=1',
|
364 |
+
'left')
|
365 |
->addAttributeToSort('type_id')
|
366 |
->setStoreId($this->_storeId);
|
367 |
|
380 |
}
|
381 |
}
|
382 |
|
383 |
+
$this->_backendModel = $collection->getResource()->getAttribute('media_gallery')->getBackend();
|
384 |
+
$this->_onlyStockAndPriceData = (Mage::app()->getRequest()->getParam('priceStock', '') === "true");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
385 |
|
386 |
+
/** @var $iterator Mage_Core_Model_Resource_Iterator */
|
387 |
+
$iterator = Mage::getSingleton('core/resource_iterator');
|
388 |
+
$iterator->walk($collection->getSelect(), array(array($this, 'productCallback')));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
389 |
|
390 |
// stop emulating admin store and set initial environment
|
391 |
if ($flatEnabled) {
|
392 |
$emulationModel->stopEnvironmentEmulation($initialEnvironmentInfo);
|
393 |
}
|
|
|
|
|
394 |
}
|
395 |
|
396 |
/**
|
412 |
$parentId = null;
|
413 |
if ($item->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_SIMPLE) {
|
414 |
$parentId = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($item->getId());
|
415 |
+
$parentId = (is_array($parentId) && !empty($parentId)) ? $parentId[0] : null;
|
|
|
|
|
416 |
}
|
417 |
|
418 |
$configurableAttributes = array();
|
427 |
// workaround... $item->getProductUrl() sometimes adds store code to url (e.g. <url>?___store=default)
|
428 |
$productUrl = $this->_webUrl . $item->getUrlPath();
|
429 |
$colorText = $item->getAttributeText('color');
|
430 |
+
|
431 |
+
// set the value to the minimal price if the current product is a bundle, otherwise the product's price
|
432 |
+
$calcPrice = ($item->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_BUNDLE) ? Mage::getModel('bundle/product_price')->getTotalPrices($item, 'min', true, false) : $item->getPrice();
|
433 |
+
|
434 |
+
$rulePrice = Mage::getModel('catalogrule/rule')->calcProductPriceRule($item->setStoreId($this->_storeId),$calcPrice);
|
435 |
+
$price = ($rulePrice) ? $rulePrice : $calcPrice;
|
436 |
|
437 |
$product = $this->_blankProduct;
|
438 |
|
440 |
$product['sku'] = $item->getSku();
|
441 |
$product['parent_id'] = $parentId;
|
442 |
$product['variationTheme'] = $configurableAttributes;
|
443 |
+
$product['name'] = $this->_getCleanedStringForXml($item->getName());
|
444 |
+
$product['description'] = $this->_getCleanedStringForXml($item->getDescription());
|
445 |
|
446 |
$product['price'] = $price;
|
447 |
if($this->_currencyChange) {
|
449 |
}
|
450 |
|
451 |
$product['categories'] = $this->_getCategoryInformation($item);
|
452 |
+
$product['manufacturer'] = $this->_getCleanedStringForXml($item->getManufacturer());
|
453 |
+
$product['manufacturer_name'] = $this->_getCleanedStringForXml($item->getAttributeText('manufacturer'));
|
454 |
$product['cp_product_url'] = $productUrl;
|
455 |
$product['cp_image_url'] = $imageUrl;
|
456 |
+
$product['color'] = ($colorText) ? $this->_getCleanedStringForXml($colorText) : null;
|
457 |
$product['weight'] = $item->getWeight();
|
458 |
|
459 |
+
$product = array_merge($product, $this->_getAdditionalImages($item));
|
460 |
+
|
461 |
+
$product['is_parent'] = $isParent;
|
462 |
+
|
463 |
+
$this->_addExportFields($product, $item);
|
464 |
+
|
465 |
+
if(!empty($this->_replaceFields) && !$isParent && $parentId !== null) {
|
466 |
+
$this->_replaceFields($product, $parentId);
|
467 |
+
}
|
468 |
+
|
469 |
+
return $product;
|
470 |
+
}
|
471 |
+
|
472 |
+
/**
|
473 |
+
* Get the additional images for a product
|
474 |
+
* @param Mage_Catalog_Model_Product $product
|
475 |
+
* @return array
|
476 |
+
*/
|
477 |
+
private function _getAdditionalImages(Mage_Catalog_Model_Product $product) {
|
478 |
$counter = 1;
|
479 |
+
$productData = array();
|
480 |
+
foreach ($product->getMediaGalleryImages() as $image) {
|
481 |
// break if the maximum amount of additional images has been reached
|
482 |
if ($counter > $this->_maxAdditionalImages) {
|
483 |
break;
|
484 |
}
|
485 |
|
486 |
// ignore the base image; it has already been added
|
487 |
+
if ($image->getFile() == $product->getImage()) {
|
488 |
continue;
|
489 |
}
|
490 |
|
491 |
+
$productData['cp_additional_image_' . $counter] = $this->_imageBaseUrl . $image->getFile();
|
492 |
$counter++;
|
493 |
}
|
494 |
|
495 |
+
return $productData;
|
496 |
+
}
|
497 |
|
498 |
+
/**
|
499 |
+
* Add all fields to a product that need to be exported
|
500 |
+
* @param $product
|
501 |
+
* @param Mage_Catalog_Model_Product $item
|
502 |
+
*/
|
503 |
+
private function _addExportFields(&$product, Mage_Catalog_Model_Product $item) {
|
504 |
foreach($this->_exportFields as $field) {
|
505 |
$code = $field['productattribute'];
|
506 |
if(strpos($code, 'group_price') !== false) {
|
510 |
$product['group_price_'.$groupCode] = $item->getData('group_price_'.$customerGroup->getId());
|
511 |
} else {
|
512 |
switch($code) {
|
513 |
+
// ignore
|
514 |
+
case 'parent_id':
|
515 |
+
break;
|
516 |
case 'qty':
|
517 |
$product[$code] = $item->getQty();
|
518 |
break;
|
519 |
case 'stock_status':
|
520 |
+
$product[$code] = $item->getIsInStock();
|
521 |
break;
|
522 |
+
case 'min_sale_qty':
|
523 |
+
case 'max_sale_qty':
|
524 |
case 'tax_class_id':
|
525 |
$product[$code] = $item->getData($code);
|
526 |
break;
|
527 |
default:
|
528 |
+
$attributeText = ($item->getResource()->getAttribute($code)) ? $item->getAttributeText($code) : false;
|
529 |
if(is_array($attributeText)) {
|
530 |
$attributeText = implode(',',$attributeText);
|
531 |
}
|
532 |
+
$product[$code] = ($attributeText) ? $this->_getCleanedStringForXml($attributeText) : $this->_getCleanedStringForXml($item->getData($code));
|
533 |
}
|
534 |
}
|
535 |
}
|
536 |
+
}
|
537 |
|
538 |
+
/**
|
539 |
+
* Replace all selected fields with the parent's values.
|
540 |
+
* @param $product
|
541 |
+
* @param $parentId
|
542 |
+
*/
|
543 |
+
private function _replaceFields(&$product, $parentId) {
|
544 |
+
$parent = $this->_getParentById($parentId);
|
545 |
+
if($parent !== null && $parent->getId()) {
|
546 |
+
$parentImages = $this->_getAdditionalImages($parent);
|
547 |
foreach($this->_replaceFields as $field) {
|
548 |
$code = $field['productattribute'];
|
549 |
if(strpos($code, 'group_price') !== false) {
|
556 |
$product['group_price_'.$groupCode] = $groupPrice['price'];
|
557 |
}
|
558 |
}
|
559 |
+
} else if(strpos($code, 'cp_additional_image') !== false && isset($parentImages[$code])) {
|
560 |
+
$product[$code] = $parentImages[$code];
|
561 |
} else {
|
562 |
switch($code) {
|
563 |
+
case 'categories':
|
564 |
+
$product['categories'] = $this->_getCategoryInformation($parent);
|
565 |
+
break;
|
566 |
+
case 'cp_product_url':
|
567 |
+
$product[$code] = $this->_webUrl . $parent->getUrlPath();
|
568 |
+
break;
|
569 |
+
case 'cp_image_url':
|
570 |
+
$product[$code] = $this->_imageBaseUrl . $parent->getImage();
|
571 |
+
break;
|
572 |
case 'qty':
|
573 |
+
$product[$code] = $parent->getStockItem()->getQty();
|
574 |
break;
|
575 |
case 'stock_status':
|
576 |
$product[$code] = $parent->getStockItem()->getIsInStock();
|
577 |
break;
|
578 |
+
case 'min_sale_qty':
|
579 |
+
$product[$code] = $parent->getStockItem()->getMinSaleQty();
|
580 |
+
break;
|
581 |
+
case 'max_sale_qty':
|
582 |
+
$product[$code] = $parent->getStockItem()->getMaxSaleQty();
|
583 |
+
break;
|
584 |
case 'tax_class_id':
|
585 |
$product[$code] = $parent->getData($code);
|
586 |
break;
|
587 |
default:
|
588 |
+
$attributeText = ($parent->getResource()->getAttribute($code)) ? $parent->getAttributeText($code) : false;
|
589 |
if(is_array($attributeText)) {
|
590 |
$attributeText = implode(',',$attributeText);
|
591 |
}
|
592 |
+
$product[$code] = ($attributeText) ? $this->_getCleanedStringForXml($attributeText) : $this->_getCleanedStringForXml($parent->getData($code));
|
593 |
}
|
594 |
}
|
595 |
}
|
596 |
}
|
|
|
|
|
597 |
}
|
598 |
|
599 |
/**
|
620 |
return $product;
|
621 |
}
|
622 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
623 |
/**
|
624 |
* Adds the values of the $product array to the $xml structure.
|
625 |
* @param array $product
|
636 |
}
|
637 |
}
|
638 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
639 |
/**
|
640 |
* Get the category information for a product.
|
641 |
* @param Mage_Catalog_Model_Product $product
|
642 |
* @return string
|
643 |
*/
|
644 |
private function _getCategoryInformation(Mage_Catalog_Model_Product $product) {
|
645 |
+
$arrPath = array();
|
|
|
646 |
|
647 |
/** @var $category Mage_Catalog_Model_Category */
|
648 |
foreach($product->getCategoryCollection() as $category) {
|
649 |
+
$arrPath[] = $this->_allCat[$category->getPath()];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
650 |
}
|
651 |
|
652 |
+
return ltrim(implode(',', $arrPath), '>');
|
653 |
+
}
|
654 |
+
|
655 |
+
/**
|
656 |
+
* Get a product by its id. Save the loaded product to an array to cache it.
|
657 |
+
* It is used for parent products only so these products do not need to be loaded by each
|
658 |
+
* of its child products.
|
659 |
+
* @param $parentId
|
660 |
+
* @return mixed
|
661 |
+
*/
|
662 |
+
private function _getParentById($parentId) {
|
663 |
+
if(!isset($this->_parents[$parentId])) {
|
664 |
+
$parent = Mage::getModel('catalog/product')->load($parentId);
|
665 |
+
$this->_parents[$parentId] = ($parent->getId()) ? $parent : null;
|
666 |
}
|
667 |
+
return $this->_parents[$parentId];
|
668 |
+
}
|
669 |
+
|
670 |
+
/**
|
671 |
+
* Clean a string for usage in XML.
|
672 |
+
* @param $string
|
673 |
+
* @return mixed
|
674 |
+
*/
|
675 |
+
private function _getCleanedStringForXml($string) {
|
676 |
+
return $this->_utf8ForXml(html_entity_decode($string));
|
677 |
+
}
|
678 |
|
679 |
+
/**
|
680 |
+
* Replace all UTF-8 characters that are not allowed in XML with a space.
|
681 |
+
* @param $string
|
682 |
+
* @return mixed
|
683 |
+
*/
|
684 |
+
private function _utf8ForXml($string) {
|
685 |
+
return preg_replace ('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $string);
|
686 |
}
|
687 |
}
|
688 |
|
app/code/community/Channelpilotsolutions/Channelpilot/Helper/handler/CPOrderHandler.php
CHANGED
@@ -86,10 +86,21 @@ class CPOrderHandler extends CPAbstractHandler {
|
|
86 |
|
87 |
private function _getQuote($apiOrder) {
|
88 |
try {
|
89 |
-
$
|
|
|
|
|
90 |
$customer = self::getCustomer($apiOrder);
|
91 |
$quote->assignCustomer($customer);
|
92 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
foreach ($apiOrder->itemsOrdered as $orderItem) {
|
94 |
$product = $this->getProduct($orderItem->article->id);
|
95 |
if ($product == null) {
|
@@ -129,6 +140,10 @@ class CPOrderHandler extends CPAbstractHandler {
|
|
129 |
|
130 |
$quote->collectTotals()->save();
|
131 |
|
|
|
|
|
|
|
|
|
132 |
return $quote;
|
133 |
} catch(Exception $e) {
|
134 |
CPErrorHandler::logError("Exception during _getQuote: " . $e->getMessage() . "\n" . $e->getTraceAsString());
|
@@ -247,19 +262,22 @@ class CPOrderHandler extends CPAbstractHandler {
|
|
247 |
foreach ($apiOrder->itemsOrdered as $orderItem) {
|
248 |
if ($orderItem->article->id == $item->getSku() || $orderItem->article->id == $item->getProductId()) {
|
249 |
$item->setPrice($orderItem->costsSingle->net);
|
250 |
-
$item->setCustomPrice($orderItem->costsSingle->net);
|
251 |
$item->setBasePrice($orderItem->costsSingle->net);
|
252 |
-
$item->
|
253 |
-
$item->
|
254 |
-
|
|
|
|
|
|
|
255 |
$item->setTaxPercent($orderItem->costsTotal->taxRate);
|
|
|
|
|
|
|
256 |
$item->setRowTotal($orderItem->costsTotal->net);
|
257 |
-
$item->setRowTotalInclTax($orderItem->costsTotal->gross);
|
258 |
-
$item->setPriceInclTax($orderItem->costsSingle->gross);
|
259 |
-
$item->setBaseOriginalPrice($orderItem->costsSingle->net);
|
260 |
$item->setBaseRowTotal($orderItem->costsTotal->net);
|
261 |
-
$item->
|
262 |
$item->setBaseRowTotalInclTax($orderItem->costsTotal->gross);
|
|
|
263 |
$item->save();
|
264 |
$orderItem->id = $item->getId();
|
265 |
$orderItemsResponse[] = $orderItem;
|
@@ -292,7 +310,7 @@ class CPOrderHandler extends CPAbstractHandler {
|
|
292 |
->addFieldToFilter('order_id', array('eq' => $order->getId()));
|
293 |
$collection->walk('delete');
|
294 |
$marketplaceOrder = Mage::getModel('channelpilot/order')->load($order->getId());
|
295 |
-
|
296 |
Mage::register('isSecureArea', true);
|
297 |
Mage::app('admin');
|
298 |
$order->delete();
|
@@ -303,17 +321,28 @@ class CPOrderHandler extends CPAbstractHandler {
|
|
303 |
return $apiOrder;
|
304 |
}
|
305 |
$apiOrder->itemsOrdered = $orderItemsResponse;
|
|
|
|
|
306 |
$order->setBaseSubtotal($apiOrder->summary->totalSumItems->net);
|
307 |
-
|
308 |
-
|
309 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
310 |
$order->setBaseGrandTotal($apiOrder->summary->totalSumOrder->gross);
|
311 |
-
|
312 |
-
$order->setSubtotal($apiOrder->summary->totalSumItems->net);
|
313 |
-
$order->setTaxAmount($apiOrder->summary->totalSumItems->tax);
|
314 |
-
// $order->setDiscountAmount(...);
|
315 |
-
$order->setShippingAmount($apiOrder->shipping->costs->gross);
|
316 |
-
$order->setGrandTotal($apiOrder->summary->totalSumOrder->gross);
|
317 |
|
318 |
$order->setCreatedAt($apiOrder->orderHeader->orderTime);
|
319 |
|
@@ -335,7 +364,7 @@ class CPOrderHandler extends CPAbstractHandler {
|
|
335 |
$apiOrder->orderHeader->status->errorMessage = "Exception during importOrder: " . $e->getMessage();
|
336 |
$apiOrder->orderHeader->status->errorCode = CPResultCodes::SYSTEM_ERROR;
|
337 |
}
|
338 |
-
|
339 |
return $apiOrder;
|
340 |
}
|
341 |
|
@@ -456,9 +485,11 @@ class CPOrderHandler extends CPAbstractHandler {
|
|
456 |
} else {
|
457 |
$customer->firstname = $apiOrder->customer->nameFirst;
|
458 |
$customer->lastname = $apiOrder->customer->nameLast;
|
459 |
-
|
460 |
-
|
461 |
-
|
|
|
|
|
462 |
if ($apiOrder->addressInvoice->genderId == 1) {
|
463 |
$customer->setGender(
|
464 |
Mage::getResourceModel('customer/customer')
|
86 |
|
87 |
private function _getQuote($apiOrder) {
|
88 |
try {
|
89 |
+
$useAdminMode = Mage::getStoreConfigFlag('channelpilot_marketplace/channelpilot_marketplace/use_admin_mode');
|
90 |
+
/** @var $quote Mage_Sales_Model_Quote */
|
91 |
+
$quote = ($useAdminMode) ? Mage::getSingleton('adminhtml/session_quote')->getQuote()->setStoreId($this->shopId) : Mage::getModel('sales/quote')->setStoreId($this->shopId);
|
92 |
$customer = self::getCustomer($apiOrder);
|
93 |
$quote->assignCustomer($customer);
|
94 |
|
95 |
+
$useEmulation = false;
|
96 |
+
if($useAdminMode && class_exists('Mage_Core_Model_App_Emulation')) {
|
97 |
+
/* @var $emulationModel Mage_Core_Model_App_Emulation */
|
98 |
+
$emulationModel = Mage::getModel('core/app_emulation');
|
99 |
+
// emulate admin store to ignore restrictions like min_sale_qty
|
100 |
+
$initialEnvironmentInfo = $emulationModel->startEnvironmentEmulation(0, Mage_Core_Model_App_Area::AREA_ADMINHTML);
|
101 |
+
$useEmulation = true;
|
102 |
+
}
|
103 |
+
|
104 |
foreach ($apiOrder->itemsOrdered as $orderItem) {
|
105 |
$product = $this->getProduct($orderItem->article->id);
|
106 |
if ($product == null) {
|
140 |
|
141 |
$quote->collectTotals()->save();
|
142 |
|
143 |
+
if($useAdminMode && $useEmulation) {
|
144 |
+
$emulationModel->stopEnvironmentEmulation($initialEnvironmentInfo);
|
145 |
+
}
|
146 |
+
|
147 |
return $quote;
|
148 |
} catch(Exception $e) {
|
149 |
CPErrorHandler::logError("Exception during _getQuote: " . $e->getMessage() . "\n" . $e->getTraceAsString());
|
262 |
foreach ($apiOrder->itemsOrdered as $orderItem) {
|
263 |
if ($orderItem->article->id == $item->getSku() || $orderItem->article->id == $item->getProductId()) {
|
264 |
$item->setPrice($orderItem->costsSingle->net);
|
|
|
265 |
$item->setBasePrice($orderItem->costsSingle->net);
|
266 |
+
$item->setPriceInclTax($orderItem->costsSingle->gross);
|
267 |
+
$item->setBasePriceInclTax($orderItem->costsSingle->gross);
|
268 |
+
|
269 |
+
$item->setOriginalPrice($orderItem->costsSingle->gross);
|
270 |
+
$item->setBaseOriginalPrice($orderItem->costsSingle->gross);
|
271 |
+
|
272 |
$item->setTaxPercent($orderItem->costsTotal->taxRate);
|
273 |
+
$item->setTaxAmount($orderItem->costsTotal->tax);
|
274 |
+
$item->setBaseTaxAmount($orderItem->costsTotal->tax);
|
275 |
+
|
276 |
$item->setRowTotal($orderItem->costsTotal->net);
|
|
|
|
|
|
|
277 |
$item->setBaseRowTotal($orderItem->costsTotal->net);
|
278 |
+
$item->setRowTotalInclTax($orderItem->costsTotal->gross);
|
279 |
$item->setBaseRowTotalInclTax($orderItem->costsTotal->gross);
|
280 |
+
|
281 |
$item->save();
|
282 |
$orderItem->id = $item->getId();
|
283 |
$orderItemsResponse[] = $orderItem;
|
310 |
->addFieldToFilter('order_id', array('eq' => $order->getId()));
|
311 |
$collection->walk('delete');
|
312 |
$marketplaceOrder = Mage::getModel('channelpilot/order')->load($order->getId());
|
313 |
+
$marketplaceOrder->delete();
|
314 |
Mage::register('isSecureArea', true);
|
315 |
Mage::app('admin');
|
316 |
$order->delete();
|
321 |
return $apiOrder;
|
322 |
}
|
323 |
$apiOrder->itemsOrdered = $orderItemsResponse;
|
324 |
+
|
325 |
+
// Subtotal
|
326 |
$order->setBaseSubtotal($apiOrder->summary->totalSumItems->net);
|
327 |
+
$order->setSubtotal($apiOrder->summary->totalSumItems->net);
|
328 |
+
$order->setBaseSubtotalInclTax($apiOrder->summary->totalSumItems->gross);
|
329 |
+
$order->setSubtotalInclTax($apiOrder->summary->totalSumItems->gross);
|
330 |
+
|
331 |
+
// Tax
|
332 |
+
$order->setBaseTaxAmount($apiOrder->summary->totalSumOrder->tax);
|
333 |
+
$order->setTaxAmount($apiOrder->summary->totalSumOrder->tax);
|
334 |
+
$order->setBaseShippingTaxAmount($apiOrder->shipping->costs->tax);
|
335 |
+
$order->setShippingTaxAmount($apiOrder->shipping->costs->tax);
|
336 |
+
|
337 |
+
// Shipping
|
338 |
+
$order->setBaseShippingAmount($apiOrder->shipping->costs->net);
|
339 |
+
$order->setShippingAmount($apiOrder->shipping->costs->net);
|
340 |
+
$order->setShippingInclTax($apiOrder->shipping->costs->gross);
|
341 |
+
$order->setBaseShippingInclTax($apiOrder->shipping->costs->gross);
|
342 |
+
|
343 |
+
// Grand total
|
344 |
$order->setBaseGrandTotal($apiOrder->summary->totalSumOrder->gross);
|
345 |
+
$order->setGrandTotal($apiOrder->summary->totalSumOrder->gross);
|
|
|
|
|
|
|
|
|
|
|
346 |
|
347 |
$order->setCreatedAt($apiOrder->orderHeader->orderTime);
|
348 |
|
364 |
$apiOrder->orderHeader->status->errorMessage = "Exception during importOrder: " . $e->getMessage();
|
365 |
$apiOrder->orderHeader->status->errorCode = CPResultCodes::SYSTEM_ERROR;
|
366 |
}
|
367 |
+
|
368 |
return $apiOrder;
|
369 |
}
|
370 |
|
485 |
} else {
|
486 |
$customer->firstname = $apiOrder->customer->nameFirst;
|
487 |
$customer->lastname = $apiOrder->customer->nameLast;
|
488 |
+
if(isset($apiOrder->customer->customerGroups)) {
|
489 |
+
foreach ($apiOrder->customer->customerGroups as $userGroup) {
|
490 |
+
$customer->setData('group_id', $userGroup->id);
|
491 |
+
}
|
492 |
+
}
|
493 |
if ($apiOrder->addressInvoice->genderId == 1) {
|
494 |
$customer->setGender(
|
495 |
Mage::getResourceModel('customer/customer')
|
app/code/community/Channelpilotsolutions/Channelpilot/etc/config.xml
CHANGED
@@ -24,7 +24,7 @@
|
|
24 |
<config>
|
25 |
<modules>
|
26 |
<Channelpilotsolutions_Channelpilot>
|
27 |
-
<version>2.2.
|
28 |
</Channelpilotsolutions_Channelpilot>
|
29 |
</modules>
|
30 |
<global>
|
@@ -170,6 +170,7 @@
|
|
170 |
<channelpilot_marketplace>
|
171 |
<channelpilot_marketplace>
|
172 |
<channelpilot_useMarketplaces>0</channelpilot_useMarketplaces>
|
|
|
173 |
</channelpilot_marketplace>
|
174 |
</channelpilot_marketplace>
|
175 |
<channelpilot_pricecontrol>
|
24 |
<config>
|
25 |
<modules>
|
26 |
<Channelpilotsolutions_Channelpilot>
|
27 |
+
<version>2.2.5</version>
|
28 |
</Channelpilotsolutions_Channelpilot>
|
29 |
</modules>
|
30 |
<global>
|
170 |
<channelpilot_marketplace>
|
171 |
<channelpilot_marketplace>
|
172 |
<channelpilot_useMarketplaces>0</channelpilot_useMarketplaces>
|
173 |
+
<use_admin_mode>0</use_admin_mode>
|
174 |
</channelpilot_marketplace>
|
175 |
</channelpilot_marketplace>
|
176 |
<channelpilot_pricecontrol>
|
app/code/community/Channelpilotsolutions/Channelpilot/etc/system.xml
CHANGED
@@ -24,7 +24,6 @@
|
|
24 |
<config>
|
25 |
<tabs>
|
26 |
<channelpilot_config translate="label" module="channelpilot">
|
27 |
-
<!--<label>Channelpilot</label>-->
|
28 |
<label><![CDATA[<div style="overflow:hidden; background-image: url('https://go.channelpilot.com/css/gfx/logo.channelPilot.png');background-size: 150px; background-repeat: no-repeat; background-position: -4px -9px;"><div style="display:block; height: 20px;"></div></div>]]></label>
|
29 |
<class>tab-channelpilot</class>
|
30 |
<sort_order>401</sort_order>
|
@@ -292,33 +291,16 @@
|
|
292 |
<show_in_website>1</show_in_website>
|
293 |
<show_in_store>1</show_in_store>
|
294 |
</channelpilot_orderStatusImportedUnpayed>
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
<label>CP OrderStatus Cancelled?</label>
|
306 |
-
<frontend_type>select</frontend_type>
|
307 |
-
<source_model>channelpilot_adminhtml/orderstatus_values</source_model>
|
308 |
-
<sort_order>4</sort_order>
|
309 |
-
<show_in_default>1</show_in_default>
|
310 |
-
<show_in_website>1</show_in_website>
|
311 |
-
<show_in_store>1</show_in_store>
|
312 |
-
</channelpilot_orderStatusCancelled>
|
313 |
-
<channelpilot_orderStatusDeliveried>
|
314 |
-
<label>CP OrderStatus Deliveried?</label>
|
315 |
-
<frontend_type>select</frontend_type>
|
316 |
-
<source_model>channelpilot_adminhtml/orderstatus_values</source_model>
|
317 |
-
<sort_order>5</sort_order>
|
318 |
-
<show_in_default>1</show_in_default>
|
319 |
-
<show_in_website>1</show_in_website>
|
320 |
-
<show_in_store>1</show_in_store>
|
321 |
-
</channelpilot_orderStatusDeliveried>-->
|
322 |
</fields>
|
323 |
</channelpilot_marketplace>
|
324 |
</groups>
|
@@ -377,15 +359,6 @@
|
|
377 |
<show_in_website>1</show_in_website>
|
378 |
<show_in_store>1</show_in_store>
|
379 |
<fields>
|
380 |
-
<!-- <channelpilot_usePricecontrol>
|
381 |
-
<label>Active</label>
|
382 |
-
<frontend_type>select</frontend_type>
|
383 |
-
<source_model>channelpilot_adminhtml/truefalse_values</source_model>
|
384 |
-
<sort_order>0</sort_order>
|
385 |
-
<show_in_default>1</show_in_default>
|
386 |
-
<show_in_website>1</show_in_website>
|
387 |
-
<show_in_store>1</show_in_store>
|
388 |
-
</channelpilot_usePricecontrol>-->
|
389 |
<channelpilot_generalPriceField>
|
390 |
<label>CP Field for price</label>
|
391 |
<comment>CP This field would be overwritten by the new product price.</comment>
|
@@ -398,25 +371,6 @@
|
|
398 |
</channelpilot_generalPriceField>
|
399 |
</fields>
|
400 |
</general_prices>
|
401 |
-
<!-- <campaign_prices translate="label">
|
402 |
-
<label>Campaign Price Control</label>
|
403 |
-
<frontend_type>text</frontend_type>
|
404 |
-
<sort_order>3</sort_order>
|
405 |
-
<show_in_default>1</show_in_default>
|
406 |
-
<show_in_website>1</show_in_website>
|
407 |
-
<show_in_store>1</show_in_store>
|
408 |
-
<fields>
|
409 |
-
<channelpilot_usePricecontrol>
|
410 |
-
<label>Active</label>
|
411 |
-
<frontend_type>select</frontend_type>
|
412 |
-
<source_model>channelpilot_adminhtml/truefalse_values</source_model>
|
413 |
-
<sort_order>0</sort_order>
|
414 |
-
<show_in_default>1</show_in_default>
|
415 |
-
<show_in_website>1</show_in_website>
|
416 |
-
<show_in_store>1</show_in_store>
|
417 |
-
</channelpilot_usePricecontrol>
|
418 |
-
</fields>
|
419 |
-
</campaign_prices>-->
|
420 |
</groups>
|
421 |
</channelpilot_pricecontrol>
|
422 |
<payment>
|
24 |
<config>
|
25 |
<tabs>
|
26 |
<channelpilot_config translate="label" module="channelpilot">
|
|
|
27 |
<label><![CDATA[<div style="overflow:hidden; background-image: url('https://go.channelpilot.com/css/gfx/logo.channelPilot.png');background-size: 150px; background-repeat: no-repeat; background-position: -4px -9px;"><div style="display:block; height: 20px;"></div></div>]]></label>
|
28 |
<class>tab-channelpilot</class>
|
29 |
<sort_order>401</sort_order>
|
291 |
<show_in_website>1</show_in_website>
|
292 |
<show_in_store>1</show_in_store>
|
293 |
</channelpilot_orderStatusImportedUnpayed>
|
294 |
+
<use_admin_mode translate="label comment">
|
295 |
+
<label>CP Use Admin Mode for order import</label>
|
296 |
+
<comment>CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount.</comment>
|
297 |
+
<frontend_type>select</frontend_type>
|
298 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
299 |
+
<sort_order>40</sort_order>
|
300 |
+
<show_in_default>1</show_in_default>
|
301 |
+
<show_in_website>0</show_in_website>
|
302 |
+
<show_in_store>0</show_in_store>
|
303 |
+
</use_admin_mode>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
304 |
</fields>
|
305 |
</channelpilot_marketplace>
|
306 |
</groups>
|
359 |
<show_in_website>1</show_in_website>
|
360 |
<show_in_store>1</show_in_store>
|
361 |
<fields>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
362 |
<channelpilot_generalPriceField>
|
363 |
<label>CP Field for price</label>
|
364 |
<comment>CP This field would be overwritten by the new product price.</comment>
|
371 |
</channelpilot_generalPriceField>
|
372 |
</fields>
|
373 |
</general_prices>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
374 |
</groups>
|
375 |
</channelpilot_pricecontrol>
|
376 |
<payment>
|
app/code/community/Channelpilotsolutions/Channelpilot/sql/channelpilot_setup/mysql4-upgrade-2.2.5-2.2.6.php
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the GNU General Public License (GPL 3)
|
7 |
+
* that is bundled with this package in the file LICENSE.txt
|
8 |
+
*
|
9 |
+
* DISCLAIMER
|
10 |
+
*
|
11 |
+
* Do not edit or add to this file if you wish to upgrade Channelpilotsolutions_Channelpilot to newer
|
12 |
+
* versions in the future. If you wish to customize Channelpilotsolutions_Channelpilot for your
|
13 |
+
* needs please refer to http://www.channelpilot.com for more information.
|
14 |
+
*
|
15 |
+
* @category Channelpilotsolutions
|
16 |
+
* @package Channelpilotsolutions_Channelpilot
|
17 |
+
* @copyright Copyright (c) 2012 <info@channelpilot.com> - www.channelpilot.com
|
18 |
+
* @author Bj�rn Wehner <info@channelpilot.com>
|
19 |
+
* @license <http://www.gnu.org/licenses/> GNU General Public License (GPL 3)
|
20 |
+
* @link http://www.channelpilot.com
|
21 |
+
*/
|
22 |
+
|
23 |
+
$installer = $this;
|
24 |
+
|
25 |
+
$installer->startSetup();
|
26 |
+
$adapter = $installer->getConnection();
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Create table 'channelpilot/productexport'
|
30 |
+
*/
|
31 |
+
$table = $adapter->newTable($installer->getTable('channelpilot/productexport'))
|
32 |
+
->addColumn('id', Varien_Db_Ddl_Table::TYPE_INTEGER, 11, array(
|
33 |
+
'auto_increment' => true,
|
34 |
+
'unsigned' => true,
|
35 |
+
'nullable' => false,
|
36 |
+
'primary' => true,
|
37 |
+
), 'id')
|
38 |
+
->addColumn('product_id', Varien_Db_Ddl_Table::TYPE_INTEGER, 11, array(
|
39 |
+
'nullable' => false,
|
40 |
+
'unsigned' => true,
|
41 |
+
), 'product_id')
|
42 |
+
->addColumn('store_id', Varien_Db_Ddl_Table::TYPE_INTEGER, 11, array(
|
43 |
+
'nullable' => false,
|
44 |
+
'unsigned' => true,
|
45 |
+
), 'store_id')
|
46 |
+
->addColumn('is_update_needed', Varien_Db_Ddl_Table::TYPE_TINYINT, 1, array(
|
47 |
+
'nullable' => false,
|
48 |
+
'unsigned' => true,
|
49 |
+
'default' => 1,
|
50 |
+
), 'is_update_needed')
|
51 |
+
->addColumn('product_data', Varien_Db_Ddl_Table::TYPE_TEXT, null, array(
|
52 |
+
'nullable' => false,
|
53 |
+
'unsigned' => true,
|
54 |
+
'default' => '',
|
55 |
+
), 'product_data');
|
56 |
+
$adapter->createTable($table);
|
57 |
+
|
58 |
+
$installer->endSetup();
|
59 |
+
|
60 |
+
Mage::getModel('channelpilot/productexport')->initializeProductExport();
|
app/locale/de_AT/Channelpilotsolutions_Channelpilot.csv
CHANGED
@@ -65,4 +65,7 @@
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Methode"
|
67 |
"CP Image","Bild"
|
68 |
-
"CP JavaScript","JavaScript"
|
|
|
|
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Methode"
|
67 |
"CP Image","Bild"
|
68 |
+
"CP JavaScript","JavaScript"
|
69 |
+
|
70 |
+
"CP Use Admin Mode for order import","Admin-Modus für den Import der Marktplatzbestellungen benutzen"
|
71 |
+
"CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount.","Wenn Marktplatzbestellungen importiert werden kann der Admin-Modus genutz werden. Sollte dieser genutzt werden dann bedenken Sie bitte, dass sämtliche Prüfungen nicht durchlaufen werden die es normalerweise tun, wie: die bestellte Menge ist geringer als die eingestellte Mindestbestellmenge; Bestellungen werden importiert die Produkte haben die ausverkauft oder nur noch in einer geringeren Stückzahl vorhanden sind."
|
app/locale/de_CH/Channelpilotsolutions_Channelpilot.csv
CHANGED
@@ -65,4 +65,7 @@
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Methode"
|
67 |
"CP Image","Bild"
|
68 |
-
"CP JavaScript","JavaScript"
|
|
|
|
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Methode"
|
67 |
"CP Image","Bild"
|
68 |
+
"CP JavaScript","JavaScript"
|
69 |
+
|
70 |
+
"CP Use Admin Mode for order import","Admin-Modus für den Import der Marktplatzbestellungen benutzen"
|
71 |
+
"CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount.","Wenn Marktplatzbestellungen importiert werden kann der Admin-Modus genutz werden. Sollte dieser genutzt werden dann bedenken Sie bitte, dass sämtliche Prüfungen nicht durchlaufen werden die es normalerweise tun, wie: die bestellte Menge ist geringer als die eingestellte Mindestbestellmenge; Bestellungen werden importiert die Produkte haben die ausverkauft oder nur noch in einer geringeren Stückzahl vorhanden sind."
|
app/locale/de_DE/Channelpilotsolutions_Channelpilot.csv
CHANGED
@@ -65,4 +65,7 @@
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Methode"
|
67 |
"CP Image","Bild"
|
68 |
-
"CP JavaScript","JavaScript"
|
|
|
|
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Methode"
|
67 |
"CP Image","Bild"
|
68 |
+
"CP JavaScript","JavaScript"
|
69 |
+
|
70 |
+
"CP Use Admin Mode for order import","Admin-Modus für den Import der Marktplatzbestellungen benutzen"
|
71 |
+
"CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount.","Wenn Marktplatzbestellungen importiert werden kann der Admin-Modus genutz werden. Sollte dieser genutzt werden dann bedenken Sie bitte, dass sämtliche Prüfungen nicht durchlaufen werden die es normalerweise tun, wie: die bestellte Menge ist geringer als die eingestellte Mindestbestellmenge; Bestellungen werden importiert die Produkte haben die ausverkauft oder nur noch in einer geringeren Stückzahl vorhanden sind."
|
app/locale/en_AU/Channelpilotsolutions_Channelpilot.csv
CHANGED
@@ -65,4 +65,7 @@
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Method"
|
67 |
"CP Image","Image"
|
68 |
-
"CP JavaScript","JavaScript"
|
|
|
|
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Method"
|
67 |
"CP Image","Image"
|
68 |
+
"CP JavaScript","JavaScript"
|
69 |
+
|
70 |
+
"CP Use Admin Mode for order import","Use Admin Mode for order import"
|
71 |
+
"CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount.","CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount."
|
app/locale/en_CA/Channelpilotsolutions_Channelpilot.csv
CHANGED
@@ -65,4 +65,7 @@
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Method"
|
67 |
"CP Image","Image"
|
68 |
-
"CP JavaScript","JavaScript"
|
|
|
|
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Method"
|
67 |
"CP Image","Image"
|
68 |
+
"CP JavaScript","JavaScript"
|
69 |
+
|
70 |
+
"CP Use Admin Mode for order import","Use Admin Mode for order import"
|
71 |
+
"CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount.","CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount."
|
app/locale/en_GB/Channelpilotsolutions_Channelpilot.csv
CHANGED
@@ -65,4 +65,7 @@
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Method"
|
67 |
"CP Image","Image"
|
68 |
-
"CP JavaScript","JavaScript"
|
|
|
|
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Method"
|
67 |
"CP Image","Image"
|
68 |
+
"CP JavaScript","JavaScript"
|
69 |
+
|
70 |
+
"CP Use Admin Mode for order import","Use Admin Mode for order import"
|
71 |
+
"CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount.","CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount."
|
app/locale/en_IE/Channelpilotsolutions_Channelpilot.csv
CHANGED
@@ -65,4 +65,7 @@
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Method"
|
67 |
"CP Image","Image"
|
68 |
-
"CP JavaScript","JavaScript"
|
|
|
|
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Method"
|
67 |
"CP Image","Image"
|
68 |
+
"CP JavaScript","JavaScript"
|
69 |
+
|
70 |
+
"CP Use Admin Mode for order import","Use Admin Mode for order import"
|
71 |
+
"CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount.","CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount."
|
app/locale/en_NZ/Channelpilotsolutions_Channelpilot.csv
CHANGED
@@ -65,4 +65,7 @@
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Method"
|
67 |
"CP Image","Image"
|
68 |
-
"CP JavaScript","JavaScript"
|
|
|
|
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Method"
|
67 |
"CP Image","Image"
|
68 |
+
"CP JavaScript","JavaScript"
|
69 |
+
|
70 |
+
"CP Use Admin Mode for order import","Use Admin Mode for order import"
|
71 |
+
"CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount.","CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount."
|
app/locale/en_US/Channelpilotsolutions_Channelpilot.csv
CHANGED
@@ -65,4 +65,7 @@
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Method"
|
67 |
"CP Image","Image"
|
68 |
-
"CP JavaScript","JavaScript"
|
|
|
|
|
|
65 |
|
66 |
"CP Tracking Method","Tracking Method"
|
67 |
"CP Image","Image"
|
68 |
+
"CP JavaScript","JavaScript"
|
69 |
+
|
70 |
+
"CP Use Admin Mode for order import","Use Admin Mode for order import"
|
71 |
+
"CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount.","CP When importing marketplace orders you can use the admin mode. When choosing the admin mode please note that all checks are disabled thar are normally applied, like: ordering a product which amount is less than the configured minimum allowed quantity in shopping cart, import orders which have products that are sold out or the available amount is less than the ordered amount."
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Channelpilotsolutions_Channelpilot</name>
|
4 |
-
<version>2.2.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.opensource.org/licenses/gpl-license.php">GPL</license>
|
7 |
<channel>community</channel>
|
@@ -26,11 +26,13 @@
|
|
26 |
<li><b>ChannelPilot Multi-Platform:</b> Access ChannelPilot on any device (e.g. computer, tablet or smartphone) and keep a firm hold on your online marketing- wherever you are!</li>
|
27 |
</ul>
|
28 |
Just get more information about ChannelPilot: <a href="http://www.channelpilot.com">www.channelpilot.com</a></description>
|
29 |
-
<notes>- general bugfixes
|
|
|
|
|
30 |
<authors><author><name>ChannelPilot Solutions GmbH</name><user>auto-converted</user><email>info@channelpilot.com</email></author></authors>
|
31 |
-
<date>2015-
|
32 |
-
<time>
|
33 |
-
<contents><target name="magecommunity"><dir name="Channelpilotsolutions"><dir name="Channelpilot"><dir name="Adminhtml"><dir name="Model"><dir name="Articlenumber"><file name="Values.php" hash="f2744ef8301e25e096318f34eb97c2bf"/></dir><dir name="Cookiemode"><file name="Values.php" hash="1ec39f85bb7562c1b6a4614f759d9124"/></dir><dir name="Grossnet"><file name="Values.php" hash="11eaf553b0ec34299524ec6d5a9f1e13"/></dir><dir name="Imagenumber"><file name="Values.php" hash="010dbb2ec946627f338bc500d3d8d747"/></dir><dir name="Orderstatus"><file name="Values.php" hash="39823f1757a41c848ad4505d09aca9d2"/></dir><dir name="Pricefield"><file name="Values.php" hash="6b02dfa3fa93daafa8325d66a986b4ac"/></dir><dir name="Truefalse"><file name="Values.php" hash="e07f105d7d8dc9881690f162cd23472d"/></dir><dir name="Truefalsesecurity"><file name="Values.php" hash="509b5e1cc7cabbe179373bc0ed490499"/></dir></dir></dir><dir name="Block"><dir name="Adminhtml"><dir name="Field"><file name="Abstract.php" hash="fc0aae8ea2b0bc8aab16ecba459b8988"/><file name="Exportfields.php" hash="1db2b1b5e56f9e2ea8a0d688b9faa801"/><file name="Replacefields.php" hash="db29c6ffaf9f4abe394b8981d031969f"/><file name="Specialfields.php" hash="4723404c20af3390d6d820318b21c1f6"/><file name="Trackingkeys.php" hash="6164e184bf6ac2b1e81169251752a551"/></dir><file name="Hintlogo.php" hash="1daa84afa8820f71a0d1630ee2311da6"/></dir><dir name="Tracking"><file name="Tracking.php" hash="3be4cdf75739c3dc1078f90be82380c6"/></dir></dir><dir name="Helper"><dir name="api"><dir name="1_0"><dir name="responses"><file name="GetManagedArticlePricesResponse.php" hash="9ad5adee1952b9408b442449791a1f34"/><file name="GetNewMarketplaceOrdersResponse.php" hash="cd5db953a84759b93a35a360956c4624"/><file name="GetServerTimeResponse.php" hash="07d157639b5bf715aa3f93b0d9e4b736"/><file name="Response.php" hash="c76ce62707a862e1c59346c668055b5d"/><file name="UpdateArticleResult.php" hash="a014c60be447fbb9cf48c947c8e9822f"/><file name="UpdateArticlesResponse.php" hash="338619d50391d91defb5c9d41370022f"/><file name="UpdateOrderResult.php" hash="0fbd88371624270a8cb2c4209a89cfac"/><file name="UpdateOrdersResponse.php" hash="b0ad5828da633b05e654da393b15526a"/></dir><dir name="thin"><file name="CPAddress.php" hash="885fb4517335421fbd8cbc882ae336b1"/><file name="CPArticle.php" hash="1adce1ce33acdd0185dee06010040b18"/><file name="CPArticleUpdate.php" hash="45f514823895c754010f8f11a1ff683a"/><file name="CPAuth.php" hash="cf5fe570dbd98e3e6339b20cec826b7b"/><file name="CPCancellation.php" hash="9bf808e265e09d166466313405a167fc"/><file name="CPCustomer.php" hash="62babdf11e9b4d80ae0afbbf96ba329d"/><file name="CPDelivery.php" hash="a270104ae1c253adee0ad1ffb5e01c65"/><file name="CPDiscount.php" hash="5d6f2766869134a86761c12230dc32d1"/><file name="CPManagedArticlePrice.php" hash="65c4c0df04b7c8d20294874de11640d6"/><file name="CPMoney.php" hash="952131eccc8470e107c78e15c94b6495"/><file name="CPOrder.php" hash="32623885f664e9b5871fc48b6ba0c801"/><file name="CPOrderHeader.php" hash="828377182e8197c304f230a783606993"/><file name="CPOrderItem.php" hash="dfe2440a08e3d0f13e638fc4090e6c52"/><file name="CPOrderStatus.php" hash="e0e767388dd9a1ab8be5a990f1ab1259"/><file name="CPOrderSummary.php" hash="fceaa6a79b5fc892062681f518fd0243"/><file name="CPPayment.php" hash="698b42f377910ef04d50a545e599fbca"/><file name="CPResponseHeader.php" hash="53930210d68046183e3be306996ea9b9"/><file name="CPShipping.php" hash="eaddceace28cdc6ba72434a6321d8c47"/></dir><file name="CPResultCodes.php" hash="955180ee33f14b4afa93f6eb1b5df53f"/><file name="ChannelPilotSellerAPI_v1_0.php" hash="76f458bece7e3344d0ffa788370e2026"/></dir></dir><dir name="handler"><file name="CPAbstractHandler.php" hash="78518d108e7ed273ec33056504869763"/><file name="CPCancellationHandler.php" hash="e7470edc465be2a3608102549efc436f"/><file name="CPDebugHandler.php" hash="51845f353b8e3d94ec324c3a750d9cc7"/><file name="CPDeliveryHandler.php" hash="11eee388729b17b21938a067edd66e54"/><file name="CPErrorHandler.php" hash="5d728c064c068fdf8354fa87882e4dba"/><file name="CPExportHandler.php" hash="4c550f49e4f9e94cb0528e3d27431d6f"/><file name="CPNewPriceHandler.php" hash="e0c1be684439c2336dd240aff9d8647e"/><file name="CPNewsHandler.php" hash="10757d4bbb3d10a3090dab9587c86132"/><file name="CPOrderHandler.php" hash="30f24f19045b0a96f73eb60de413493e"/><file name="CPPaymentHandler.php" hash="8ebbfdd04b92a0f7d72a8cbe8ba183d4"/><file name="CPRegisterHandler.php" hash="8ea51b6fc2e7820a4bac3f5e52377112"/><file name="CPStatusHandler.php" hash="573384fb4856d085f036edbc9388c2cd"/></dir><dir name="responses"><file name="CPGetStatusHookResponse.php" hash="672609ebcaa23aa0de85aed04c7662d8"/><file name="CPHookResponse.php" hash="3cda426724f3b3b97df344b4e76fc805"/><file name="CPRegisterHookResponse.php" hash="206de6433d0795ebdabff98129cc2fb7"/></dir><dir name="special"><file name="CustomerFunctions.php" hash="0d343d3c9c3cb87232c833e0772f730e"/></dir><file name="CPErrors.php" hash="3659c38a1ed3be4aa4ec03d93e68a84e"/><file name="Data.php" hash="ab518fc37c2d152fc03b23ffbb317022"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="Source"><file name="Trackingmethod.php" hash="e32ab184b05377af38e4d912022cb889"/></dir></dir><dir name="Carrier"><file name="Cpshipping.php" hash="689b093872e690a9b1b1b5173365e7f8"/></dir><dir name="Order"><file name="Item.php" hash="7e64ca596a4a66e7c5052d0981745cf8"/><file name="Shipment.php" hash="71651ad5489eca654f47e41fd12e79a6"/></dir><dir name="Resource"><dir name="Logs"><file name="Collection.php" hash="d02494433e6369ddd552e04db867e9d5"/></dir><dir name="Order"><dir name="Item"><file name="Collection.php" hash="954e3889a8b8f93510a36be1a13c2fb8"/></dir><dir name="Shipment"><file name="Collection.php" hash="6aa1fd002807916effa760169a2e769d"/></dir><file name="Collection.php" hash="00423726d837a71042527c588cfc4b11"/><file name="Item.php" hash="485669b3f6dd7646ae9299547dc3a88f"/><file name="Shipment.php" hash="5d1514d5721b501fda7e71e6a15f931d"/></dir><dir name="Prices"><file name="Collection.php" hash="6d49bf71e50a0d2b0e087d52036a08ef"/></dir><dir name="Registration"><file name="Collection.php" hash="81423be65cf2ee706203ac03b5e83236"/></dir><file name="Logs.php" hash="b406da96412148256028b8c73444b0d9"/><file name="Order.php" hash="be971d53867fafbbf7c582dbe860e107"/><file name="Prices.php" hash="30275edca721b6986ff6bd39648bf4eb"/><file name="Registration.php" hash="a9f4190c21762c3f39c9647291e8e194"/></dir><file name="Abstract.php" hash="26580a64f5ae3d005b68e4563dbb1aea"/><file name="Logs.php" hash="85c27d3b47cbd97fc197a1ba8ae60dc6"/><file name="Order.php" hash="431bda96fe598fbb5a64928b940d8c13"/><file name="Payment.php" hash="223ab9dec3315f3dada4298f0418151a"/><file name="Paymenttypes.php" hash="ca90419f6e4603be3f70a214d95177c3"/><file name="Prices.php" hash="c1c966c0a3001fee90d14c050f00b66a"/><file name="Registration.php" hash="0719bdd075942a8706ccae12a35e91af"/></dir><dir name="controllers"><file name="IndexController.php" hash="ca07da3c0b2c689e9c0a8e552b6c7004"/></dir><dir name="etc"><file name="adminhtml.xml" hash="8ad60dd724140db26bdf69b4baeabbc5"/><file name="config.xml" hash="ef8a6e40b2556f2deb4cb2d36490a6a8"/><file name="system.xml" hash="98c3360f19c9eaf1bf3ff0c61e63fbb8"/></dir><dir name="sql"><dir name="channelpilot_setup"><file name="mysql4-install-2.0.0.php" hash="f89d8be8b1ed7a6793ba6a2516de3528"/><file name="mysql4-upgrade-1.0.0-2.0.0.php" hash="12264e29678f7a56b002cd693dafd56f"/><file name="mysql4-upgrade-2.1.6-2.2.0.php" hash="4327290be3ce3226544515a72e6a74cf"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Channelpilotsolutions_Channelpilot.xml" hash="d14c5346561667941ef4f6e9e55666cd"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="Channelpilotsolutions"><file name="channelpilot.xml" hash="2952fa387aadf60f36b6fea9b5c69fb8"/></dir></dir><dir name="template"><dir name="Channelpilotsolutions"><file name="clicktracking_js.phtml" hash="20d1883b633d814587e5dd1661364fc1"/><file name="salestracking_js.phtml" hash="61c77c6fdab88cfac5989e7d47a8c5a4"/><file name="tracking_image.phtml" hash="f2477e9bf58ed34950b049db5af8a712"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="template"><dir name="channelpilotsolutions"><file name="array_dropdown.phtml" hash="5717b5f3ca67bb4da734572fdca1a907"/><file name="config_hint.phtml" hash="c92f883df809f89278492d1e22a352d7"/></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="Channelpilotsolutions_Channelpilot.csv" hash="14e19cf146fdc5fd2d0f0e9b8d66ae0c"/></dir><dir name="de_CH"><file name="Channelpilotsolutions_Channelpilot.csv" hash="14e19cf146fdc5fd2d0f0e9b8d66ae0c"/></dir><dir name="de_AT"><file name="Channelpilotsolutions_Channelpilot.csv" hash="14e19cf146fdc5fd2d0f0e9b8d66ae0c"/></dir><dir name="fr_FR"><file name="Channelpilotsolutions_Channelpilot.csv" hash="23217faa0b1c623750bb91d1e324e082"/></dir><dir name="fr_CA"><file name="Channelpilotsolutions_Channelpilot.csv" hash="23217faa0b1c623750bb91d1e324e082"/></dir><dir name="en_AU"><file name="Channelpilotsolutions_Channelpilot.csv" hash="d0c9795eb2cc5c9c8fd9387bee78126c"/></dir><dir name="en_CA"><file name="Channelpilotsolutions_Channelpilot.csv" hash="d0c9795eb2cc5c9c8fd9387bee78126c"/></dir><dir name="en_GB"><file name="Channelpilotsolutions_Channelpilot.csv" hash="d0c9795eb2cc5c9c8fd9387bee78126c"/></dir><dir name="en_IE"><file name="Channelpilotsolutions_Channelpilot.csv" hash="d0c9795eb2cc5c9c8fd9387bee78126c"/></dir><dir name="en_NZ"><file name="Channelpilotsolutions_Channelpilot.csv" hash="d0c9795eb2cc5c9c8fd9387bee78126c"/></dir><dir name="en_US"><file name="Channelpilotsolutions_Channelpilot.csv" hash="d0c9795eb2cc5c9c8fd9387bee78126c"/></dir><dir name="es_AR"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_CL"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_CO"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_CR"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_ES"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_MX"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_PA"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_PE"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_VE"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir></target></contents>
|
34 |
<compatible/>
|
35 |
<dependencies/>
|
36 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Channelpilotsolutions_Channelpilot</name>
|
4 |
+
<version>2.2.5</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.opensource.org/licenses/gpl-license.php">GPL</license>
|
7 |
<channel>community</channel>
|
26 |
<li><b>ChannelPilot Multi-Platform:</b> Access ChannelPilot on any device (e.g. computer, tablet or smartphone) and keep a firm hold on your online marketing- wherever you are!</li>
|
27 |
</ul>
|
28 |
Just get more information about ChannelPilot: <a href="http://www.channelpilot.com">www.channelpilot.com</a></description>
|
29 |
+
<notes>- general bugfixes
|
30 |
+
- improved performance for feed export
|
31 |
+
- added support to use the admin area for order import</notes>
|
32 |
<authors><author><name>ChannelPilot Solutions GmbH</name><user>auto-converted</user><email>info@channelpilot.com</email></author></authors>
|
33 |
+
<date>2015-10-29</date>
|
34 |
+
<time>12:17:22</time>
|
35 |
+
<contents><target name="magecommunity"><dir name="Channelpilotsolutions"><dir name="Channelpilot"><dir name="Adminhtml"><dir name="Model"><dir name="Articlenumber"><file name="Values.php" hash="f2744ef8301e25e096318f34eb97c2bf"/></dir><dir name="Cookiemode"><file name="Values.php" hash="1ec39f85bb7562c1b6a4614f759d9124"/></dir><dir name="Grossnet"><file name="Values.php" hash="11eaf553b0ec34299524ec6d5a9f1e13"/></dir><dir name="Imagenumber"><file name="Values.php" hash="010dbb2ec946627f338bc500d3d8d747"/></dir><dir name="Orderstatus"><file name="Values.php" hash="39823f1757a41c848ad4505d09aca9d2"/></dir><dir name="Pricefield"><file name="Values.php" hash="6b02dfa3fa93daafa8325d66a986b4ac"/></dir><dir name="Truefalse"><file name="Values.php" hash="e07f105d7d8dc9881690f162cd23472d"/></dir><dir name="Truefalsesecurity"><file name="Values.php" hash="509b5e1cc7cabbe179373bc0ed490499"/></dir></dir></dir><dir name="Block"><dir name="Adminhtml"><dir name="Field"><file name="Abstract.php" hash="fc0aae8ea2b0bc8aab16ecba459b8988"/><file name="Exportfields.php" hash="8017ae4a421013309b731aff45bf997a"/><file name="Replacefields.php" hash="55266f9270660519a6ce1843048467e3"/><file name="Specialfields.php" hash="4723404c20af3390d6d820318b21c1f6"/><file name="Trackingkeys.php" hash="6164e184bf6ac2b1e81169251752a551"/></dir><file name="Hintlogo.php" hash="1daa84afa8820f71a0d1630ee2311da6"/></dir><dir name="Tracking"><file name="Tracking.php" hash="3be4cdf75739c3dc1078f90be82380c6"/></dir></dir><dir name="Helper"><dir name="api"><dir name="1_0"><dir name="responses"><file name="GetManagedArticlePricesResponse.php" hash="9ad5adee1952b9408b442449791a1f34"/><file name="GetNewMarketplaceOrdersResponse.php" hash="cd5db953a84759b93a35a360956c4624"/><file name="GetServerTimeResponse.php" hash="07d157639b5bf715aa3f93b0d9e4b736"/><file name="Response.php" hash="c76ce62707a862e1c59346c668055b5d"/><file name="UpdateArticleResult.php" hash="a014c60be447fbb9cf48c947c8e9822f"/><file name="UpdateArticlesResponse.php" hash="338619d50391d91defb5c9d41370022f"/><file name="UpdateOrderResult.php" hash="0fbd88371624270a8cb2c4209a89cfac"/><file name="UpdateOrdersResponse.php" hash="b0ad5828da633b05e654da393b15526a"/></dir><dir name="thin"><file name="CPAddress.php" hash="885fb4517335421fbd8cbc882ae336b1"/><file name="CPArticle.php" hash="1adce1ce33acdd0185dee06010040b18"/><file name="CPArticleUpdate.php" hash="45f514823895c754010f8f11a1ff683a"/><file name="CPAuth.php" hash="cf5fe570dbd98e3e6339b20cec826b7b"/><file name="CPCancellation.php" hash="9bf808e265e09d166466313405a167fc"/><file name="CPCustomer.php" hash="62babdf11e9b4d80ae0afbbf96ba329d"/><file name="CPDelivery.php" hash="a270104ae1c253adee0ad1ffb5e01c65"/><file name="CPDiscount.php" hash="5d6f2766869134a86761c12230dc32d1"/><file name="CPManagedArticlePrice.php" hash="65c4c0df04b7c8d20294874de11640d6"/><file name="CPMoney.php" hash="952131eccc8470e107c78e15c94b6495"/><file name="CPOrder.php" hash="32623885f664e9b5871fc48b6ba0c801"/><file name="CPOrderHeader.php" hash="828377182e8197c304f230a783606993"/><file name="CPOrderItem.php" hash="dfe2440a08e3d0f13e638fc4090e6c52"/><file name="CPOrderStatus.php" hash="e0e767388dd9a1ab8be5a990f1ab1259"/><file name="CPOrderSummary.php" hash="fceaa6a79b5fc892062681f518fd0243"/><file name="CPPayment.php" hash="698b42f377910ef04d50a545e599fbca"/><file name="CPResponseHeader.php" hash="53930210d68046183e3be306996ea9b9"/><file name="CPShipping.php" hash="eaddceace28cdc6ba72434a6321d8c47"/></dir><file name="CPResultCodes.php" hash="955180ee33f14b4afa93f6eb1b5df53f"/><file name="ChannelPilotSellerAPI_v1_0.php" hash="76f458bece7e3344d0ffa788370e2026"/></dir></dir><dir name="handler"><file name="CPAbstractHandler.php" hash="78518d108e7ed273ec33056504869763"/><file name="CPCancellationHandler.php" hash="e7470edc465be2a3608102549efc436f"/><file name="CPDebugHandler.php" hash="51845f353b8e3d94ec324c3a750d9cc7"/><file name="CPDeliveryHandler.php" hash="11eee388729b17b21938a067edd66e54"/><file name="CPErrorHandler.php" hash="5d728c064c068fdf8354fa87882e4dba"/><file name="CPExportHandler.php" hash="34952b631cb90ad0b556642537b07794"/><file name="CPNewPriceHandler.php" hash="e0c1be684439c2336dd240aff9d8647e"/><file name="CPNewsHandler.php" hash="10757d4bbb3d10a3090dab9587c86132"/><file name="CPOrderHandler.php" hash="cdf76d6674c506508610347d247c0b2f"/><file name="CPPaymentHandler.php" hash="8ebbfdd04b92a0f7d72a8cbe8ba183d4"/><file name="CPRegisterHandler.php" hash="8ea51b6fc2e7820a4bac3f5e52377112"/><file name="CPStatusHandler.php" hash="573384fb4856d085f036edbc9388c2cd"/></dir><dir name="responses"><file name="CPGetStatusHookResponse.php" hash="672609ebcaa23aa0de85aed04c7662d8"/><file name="CPHookResponse.php" hash="3cda426724f3b3b97df344b4e76fc805"/><file name="CPRegisterHookResponse.php" hash="206de6433d0795ebdabff98129cc2fb7"/></dir><dir name="special"><file name="CustomerFunctions.php" hash="0d343d3c9c3cb87232c833e0772f730e"/></dir><file name="CPErrors.php" hash="3659c38a1ed3be4aa4ec03d93e68a84e"/><file name="Data.php" hash="9222c52259fda441689e134102ca4c55"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="Source"><file name="Trackingmethod.php" hash="e32ab184b05377af38e4d912022cb889"/></dir></dir><dir name="Carrier"><file name="Cpshipping.php" hash="689b093872e690a9b1b1b5173365e7f8"/></dir><dir name="Order"><file name="Item.php" hash="7e64ca596a4a66e7c5052d0981745cf8"/><file name="Shipment.php" hash="71651ad5489eca654f47e41fd12e79a6"/></dir><dir name="Resource"><dir name="Logs"><file name="Collection.php" hash="d02494433e6369ddd552e04db867e9d5"/></dir><dir name="Order"><dir name="Item"><file name="Collection.php" hash="954e3889a8b8f93510a36be1a13c2fb8"/></dir><dir name="Shipment"><file name="Collection.php" hash="6aa1fd002807916effa760169a2e769d"/></dir><file name="Collection.php" hash="00423726d837a71042527c588cfc4b11"/><file name="Item.php" hash="485669b3f6dd7646ae9299547dc3a88f"/><file name="Shipment.php" hash="5d1514d5721b501fda7e71e6a15f931d"/></dir><dir name="Prices"><file name="Collection.php" hash="6d49bf71e50a0d2b0e087d52036a08ef"/></dir><dir name="Registration"><file name="Collection.php" hash="81423be65cf2ee706203ac03b5e83236"/></dir><file name="Logs.php" hash="b406da96412148256028b8c73444b0d9"/><file name="Order.php" hash="be971d53867fafbbf7c582dbe860e107"/><file name="Prices.php" hash="30275edca721b6986ff6bd39648bf4eb"/><file name="Registration.php" hash="a9f4190c21762c3f39c9647291e8e194"/></dir><file name="Abstract.php" hash="26580a64f5ae3d005b68e4563dbb1aea"/><file name="Logs.php" hash="85c27d3b47cbd97fc197a1ba8ae60dc6"/><file name="Order.php" hash="431bda96fe598fbb5a64928b940d8c13"/><file name="Payment.php" hash="223ab9dec3315f3dada4298f0418151a"/><file name="Paymenttypes.php" hash="ca90419f6e4603be3f70a214d95177c3"/><file name="Prices.php" hash="c1c966c0a3001fee90d14c050f00b66a"/><file name="Registration.php" hash="0719bdd075942a8706ccae12a35e91af"/></dir><dir name="controllers"><file name="IndexController.php" hash="ca07da3c0b2c689e9c0a8e552b6c7004"/></dir><dir name="etc"><file name="adminhtml.xml" hash="8ad60dd724140db26bdf69b4baeabbc5"/><file name="config.xml" hash="f4f44ba0f796f938e79cd7eff1f4bc7b"/><file name="system.xml" hash="1555b7a34ad9fb281f5014acdd35cda6"/></dir><dir name="sql"><dir name="channelpilot_setup"><file name="mysql4-install-2.0.0.php" hash="f89d8be8b1ed7a6793ba6a2516de3528"/><file name="mysql4-upgrade-1.0.0-2.0.0.php" hash="12264e29678f7a56b002cd693dafd56f"/><file name="mysql4-upgrade-2.1.6-2.2.0.php" hash="4327290be3ce3226544515a72e6a74cf"/><file name="mysql4-upgrade-2.2.5-2.2.6.php" hash="b780b4273e42c73e1459935a003974b4"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Channelpilotsolutions_Channelpilot.xml" hash="d14c5346561667941ef4f6e9e55666cd"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="Channelpilotsolutions"><file name="channelpilot.xml" hash="2952fa387aadf60f36b6fea9b5c69fb8"/></dir></dir><dir name="template"><dir name="Channelpilotsolutions"><file name="clicktracking_js.phtml" hash="20d1883b633d814587e5dd1661364fc1"/><file name="salestracking_js.phtml" hash="61c77c6fdab88cfac5989e7d47a8c5a4"/><file name="tracking_image.phtml" hash="f2477e9bf58ed34950b049db5af8a712"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="template"><dir name="channelpilotsolutions"><file name="array_dropdown.phtml" hash="5717b5f3ca67bb4da734572fdca1a907"/><file name="config_hint.phtml" hash="c92f883df809f89278492d1e22a352d7"/></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="Channelpilotsolutions_Channelpilot.csv" hash="1cba569e9ec981939eb4a9c3da7ea979"/></dir><dir name="de_CH"><file name="Channelpilotsolutions_Channelpilot.csv" hash="1cba569e9ec981939eb4a9c3da7ea979"/></dir><dir name="de_AT"><file name="Channelpilotsolutions_Channelpilot.csv" hash="1cba569e9ec981939eb4a9c3da7ea979"/></dir><dir name="fr_FR"><file name="Channelpilotsolutions_Channelpilot.csv" hash="23217faa0b1c623750bb91d1e324e082"/></dir><dir name="fr_CA"><file name="Channelpilotsolutions_Channelpilot.csv" hash="23217faa0b1c623750bb91d1e324e082"/></dir><dir name="en_AU"><file name="Channelpilotsolutions_Channelpilot.csv" hash="6ca86d9f43bbc1917c572d5d1d935677"/></dir><dir name="en_CA"><file name="Channelpilotsolutions_Channelpilot.csv" hash="6ca86d9f43bbc1917c572d5d1d935677"/></dir><dir name="en_GB"><file name="Channelpilotsolutions_Channelpilot.csv" hash="6ca86d9f43bbc1917c572d5d1d935677"/></dir><dir name="en_IE"><file name="Channelpilotsolutions_Channelpilot.csv" hash="6ca86d9f43bbc1917c572d5d1d935677"/></dir><dir name="en_NZ"><file name="Channelpilotsolutions_Channelpilot.csv" hash="6ca86d9f43bbc1917c572d5d1d935677"/></dir><dir name="en_US"><file name="Channelpilotsolutions_Channelpilot.csv" hash="6ca86d9f43bbc1917c572d5d1d935677"/></dir><dir name="es_AR"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_CL"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_CO"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_CR"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_ES"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_MX"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_PA"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_PE"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir><dir name="es_VE"><file name="Channelpilotsolutions_Channelpilot.csv" hash="e457ab4f2c03c46e8ce69bc6eb1dcc25"/></dir></target></contents>
|
36 |
<compatible/>
|
37 |
<dependencies/>
|
38 |
</package>
|