shopgate_module - Version 2.9.36

Version Notes

Shopgate Modul

Download this release

Release Info

Developer Stephan Recknagel
Extension shopgate_module
Version 2.9.36
Comparing to
See all releases


Code changes from version 2.9.35 to 2.9.36

app/code/community/Shopgate/Framework/Helper/Coupon.php CHANGED
@@ -22,35 +22,33 @@
22
  */
23
 
24
  /**
25
- * User: Steffen Meuser
26
- * Date: 16.05.14
27
- * Time: 18:07
28
- * E-Mail: steffen.meuser@shopgate.com
29
- */
30
-
31
- /**
32
- * config helper
33
  *
34
- * @author Shopgate GmbH, 35510 Butzbach, DE
35
- * @package Shopgate_Framework
36
  */
37
  class Shopgate_Framework_Helper_Coupon extends Mage_Core_Helper_Abstract
38
  {
39
  const COUPON_ATTRIUBTE_SET_NAME = 'Shopgate Coupon';
40
  const COUPON_PRODUCT_SKU = 'shopgate-coupon';
41
 
 
 
 
 
 
42
  protected $_attributeSet = null;
43
 
44
  /**
45
  * Determines if a product is a Shopgate Coupon
46
  *
47
  * @param Mage_Catalog_Model_Product $product
 
48
  * @return boolean
49
  */
50
  public function isShopgateCoupon(Mage_Catalog_Model_Product $product)
51
  {
52
- $attributeSetModel = Mage::getModel("eav/entity_attribute_set")
53
- ->load($product->getAttributeSetId());
54
 
55
  if ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL
56
  && $attributeSetModel->getAttributeSetName() == self::COUPON_ATTRIUBTE_SET_NAME
@@ -65,6 +63,7 @@ class Shopgate_Framework_Helper_Coupon extends Mage_Core_Helper_Abstract
65
  * Sets missing product Attributes for virutal product
66
  *
67
  * @param Mage_Catalog_Model_Product $product
 
68
  * @return Mage_Catalog_Model_Product
69
  */
70
  public function prepareShopgateCouponProduct(Mage_Catalog_Model_Product $product)
@@ -116,6 +115,7 @@ class Shopgate_Framework_Helper_Coupon extends Mage_Core_Helper_Abstract
116
  $this->_attributeSet = $this->_createShopgateCouponAttributeSet();
117
  }
118
  }
 
119
  return $this->_attributeSet;
120
  }
121
 
@@ -127,6 +127,7 @@ class Shopgate_Framework_Helper_Coupon extends Mage_Core_Helper_Abstract
127
  $entityTypeId = Mage::getModel('catalog/product')
128
  ->getResource()->getEntityType()->getId();
129
 
 
130
  $attributeSet = Mage::getModel('eav/entity_attribute_set')
131
  ->setEntityTypeId($entityTypeId)
132
  ->setAttributeSetName(self::COUPON_ATTRIUBTE_SET_NAME);
@@ -161,15 +162,16 @@ class Shopgate_Framework_Helper_Coupon extends Mage_Core_Helper_Abstract
161
  * Create magento coupon product from object
162
  *
163
  * @param Varien_Object $coupon
 
164
  * @return Mage_Catalog_Model_Product
165
  */
166
  public function createProductFromShopgateCoupon(Varien_Object $coupon)
167
  {
168
  /* @var $product Mage_Catalog_Model_Product */
169
  $product = Mage::getModel('catalog/product');
170
- $id = $product->getIdBySku($coupon->getItemNumber());
171
  $product->load($id);
172
-
173
  $product = $this->prepareShopgateCouponProduct($product);
174
  $product->setPriceCalculation(false);
175
  $product->setName($coupon->getName());
@@ -183,6 +185,202 @@ class Shopgate_Framework_Helper_Coupon extends Mage_Core_Helper_Abstract
183
  $product->save();
184
  Mage::app()->setCurrentStore($oldStoreId);
185
  }
 
186
  return $product;
187
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  }
22
  */
23
 
24
  /**
25
+ * Coupon & cart rule helper
 
 
 
 
 
 
 
26
  *
27
+ * @author Shopgate GmbH, 35510 Butzbach, DE
28
+ * @package Shopgate_Framework
29
  */
30
  class Shopgate_Framework_Helper_Coupon extends Mage_Core_Helper_Abstract
31
  {
32
  const COUPON_ATTRIUBTE_SET_NAME = 'Shopgate Coupon';
33
  const COUPON_PRODUCT_SKU = 'shopgate-coupon';
34
 
35
+ /**
36
+ * const to detect coupons, which just represent cart rules
37
+ */
38
+ const CART_RULE_COUPON_CODE = '1';
39
+
40
  protected $_attributeSet = null;
41
 
42
  /**
43
  * Determines if a product is a Shopgate Coupon
44
  *
45
  * @param Mage_Catalog_Model_Product $product
46
+ *
47
  * @return boolean
48
  */
49
  public function isShopgateCoupon(Mage_Catalog_Model_Product $product)
50
  {
51
+ $attributeSetModel = Mage::getModel('eav/entity_attribute_set')->load($product->getAttributeSetId());
 
52
 
53
  if ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL
54
  && $attributeSetModel->getAttributeSetName() == self::COUPON_ATTRIUBTE_SET_NAME
63
  * Sets missing product Attributes for virutal product
64
  *
65
  * @param Mage_Catalog_Model_Product $product
66
+ *
67
  * @return Mage_Catalog_Model_Product
68
  */
69
  public function prepareShopgateCouponProduct(Mage_Catalog_Model_Product $product)
115
  $this->_attributeSet = $this->_createShopgateCouponAttributeSet();
116
  }
117
  }
118
+
119
  return $this->_attributeSet;
120
  }
121
 
127
  $entityTypeId = Mage::getModel('catalog/product')
128
  ->getResource()->getEntityType()->getId();
129
 
130
+ /** @var Mage_Eav_Model_Entity_Attribute_Set $attributeSet */
131
  $attributeSet = Mage::getModel('eav/entity_attribute_set')
132
  ->setEntityTypeId($entityTypeId)
133
  ->setAttributeSetName(self::COUPON_ATTRIUBTE_SET_NAME);
162
  * Create magento coupon product from object
163
  *
164
  * @param Varien_Object $coupon
165
+ *
166
  * @return Mage_Catalog_Model_Product
167
  */
168
  public function createProductFromShopgateCoupon(Varien_Object $coupon)
169
  {
170
  /* @var $product Mage_Catalog_Model_Product */
171
  $product = Mage::getModel('catalog/product');
172
+ $id = $product->getIdBySku($coupon->getItemNumber());
173
  $product->load($id);
174
+
175
  $product = $this->prepareShopgateCouponProduct($product);
176
  $product->setPriceCalculation(false);
177
  $product->setName($coupon->getName());
185
  $product->save();
186
  Mage::app()->setCurrentStore($oldStoreId);
187
  }
188
+
189
  return $product;
190
  }
191
+
192
+ /**
193
+ * Check coupons for validation and apply shopping cart price rules to the cart
194
+ *
195
+ * @param Mage_Checkout_Model_Cart $mageCart
196
+ * @param ShopgateCart $cart
197
+ * @param bool $useTaxClasses
198
+ *
199
+ * @return ShopgateExternalCoupon[]
200
+ * @throws ShopgateLibraryException
201
+ */
202
+ public function checkCouponsAndCartRules($mageCart, ShopgateCart $cart, $useTaxClasses)
203
+ {
204
+ /* @var $mageQuote Mage_Sales_Model_Quote */
205
+ /* @var $mageCart Mage_Checkout_Model_Cart */
206
+ /* @var $mageCoupon Mage_SalesRule_Model_Coupon */
207
+ /* @var $mageRule Mage_SalesRule_Model_Rule */
208
+ $mageQuote = $mageCart->getQuote();
209
+ $mageQuote->setTotalsCollectedFlag(false)->collectTotals();
210
+
211
+ $externalCoupons = array();
212
+ $validCouponsInCart = 0;
213
+ $returnEmptyCoupon = false;
214
+ $appliedRules = $mageQuote->getAppliedRuleIds();
215
+ $totals = $mageQuote->getTotals();
216
+ $discountAmount = empty($totals['discount']) ? 0 : $totals['discount']->getValue();
217
+
218
+ if (!$cart->getExternalCoupons() && empty($discountAmount)) {
219
+ return array();
220
+ }
221
+
222
+ foreach ($cart->getExternalCoupons() as $coupon) {
223
+ if ($coupon->getCode() === self::CART_RULE_COUPON_CODE) {
224
+ $returnEmptyCoupon = true;
225
+ continue;
226
+ }
227
+
228
+ $externalCoupon = $this->validateExternalCoupon($coupon, $mageQuote, $useTaxClasses);
229
+
230
+ if ($externalCoupon->getIsValid()) {
231
+ $validCouponsInCart++;
232
+ }
233
+ if ($validCouponsInCart > 1) {
234
+ $errorCode = ShopgateLibraryException::COUPON_TOO_MANY_COUPONS;
235
+ $externalCoupon->setIsValid(false);
236
+ $externalCoupon->setNotValidMessage(ShopgateLibraryException::getMessageFor($errorCode));
237
+ }
238
+ $externalCoupons[] = $externalCoupon;
239
+ }
240
+
241
+ if (!empty($discountAmount) && $validCouponsInCart == 0) {
242
+ try {
243
+ $totals = $mageQuote->getTotals();
244
+ if (isset($totals['discount'])) {
245
+ $discount = $totals['discount'];
246
+ $coupon = new ShopgateExternalCoupon();
247
+ $coupon->setIsValid(true);
248
+ $coupon->setCode(self::CART_RULE_COUPON_CODE);
249
+ $title = $discount->getTitle();
250
+ $title = empty($title) ? Mage::helper('sales')->__('Discount') : $title;
251
+ $coupon->setName($title);
252
+ $coupon->setDescription($discount->getTitle());
253
+ $amountCoupon = abs($discount->getValue());
254
+ if ($useTaxClasses) {
255
+ $coupon->setAmountGross($amountCoupon);
256
+ } else {
257
+ $coupon->setAmountNet($amountCoupon);
258
+ }
259
+ $coupon->setCurrency(Mage::app()->getStore()->getCurrentCurrencyCode());
260
+ $coupon->setInternalInfo(
261
+ Mage::helper('shopgate')->getConfig()->jsonEncode(array('rule_ids' => $appliedRules))
262
+ );
263
+ $externalCoupons[] = $coupon;
264
+ $returnEmptyCoupon = false;
265
+ }
266
+ } catch (Exception $e) {
267
+ ShopgateLogger::getInstance()->log(
268
+ "Could not add rule with id " . $appliedRules . " to quote",
269
+ ShopgateLogger::LOGTYPE_DEBUG
270
+ );
271
+
272
+ return array();
273
+ }
274
+ }
275
+
276
+ if ($returnEmptyCoupon) {
277
+ $coupon = new ShopgateExternalCoupon();
278
+ $coupon->setCode(self::CART_RULE_COUPON_CODE);
279
+ $coupon->setName(Mage::helper('sales')->__('Discount'));
280
+ $coupon->setIsValid(false);
281
+ $externalCoupons[] = $coupon;
282
+ }
283
+
284
+ return $externalCoupons;
285
+ }
286
+
287
+ /**
288
+ * Checks a coupon for validation
289
+ *
290
+ * @param ShopgateExternalCoupon $coupon
291
+ * @param Mage_Sales_Model_Quote $mageQuote
292
+ * @param bool $useTaxClasses
293
+ *
294
+ * @return ShopgateExternalCoupon
295
+ * @throws ShopgateLibraryException
296
+ */
297
+ public function validateExternalCoupon($coupon, $mageQuote, $useTaxClasses)
298
+ {
299
+ /** @var ShopgateExternalCoupon $coupon */
300
+ $externalCoupon = new ShopgateExternalCoupon();
301
+ $externalCoupon->setIsValid(true);
302
+ $externalCoupon->setCode($coupon->getCode());
303
+
304
+ try {
305
+ $mageQuote->setCouponCode($coupon->getCode());
306
+ $mageQuote->setTotalsCollectedFlag(false)->collectTotals();
307
+ $totals = $mageQuote->getTotals();
308
+ } catch (Exception $e) {
309
+ $externalCoupon->setIsValid(false);
310
+ $externalCoupon->setNotValidMessage($e->getMessage());
311
+ }
312
+
313
+ if (Mage::helper('shopgate/config')->getIsMagentoVersionLower1410()) {
314
+ $mageRule = Mage::getModel('salesrule/rule')->load($coupon->getCode(), 'coupon_code');
315
+ $mageCoupon = $mageRule;
316
+ } else {
317
+ $mageCoupon = Mage::getModel('salesrule/coupon')->load($coupon->getCode(), 'code');
318
+ $mageRule = Mage::getModel('salesrule/rule')->load($mageCoupon->getRuleId());
319
+ }
320
+
321
+ if ($mageRule->getId() && $mageQuote->getCouponCode()) {
322
+ $discountName = isset($totals['discount'])
323
+ ? $totals['discount']->getTitle()
324
+ : $mageRule->getDescription();
325
+
326
+ $couponInfo = array();
327
+ $couponInfo["coupon_id"] = $mageCoupon->getId();
328
+ $couponInfo["rule_id"] = $mageRule->getId();
329
+
330
+ $amountCoupon = $mageQuote->getSubtotal() - $mageQuote->getSubtotalWithDiscount();
331
+ $storeLabel = $mageRule->getStoreLabel(Mage::app()->getStore()->getId());
332
+ $externalCoupon->setName($storeLabel ? $storeLabel : $mageRule->getName());
333
+ $externalCoupon->setDescription($discountName);
334
+ $externalCoupon->setIsFreeShipping((bool)$mageQuote->getShippingAddress()->getFreeShipping());
335
+ $externalCoupon->setInternalInfo(Mage::helper('shopgate')->getConfig()->jsonEncode($couponInfo));
336
+ if ($useTaxClasses) {
337
+ $externalCoupon->setAmountGross($amountCoupon);
338
+ } else {
339
+ $externalCoupon->setAmountNet($amountCoupon);
340
+ }
341
+ if (!$amountCoupon && !$externalCoupon->getIsFreeShipping()) {
342
+ $externalCoupon->setIsValid(0);
343
+ $externalCoupon->setAmount(0);
344
+ $externalCoupon->setNotValidMessage(
345
+ Mage::helper('shopgate')->__(
346
+ 'Coupon code "%s" is not valid.',
347
+ Mage::helper('core')->escapeHtml($coupon->getCode())
348
+ )
349
+ );
350
+ }
351
+ } else {
352
+ $externalCoupon->setIsValid(0);
353
+ $externalCoupon->setAmount(0);
354
+ $externalCoupon->setNotValidMessage(
355
+ Mage::helper('shopgate')->__(
356
+ 'Coupon code "%s" is not valid.',
357
+ Mage::helper('core')->escapeHtml($coupon->getCode())
358
+ )
359
+ );
360
+ }
361
+ $externalCoupon->setCurrency(Mage::app()->getStore()->getCurrentCurrencyCode());
362
+
363
+ return $externalCoupon;
364
+ }
365
+
366
+ /**
367
+ * Add coupon from this system to quote
368
+ *
369
+ * @param ShopgateCartBase $order
370
+ *
371
+ * @return ShopgateCartBase $order
372
+ */
373
+ public function removeCartRuleCoupons(ShopgateCartBase $order)
374
+ {
375
+ $externalCoupons = array();
376
+ foreach ($order->getExternalCoupons() as $coupon) {
377
+ /* @var $coupon ShopgateExternalCoupon */
378
+ if ($coupon->getCode() !== self::CART_RULE_COUPON_CODE) {
379
+ $externalCoupons[] = $coupon;
380
+ }
381
+ }
382
+ $order->setExternalCoupons($externalCoupons);
383
+
384
+ return $order;
385
+ }
386
  }
app/code/community/Shopgate/Framework/Model/Config.php CHANGED
@@ -95,6 +95,7 @@ class Shopgate_Framework_Model_Config extends ShopgateConfig
95
  const XML_PATH_SHOPGATE_ORDER_MARK_UNBLOCKED_AS_PAID = "shopgate/orders/mark_unblocked_orders_as_paid";
96
  const XML_PATH_SHOPGATE_ORDER_SEND_NEW_ORDER_MAIL = "shopgate/orders/send_new_order_mail";
97
  const XML_PATH_SHOPGATE_ORDER_CUSTOMFIELDS_TO_STATUSHISTORY = "shopgate/orders/write_customfields_into_statushistory";
 
98
  const XML_PATH_SHOPGATE_ORDER_ADD_ONLY_SIMPLE = "shopgate/orders/add_only_simple";
99
  const XML_PATH_SHOPGATE_ORDER_USE_SHOPGATE_PRICES = "shopgate/orders/use_shopgate_prices";
100
  const XML_PATH_SHOPGATE_REDIRECT_TYPE = "shopgate/mobile/redirect_type";
@@ -322,6 +323,7 @@ class Shopgate_Framework_Model_Config extends ShopgateConfig
322
  => Mage_CatalogInventory_Helper_Data::XML_PATH_SHOW_OUT_OF_STOCK,
323
  "available_text_attribute_code"
324
  => self::XML_PATH_SHOPGATE_EXPORT_AVAILABLE_TEXT_ATTRIBUTE_CODE,
 
325
  "add_only_simple" => self::XML_PATH_SHOPGATE_ORDER_ADD_ONLY_SIMPLE,
326
  "fix_one_cent_bug" => self::XML_PATH_SHOPGATE_FIX_ONE_CENT_BUG,
327
  "use_shopgate_prices" => self::XML_PATH_SHOPGATE_ORDER_USE_SHOPGATE_PRICES,
@@ -1044,6 +1046,19 @@ class Shopgate_Framework_Model_Config extends ShopgateConfig
1044
  return explode(",", $countries);
1045
  }
1046
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1047
  /**
1048
  * Returns if only the simple product should be added to the cart, in case the order contains config/simple prdocuts.
1049
  *
95
  const XML_PATH_SHOPGATE_ORDER_MARK_UNBLOCKED_AS_PAID = "shopgate/orders/mark_unblocked_orders_as_paid";
96
  const XML_PATH_SHOPGATE_ORDER_SEND_NEW_ORDER_MAIL = "shopgate/orders/send_new_order_mail";
97
  const XML_PATH_SHOPGATE_ORDER_CUSTOMFIELDS_TO_STATUSHISTORY = "shopgate/orders/write_customfields_into_statushistory";
98
+ const XML_PATH_SHOPGATE_ORDER_APPLY_CART_RULES = "shopgate/orders/apply_cart_rules";
99
  const XML_PATH_SHOPGATE_ORDER_ADD_ONLY_SIMPLE = "shopgate/orders/add_only_simple";
100
  const XML_PATH_SHOPGATE_ORDER_USE_SHOPGATE_PRICES = "shopgate/orders/use_shopgate_prices";
101
  const XML_PATH_SHOPGATE_REDIRECT_TYPE = "shopgate/mobile/redirect_type";
323
  => Mage_CatalogInventory_Helper_Data::XML_PATH_SHOW_OUT_OF_STOCK,
324
  "available_text_attribute_code"
325
  => self::XML_PATH_SHOPGATE_EXPORT_AVAILABLE_TEXT_ATTRIBUTE_CODE,
326
+ "apply_cart_rules" => self::XML_PATH_SHOPGATE_ORDER_APPLY_CART_RULES,
327
  "add_only_simple" => self::XML_PATH_SHOPGATE_ORDER_ADD_ONLY_SIMPLE,
328
  "fix_one_cent_bug" => self::XML_PATH_SHOPGATE_FIX_ONE_CENT_BUG,
329
  "use_shopgate_prices" => self::XML_PATH_SHOPGATE_ORDER_USE_SHOPGATE_PRICES,
1046
  return explode(",", $countries);
1047
  }
1048
 
1049
+ /**
1050
+ * Returns if cart rules should be applied to shopgate carts
1051
+ *
1052
+ * @return mixed
1053
+ */
1054
+ public function applyCartRulesToCart()
1055
+ {
1056
+ return Mage::getStoreConfigFlag(
1057
+ Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_ORDER_APPLY_CART_RULES,
1058
+ $this->getStoreViewId()
1059
+ );
1060
+ }
1061
+
1062
  /**
1063
  * Returns if only the simple product should be added to the cart, in case the order contains config/simple prdocuts.
1064
  *
app/code/community/Shopgate/Framework/Model/Observer.php CHANGED
@@ -207,16 +207,25 @@ class Shopgate_Framework_Model_Observer
207
  }
208
 
209
  /**
210
- * get merchant api
211
  *
212
  * @param $storeId
213
  */
214
- protected function _initMerchantApi($storeId)
215
  {
216
- /* @var $config Shopgate_Framework_Model_Config */
217
- if ($this->_config == null) {
218
  $this->_config = Mage::helper('shopgate/config')->getConfig($storeId);
219
  }
 
 
 
 
 
 
 
 
 
 
220
  $builder = new ShopgateBuilder($this->_config);
221
  $this->_merchantApi = $builder->buildMerchantApi();
222
  }
@@ -575,12 +584,15 @@ class Shopgate_Framework_Model_Observer
575
  public function beforeSalesrulesLoaded($observer)
576
  {
577
  if (Mage::helper('shopgate')->isShopgateApiRequest()) {
578
- $collection = $observer->getEvent()->getCollection();
579
- if ($collection instanceof Mage_SalesRule_Model_Resource_Rule_Collection) {
580
- $collection->getSelect()->where(
581
- 'coupon_type = ' . Mage_SalesRule_Model_Rule::COUPON_TYPE_SPECIFIC .
582
- ' OR simple_free_shipping IN (1,2)'
583
- );
 
 
 
584
  }
585
  }
586
  }
@@ -613,8 +625,8 @@ class Shopgate_Framework_Model_Observer
613
  Mage::app()->setCurrentStore($storeViewId);
614
 
615
  $collection = Mage::getModel('catalog/product')
616
- ->getResourceCollection()
617
- ->addFieldToFilter('type_id', 'virtual');
618
 
619
  $helper = Mage::helper('shopgate/coupon');
620
 
@@ -677,9 +689,9 @@ class Shopgate_Framework_Model_Observer
677
  );
678
 
679
  $collection = Mage::getModel('core/config_data')
680
- ->getCollection()
681
- ->addFieldToFilter('path', Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_SHOP_NUMBER)
682
- ->addFieldToFilter('value', $shopnumber);
683
 
684
  if ($collection->getSize() && $collection->getFirstItem()->getScope() == 'websites') {
685
  Mage::getConfig()->saveConfig(
207
  }
208
 
209
  /**
210
+ * get config
211
  *
212
  * @param $storeId
213
  */
214
+ protected function _initConfig($storeId = null)
215
  {
216
+ if ($this->_config == null || ($storeId !== null && $storeId !== $this->_config->getStoreViewId())) {
 
217
  $this->_config = Mage::helper('shopgate/config')->getConfig($storeId);
218
  }
219
+ }
220
+
221
+ /**
222
+ * get merchant api
223
+ *
224
+ * @param $storeId
225
+ */
226
+ protected function _initMerchantApi($storeId)
227
+ {
228
+ $this->_initConfig($storeId);
229
  $builder = new ShopgateBuilder($this->_config);
230
  $this->_merchantApi = $builder->buildMerchantApi();
231
  }
584
  public function beforeSalesrulesLoaded($observer)
585
  {
586
  if (Mage::helper('shopgate')->isShopgateApiRequest()) {
587
+ $this->_initConfig();
588
+ if (!$this->_config->applyCartRulesToCart() || Mage::registry('shopgate_disable_sales_rules')) {
589
+ $collection = $observer->getEvent()->getCollection();
590
+ if ($collection instanceof Mage_SalesRule_Model_Resource_Rule_Collection) {
591
+ $collection->getSelect()->where(
592
+ 'coupon_type = ' . Mage_SalesRule_Model_Rule::COUPON_TYPE_SPECIFIC .
593
+ ' OR simple_free_shipping IN (1,2)'
594
+ );
595
+ }
596
  }
597
  }
598
  }
625
  Mage::app()->setCurrentStore($storeViewId);
626
 
627
  $collection = Mage::getModel('catalog/product')
628
+ ->getResourceCollection()
629
+ ->addFieldToFilter('type_id', 'virtual');
630
 
631
  $helper = Mage::helper('shopgate/coupon');
632
 
689
  );
690
 
691
  $collection = Mage::getModel('core/config_data')
692
+ ->getCollection()
693
+ ->addFieldToFilter('path', Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_SHOP_NUMBER)
694
+ ->addFieldToFilter('value', $shopnumber);
695
 
696
  if ($collection->getSize() && $collection->getFirstItem()->getScope() == 'websites') {
697
  Mage::getConfig()->saveConfig(
app/code/community/Shopgate/Framework/Model/Shopgate/Plugin.php CHANGED
@@ -1062,6 +1062,10 @@ class Shopgate_Framework_Model_Shopgate_Plugin extends ShopgatePlugin
1062
  */
1063
  protected function _setQuoteShopCoupons($quote, $order)
1064
  {
 
 
 
 
1065
  if (count($order->getExternalCoupons()) > 1) {
1066
  throw new ShopgateLibraryException(ShopgateLibraryException::COUPON_TOO_MANY_COUPONS);
1067
  }
@@ -1116,6 +1120,11 @@ class Shopgate_Framework_Model_Shopgate_Plugin extends ShopgatePlugin
1116
  $quote->save();
1117
  }
1118
 
 
 
 
 
 
1119
  return $quote;
1120
  }
1121
 
@@ -1556,10 +1565,9 @@ class Shopgate_Framework_Model_Shopgate_Plugin extends ShopgatePlugin
1556
  /**
1557
  * Create a Magento cart and the quote
1558
  *
1559
- * @throws ShopgateLibraryException
1560
- *
1561
  * @param ShopgateCart $cart
1562
  *
 
1563
  * @return Mage_Checkout_Model_Cart
1564
  */
1565
  protected function _createMagentoCartFromShopgateCart(ShopgateCart $cart)
@@ -1595,21 +1603,24 @@ class Shopgate_Framework_Model_Shopgate_Plugin extends ShopgatePlugin
1595
  * * Coupon cannot found
1596
  * * Magento throws an exception
1597
  *
1598
- * @param $mageCart
1599
- * @param ShopgateCart $cart
1600
  *
1601
- * @return mixed|null|ShopgateExternalCoupon
1602
  * @throws ShopgateLibraryException
1603
  */
1604
  public function checkCoupons($mageCart, ShopgateCart $cart)
1605
  {
1606
  /* @var $mageQuote Mage_Sales_Model_Quote */
1607
- /* @var $mageCart Mage_Checkout_Model_Cart */
1608
  /* @var $mageCoupon Mage_SalesRule_Model_Coupon */
1609
  /* @var $mageRule Mage_SalesRule_Model_Rule */
1610
 
 
 
 
 
1611
  if (!$cart->getExternalCoupons()) {
1612
- return null;
1613
  }
1614
 
1615
  $externalCoupons = array();
@@ -1617,74 +1628,17 @@ class Shopgate_Framework_Model_Shopgate_Plugin extends ShopgatePlugin
1617
  $validCouponsInCart = 0;
1618
 
1619
  foreach ($cart->getExternalCoupons() as $coupon) {
1620
- /** @var ShopgateExternalCoupon $coupon */
1621
- $externalCoupon = new ShopgateExternalCoupon();
1622
- $externalCoupon->setIsValid(true);
1623
- $externalCoupon->setCode($coupon->getCode());
1624
-
1625
- try {
1626
- $mageQuote->setCouponCode($coupon->getCode());
1627
- $mageQuote->setTotalsCollectedFlag(false)->collectTotals();
1628
- } catch (Exception $e) {
1629
- $externalCoupon->setIsValid(false);
1630
- $externalCoupon->setNotValidMessage($e->getMessage());
1631
- }
1632
-
1633
- if ($this->_getConfigHelper()->getIsMagentoVersionLower1410()) {
1634
- $mageRule = Mage::getModel('salesrule/rule')->load($coupon->getCode(), 'coupon_code');
1635
- $mageCoupon = $mageRule;
1636
- } else {
1637
- $mageCoupon = Mage::getModel('salesrule/coupon')->load($coupon->getCode(), 'code');
1638
- $mageRule = Mage::getModel('salesrule/rule')->load($mageCoupon->getRuleId());
1639
- }
1640
 
1641
- if ($mageRule->getId() && $mageQuote->getCouponCode()) {
1642
- $couponInfo = array();
1643
- $couponInfo["coupon_id"] = $mageCoupon->getId();
1644
- $couponInfo["rule_id"] = $mageRule->getId();
1645
-
1646
- $amountCoupon = $mageQuote->getSubtotal() - $mageQuote->getSubtotalWithDiscount();
1647
-
1648
- $storeLabel = $mageRule->getStoreLabel(Mage::app()->getStore()->getId());
1649
- $externalCoupon->setName($storeLabel ? $storeLabel : $mageRule->getName());
1650
- $externalCoupon->setDescription($mageRule->getDescription());
1651
- $externalCoupon->setIsFreeShipping((bool)$mageQuote->getShippingAddress()->getFreeShipping());
1652
- $externalCoupon->setInternalInfo($this->jsonEncode($couponInfo));
1653
- if ($this->useTaxClasses) {
1654
- $externalCoupon->setAmountGross($amountCoupon);
1655
- } else {
1656
- $externalCoupon->setAmountNet($amountCoupon);
1657
- }
1658
- if (!$amountCoupon && !$externalCoupon->getIsFreeShipping()) {
1659
- $externalCoupon->setIsValid(false);
1660
- $externalCoupon->setNotValidMessage(
1661
- $this->_getHelper()->__(
1662
- 'Coupon code "%s" is not valid.',
1663
- Mage::helper('core')->htmlEscape($coupon->getCode())
1664
- )
1665
- );
1666
- }
1667
-
1668
- } else {
1669
- $externalCoupon->setIsValid(false);
1670
- $externalCoupon->setNotValidMessage(
1671
- $this->_getHelper()->__(
1672
- 'Coupon code "%s" is not valid.',
1673
- Mage::helper('core')->htmlEscape($coupon->getCode())
1674
- )
1675
- );
1676
  }
1677
-
1678
- if ($externalCoupon->getIsValid() && $validCouponsInCart >= 1) {
1679
  $errorCode = ShopgateLibraryException::COUPON_TOO_MANY_COUPONS;
1680
  $externalCoupon->setIsValid(false);
1681
  $externalCoupon->setNotValidMessage(ShopgateLibraryException::getMessageFor($errorCode));
1682
  }
1683
 
1684
- if ($externalCoupon->getIsValid()) {
1685
- $validCouponsInCart++;
1686
- }
1687
-
1688
  $externalCoupons[] = $externalCoupon;
1689
  }
1690
 
1062
  */
1063
  protected function _setQuoteShopCoupons($quote, $order)
1064
  {
1065
+ if ($this->_getConfig()->applyCartRulesToCart()) {
1066
+ $order = $this->_getCouponHelper()->removeCartRuleCoupons($order);
1067
+ }
1068
+
1069
  if (count($order->getExternalCoupons()) > 1) {
1070
  throw new ShopgateLibraryException(ShopgateLibraryException::COUPON_TOO_MANY_COUPONS);
1071
  }
1120
  $quote->save();
1121
  }
1122
 
1123
+ if ($this->_getConfig()->applyCartRulesToCart()) {
1124
+ $session = Mage::getSingleton('checkout/session');
1125
+ $session->replaceQuote($quote);
1126
+ }
1127
+
1128
  return $quote;
1129
  }
1130
 
1565
  /**
1566
  * Create a Magento cart and the quote
1567
  *
 
 
1568
  * @param ShopgateCart $cart
1569
  *
1570
+ * @throws ShopgateLibraryException
1571
  * @return Mage_Checkout_Model_Cart
1572
  */
1573
  protected function _createMagentoCartFromShopgateCart(ShopgateCart $cart)
1603
  * * Coupon cannot found
1604
  * * Magento throws an exception
1605
  *
1606
+ * @param Mage_Checkout_Model_Cart $mageCart
1607
+ * @param ShopgateCart $cart
1608
  *
1609
+ * @return ShopgateExternalCoupon[]
1610
  * @throws ShopgateLibraryException
1611
  */
1612
  public function checkCoupons($mageCart, ShopgateCart $cart)
1613
  {
1614
  /* @var $mageQuote Mage_Sales_Model_Quote */
 
1615
  /* @var $mageCoupon Mage_SalesRule_Model_Coupon */
1616
  /* @var $mageRule Mage_SalesRule_Model_Rule */
1617
 
1618
+ if ($this->_getConfig()->applyCartRulesToCart()) {
1619
+ return $this->_getCouponHelper()->checkCouponsAndCartRules($mageCart, $cart, $this->useTaxClasses);
1620
+ }
1621
+
1622
  if (!$cart->getExternalCoupons()) {
1623
+ return array();
1624
  }
1625
 
1626
  $externalCoupons = array();
1628
  $validCouponsInCart = 0;
1629
 
1630
  foreach ($cart->getExternalCoupons() as $coupon) {
1631
+ $externalCoupon = $this->_getCouponHelper()->validateExternalCoupon($coupon, $mageQuote, $this->useTaxClasses);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1632
 
1633
+ if ($externalCoupon->getIsValid()) {
1634
+ $validCouponsInCart++;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1635
  }
1636
+ if ($validCouponsInCart > 1) {
 
1637
  $errorCode = ShopgateLibraryException::COUPON_TOO_MANY_COUPONS;
1638
  $externalCoupon->setIsValid(false);
1639
  $externalCoupon->setNotValidMessage(ShopgateLibraryException::getMessageFor($errorCode));
1640
  }
1641
 
 
 
 
 
1642
  $externalCoupons[] = $externalCoupon;
1643
  }
1644
 
app/code/community/Shopgate/Framework/Test/Model/ObserverTest.php ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Shopgate GmbH
5
+ *
6
+ * URHEBERRECHTSHINWEIS
7
+ *
8
+ * Dieses Plugin ist urheberrechtlich geschützt. Es darf ausschließlich von Kunden der Shopgate GmbH
9
+ * zum Zwecke der eigenen Kommunikation zwischen dem IT-System des Kunden mit dem IT-System der
10
+ * Shopgate GmbH über www.shopgate.com verwendet werden. Eine darüber hinausgehende Vervielfältigung, Verbreitung,
11
+ * öffentliche Zugänglichmachung, Bearbeitung oder Weitergabe an Dritte ist nur mit unserer vorherigen
12
+ * schriftlichen Zustimmung zulässig. Die Regelungen der §§ 69 d Abs. 2, 3 und 69 e UrhG bleiben hiervon unberührt.
13
+ *
14
+ * COPYRIGHT NOTICE
15
+ *
16
+ * This plugin is the subject of copyright protection. It is only for the use of Shopgate GmbH customers,
17
+ * for the purpose of facilitating communication between the IT system of the customer and the IT system
18
+ * of Shopgate GmbH via www.shopgate.com. Any reproduction, dissemination, public propagation, processing or
19
+ * transfer to third parties is only permitted where we previously consented thereto in writing. The provisions
20
+ * of paragraph 69 d, sub-paragraphs 2, 3 and paragraph 69, sub-paragraph e of the German Copyright Act shall remain unaffected.
21
+ *
22
+ * @author Shopgate GmbH <interfaces@shopgate.com>
23
+ *
24
+ * @coversDefaultClass Shopgate_Framework_Model_Observer
25
+ */
26
+ class Shopgate_Framework_Test_Model_ObserverTest extends EcomDev_PHPUnit_Test_Case
27
+ {
28
+ /**
29
+ * Returns true that we are making a Shopgate API request
30
+ */
31
+ public function setUp()
32
+ {
33
+ $helper = $this->getHelperMock('shopgate', array('isShopgateApiRequest'));
34
+ $helper->expects($this->any())->method('isShopgateApiRequest')->willReturn(true);
35
+ $this->replaceByMock('helper', 'shopgate', $helper);
36
+ }
37
+
38
+ /**
39
+ * @param bool $expected - whether Sales Rules are blocked from applying to cart/order
40
+ * @param bool $config - config value of "Apply Sales Rules"
41
+ * @param bool $registryValue - registry value to disable sales rules from applying, true - disable
42
+ *
43
+ * @covers ::beforeSalesrulesLoaded
44
+ * @dataProvider salesRuleDataProvider
45
+ */
46
+ public function testBeforeSalesrulesLoaded($expected, $config, $registryValue)
47
+ {
48
+ $observer = new Varien_Event_Observer();
49
+ $event = new Varien_Event();
50
+ $collectionMock = $this->getResourceModelMock('salesrule/rule_collection', array('getReadConnection'));
51
+ $event->setData('collection', $collectionMock);
52
+ $observer->setEvent($event);
53
+ $registryValue ? Mage::register('shopgate_disable_sales_rules', $registryValue) : false;
54
+
55
+ Mage::app()->getStore(0)->setConfig('shopgate/orders/apply_cart_rules', (int)$config);
56
+ Mage::getModel('shopgate/observer')->beforeSalesrulesLoaded($observer);
57
+
58
+ /** @var Mage_SalesRule_Model_Resource_Rule_Collection $collectionMock */
59
+ $where = $collectionMock->getSelect()->getPart(Zend_Db_Select::WHERE);
60
+ $actual = isset($where[0]) && strpos($where[0], 'coupon_type') !== false;
61
+ $this->assertEquals($expected, $actual);
62
+ }
63
+
64
+ /**
65
+ * @return array
66
+ */
67
+ public function salesRuleDataProvider()
68
+ {
69
+ return array(
70
+ array(
71
+ 'Sales Rules are blocked' => true,
72
+ 'Apply Sales Rules in cfg' => true,
73
+ 'Sales Rules Disabled in registry' => true
74
+ ),
75
+ array(
76
+ 'Sales Rules are blocked' => false,
77
+ 'Apply Sales Rules in cfg' => true,
78
+ 'Sales Rules Disabled in registry' => false
79
+ ),
80
+ array(
81
+ 'Sales Rules are blocked' => true,
82
+ 'Apply Sales Rules in cfg' => false,
83
+ 'Sales Rules Disabled in registry' => true
84
+ ),
85
+ array(
86
+ 'Sales Rules are blocked' => true,
87
+ 'Apply Sales Rules in cfg' => false,
88
+ 'Sales Rules Disabled in registry' => false
89
+ )
90
+ );
91
+ }
92
+
93
+ /**
94
+ * @after
95
+ */
96
+ public function tearDown()
97
+ {
98
+ Mage::unregister('shopgate_disable_sales_rules');
99
+ }
100
+ }
app/code/community/Shopgate/Framework/changelog.txt CHANGED
@@ -1,3 +1,7 @@
 
 
 
 
1
  '''Version 2.9.35'''
2
  * Fixed PayPal Website Payments Pro missing IPN data & no invoice
3
  * Fixed bug with getting BillSAFE orders to ship
1
+ '''Version 2.9.36'''
2
+ * Update to library version 2.9.42
3
+ * Added support of shopping cart price rules for mobile orders
4
+
5
  '''Version 2.9.35'''
6
  * Fixed PayPal Website Payments Pro missing IPN data & no invoice
7
  * Fixed bug with getting BillSAFE orders to ship
app/code/community/Shopgate/Framework/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Shopgate_Framework>
5
- <version>2.9.35</version>
6
  </Shopgate_Framework>
7
  </modules>
8
  <phpunit>
@@ -364,6 +364,7 @@
364
  <write_customfields_into_statushistory>1</write_customfields_into_statushistory>
365
  <payment_title>Shopgate</payment_title>
366
  <shipping_title>Shopgate</shipping_title>
 
367
  <add_only_simple>0</add_only_simple>
368
  <use_shopgate_prices>0</use_shopgate_prices>
369
  </orders>
2
  <config>
3
  <modules>
4
  <Shopgate_Framework>
5
+ <version>2.9.36</version>
6
  </Shopgate_Framework>
7
  </modules>
8
  <phpunit>
364
  <write_customfields_into_statushistory>1</write_customfields_into_statushistory>
365
  <payment_title>Shopgate</payment_title>
366
  <shipping_title>Shopgate</shipping_title>
367
+ <apply_cart_rules>0</apply_cart_rules>
368
  <add_only_simple>0</add_only_simple>
369
  <use_shopgate_prices>0</use_shopgate_prices>
370
  </orders>
app/code/community/Shopgate/Framework/etc/system.xml CHANGED
@@ -507,6 +507,16 @@
507
  <show_in_website>1</show_in_website>
508
  <show_in_store>1</show_in_store>
509
  </shipping_title>
 
 
 
 
 
 
 
 
 
 
510
  <add_only_simple translate="label comment">
511
  <label>Add only the simple Product to order</label>
512
  <comment>Note: In case the order contains a simple/config product, only the the simple product will be added to the order.</comment>
507
  <show_in_website>1</show_in_website>
508
  <show_in_store>1</show_in_store>
509
  </shipping_title>
510
+ <apply_cart_rules translate="label comment">
511
+ <label>Apply Shopping Cart Price Rules to mobile orders</label>
512
+ <comment>Note: The discount will be shown as a coupon on the mobile shop's cart page.</comment>
513
+ <frontend_type>select</frontend_type>
514
+ <source_model>adminhtml/system_config_source_yesno</source_model>
515
+ <sort_order>55</sort_order>
516
+ <show_in_default>0</show_in_default>
517
+ <show_in_website>1</show_in_website>
518
+ <show_in_store>1</show_in_store>
519
+ </apply_cart_rules>
520
  <add_only_simple translate="label comment">
521
  <label>Add only the simple Product to order</label>
522
  <comment>Note: In case the order contains a simple/config product, only the the simple product will be added to the order.</comment>
app/locale/de_AT/Shopgate_Framework.csv CHANGED
@@ -228,6 +228,8 @@
228
  "Attributes which should be exported","Attribute die exportiert werden sollen"
229
  "Use Article Price Index in Product Export","Preis Index beim Export benutzen"
230
  "Using the price index will speed up the export process but may show wrong prices if the index is outdated.","Die Benutzung des Preis Indexes wird den Export beschleunigen, kann aber zu falschen Preisen führen wenn der Index veraltet ist."
 
 
231
  "Add only the simple Product to order","Nur den einfachen Artikel der Bestellung hinzufügen"
232
  "Note: In case the order contains a simple/config product, only the the simple product will be added to the order.","Hinweis: Wenn eine Bestellung konfigurierbare Artikel enthält werden nur die jeweiligen einfachen Artikel der Bestellung hinzugefügt."
233
  "Virtual","Virtuelle Artikel"
228
  "Attributes which should be exported","Attribute die exportiert werden sollen"
229
  "Use Article Price Index in Product Export","Preis Index beim Export benutzen"
230
  "Using the price index will speed up the export process but may show wrong prices if the index is outdated.","Die Benutzung des Preis Indexes wird den Export beschleunigen, kann aber zu falschen Preisen führen wenn der Index veraltet ist."
231
+ "Apply Shopping Cart Price Rules to mobile orders","Warenkorb Preisregeln auf mobile Bestellungen anwenden"
232
+ "Note: The discount will be shown as a coupon on the mobile shop's cart page.","Hinweis: Der Rabatt wird im mobilen Shop als Gutschein dargestellt."
233
  "Add only the simple Product to order","Nur den einfachen Artikel der Bestellung hinzufügen"
234
  "Note: In case the order contains a simple/config product, only the the simple product will be added to the order.","Hinweis: Wenn eine Bestellung konfigurierbare Artikel enthält werden nur die jeweiligen einfachen Artikel der Bestellung hinzugefügt."
235
  "Virtual","Virtuelle Artikel"
app/locale/de_CH/Shopgate_Framework.csv CHANGED
@@ -228,6 +228,8 @@
228
  "Attributes which should be exported","Attribute die exportiert werden sollen"
229
  "Use Article Price Index in Product Export","Preis Index beim Export benutzen"
230
  "Using the price index will speed up the export process but may show wrong prices if the index is outdated.","Die Benutzung des Preis Indexes wird den Export beschleunigen, kann aber zu falschen Preisen führen wenn der Index veraltet ist."
 
 
231
  "Add only the simple Product to order","Nur den einfachen Artikel der Bestellung hinzufügen"
232
  "Note: In case the order contains a simple/config product, only the the simple product will be added to the order.","Hinweis: Wenn eine Bestellung konfigurierbare Artikel enthält werden nur die jeweiligen einfachen Artikel der Bestellung hinzugefügt."
233
  "Virtual","Virtuelle Artikel"
228
  "Attributes which should be exported","Attribute die exportiert werden sollen"
229
  "Use Article Price Index in Product Export","Preis Index beim Export benutzen"
230
  "Using the price index will speed up the export process but may show wrong prices if the index is outdated.","Die Benutzung des Preis Indexes wird den Export beschleunigen, kann aber zu falschen Preisen führen wenn der Index veraltet ist."
231
+ "Apply Shopping Cart Price Rules to mobile orders","Warenkorb Preisregeln auf mobile Bestellungen anwenden"
232
+ "Note: The discount will be shown as a coupon on the mobile shop's cart page.","Hinweis: Der Rabatt wird im mobilen Shop als Gutschein dargestellt."
233
  "Add only the simple Product to order","Nur den einfachen Artikel der Bestellung hinzufügen"
234
  "Note: In case the order contains a simple/config product, only the the simple product will be added to the order.","Hinweis: Wenn eine Bestellung konfigurierbare Artikel enthält werden nur die jeweiligen einfachen Artikel der Bestellung hinzugefügt."
235
  "Virtual","Virtuelle Artikel"
app/locale/de_DE/Shopgate_Framework.csv CHANGED
@@ -228,6 +228,8 @@
228
  "Attributes which should be exported","Attribute die exportiert werden sollen"
229
  "Use Article Price Index in Product Export","Preis Index beim Export benutzen"
230
  "Using the price index will speed up the export process but may show wrong prices if the index is outdated.","Die Benutzung des Preis Indexes wird den Export beschleunigen, kann aber zu falschen Preisen führen wenn der Index veraltet ist."
 
 
231
  "Add only the simple Product to order","Nur den einfachen Artikel der Bestellung hinzufügen"
232
  "Note: In case the order contains a simple/config product, only the the simple product will be added to the order.","Hinweis: Wenn eine Bestellung konfigurierbare Artikel enthält werden nur die jeweiligen einfachen Artikel der Bestellung hinzugefügt."
233
  "Virtual","Virtuelle Artikel"
228
  "Attributes which should be exported","Attribute die exportiert werden sollen"
229
  "Use Article Price Index in Product Export","Preis Index beim Export benutzen"
230
  "Using the price index will speed up the export process but may show wrong prices if the index is outdated.","Die Benutzung des Preis Indexes wird den Export beschleunigen, kann aber zu falschen Preisen führen wenn der Index veraltet ist."
231
+ "Apply Shopping Cart Price Rules to mobile orders","Warenkorb Preisregeln auf mobile Bestellungen anwenden"
232
+ "Note: The discount will be shown as a coupon on the mobile shop's cart page.","Hinweis: Der Rabatt wird im mobilen Shop als Gutschein dargestellt."
233
  "Add only the simple Product to order","Nur den einfachen Artikel der Bestellung hinzufügen"
234
  "Note: In case the order contains a simple/config product, only the the simple product will be added to the order.","Hinweis: Wenn eine Bestellung konfigurierbare Artikel enthält werden nur die jeweiligen einfachen Artikel der Bestellung hinzugefügt."
235
  "Virtual","Virtuelle Artikel"
lib/Shopgate/changelog.txt CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  '''Version 2.9.41'''
2
  * meta tags and mobile header script won't be displayed anymore for inactive shops when using Shopgate_Helper_Redirect_MobileRedirect
3
 
1
+ '''Version 2.9.42'''
2
+ * fixed an issue with home page infinite redirect loop
3
+ * fixed a bug in processing the user agent blacklist used for mobile redirect
4
+ * moved ShopgateOrder::$tracking_get_parameters and its getter & setter to ShopgateCartBase
5
+
6
  '''Version 2.9.41'''
7
  * meta tags and mobile header script won't be displayed anymore for inactive shops when using Shopgate_Helper_Redirect_MobileRedirect
8
 
lib/Shopgate/classes/core.php CHANGED
@@ -24,7 +24,7 @@
24
  ###################################################################################
25
  # define constants
26
  ###################################################################################
27
- define('SHOPGATE_LIBRARY_VERSION', '2.9.41');
28
  define('SHOPGATE_LIBRARY_ENCODING' , 'UTF-8');
29
  define('SHOPGATE_BASE_DIR', realpath(dirname(__FILE__).'/../'));
30
 
24
  ###################################################################################
25
  # define constants
26
  ###################################################################################
27
+ define("SHOPGATE_LIBRARY_VERSION", "2.9.42");
28
  define('SHOPGATE_LIBRARY_ENCODING' , 'UTF-8');
29
  define('SHOPGATE_BASE_DIR', realpath(dirname(__FILE__).'/../'));
30
 
lib/Shopgate/classes/helper/redirect/KeywordsManager.php CHANGED
@@ -45,14 +45,14 @@ class Shopgate_Helper_Redirect_KeywordsManager implements Shopgate_Helper_Redire
45
  protected $disableUpdate;
46
 
47
  /**
48
- * @param ShopgateMerchantApi $merchantApi
49
- * @param string $whitelistCacheFilePath
50
- * @param string $blacklistCacheFilePath
51
- * @param int $cacheTimeout
52
- * @param bool $disableUpdate
53
  */
54
  public function __construct(
55
- ShopgateMerchantApi $merchantApi,
56
  $whitelistCacheFilePath,
57
  $blacklistCacheFilePath,
58
  $cacheTimeout = self::DEFAULT_CACHE_TIME,
@@ -73,16 +73,19 @@ class Shopgate_Helper_Redirect_KeywordsManager implements Shopgate_Helper_Redire
73
  public function toRegEx()
74
  {
75
  return
76
- '/' .
 
 
 
77
 
78
  // positive lookahead for the whitelist
79
  '(?=' . implode('|', array_map(array($this, 'prepareKeyword'), $this->whitelist)) . ')' .
80
 
81
  // negative lookahead for the blacklist
82
- '(?!' . implode('|', array_map(array($this, 'prepareKeyword'), $this->blacklist)) . ')' .
83
 
84
  // modfiers: case-insensitive
85
- '/i';
86
  }
87
 
88
  public function getWhitelist()
45
  protected $disableUpdate;
46
 
47
  /**
48
+ * @param ShopgateMerchantApiInterface $merchantApi
49
+ * @param string $whitelistCacheFilePath
50
+ * @param string $blacklistCacheFilePath
51
+ * @param int $cacheTimeout
52
+ * @param bool $disableUpdate
53
  */
54
  public function __construct(
55
+ ShopgateMerchantApiInterface $merchantApi,
56
  $whitelistCacheFilePath,
57
  $blacklistCacheFilePath,
58
  $cacheTimeout = self::DEFAULT_CACHE_TIME,
73
  public function toRegEx()
74
  {
75
  return
76
+ '/^' .
77
+
78
+ // negative lookahead for the blacklist
79
+ '((?!' . implode('|', array_map(array($this, 'prepareKeyword'), $this->blacklist)) . ').)*' .
80
 
81
  // positive lookahead for the whitelist
82
  '(?=' . implode('|', array_map(array($this, 'prepareKeyword'), $this->whitelist)) . ')' .
83
 
84
  // negative lookahead for the blacklist
85
+ '((?!' . implode('|', array_map(array($this, 'prepareKeyword'), $this->blacklist)) . ').)*' .
86
 
87
  // modfiers: case-insensitive
88
+ '$/i';
89
  }
90
 
91
  public function getWhitelist()
lib/Shopgate/classes/helper/redirect/LinkBuilder.php CHANGED
@@ -49,12 +49,12 @@ class Shopgate_Helper_Redirect_LinkBuilder implements Shopgate_Helper_Redirect_L
49
 
50
  public function buildDefault(array $parameters = array())
51
  {
52
- return $this->appendRedirectableGetParameters($this->getUrlFor(self::LINK_TYPE_DEFAULT, $parameters));
53
  }
54
 
55
  public function buildHome(array $parameters = array())
56
  {
57
- return $this->appendRedirectableGetParameters($this->getUrlFor(self::LINK_TYPE_HOME, $parameters));
58
  }
59
 
60
  public function buildProduct($uid, array $parameters = array())
49
 
50
  public function buildDefault(array $parameters = array())
51
  {
52
+ return $this->buildScriptFor(self::LINK_TYPE_DEFAULT, '', '');
53
  }
54
 
55
  public function buildHome(array $parameters = array())
56
  {
57
+ return $this->buildScriptFor(self::LINK_TYPE_HOME, '', '');
58
  }
59
 
60
  public function buildProduct($uid, array $parameters = array())
lib/Shopgate/classes/orders.php CHANGED
@@ -217,8 +217,9 @@ abstract class ShopgateCartBase extends ShopgateContainer {
217
  protected $external_coupons = array();
218
  protected $shopgate_coupons = array();
219
 
220
- protected $items = array();
221
-
 
222
  ##########
223
  # Setter #
224
  ##########
@@ -527,8 +528,16 @@ abstract class ShopgateCartBase extends ShopgateContainer {
527
 
528
  $this->items = $value;
529
  }
530
-
531
-
 
 
 
 
 
 
 
 
532
  ##########
533
  # Getter #
534
  ##########
@@ -723,6 +732,14 @@ abstract class ShopgateCartBase extends ShopgateContainer {
723
  public function getItems() {
724
  return $this->items;
725
  }
 
 
 
 
 
 
 
 
726
  }
727
 
728
  class ShopgateCart extends ShopgateCartBase {
@@ -773,8 +790,7 @@ class ShopgateOrder extends ShopgateCartBase {
773
  protected $update_payment = 0;
774
 
775
  protected $delivery_notes = array();
776
- protected $tracking_get_parameters = array();
777
-
778
  public function accept(ShopgateContainerVisitor $v) {
779
  $v->visitOrder($this);
780
  }
@@ -935,15 +951,10 @@ class ShopgateOrder extends ShopgateCartBase {
935
 
936
  $this->delivery_notes = $value;
937
  }
938
-
939
- /**
940
- * @param array $value
941
- */
942
- public function setTrackingGetParameters($value) {
943
- $this->tracking_get_parameters = (array) $value;
944
- }
945
-
946
-
947
  ##########
948
  # Getter #
949
  ##########
@@ -1114,13 +1125,8 @@ class ShopgateOrder extends ShopgateCartBase {
1114
  public function getDeliveryNotes() {
1115
  return $this->delivery_notes;
1116
  }
1117
-
1118
- /**
1119
- * @return array
1120
- */
1121
- public function getTrackingGetParameters() {
1122
- return $this->tracking_get_parameters;
1123
- }
1124
  }
1125
 
1126
  class ShopgateOrderItem extends ShopgateContainer {
217
  protected $external_coupons = array();
218
  protected $shopgate_coupons = array();
219
 
220
+ protected $items = array();
221
+ protected $tracking_get_parameters = array();
222
+
223
  ##########
224
  # Setter #
225
  ##########
528
 
529
  $this->items = $value;
530
  }
531
+
532
+ /**
533
+ * @param array $value
534
+ */
535
+ public function setTrackingGetParameters($value)
536
+ {
537
+ $this->tracking_get_parameters = (array)$value;
538
+ }
539
+
540
+
541
  ##########
542
  # Getter #
543
  ##########
732
  public function getItems() {
733
  return $this->items;
734
  }
735
+
736
+ /**
737
+ * @return array
738
+ */
739
+ public function getTrackingGetParameters()
740
+ {
741
+ return $this->tracking_get_parameters;
742
+ }
743
  }
744
 
745
  class ShopgateCart extends ShopgateCartBase {
790
  protected $update_payment = 0;
791
 
792
  protected $delivery_notes = array();
793
+
 
794
  public function accept(ShopgateContainerVisitor $v) {
795
  $v->visitOrder($this);
796
  }
951
 
952
  $this->delivery_notes = $value;
953
  }
954
+
955
+
956
+
957
+
 
 
 
 
 
958
  ##########
959
  # Getter #
960
  ##########
1125
  public function getDeliveryNotes() {
1126
  return $this->delivery_notes;
1127
  }
1128
+
1129
+
 
 
 
 
 
1130
  }
1131
 
1132
  class ShopgateOrderItem extends ShopgateContainer {
lib/Shopgate/tests/classes/helper/redirect/KeywordsManagerTest.php ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Shopgate GmbH
5
+ *
6
+ * URHEBERRECHTSHINWEIS
7
+ *
8
+ * Dieses Plugin ist urheberrechtlich geschützt. Es darf ausschließlich von Kunden der Shopgate GmbH
9
+ * zum Zwecke der eigenen Kommunikation zwischen dem IT-System des Kunden mit dem IT-System der
10
+ * Shopgate GmbH über www.shopgate.com verwendet werden. Eine darüber hinausgehende Vervielfältigung, Verbreitung,
11
+ * öffentliche Zugänglichmachung, Bearbeitung oder Weitergabe an Dritte ist nur mit unserer vorherigen
12
+ * schriftlichen Zustimmung zulässig. Die Regelungen der §§ 69 d Abs. 2, 3 und 69 e UrhG bleiben hiervon unberührt.
13
+ *
14
+ * COPYRIGHT NOTICE
15
+ *
16
+ * This plugin is the subject of copyright protection. It is only for the use of Shopgate GmbH customers,
17
+ * for the purpose of facilitating communication between the IT system of the customer and the IT system
18
+ * of Shopgate GmbH via www.shopgate.com. Any reproduction, dissemination, public propagation, processing or
19
+ * transfer to third parties is only permitted where we previously consented thereto in writing. The provisions
20
+ * of paragraph 69 d, sub-paragraphs 2, 3 and paragraph 69, sub-paragraph e of the German Copyright Act shall remain unaffected.
21
+ *
22
+ * @author Shopgate GmbH <interfaces@shopgate.com>
23
+ */
24
+ class Shopgate_Helper_Redirect_KeywordsManagerTest extends PHPUnit_Framework_TestCase
25
+ {
26
+ /** @var ShopgateMerchantApiInterface|PHPUnit_Framework_MockObject_MockObject $merchantApi */
27
+ protected $merchantApi;
28
+
29
+ /** @var string[] */
30
+ protected $matchingUserAgents;
31
+
32
+ /** @var string[] */
33
+ protected $nonMatchingUserAgents;
34
+
35
+ public function setUp()
36
+ {
37
+ /** @var ShopgateMerchantApiInterface|PHPUnit_Framework_MockObject_MockObject $merchantApi */
38
+ $this->merchantApi = $this->getMockForAbstractClass('ShopgateMerchantApiInterface');
39
+
40
+ $this->merchantApi->method('getMobileRedirectUserAgents')->will($this->returnValue(
41
+ array(
42
+ 'keywords' => array(
43
+ 'redirectbot',
44
+ 'iphone',
45
+ 'ipod',
46
+ 'ipad',
47
+ 'android',
48
+ 'windows phone 8',
49
+ ),
50
+ 'skip_keywords' => array(
51
+ 'shopgate',
52
+ 'nexus 7',
53
+ ),
54
+ )
55
+ ))
56
+ ;
57
+
58
+ $this->matchingUserAgents = array(
59
+ 'redirectbot',
60
+ 'iphone',
61
+ 'ipod',
62
+ 'ipad',
63
+ 'android',
64
+ 'windows phone 8',
65
+ 'redirectbotiphoneipodipadandroid',
66
+ 'redirectbotiphoneipodipadandroidwindows phone 8',
67
+ 'erdirectbotiphoneipodipadandroidwindows phone 8',
68
+ 'windows phone 8redirectbotiphoneipodipadandroid',
69
+ 'Mozilla/5.0 (Linux; Android 4.3; Nxs 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Safari/537.36',
70
+ 'Mozilla/5.0 (Windows; Windows Phone 8; Windows Phone 8 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Safari/537.36',
71
+ );
72
+
73
+ $this->nonMatchingUserAgents = array(
74
+ '',
75
+ 'shopgate',
76
+ 'nexus 7',
77
+ 'shopgatenexus 7',
78
+ 'nexus 7shopgate',
79
+ 'shopgaterandom',
80
+ 'randomshopgate',
81
+ 'randomshopgaterandom',
82
+ 'nexus 7random',
83
+ 'randomnexus 7',
84
+ 'randomnexus 7random',
85
+ 'Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Safari/537.36',
86
+ 'Mozilla/5.0 (Linux; Nexus 7 Android 4.3; Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Safari/537.36',
87
+ 'Mozilla/5.0 (Linux; Nexus 7 Android 4.3; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Safari/537.36',
88
+ 'Mozilla/5.0 (Linux; Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Safari/537.36',
89
+ 'Mozilla/5.0 (Linux; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Safari/537.36',
90
+ 'Mozilla/5.0 (Windows; Windows Phone 8; Nexus 7; Windows Phone 8 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Safari/537.36',
91
+ );
92
+ }
93
+
94
+ public function testRegexMatchesWhitelistedUserAgents()
95
+ {
96
+ $keywordsManager = new Shopgate_Helper_Redirect_KeywordsManager(
97
+ $this->merchantApi,
98
+ '/dev/null',
99
+ '/dev/null'
100
+ );
101
+
102
+ $regEx = $keywordsManager->toRegEx();
103
+
104
+ foreach ($this->matchingUserAgents as $ua) {
105
+ $this->assertRegExp(
106
+ $regEx,
107
+ $ua
108
+ );
109
+ }
110
+ }
111
+
112
+ public function testRegexDoesNotMatchBlacklistedUserAgents()
113
+ {
114
+ $keywordsManager = new Shopgate_Helper_Redirect_KeywordsManager(
115
+ $this->merchantApi,
116
+ '/dev/null',
117
+ '/dev/null'
118
+ );
119
+
120
+ $regEx = $keywordsManager->toRegEx();
121
+
122
+ foreach ($this->nonMatchingUserAgents as $ua) {
123
+ $this->assertNotRegExp(
124
+ $regEx,
125
+ $ua
126
+ );
127
+ }
128
+ }
129
+ }
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>shopgate_module</name>
4
- <version>2.9.35</version>
5
  <stability>stable</stability>
6
  <license uri="http://wiki.shopgate.com/Magento/de">Shopgate Plugin</license>
7
  <channel>community</channel>
@@ -10,9 +10,9 @@
10
  <description>Shopgate Plugin</description>
11
  <notes>Shopgate Modul</notes>
12
  <authors><author><name>Stephan Recknagel</name><user>Shopgate</user><email>stephan.recknagel@shopgate.com</email></author><author><name>Andr&#xE9; Kraus</name><user>Shopgate</user><email>andre.kraus@shopgate.com</email></author><author><name>Alexander Wesselburg</name><user>Shopgate</user><email>alexander.wesselburg@shopgate.com</email></author><author><name>Rainer Skistims</name><user>Shopgate</user><email>rainer.skistims@shopgate.com</email></author><author><name>Konstantin Kiritsenko</name><user>Shopgate</user><email>konstantin.kiritsenko@shopgate.com</email></author></authors>
13
- <date>2016-04-01</date>
14
- <time>07:57:21</time>
15
- <contents><target name="mageetc"><dir name="modules"><file name="Shopgate_Framework.xml" hash="029a3b0976d6f4de9146c8011124de93"/></dir></target><target name="magecommunity"><dir name="Shopgate"><dir name="Framework"><dir name="Block"><dir name="Adminhtml"><dir name="OAuth"><dir name="Config"><file name="Connector.php" hash="890d04b08bf692c12b02f29abf813f83"/></dir><dir name="Connect"><dir name="Add"><file name="Form.php" hash="45685099b41a46919a9900d22c30b711"/></dir><file name="Info.php" hash="ee7bbc837bf3f298791b8496f2d6d565"/><file name="Overlay.php" hash="a6496896dccb5898b36e3e65585650f4"/></dir><file name="Connect.php" hash="cc7e43ba447b6338f6c50ccaa5fd073a"/><file name="Data.php" hash="1903e819d5d16abba4c37d7823909260"/><file name="Disconnect.php" hash="2545e56bca73577ba5f73fce0501624a"/><dir name="Manage"><file name="Grid.php" hash="78357b78fed0e8b3535a7e505c8f6425"/></dir><file name="Manage.php" hash="a99e12333f7c27771ca42a0764108639"/></dir></dir><file name="Info.php" hash="3dd73900370546289a6033942a0c0528"/><dir name="Payment"><file name="MobilePayment.php" hash="01644c4114edd24cab5965e20252e3cf"/><file name="Shopgate.php" hash="67af406fa04da70461b3580b8adea89d"/></dir><dir name="Totals"><file name="AbstractPaymentFee.php" hash="5e36647f536d1c6daba33cd6e0a5e302"/><file name="CreditmemoPaymentFee.php" hash="4a287f54554d8d45772db386f54a45e7"/><file name="InvoicePaymentFee.php" hash="818164536fe249016af3046aef73f181"/><file name="OrderPaymentFee.php" hash="55c8f62c4da8014c99414ece9cd125c4"/></dir><file name="Version.php" hash="2f45712bb20635ac17d8bdee213819e5"/></dir><dir name="Helper"><dir name="Billsafe"><file name="Client.php" hash="175215077f24bcd2bed626aa59fc039c"/><file name="Order.php" hash="474c2aa15f352224c11c8ab17e921c9d"/></dir><file name="Config.php" hash="b0e489659332274686965e5e8d200d88"/><file name="Coupon.php" hash="519697b13040ddfbc8f460b6034c8779"/><file name="Customer.php" hash="c68047909c0c6e14977336ab6afe2f6b"/><file name="Data.php" hash="430fdcef33670d03d9c511e14345bf02"/><file name="Debug.php" hash="82c85038046fc9b2f994df18b7f202a6"/><file name="Export.php" hash="02c5dbce181e7489b5d75b20c1584aab"/><dir name="Import"><file name="Order.php" hash="e40ed484faf6f9757bee1970bafaed30"/></dir><file name="Install.php" hash="57f42693c9a6ddb18b8a25a2a5da7cf8"/><dir name="Payment"><file name="Abstract.php" hash="207f16aab8224761b7d91802b9fb10ee"/><file name="Payone.php" hash="ddced5955ff55105d8b3c91e0fcb0778"/><file name="Wspp.php" hash="4214f1d3332cd189cee3df48108ebd8d"/></dir><file name="Sales.php" hash="bc9439ce868f7597f64815befddb6950"/></dir><dir name="Model"><dir name="Carrier"><file name="Fix.php" hash="8dc7a12f501e2b5cc9dc6e6394a99b38"/></dir><dir name="Cataloginventory"><file name="Stock.php" hash="42ffccc3d644f8b04358a3e76bda32dd"/></dir><dir name="Compiler"><file name="Process.php" hash="740452b7bc234417788db1f1ee892ef5"/></dir><file name="Config.php" hash="c2d2e995d855f9cf462bc556046f5759"/><file name="Customer.php" hash="97ed53ca3f69c7a24fb40cce11f58721"/><dir name="DreamRobot"><file name="Observer.php" hash="7b4e8922a46f5974b8edf359c632a9d3"/></dir><dir name="Export"><file name="Abstract.php" hash="9e86667845e8cebd8e0ccb8879b70b6d"/><dir name="Category"><file name="Csv.php" hash="72f4f58345d95f8f621783bedf2a092e"/><file name="Xml.php" hash="12ab046b9a000636ed4ed5eefb770af2"/></dir><file name="Category.php" hash="5a41141ecec85669674ec818c4661cdc"/><dir name="Customer"><file name="Orders.php" hash="30123a6fe3e391fca911fed042b256c8"/></dir><file name="Customer.php" hash="2711476c9538a22242d1511649ec77f1"/><dir name="Product"><file name="Csv.php" hash="cc25a5c6a19233b33b1f1ec37837c404"/><file name="Xml.php" hash="06fc07d5c054290548e5bdab40c2bfc5"/></dir><file name="Product.php" hash="d9c807df57af3f1cced2d9bb433338ec"/><dir name="Review"><file name="Csv.php" hash="5c72f802a2de256ca1ec8dab1b75b291"/><file name="Xml.php" hash="bc16f60d9ed20705422921955a5071fe"/></dir><file name="Review.php" hash="ad6f548035a30da642d2459354acbb40"/><file name="Settings.php" hash="960f3d9991ecca41bd9e8b4ba632e9ea"/></dir><file name="Feed.php" hash="fb99cd7b2b3d94908848b722df666b67"/><dir name="Mobile"><file name="Redirect.php" hash="6492fb81d950812af8db28e959ffcd7e"/></dir><dir name="Mysql4"><dir name="Core"><file name="Core.php" hash="fc129d4d929f83e8389367b9c5d6d5e1"/></dir><dir name="Customer"><file name="Collection.php" hash="89d31997abc3c2145f74e02dd5456a7c"/></dir><file name="Customer.php" hash="d5f460b2d5bfa87b8368a8a6c6b51115"/><file name="Product.php" hash="6a99b3d0de44dfbd132ce9caca19034e"/><dir name="Shopgate"><dir name="Order"><file name="Collection.php" hash="e180ba816be47239828bea65cd5f8445"/></dir><file name="Order.php" hash="c297847e39ad01307dba4a69c13445f2"/></dir></dir><file name="Observer.php" hash="89ac2df2c33ed9340827d45cdb9a454f"/><dir name="Payment"><dir name="Abstract"><file name="AbstractPayol.php" hash="0228e80536a7decbbc0a883a4bde0d0d"/></dir><file name="Abstract.php" hash="6fdd4edd829d56525c09357fab95c540"/><file name="Amazon.php" hash="908d7f65ae7a0513ff796b49f8b8a556"/><file name="Authorize.php" hash="f51637fcb5058620b359e066fa1a6dd3"/><file name="Billsafe.php" hash="abc7caf1d47a33353b4b575b237fee70"/><dir name="Cc"><file name="Abstract.php" hash="2b291ac14d9e1e3120416d6aeb4c3487"/><file name="Authn.php" hash="3d0af24fa01b3d878bfed81a87930b15"/><file name="AuthnAbstract.php" hash="59c3e39376e695ac161d228fc9a3fabf"/><dir name="Authncim"><file name="Gateway.php" hash="1f8df3fe0e50f4729bebfc1d4763b015"/><file name="Method.php" hash="aa6916548a71848ad7c83e4f053bc27e"/></dir><file name="Authncim.php" hash="89f1c2a0bb59d08c895da84c14c325ff"/><file name="Chargeitpro.php" hash="6fd3a2fd42df00831d6e363a23a414f1"/><file name="Usaepay.php" hash="00bd8969c1eceb13eacbb37ed9a1f714"/></dir><file name="Cc.php" hash="3b8b092334fd1c72e824f560b9e33405"/><file name="Express.php" hash="6c8a2ea8ef4cebf40fe35b840f0d41d9"/><file name="Factory.php" hash="c31171980613fc74eff0ce727746f9ef"/><file name="Generic.php" hash="666f06186d1bb96b94af287d221e27c5"/><dir name="Ins"><file name="Payol.php" hash="b6961c4ab1fb9a95ab2d470aeaad8d29"/></dir><file name="Interface.php" hash="151002297bcce208b85bd260c7a25b47"/><dir name="Inv"><file name="Payol.php" hash="6d1c28b2ea2fb2fd63e09712f4533c77"/></dir><file name="MobilePayment.php" hash="59554c65e778831f6add450e0f846f42"/><dir name="Payone"><file name="Abstract.php" hash="fcc75447f2a2053d720289fb27b3c476"/><file name="BankAbstract.php" hash="0fdc5847e23c2aa4a9e4fee535d1df4c"/><file name="Cc.php" hash="fa47b35c9455bba74d2ef325835ab865"/><file name="Dbt.php" hash="7f098887ba6f12669a18f62d7885de6d"/><file name="Gp.php" hash="7686149aedae93b0d5eef0b06fc08d7e"/><file name="Idl.php" hash="57d144744565ff644db917cab7ef689e"/><file name="Inv.php" hash="91d893ee5eacdc00ff8fbb3f1b750894"/><file name="Klv.php" hash="f82fb0cc874ea8f1121f282372e4e404"/><file name="Pp.php" hash="1165aa67ef8ccdc93a2eb0b7bf03f3d0"/><file name="Prp.php" hash="367e84cc2089596dba96c5a7e9ae1723"/><file name="Sue.php" hash="31280f2c8abf21f0a582b656fb0d38ad"/></dir><dir name="Pp"><file name="Abstract.php" hash="9108e63c82d14a7cef72a58c5fd2df81"/><file name="Wspp.php" hash="a03e4e06431daac65d8ae5a79eb5335b"/></dir><file name="Pp.php" hash="c521bbb32aed313c0170dd6e8361f934"/><dir name="Ppal"><file name="Plus.php" hash="a26adaab47adb3f3b84ff872673b4ed1"/></dir><file name="Router.php" hash="8c5c3d698dbddeec2823d8e2ad284b72"/><file name="Shopgate.php" hash="f0d59e2a4369f7a22e47cf9c3bb9c44a"/><dir name="Simple"><file name="Billsafe.php" hash="d352d66d5101454f4cfec46e4fcaa88a"/><dir name="Cod"><file name="Abstract.php" hash="7bcb77e2906200f8a7576a24d782d541"/><file name="Msp.php" hash="0bb90c25c102ea55ead07312793c523b"/><file name="Native.php" hash="ac835fa8062afb1d3c77e67bc7b87b3c"/><file name="Phoenix107.php" hash="0172683522d4aad72e149a896aad757f"/><file name="Phoenix108.php" hash="b2fc93153eb4e11b0fcf567d66ef298d"/></dir><file name="Cod.php" hash="13329a686494412b304364f0707dd024"/><file name="Invoice.php" hash="a86d8500a0dee3056e56b0ccfb1fae3d"/><dir name="Mws"><file name="Abstract.php" hash="b4a90287eafca0d87087f6dede80dd2c"/><file name="Mws.php" hash="e919cd10f5be16e404a2aac43211005b"/><file name="Mws15.php" hash="db272b23821ea5010fe0e19023b9ca81"/></dir><file name="Mws.php" hash="e19cdfee86d84d80a234138a5f86c5af"/><dir name="Paypal"><file name="Express.php" hash="e2d33dbc600503d9a7541ab53df60662"/><file name="Standard.php" hash="5281ddc90f8f560b6cffa2e97fe08304"/><file name="Standard1400.php" hash="d80d26e8189b12c9796929dfad77f6c8"/></dir><file name="Paypal.php" hash="f9d9361711099812b46ac8335efef454"/><dir name="Prepay"><file name="Abstract.php" hash="89767868690e40bc3d96f8bee4484880"/><file name="Checkmo.php" hash="781dd32522f7bc97c62313cb76429633"/><file name="Native.php" hash="48542e3e9ad2bafb504a200a6529eccc"/><file name="Phoenix.php" hash="7118e404d6f1755cdab35dbc2c8f058d"/></dir><file name="Prepay.php" hash="75a238298ab408184e109411a8cc08b0"/><file name="Shopgate.php" hash="5fb1a053ac9b69e5d38bc9f6631ee8f1"/><dir name="Sue"><file name="Abstract.php" hash="d07d6b3a5702b458ed4e5f4574e3ced9"/><file name="Sue118.php" hash="759f4a7e103f9f9f4457aa1d0694c26d"/><file name="Sue300.php" hash="c804244222e5fe67ead8916c5c1ffef1"/></dir><file name="Sue.php" hash="6802dc052e2088957329689b003a16f8"/></dir><file name="Simple.php" hash="e4f0b3cd8282c2661cb19eabdb77d075"/><file name="Usaepay.php" hash="30f17f5a6bf8d0a68b2c14cd1d013885"/><file name="Wspp.php" hash="dbcd289795c112f2f0dbabeda19fbc69"/></dir><dir name="Resource"><dir name="Core"><file name="Config.php" hash="0ee7969070ab0dddfdd3bb2cc404cd3c"/></dir><dir name="Customer"><file name="Collection.php" hash="2ddb7db1355100bc9e86f966f1d4612c"/></dir><file name="Customer.php" hash="69848842d4be07be4d66d700a7b6695b"/><file name="Product.php" hash="5c62ef4cfc3f0ebbbe5a9a46d1c25dfa"/><file name="Setup.php" hash="7b5cc0f99c857e9292638c1fbeb43969"/><dir name="Shopgate"><dir name="Connection"><file name="Collection.php" hash="f294d4239cee276b7e3c5e6e2109de66"/><dir name="Grid"><file name="Collection.php" hash="d499139d50dffbfe1b1e868b5aeeee0f"/></dir></dir><dir name="Order"><file name="Collection.php" hash="2c18a4ca248ca8719e7ead85f0c57619"/></dir><file name="Order.php" hash="1942eeb8268781c499f8cad384081b02"/></dir></dir><dir name="Sales"><dir name="Creditmemo"><dir name="Total"><file name="ShopgatePaymentFee.php" hash="614d1e96cd2c97e0fcd7db86ee3aad89"/></dir></dir><dir name="Invoice"><dir name="Total"><file name="ShopgatePaymentFee.php" hash="c4400832de32367067fd5396bcf7bfc8"/></dir></dir><dir name="Quote"><dir name="Address"><dir name="Total"><file name="ShopgatePaymentFee.php" hash="7a309b69fb20fb6fcae5f3b77f5b7ba9"/></dir></dir></dir></dir><dir name="Search"><dir name="Shopgate"><file name="Order.php" hash="94dcf366528641687b89ab0c9f973ef5"/></dir></dir><dir name="Shopgate"><dir name="Cart"><dir name="Validation"><dir name="Stock"><file name="Bundle.php" hash="13180790586d19b04aa1cfcf1f88f0c8"/><file name="Simple.php" hash="190017285cd454ec98129c4dc9651781"/></dir><file name="Stock.php" hash="03d8139aa9840d707c8e4cb991bca20f"/></dir></dir><file name="Connection.php" hash="ff0da764d444103f5892ef21e23ba353"/><file name="Order.php" hash="89e0e425fc48282c1b46d3078b294be1"/><file name="Plugin.php" hash="013dc1b6962a78cb86c18900a89ca7e1"/><dir name="Shipping"><dir name="Mapper"><file name="Carrier.php" hash="ef57904070fdf7921e51e88c3991c029"/><dir name="Method"><file name="Abstract.php" hash="bb402c49f3da66f7bd4baf5b215f989e"/><file name="Interface.php" hash="1bab00e6e0356184c3f213acfce601da"/><file name="Shopgate.php" hash="af8e1ade067d1b9fb0e5b493ad814576"/><file name="Usps.php" hash="fa7259d6751ce649e65159753c73fe60"/></dir></dir><file name="Mapper.php" hash="b93ac160c4c176c77887a23593ab058c"/></dir></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Attribute.php" hash="8dfc3964b750aebac8db5f584559d5c3"/><dir name="Description"><file name="List.php" hash="c83f37019461ab7adc86a57400f63761"/></dir><file name="Description.php" hash="d0dcebc9d75fdb0bb80f3c3faba6397c"/><file name="Enabledisable.php" hash="7f189c26cd1c2c7f1cd6dc56379798b5"/><dir name="Item"><file name="Sort.php" hash="2dc75f9c1e8baaddbf895945acd2ff19"/></dir><dir name="Product"><file name="Image.php" hash="e9d0e7c5769446290094d2b67e5c468b"/><file name="Names.php" hash="98de8ee7ae9b3c504eb087f5e09d3afd"/><file name="Types.php" hash="007b54c2e095691380c21a5ab62846fc"/></dir><dir name="Redirect"><file name="Types.php" hash="c5d3c44ab1f5ba74224b41836b14afff"/></dir><file name="Server.php" hash="b569e24076ca68c4063729fb708b666a"/><file name="Store.php" hash="cb2998beb43ba8afeeaa5b64a5b5e946"/><dir name="Validation"><file name="Config.php" hash="64efaea0bcd38872b44e8fa5eb6ffa0d"/></dir><dir name="Variation"><dir name="Export"><file name="Type.php" hash="bb19358c2c2fbee3cb9776f3540faa20"/></dir></dir><dir name="Weight"><file name="Units.php" hash="10af44d670bcfdb559f4196c7006e893"/></dir></dir></dir></dir></dir><dir name="Test"><dir name="Controller"><dir name="FrameworkController"><dir name="fixtures"><file name="testPluginNotActive.yaml" hash="9e25f93814834419e9c83995021860c2"/></dir></dir><file name="FrameworkController.php" hash="f2332ffd91ff17cb73382210ba3301d7"/></dir><dir name="Helper"><dir name="Data"><dir name="providers"><file name="testCalculateTaxRate.yaml" hash="2b1fb398f41a0d7706ab9701d77ce978"/></dir></dir><file name="Data.php" hash="e6892cda8a5c0a034657707ae6951317"/><dir name="Payment"><dir name="Wspp"><dir name="providers"><file name="testGetActionByStatus.yaml" hash="7c2d30f7e376da449185e19f3b2a642a"/><file name="testGetPaypalStatus.yaml" hash="8381a01d6d22190b4d1e5c14db984a5d"/></dir></dir><file name="Wspp.php" hash="8bda17bc29a6f006e51ec54063c7b42c"/></dir></dir><dir name="Model"><dir name="Payment"><dir name="Abstract"><dir name="fixtures"><file name="testIsDisabled.yaml" hash="53ed5e65872f20c2328430e0e395e70f"/><file name="testIsEnabled.yaml" hash="53ed5e65872f20c2328430e0e395e70f"/></dir></dir><file name="Abstract.php" hash="7dc37f4b6c2a911a726a0395ae5e49eb"/><dir name="Cc"><dir name="Abstract"><dir name="providers"><file name="testGetCcTypeName.yaml" hash="eaf5dc89060f82581dea1a116c58e5dc"/></dir></dir><file name="Abstract.php" hash="ccf09de30cde5ee26757794e2a509896"/><file name="Authn.php" hash="77306ad6afc450df8a45a1d6a177ff32"/><file name="AuthnAbstract.php" hash="11784c806b9ca43772af538a13dea371"/></dir><file name="Cc.php" hash="8da9d7be59ca374d8d69e587d6c47464"/><dir name="Pp"><file name="AbstractTest.php" hash="1369367e5198c8178a475eccd193da35"/></dir><dir name="Router"><file name="Exception.php" hash="f7619c0f81e3aec39171687b3fd44185"/><dir name="providers"><file name="testGetModelCombinations.yaml" hash="e74482392a5c0a767903c73628dbfc21"/><file name="testMethodPart.yaml" hash="f9e17d95fba5fed400d4bbfce722212d"/></dir></dir><file name="Router.php" hash="42c755b3d736deb853548db48e2cbe3f"/><file name="RouterAbstract.php" hash="8f3207a8c6db231f72c81d891919cdbd"/><dir name="Simple"><file name="Billsafe.php" hash="82672c2300658c22c6fe0165245b5590"/><dir name="Cod"><file name="Msp.php" hash="d87f920cb0db4267f7246ea5542c2867"/><file name="Native.php" hash="9699b7aa21466cb2014f27d924ac7717"/><file name="Phoenix107.php" hash="c482e1e2a78fc9c5d277d22c3e4271c2"/><file name="Phoenix108.php" hash="f0f6847ea8279388cb12915f7aeb6597"/><dir name="fixtures"><file name="testGetCodMspMethod.yaml" hash="877ac87663c27392723481e813adac94"/><file name="testGetCodNativeMethod.yaml" hash="78dec590236fda34a7baa1681f1f799b"/><file name="testGetCodPhoenixMethod.yaml" hash="d47bddf587fad20d43acec341eb97c55"/><file name="testGetNoCodMethod.yaml" hash="f598847006617b5ed14f83d677739951"/></dir></dir><file name="Cod.php" hash="03391eaa3b2233c8d51a020e09dacde4"/><file name="Invoice.php" hash="08161a51fab47b14b652da12819337bf"/><dir name="Mws"><file name="Mws.php" hash="ec0f5f5b20656367416e505213439819"/><file name="Mws15.php" hash="06b3ada52a543d31bbf877032450368e"/></dir><file name="Mws.php" hash="9645cc9098c989424644de6b2f8bcfbd"/><dir name="Paypal"><file name="Express.php" hash="23da162636ff6ccca1e703b1967c14cf"/><dir name="fixtures"><file name="testGetPpExpressMethod.yaml" hash="304d7be2dcefedfe925695b85ead1ef7"/><file name="testGetPpStandardMethod.yaml" hash="79830109fcd1f32140f97cfd0caf4ab3"/></dir></dir><file name="Paypal.php" hash="cce4b99dcf9ee10621af4c6b24538a8e"/><dir name="Prepay"><file name="Checkmo.php" hash="b4bf41747b9e20c76d22f39fdafe6318"/><file name="Native.php" hash="dd31b6d04518750a1d03a7f9b85510f0"/><file name="Phoenix.php" hash="c8c7a408d8bf13917083826eed369f12"/><dir name="fixtures"><file name="testGetAllPrepayEnabled.yaml" hash="f4fd365d15f4a72a27056abc86254d32"/><file name="testGetPrepayNativeMethod.yaml" hash="10fc3dd5a6ea63187eb11c0f8dfcdce4"/><file name="testGetPrepayPhoenixMethod.yaml" hash="e8e4ab7d7e995aea4e701e2aac72c9c0"/></dir></dir><file name="Prepay.php" hash="410b8d87c6c3c2d726cc3a4dd59e85fb"/><file name="Shopgate.php" hash="744c9424ad4db0917e437140662c6298"/><dir name="Sue"><file name="Sue118.php" hash="25daa525b66855a9c617d68f58818e1f"/><file name="Sue300.php" hash="38e4539f1adb242b67920f43d93a15fc"/></dir><file name="Sue.php" hash="c6b29f00dbf3e4177b1bc7da20c0af5c"/></dir><file name="Simple.php" hash="8f3d015f1f8e32ddef4ae60c681d6280"/></dir><file name="Utility.php" hash="f7b78aefc882670c716cbcf5cac4dc99"/></dir></dir><file name="changelog.txt" hash="460cdaa89c6f0dde4a808e1fab11129e"/><dir name="controllers"><dir name="Adminhtml"><file name="ShopgateController.php" hash="b1bb6a24af72d5d151a6773be640c9e9"/></dir><file name="FrameworkController.php" hash="2152205bd372d999a56eb378ed810a8d"/></dir><dir name="etc"><file name="adminhtml.xml" hash="ed53de480c8a0642b7ae75c59f1ff8df"/><file name="config.xml" hash="f3f30750164aacc97307685b9e09735c"/><file name="system.xml" hash="b715fdbd76766e347c0f30a8122e58ed"/></dir><file name="licence.txt" hash="dec6ca25c420b36a2e400caf1541c923"/><dir name="sql"><dir name="shopgate_setup"><file name="mysql4-install-0.1.0.php" hash="069abba038757da43b2ca6c5a0c82aba"/><file name="mysql4-install-2.1.45.php" hash="eddddf157e55a87edc77361dde564463"/><file name="mysql4-install-2.2.0.php" hash="eddddf157e55a87edc77361dde564463"/><file name="mysql4-upgrade-0.1.0-0.1.1.php" hash="cc637fc1bc511e745f02a56d0b36e3be"/><file name="mysql4-upgrade-1.0.5-1.0.7.php" hash="1e800d9d235b817bf5be698288bc0129"/><file name="mysql4-upgrade-2.1.44-2.1.45.php" hash="134d0b665746c61d364f6fd93d83f46c"/><file name="mysql4-upgrade-2.1.49-2.1.50.php" hash="e0fd395bb9c25c0e544c455186cfe7c9"/><file name="mysql4-upgrade-2.4.28-2.4.29.php" hash="9c8c868ce90e42b56182b23b78d6fbe7"/><file name="mysql4-upgrade-2.4.29-2.4.30.php" hash="ca3ee1e2f337bcea26264a17f603548e"/><file name="mysql4-upgrade-2.7.5-2.8.0.php" hash="34393a58a0b4ec90b4e618d3ff4cc565"/><file name="mysql4-upgrade-2.9.15-2.9.16.php" hash="980e7cc83f912ef4f630ef8d1cb964d1"/><file name="mysql4-upgrade-2.9.4-2.9.5.php" hash="dc6770e94c31d2f79915528c0993d546"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="Shopgate_Framework.csv" hash="e842a47237b2e613a22e5584108b8b2a"/></dir><dir name="de_CH"><file name="Shopgate_Framework.csv" hash="e842a47237b2e613a22e5584108b8b2a"/></dir><dir name="de_AT"><file name="Shopgate_Framework.csv" hash="664a8dc7470fd9675ca7a67f2bcd1325"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="shopgate"><file name="logo.png" hash="b7139047ecc90b15a5710ab0fe77fc81"/><file name="logo_big.png" hash="b98bfcf09766589506a1cca24ca47972"/><file name="logo_small.png" hash="7abf7f774c592eb582c2856e027af798"/><file name="oauth_connect.js" hash="8e5c77d9ad1354f826445f03c91008f4"/><file name="shopgate_admin.css" hash="0fbc07171267b9fb5dba7004a0858f66"/><file name="target.js" hash="80484a4dae515f708c97545d9959673a"/></dir></dir></dir></dir></target><target name="magelib"><dir name="Shopgate"><dir name="assets"><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><file name="js_header.html" hash="7ff2c12f8b7c23542f3ff49b451720a8"/><file name="link_tag.html" hash="f7c53599b55d442fd49f970bd41eb2a4"/><file name="mobile_header.html" hash="17616650e160eaccd24e25729396c5a9"/></dir><file name="changelog.txt" hash="445a35adf4aabcf8232daec8c5276b42"/><dir name="classes"><file name="apis.php" hash="8d89fdce7a3eeca342a5165bb9a2530b"/><file name="configuration.php" hash="264d43767346d16fd8c1fcfdcbec0ca2"/><file name="core.php" hash="cf1c8146f9e86d052c2abcfad4e821a5"/><file name="customers.php" hash="24c9dbbcafe379c224fcce4b02d58ad2"/><file name="external_orders.php" hash="7239071113b5decc70ec9672bf6fc3fe"/><dir name="helper"><file name="DataStructure.php" hash="ece9e9f855756777f543d090f5ecc710"/><file name="Pricing.php" hash="fd4c74999abc3bfa05fd74994a2ce78f"/><file name="String.php" hash="10c9396b2975bf0bde86f171932c3074"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><dir name="redirect"><file name="KeywordsManager.php" hash="6cf7278e7aed1a072c9b94fd99e585a5"/><file name="KeywordsManagerInterface.php" hash="32cda83161084b4f5904eeb5f50a6547"/><file name="LinkBuilder.php" hash="8d6c7225dc90fde0c62c65e24e618bd8"/><file name="LinkBuilderInterface.php" hash="a755af7b57fda9b9ff1564a0059529d1"/><file name="MobileRedirect.php" hash="1f58517a45d5d8814514001b1e690312"/><file name="MobileRedirectInterface.php" hash="80b8da18c8bf498461c2b8e183bce326"/><file name="Redirector.php" hash="1a06dc19980c8a51ae0cdbed4d04322d"/><file name="RedirectorInterface.php" hash="9a11e4e85b6005029458a035e4295935"/><file name="SettingsManager.php" hash="d1b1722715688da2a095fba8c607f45c"/><file name="SettingsManagerInterface.php" hash="ae16aa5ea4df7f0def80711f8cc14f70"/><file name="TagsGenerator.php" hash="de6e73da61a282d24226065671d67d6b"/><file name="TagsGeneratorInterface.php" hash="1a5c500631331a4ae970d2a442e5d7e2"/><file name="TemplateParser.php" hash="1e087c9ba5720c9065702d9ebfc5723a"/><file name="TemplateParserInterface.php" hash="d6897cd9e5622d1991bb7aab678e37f8"/></dir></dir><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><file name="items.php" hash="107f9bc5fcc0c0dbfe568a3b8235107c"/><dir name="models"><file name="Abstract.php" hash="a32633283eb403a55a166bbad70b3e2f"/><file name="AbstractExport.php" hash="f265f9e906208e1799994d117582be20"/><file name="XmlEmptyObject.php" hash="d6cfdae3bdd858d4f10fcebdb542f533"/><file name="XmlResultObject.php" hash="340804eb0f2ba6bcb6b05311b8bb1f11"/><dir name="catalog"><file name="Attribute.php" hash="28d8f3bc6c416661d1eaa77726ba7009"/><file name="AttributeGroup.php" hash="0270086ec8006ee8231c6b0baa8d6034"/><file name="Category.php" hash="beba58d2796cf7b4ca08ce68de65415b"/><file name="CategoryPath.php" hash="475869aef74c567c8569ee9953210faa"/><file name="Identifier.php" hash="d9a3b16d1fcdec641ca2b0fd77fbd625"/><file name="Input.php" hash="77df45fd89aec19565a5fae7178205bb"/><file name="Manufacturer.php" hash="e45f534f5f6acad118be24ffc63a0460"/><file name="Option.php" hash="fd95fe72bff985ae0b2861da115e2468"/><file name="Price.php" hash="3cb25372ae58bd0c71b342f9ef2dca73"/><file name="Product.php" hash="7e7c49e10b379eae5d0141efe2c91305"/><file name="Property.php" hash="5967f0403a606a27ea4fec71a8402327"/><file name="Relation.php" hash="263cde539af500af911baec4e354079e"/><file name="Review.php" hash="72c94cb1f2a54bafffdb5672d87ecd4d"/><file name="Shipping.php" hash="1fe425496bd9720dc18bd076e56aca9e"/><file name="Stock.php" hash="4e645877e778ec8d02ae98262bfa9663"/><file name="Tag.php" hash="39e7b845ab157d2f707707576e868d64"/><file name="TierPrice.php" hash="9dd757c9c3d193944a5727fbe5cf4704"/><file name="Validation.php" hash="0be71640c1df60ab809347194ec66457"/><file name="Visibility.php" hash="d60c6b8ec486da4afdc46a00d65ad172"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><dir name="media"><file name="Attachment.php" hash="c074ef3426c2506350cbf5ff0133c89d"/><file name="Image.php" hash="c9319f2a82811239313e328eaf7e2094"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><dir name="redirect"><file name="DeeplinkSuffix.php" hash="e6aebbb49db1b3b1d0bbb3a5f8e52927"/><file name="DeeplinkSuffixValue.php" hash="809684ff8f7d588d39060f5469e2c3b0"/><file name="DeeplinkSuffixValueDisabled.php" hash="83ff30aeeaf40c070f71b29b7f2bbbd8"/><file name="DeeplinkSuffixValueUnset.php" hash="1275996c7d012acfa3fbd6cbe43b08b3"/><file name="HtmlTag.php" hash="e5494a280dd090e3869445431e6c8c2a"/><file name="HtmlTagAttribute.php" hash="368c63b7c3043f7ae0bee107527152de"/><file name="HtmlTagVariable.php" hash="1484f93ec0e69b3f94313e4cac849e0f"/></dir></dir><file name="orders.php" hash="fc81f6fb02ccfd65df7b9cc4ba01b046"/><file name="redirect.php" hash="75ba604b4a9885e861a96683e566ac5c"/></dir><dir name="config"><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name="index.php" hash="de19abc78063ea9a4112964c79946f1c"/><file name="shopgate.php" hash="248033be19931f7eccdc40d12e59d1bf"/><file name="shopgate_license.txt" hash="21fbb2f00b832416916b27c5e3f5d6d1"/><dir name="temp"><dir name="cache"><file name="index.php" hash="7573387748996e2dd9e02a237056f158"/></dir><file name="index.php" hash="7573387748996e2dd9e02a237056f158"/><dir name="logs"><file name="index.php" hash="7573387748996e2dd9e02a237056f158"/></dir></dir><dir name="tests"><dir name="classes"><dir name="helper"><dir name="redirect"><file name="TemplateParserTest.php" hash="aa7aea33f78f0fda58437c83421d2f31"/></dir></dir></dir></dir><dir name="vendors"><file name="2d_is.php" hash="087decaca87ee85d548d8caaa43f1212"/><file name="BSD_license.txt" hash="2df4dd93533ca2c19f6f2d601bc3e0d5"/><file name="JSON.php" hash="cbb23366cd8c20319292458a87dc2870"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name=".htaccess" hash="34479bc8d9df775c38a980ecaf6f3f4b"/></dir></target><target name="mage"><dir name="app"><dir name="design"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="shopgate.xml" hash="608ba89093ef89e1c182cd6085dbf3b1"/></dir><dir name="template"><dir name="shopgate"><file name="mobile_website.phtml" hash="229cbefd12ea77676f8af9c7159528ea"/><dir name="payment"><file name="mobile_payment.phtml" hash="1e18979028fb13e99af7c595c75a5d27"/><file name="shopgate.phtml" hash="1e18979028fb13e99af7c595c75a5d27"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="shopgate.xml" hash="8bab300fb25a48cd2c8119ae1942ed54"/></dir><dir name="template"><dir name="shopgate"><dir name="oauth"><dir name="config"><file name="connector.phtml" hash="478c309bdde7834bf20a48b65a4699fb"/></dir><dir name="connect"><file name="info.phtml" hash="4f75dc4311616081873a7d416b96c1c2"/><file name="overlay.phtml" hash="2a17d5b6ff8023568437b194f8a9d482"/></dir><file name="connect.phtml" hash="6956aa22eedf549c4565304b4e4a4ab9"/><file name="data.phtml" hash="09b4c5d83863f104db7a018510cdb315"/><file name="disconnect.phtml" hash="2858cebe9004c9fb5764f79faee46f87"/><file name="manage.phtml" hash="1f99255efbce4dbdc1ee781820d455b8"/></dir><dir name="payment"><file name="mobile_payment.phtml" hash="2892e0dd200db6c0ffa5fa83f87d838c"/><file name="shopgate.phtml" hash="5457030290f8aa08c2711a8bd27c3dee"/></dir></dir></dir></dir></dir></dir></dir></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>shopgate_module</name>
4
+ <version>2.9.36</version>
5
  <stability>stable</stability>
6
  <license uri="http://wiki.shopgate.com/Magento/de">Shopgate Plugin</license>
7
  <channel>community</channel>
10
  <description>Shopgate Plugin</description>
11
  <notes>Shopgate Modul</notes>
12
  <authors><author><name>Stephan Recknagel</name><user>Shopgate</user><email>stephan.recknagel@shopgate.com</email></author><author><name>Andr&#xE9; Kraus</name><user>Shopgate</user><email>andre.kraus@shopgate.com</email></author><author><name>Alexander Wesselburg</name><user>Shopgate</user><email>alexander.wesselburg@shopgate.com</email></author><author><name>Rainer Skistims</name><user>Shopgate</user><email>rainer.skistims@shopgate.com</email></author><author><name>Konstantin Kiritsenko</name><user>Shopgate</user><email>konstantin.kiritsenko@shopgate.com</email></author></authors>
13
+ <date>2016-04-04</date>
14
+ <time>11:19:49</time>
15
+ <contents><target name="mageetc"><dir name="modules"><file name="Shopgate_Framework.xml" hash="029a3b0976d6f4de9146c8011124de93"/></dir></target><target name="magecommunity"><dir name="Shopgate"><dir name="Framework"><dir name="Block"><dir name="Adminhtml"><dir name="OAuth"><dir name="Config"><file name="Connector.php" hash="890d04b08bf692c12b02f29abf813f83"/></dir><dir name="Connect"><dir name="Add"><file name="Form.php" hash="45685099b41a46919a9900d22c30b711"/></dir><file name="Info.php" hash="ee7bbc837bf3f298791b8496f2d6d565"/><file name="Overlay.php" hash="a6496896dccb5898b36e3e65585650f4"/></dir><file name="Connect.php" hash="cc7e43ba447b6338f6c50ccaa5fd073a"/><file name="Data.php" hash="1903e819d5d16abba4c37d7823909260"/><file name="Disconnect.php" hash="2545e56bca73577ba5f73fce0501624a"/><dir name="Manage"><file name="Grid.php" hash="78357b78fed0e8b3535a7e505c8f6425"/></dir><file name="Manage.php" hash="a99e12333f7c27771ca42a0764108639"/></dir></dir><file name="Info.php" hash="3dd73900370546289a6033942a0c0528"/><dir name="Payment"><file name="MobilePayment.php" hash="01644c4114edd24cab5965e20252e3cf"/><file name="Shopgate.php" hash="67af406fa04da70461b3580b8adea89d"/></dir><dir name="Totals"><file name="AbstractPaymentFee.php" hash="5e36647f536d1c6daba33cd6e0a5e302"/><file name="CreditmemoPaymentFee.php" hash="4a287f54554d8d45772db386f54a45e7"/><file name="InvoicePaymentFee.php" hash="818164536fe249016af3046aef73f181"/><file name="OrderPaymentFee.php" hash="55c8f62c4da8014c99414ece9cd125c4"/></dir><file name="Version.php" hash="2f45712bb20635ac17d8bdee213819e5"/></dir><dir name="Helper"><dir name="Billsafe"><file name="Client.php" hash="175215077f24bcd2bed626aa59fc039c"/><file name="Order.php" hash="474c2aa15f352224c11c8ab17e921c9d"/></dir><file name="Config.php" hash="b0e489659332274686965e5e8d200d88"/><file name="Coupon.php" hash="502774efdc4bc7e609cab04cc6b7022e"/><file name="Customer.php" hash="c68047909c0c6e14977336ab6afe2f6b"/><file name="Data.php" hash="430fdcef33670d03d9c511e14345bf02"/><file name="Debug.php" hash="82c85038046fc9b2f994df18b7f202a6"/><file name="Export.php" hash="02c5dbce181e7489b5d75b20c1584aab"/><dir name="Import"><file name="Order.php" hash="e40ed484faf6f9757bee1970bafaed30"/></dir><file name="Install.php" hash="57f42693c9a6ddb18b8a25a2a5da7cf8"/><dir name="Payment"><file name="Abstract.php" hash="207f16aab8224761b7d91802b9fb10ee"/><file name="Payone.php" hash="ddced5955ff55105d8b3c91e0fcb0778"/><file name="Wspp.php" hash="4214f1d3332cd189cee3df48108ebd8d"/></dir><file name="Sales.php" hash="bc9439ce868f7597f64815befddb6950"/></dir><dir name="Model"><dir name="Carrier"><file name="Fix.php" hash="8dc7a12f501e2b5cc9dc6e6394a99b38"/></dir><dir name="Cataloginventory"><file name="Stock.php" hash="42ffccc3d644f8b04358a3e76bda32dd"/></dir><dir name="Compiler"><file name="Process.php" hash="740452b7bc234417788db1f1ee892ef5"/></dir><file name="Config.php" hash="ca7c79b51b4379946ba3d792b9bca76b"/><file name="Customer.php" hash="97ed53ca3f69c7a24fb40cce11f58721"/><dir name="DreamRobot"><file name="Observer.php" hash="7b4e8922a46f5974b8edf359c632a9d3"/></dir><dir name="Export"><file name="Abstract.php" hash="9e86667845e8cebd8e0ccb8879b70b6d"/><dir name="Category"><file name="Csv.php" hash="72f4f58345d95f8f621783bedf2a092e"/><file name="Xml.php" hash="12ab046b9a000636ed4ed5eefb770af2"/></dir><file name="Category.php" hash="5a41141ecec85669674ec818c4661cdc"/><dir name="Customer"><file name="Orders.php" hash="30123a6fe3e391fca911fed042b256c8"/></dir><file name="Customer.php" hash="2711476c9538a22242d1511649ec77f1"/><dir name="Product"><file name="Csv.php" hash="cc25a5c6a19233b33b1f1ec37837c404"/><file name="Xml.php" hash="06fc07d5c054290548e5bdab40c2bfc5"/></dir><file name="Product.php" hash="d9c807df57af3f1cced2d9bb433338ec"/><dir name="Review"><file name="Csv.php" hash="5c72f802a2de256ca1ec8dab1b75b291"/><file name="Xml.php" hash="bc16f60d9ed20705422921955a5071fe"/></dir><file name="Review.php" hash="ad6f548035a30da642d2459354acbb40"/><file name="Settings.php" hash="960f3d9991ecca41bd9e8b4ba632e9ea"/></dir><file name="Feed.php" hash="fb99cd7b2b3d94908848b722df666b67"/><dir name="Mobile"><file name="Redirect.php" hash="6492fb81d950812af8db28e959ffcd7e"/></dir><dir name="Mysql4"><dir name="Core"><file name="Core.php" hash="fc129d4d929f83e8389367b9c5d6d5e1"/></dir><dir name="Customer"><file name="Collection.php" hash="89d31997abc3c2145f74e02dd5456a7c"/></dir><file name="Customer.php" hash="d5f460b2d5bfa87b8368a8a6c6b51115"/><file name="Product.php" hash="6a99b3d0de44dfbd132ce9caca19034e"/><dir name="Shopgate"><dir name="Order"><file name="Collection.php" hash="e180ba816be47239828bea65cd5f8445"/></dir><file name="Order.php" hash="c297847e39ad01307dba4a69c13445f2"/></dir></dir><file name="Observer.php" hash="e5c9a67abe17a40938e95c5629fda1d5"/><dir name="Payment"><dir name="Abstract"><file name="AbstractPayol.php" hash="0228e80536a7decbbc0a883a4bde0d0d"/></dir><file name="Abstract.php" hash="6fdd4edd829d56525c09357fab95c540"/><file name="Amazon.php" hash="908d7f65ae7a0513ff796b49f8b8a556"/><file name="Authorize.php" hash="f51637fcb5058620b359e066fa1a6dd3"/><file name="Billsafe.php" hash="abc7caf1d47a33353b4b575b237fee70"/><dir name="Cc"><file name="Abstract.php" hash="2b291ac14d9e1e3120416d6aeb4c3487"/><file name="Authn.php" hash="3d0af24fa01b3d878bfed81a87930b15"/><file name="AuthnAbstract.php" hash="59c3e39376e695ac161d228fc9a3fabf"/><dir name="Authncim"><file name="Gateway.php" hash="1f8df3fe0e50f4729bebfc1d4763b015"/><file name="Method.php" hash="aa6916548a71848ad7c83e4f053bc27e"/></dir><file name="Authncim.php" hash="89f1c2a0bb59d08c895da84c14c325ff"/><file name="Chargeitpro.php" hash="6fd3a2fd42df00831d6e363a23a414f1"/><file name="Usaepay.php" hash="00bd8969c1eceb13eacbb37ed9a1f714"/></dir><file name="Cc.php" hash="3b8b092334fd1c72e824f560b9e33405"/><file name="Express.php" hash="6c8a2ea8ef4cebf40fe35b840f0d41d9"/><file name="Factory.php" hash="c31171980613fc74eff0ce727746f9ef"/><file name="Generic.php" hash="666f06186d1bb96b94af287d221e27c5"/><dir name="Ins"><file name="Payol.php" hash="b6961c4ab1fb9a95ab2d470aeaad8d29"/></dir><file name="Interface.php" hash="151002297bcce208b85bd260c7a25b47"/><dir name="Inv"><file name="Payol.php" hash="6d1c28b2ea2fb2fd63e09712f4533c77"/></dir><file name="MobilePayment.php" hash="59554c65e778831f6add450e0f846f42"/><dir name="Payone"><file name="Abstract.php" hash="fcc75447f2a2053d720289fb27b3c476"/><file name="BankAbstract.php" hash="0fdc5847e23c2aa4a9e4fee535d1df4c"/><file name="Cc.php" hash="fa47b35c9455bba74d2ef325835ab865"/><file name="Dbt.php" hash="7f098887ba6f12669a18f62d7885de6d"/><file name="Gp.php" hash="7686149aedae93b0d5eef0b06fc08d7e"/><file name="Idl.php" hash="57d144744565ff644db917cab7ef689e"/><file name="Inv.php" hash="91d893ee5eacdc00ff8fbb3f1b750894"/><file name="Klv.php" hash="f82fb0cc874ea8f1121f282372e4e404"/><file name="Pp.php" hash="1165aa67ef8ccdc93a2eb0b7bf03f3d0"/><file name="Prp.php" hash="367e84cc2089596dba96c5a7e9ae1723"/><file name="Sue.php" hash="31280f2c8abf21f0a582b656fb0d38ad"/></dir><dir name="Pp"><file name="Abstract.php" hash="9108e63c82d14a7cef72a58c5fd2df81"/><file name="Wspp.php" hash="a03e4e06431daac65d8ae5a79eb5335b"/></dir><file name="Pp.php" hash="c521bbb32aed313c0170dd6e8361f934"/><dir name="Ppal"><file name="Plus.php" hash="a26adaab47adb3f3b84ff872673b4ed1"/></dir><file name="Router.php" hash="8c5c3d698dbddeec2823d8e2ad284b72"/><file name="Shopgate.php" hash="f0d59e2a4369f7a22e47cf9c3bb9c44a"/><dir name="Simple"><file name="Billsafe.php" hash="d352d66d5101454f4cfec46e4fcaa88a"/><dir name="Cod"><file name="Abstract.php" hash="7bcb77e2906200f8a7576a24d782d541"/><file name="Msp.php" hash="0bb90c25c102ea55ead07312793c523b"/><file name="Native.php" hash="ac835fa8062afb1d3c77e67bc7b87b3c"/><file name="Phoenix107.php" hash="0172683522d4aad72e149a896aad757f"/><file name="Phoenix108.php" hash="b2fc93153eb4e11b0fcf567d66ef298d"/></dir><file name="Cod.php" hash="13329a686494412b304364f0707dd024"/><file name="Invoice.php" hash="a86d8500a0dee3056e56b0ccfb1fae3d"/><dir name="Mws"><file name="Abstract.php" hash="b4a90287eafca0d87087f6dede80dd2c"/><file name="Mws.php" hash="e919cd10f5be16e404a2aac43211005b"/><file name="Mws15.php" hash="db272b23821ea5010fe0e19023b9ca81"/></dir><file name="Mws.php" hash="e19cdfee86d84d80a234138a5f86c5af"/><dir name="Paypal"><file name="Express.php" hash="e2d33dbc600503d9a7541ab53df60662"/><file name="Standard.php" hash="5281ddc90f8f560b6cffa2e97fe08304"/><file name="Standard1400.php" hash="d80d26e8189b12c9796929dfad77f6c8"/></dir><file name="Paypal.php" hash="f9d9361711099812b46ac8335efef454"/><dir name="Prepay"><file name="Abstract.php" hash="89767868690e40bc3d96f8bee4484880"/><file name="Checkmo.php" hash="781dd32522f7bc97c62313cb76429633"/><file name="Native.php" hash="48542e3e9ad2bafb504a200a6529eccc"/><file name="Phoenix.php" hash="7118e404d6f1755cdab35dbc2c8f058d"/></dir><file name="Prepay.php" hash="75a238298ab408184e109411a8cc08b0"/><file name="Shopgate.php" hash="5fb1a053ac9b69e5d38bc9f6631ee8f1"/><dir name="Sue"><file name="Abstract.php" hash="d07d6b3a5702b458ed4e5f4574e3ced9"/><file name="Sue118.php" hash="759f4a7e103f9f9f4457aa1d0694c26d"/><file name="Sue300.php" hash="c804244222e5fe67ead8916c5c1ffef1"/></dir><file name="Sue.php" hash="6802dc052e2088957329689b003a16f8"/></dir><file name="Simple.php" hash="e4f0b3cd8282c2661cb19eabdb77d075"/><file name="Usaepay.php" hash="30f17f5a6bf8d0a68b2c14cd1d013885"/><file name="Wspp.php" hash="dbcd289795c112f2f0dbabeda19fbc69"/></dir><dir name="Resource"><dir name="Core"><file name="Config.php" hash="0ee7969070ab0dddfdd3bb2cc404cd3c"/></dir><dir name="Customer"><file name="Collection.php" hash="2ddb7db1355100bc9e86f966f1d4612c"/></dir><file name="Customer.php" hash="69848842d4be07be4d66d700a7b6695b"/><file name="Product.php" hash="5c62ef4cfc3f0ebbbe5a9a46d1c25dfa"/><file name="Setup.php" hash="7b5cc0f99c857e9292638c1fbeb43969"/><dir name="Shopgate"><dir name="Connection"><file name="Collection.php" hash="f294d4239cee276b7e3c5e6e2109de66"/><dir name="Grid"><file name="Collection.php" hash="d499139d50dffbfe1b1e868b5aeeee0f"/></dir></dir><dir name="Order"><file name="Collection.php" hash="2c18a4ca248ca8719e7ead85f0c57619"/></dir><file name="Order.php" hash="1942eeb8268781c499f8cad384081b02"/></dir></dir><dir name="Sales"><dir name="Creditmemo"><dir name="Total"><file name="ShopgatePaymentFee.php" hash="614d1e96cd2c97e0fcd7db86ee3aad89"/></dir></dir><dir name="Invoice"><dir name="Total"><file name="ShopgatePaymentFee.php" hash="c4400832de32367067fd5396bcf7bfc8"/></dir></dir><dir name="Quote"><dir name="Address"><dir name="Total"><file name="ShopgatePaymentFee.php" hash="7a309b69fb20fb6fcae5f3b77f5b7ba9"/></dir></dir></dir></dir><dir name="Search"><dir name="Shopgate"><file name="Order.php" hash="94dcf366528641687b89ab0c9f973ef5"/></dir></dir><dir name="Shopgate"><dir name="Cart"><dir name="Validation"><dir name="Stock"><file name="Bundle.php" hash="13180790586d19b04aa1cfcf1f88f0c8"/><file name="Simple.php" hash="190017285cd454ec98129c4dc9651781"/></dir><file name="Stock.php" hash="03d8139aa9840d707c8e4cb991bca20f"/></dir></dir><file name="Connection.php" hash="ff0da764d444103f5892ef21e23ba353"/><file name="Order.php" hash="89e0e425fc48282c1b46d3078b294be1"/><file name="Plugin.php" hash="14d619891b5a9410b7e529d7b363bd27"/><dir name="Shipping"><dir name="Mapper"><file name="Carrier.php" hash="ef57904070fdf7921e51e88c3991c029"/><dir name="Method"><file name="Abstract.php" hash="bb402c49f3da66f7bd4baf5b215f989e"/><file name="Interface.php" hash="1bab00e6e0356184c3f213acfce601da"/><file name="Shopgate.php" hash="af8e1ade067d1b9fb0e5b493ad814576"/><file name="Usps.php" hash="fa7259d6751ce649e65159753c73fe60"/></dir></dir><file name="Mapper.php" hash="b93ac160c4c176c77887a23593ab058c"/></dir></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Attribute.php" hash="8dfc3964b750aebac8db5f584559d5c3"/><dir name="Description"><file name="List.php" hash="c83f37019461ab7adc86a57400f63761"/></dir><file name="Description.php" hash="d0dcebc9d75fdb0bb80f3c3faba6397c"/><file name="Enabledisable.php" hash="7f189c26cd1c2c7f1cd6dc56379798b5"/><dir name="Item"><file name="Sort.php" hash="2dc75f9c1e8baaddbf895945acd2ff19"/></dir><dir name="Product"><file name="Image.php" hash="e9d0e7c5769446290094d2b67e5c468b"/><file name="Names.php" hash="98de8ee7ae9b3c504eb087f5e09d3afd"/><file name="Types.php" hash="007b54c2e095691380c21a5ab62846fc"/></dir><dir name="Redirect"><file name="Types.php" hash="c5d3c44ab1f5ba74224b41836b14afff"/></dir><file name="Server.php" hash="b569e24076ca68c4063729fb708b666a"/><file name="Store.php" hash="cb2998beb43ba8afeeaa5b64a5b5e946"/><dir name="Validation"><file name="Config.php" hash="64efaea0bcd38872b44e8fa5eb6ffa0d"/></dir><dir name="Variation"><dir name="Export"><file name="Type.php" hash="bb19358c2c2fbee3cb9776f3540faa20"/></dir></dir><dir name="Weight"><file name="Units.php" hash="10af44d670bcfdb559f4196c7006e893"/></dir></dir></dir></dir></dir><dir name="Test"><dir name="Controller"><dir name="FrameworkController"><dir name="fixtures"><file name="testPluginNotActive.yaml" hash="9e25f93814834419e9c83995021860c2"/></dir></dir><file name="FrameworkController.php" hash="f2332ffd91ff17cb73382210ba3301d7"/></dir><dir name="Helper"><dir name="Data"><dir name="providers"><file name="testCalculateTaxRate.yaml" hash="2b1fb398f41a0d7706ab9701d77ce978"/></dir></dir><file name="Data.php" hash="e6892cda8a5c0a034657707ae6951317"/><dir name="Payment"><dir name="Wspp"><dir name="providers"><file name="testGetActionByStatus.yaml" hash="7c2d30f7e376da449185e19f3b2a642a"/><file name="testGetPaypalStatus.yaml" hash="8381a01d6d22190b4d1e5c14db984a5d"/></dir></dir><file name="Wspp.php" hash="8bda17bc29a6f006e51ec54063c7b42c"/></dir></dir><dir name="Model"><file name="ObserverTest.php" hash="bd6dea886fed4a44f5a3f581621a833a"/><dir name="Payment"><dir name="Abstract"><dir name="fixtures"><file name="testIsDisabled.yaml" hash="53ed5e65872f20c2328430e0e395e70f"/><file name="testIsEnabled.yaml" hash="53ed5e65872f20c2328430e0e395e70f"/></dir></dir><file name="Abstract.php" hash="7dc37f4b6c2a911a726a0395ae5e49eb"/><dir name="Cc"><dir name="Abstract"><dir name="providers"><file name="testGetCcTypeName.yaml" hash="eaf5dc89060f82581dea1a116c58e5dc"/></dir></dir><file name="Abstract.php" hash="ccf09de30cde5ee26757794e2a509896"/><file name="Authn.php" hash="77306ad6afc450df8a45a1d6a177ff32"/><file name="AuthnAbstract.php" hash="11784c806b9ca43772af538a13dea371"/></dir><file name="Cc.php" hash="8da9d7be59ca374d8d69e587d6c47464"/><dir name="Pp"><file name="AbstractTest.php" hash="1369367e5198c8178a475eccd193da35"/></dir><dir name="Router"><file name="Exception.php" hash="f7619c0f81e3aec39171687b3fd44185"/><dir name="providers"><file name="testGetModelCombinations.yaml" hash="e74482392a5c0a767903c73628dbfc21"/><file name="testMethodPart.yaml" hash="f9e17d95fba5fed400d4bbfce722212d"/></dir></dir><file name="Router.php" hash="42c755b3d736deb853548db48e2cbe3f"/><file name="RouterAbstract.php" hash="8f3207a8c6db231f72c81d891919cdbd"/><dir name="Simple"><file name="Billsafe.php" hash="82672c2300658c22c6fe0165245b5590"/><dir name="Cod"><file name="Msp.php" hash="d87f920cb0db4267f7246ea5542c2867"/><file name="Native.php" hash="9699b7aa21466cb2014f27d924ac7717"/><file name="Phoenix107.php" hash="c482e1e2a78fc9c5d277d22c3e4271c2"/><file name="Phoenix108.php" hash="f0f6847ea8279388cb12915f7aeb6597"/><dir name="fixtures"><file name="testGetCodMspMethod.yaml" hash="877ac87663c27392723481e813adac94"/><file name="testGetCodNativeMethod.yaml" hash="78dec590236fda34a7baa1681f1f799b"/><file name="testGetCodPhoenixMethod.yaml" hash="d47bddf587fad20d43acec341eb97c55"/><file name="testGetNoCodMethod.yaml" hash="f598847006617b5ed14f83d677739951"/></dir></dir><file name="Cod.php" hash="03391eaa3b2233c8d51a020e09dacde4"/><file name="Invoice.php" hash="08161a51fab47b14b652da12819337bf"/><dir name="Mws"><file name="Mws.php" hash="ec0f5f5b20656367416e505213439819"/><file name="Mws15.php" hash="06b3ada52a543d31bbf877032450368e"/></dir><file name="Mws.php" hash="9645cc9098c989424644de6b2f8bcfbd"/><dir name="Paypal"><file name="Express.php" hash="23da162636ff6ccca1e703b1967c14cf"/><dir name="fixtures"><file name="testGetPpExpressMethod.yaml" hash="304d7be2dcefedfe925695b85ead1ef7"/><file name="testGetPpStandardMethod.yaml" hash="79830109fcd1f32140f97cfd0caf4ab3"/></dir></dir><file name="Paypal.php" hash="cce4b99dcf9ee10621af4c6b24538a8e"/><dir name="Prepay"><file name="Checkmo.php" hash="b4bf41747b9e20c76d22f39fdafe6318"/><file name="Native.php" hash="dd31b6d04518750a1d03a7f9b85510f0"/><file name="Phoenix.php" hash="c8c7a408d8bf13917083826eed369f12"/><dir name="fixtures"><file name="testGetAllPrepayEnabled.yaml" hash="f4fd365d15f4a72a27056abc86254d32"/><file name="testGetPrepayNativeMethod.yaml" hash="10fc3dd5a6ea63187eb11c0f8dfcdce4"/><file name="testGetPrepayPhoenixMethod.yaml" hash="e8e4ab7d7e995aea4e701e2aac72c9c0"/></dir></dir><file name="Prepay.php" hash="410b8d87c6c3c2d726cc3a4dd59e85fb"/><file name="Shopgate.php" hash="744c9424ad4db0917e437140662c6298"/><dir name="Sue"><file name="Sue118.php" hash="25daa525b66855a9c617d68f58818e1f"/><file name="Sue300.php" hash="38e4539f1adb242b67920f43d93a15fc"/></dir><file name="Sue.php" hash="c6b29f00dbf3e4177b1bc7da20c0af5c"/></dir><file name="Simple.php" hash="8f3d015f1f8e32ddef4ae60c681d6280"/></dir><file name="Utility.php" hash="f7b78aefc882670c716cbcf5cac4dc99"/></dir></dir><file name="changelog.txt" hash="5aa4b51f11bf31288aa2e661c22ce135"/><dir name="controllers"><dir name="Adminhtml"><file name="ShopgateController.php" hash="b1bb6a24af72d5d151a6773be640c9e9"/></dir><file name="FrameworkController.php" hash="2152205bd372d999a56eb378ed810a8d"/></dir><dir name="etc"><file name="adminhtml.xml" hash="ed53de480c8a0642b7ae75c59f1ff8df"/><file name="config.xml" hash="cf40e376c1903805ec3759490525f993"/><file name="system.xml" hash="c7f55765dac95c436147785275f4b362"/></dir><file name="licence.txt" hash="dec6ca25c420b36a2e400caf1541c923"/><dir name="sql"><dir name="shopgate_setup"><file name="mysql4-install-0.1.0.php" hash="069abba038757da43b2ca6c5a0c82aba"/><file name="mysql4-install-2.1.45.php" hash="eddddf157e55a87edc77361dde564463"/><file name="mysql4-install-2.2.0.php" hash="eddddf157e55a87edc77361dde564463"/><file name="mysql4-upgrade-0.1.0-0.1.1.php" hash="cc637fc1bc511e745f02a56d0b36e3be"/><file name="mysql4-upgrade-1.0.5-1.0.7.php" hash="1e800d9d235b817bf5be698288bc0129"/><file name="mysql4-upgrade-2.1.44-2.1.45.php" hash="134d0b665746c61d364f6fd93d83f46c"/><file name="mysql4-upgrade-2.1.49-2.1.50.php" hash="e0fd395bb9c25c0e544c455186cfe7c9"/><file name="mysql4-upgrade-2.4.28-2.4.29.php" hash="9c8c868ce90e42b56182b23b78d6fbe7"/><file name="mysql4-upgrade-2.4.29-2.4.30.php" hash="ca3ee1e2f337bcea26264a17f603548e"/><file name="mysql4-upgrade-2.7.5-2.8.0.php" hash="34393a58a0b4ec90b4e618d3ff4cc565"/><file name="mysql4-upgrade-2.9.15-2.9.16.php" hash="980e7cc83f912ef4f630ef8d1cb964d1"/><file name="mysql4-upgrade-2.9.4-2.9.5.php" hash="dc6770e94c31d2f79915528c0993d546"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="Shopgate_Framework.csv" hash="eb25c8acdee6d7a4d6b51c354774e0ce"/></dir><dir name="de_CH"><file name="Shopgate_Framework.csv" hash="eb25c8acdee6d7a4d6b51c354774e0ce"/></dir><dir name="de_AT"><file name="Shopgate_Framework.csv" hash="2fb25887b4b9c89b2a241759ddc1590b"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="shopgate"><file name="logo.png" hash="b7139047ecc90b15a5710ab0fe77fc81"/><file name="logo_big.png" hash="b98bfcf09766589506a1cca24ca47972"/><file name="logo_small.png" hash="7abf7f774c592eb582c2856e027af798"/><file name="oauth_connect.js" hash="8e5c77d9ad1354f826445f03c91008f4"/><file name="shopgate_admin.css" hash="0fbc07171267b9fb5dba7004a0858f66"/><file name="target.js" hash="80484a4dae515f708c97545d9959673a"/></dir></dir></dir></dir></target><target name="magelib"><dir name="Shopgate"><dir name="assets"><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><file name="js_header.html" hash="7ff2c12f8b7c23542f3ff49b451720a8"/><file name="link_tag.html" hash="f7c53599b55d442fd49f970bd41eb2a4"/><file name="mobile_header.html" hash="17616650e160eaccd24e25729396c5a9"/></dir><file name="changelog.txt" hash="f9c3e9cfc0470a026fb9eaca705403b8"/><dir name="classes"><file name="apis.php" hash="8d89fdce7a3eeca342a5165bb9a2530b"/><file name="configuration.php" hash="264d43767346d16fd8c1fcfdcbec0ca2"/><file name="core.php" hash="754c598a012e63a23eccd600cc4618a6"/><file name="customers.php" hash="24c9dbbcafe379c224fcce4b02d58ad2"/><file name="external_orders.php" hash="7239071113b5decc70ec9672bf6fc3fe"/><dir name="helper"><file name="DataStructure.php" hash="ece9e9f855756777f543d090f5ecc710"/><file name="Pricing.php" hash="fd4c74999abc3bfa05fd74994a2ce78f"/><file name="String.php" hash="10c9396b2975bf0bde86f171932c3074"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><dir name="redirect"><file name="KeywordsManager.php" hash="3e8233fa248cb795642b4306b3ebdd13"/><file name="KeywordsManagerInterface.php" hash="32cda83161084b4f5904eeb5f50a6547"/><file name="LinkBuilder.php" hash="52d193384a8ffed61fd83c5e1befd63c"/><file name="LinkBuilderInterface.php" hash="a755af7b57fda9b9ff1564a0059529d1"/><file name="MobileRedirect.php" hash="1f58517a45d5d8814514001b1e690312"/><file name="MobileRedirectInterface.php" hash="80b8da18c8bf498461c2b8e183bce326"/><file name="Redirector.php" hash="1a06dc19980c8a51ae0cdbed4d04322d"/><file name="RedirectorInterface.php" hash="9a11e4e85b6005029458a035e4295935"/><file name="SettingsManager.php" hash="d1b1722715688da2a095fba8c607f45c"/><file name="SettingsManagerInterface.php" hash="ae16aa5ea4df7f0def80711f8cc14f70"/><file name="TagsGenerator.php" hash="de6e73da61a282d24226065671d67d6b"/><file name="TagsGeneratorInterface.php" hash="1a5c500631331a4ae970d2a442e5d7e2"/><file name="TemplateParser.php" hash="1e087c9ba5720c9065702d9ebfc5723a"/><file name="TemplateParserInterface.php" hash="d6897cd9e5622d1991bb7aab678e37f8"/></dir></dir><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><file name="items.php" hash="107f9bc5fcc0c0dbfe568a3b8235107c"/><dir name="models"><file name="Abstract.php" hash="a32633283eb403a55a166bbad70b3e2f"/><file name="AbstractExport.php" hash="f265f9e906208e1799994d117582be20"/><file name="XmlEmptyObject.php" hash="d6cfdae3bdd858d4f10fcebdb542f533"/><file name="XmlResultObject.php" hash="340804eb0f2ba6bcb6b05311b8bb1f11"/><dir name="catalog"><file name="Attribute.php" hash="28d8f3bc6c416661d1eaa77726ba7009"/><file name="AttributeGroup.php" hash="0270086ec8006ee8231c6b0baa8d6034"/><file name="Category.php" hash="beba58d2796cf7b4ca08ce68de65415b"/><file name="CategoryPath.php" hash="475869aef74c567c8569ee9953210faa"/><file name="Identifier.php" hash="d9a3b16d1fcdec641ca2b0fd77fbd625"/><file name="Input.php" hash="77df45fd89aec19565a5fae7178205bb"/><file name="Manufacturer.php" hash="e45f534f5f6acad118be24ffc63a0460"/><file name="Option.php" hash="fd95fe72bff985ae0b2861da115e2468"/><file name="Price.php" hash="3cb25372ae58bd0c71b342f9ef2dca73"/><file name="Product.php" hash="7e7c49e10b379eae5d0141efe2c91305"/><file name="Property.php" hash="5967f0403a606a27ea4fec71a8402327"/><file name="Relation.php" hash="263cde539af500af911baec4e354079e"/><file name="Review.php" hash="72c94cb1f2a54bafffdb5672d87ecd4d"/><file name="Shipping.php" hash="1fe425496bd9720dc18bd076e56aca9e"/><file name="Stock.php" hash="4e645877e778ec8d02ae98262bfa9663"/><file name="Tag.php" hash="39e7b845ab157d2f707707576e868d64"/><file name="TierPrice.php" hash="9dd757c9c3d193944a5727fbe5cf4704"/><file name="Validation.php" hash="0be71640c1df60ab809347194ec66457"/><file name="Visibility.php" hash="d60c6b8ec486da4afdc46a00d65ad172"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><dir name="media"><file name="Attachment.php" hash="c074ef3426c2506350cbf5ff0133c89d"/><file name="Image.php" hash="c9319f2a82811239313e328eaf7e2094"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><dir name="redirect"><file name="DeeplinkSuffix.php" hash="e6aebbb49db1b3b1d0bbb3a5f8e52927"/><file name="DeeplinkSuffixValue.php" hash="809684ff8f7d588d39060f5469e2c3b0"/><file name="DeeplinkSuffixValueDisabled.php" hash="83ff30aeeaf40c070f71b29b7f2bbbd8"/><file name="DeeplinkSuffixValueUnset.php" hash="1275996c7d012acfa3fbd6cbe43b08b3"/><file name="HtmlTag.php" hash="e5494a280dd090e3869445431e6c8c2a"/><file name="HtmlTagAttribute.php" hash="368c63b7c3043f7ae0bee107527152de"/><file name="HtmlTagVariable.php" hash="1484f93ec0e69b3f94313e4cac849e0f"/></dir></dir><file name="orders.php" hash="db9fb6643aafe97c93447e4fcc950b6b"/><file name="redirect.php" hash="75ba604b4a9885e861a96683e566ac5c"/></dir><dir name="config"><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name="index.php" hash="de19abc78063ea9a4112964c79946f1c"/><file name="shopgate.php" hash="248033be19931f7eccdc40d12e59d1bf"/><file name="shopgate_license.txt" hash="21fbb2f00b832416916b27c5e3f5d6d1"/><dir name="temp"><dir name="cache"><file name="index.php" hash="7573387748996e2dd9e02a237056f158"/></dir><file name="index.php" hash="7573387748996e2dd9e02a237056f158"/><dir name="logs"><file name="index.php" hash="7573387748996e2dd9e02a237056f158"/></dir></dir><dir name="tests"><dir name="classes"><dir name="helper"><dir name="redirect"><file name="KeywordsManagerTest.php" hash="185c285d78e7c4e25ede957918018fe6"/><file name="TemplateParserTest.php" hash="aa7aea33f78f0fda58437c83421d2f31"/></dir></dir></dir></dir><dir name="vendors"><file name="2d_is.php" hash="087decaca87ee85d548d8caaa43f1212"/><file name="BSD_license.txt" hash="2df4dd93533ca2c19f6f2d601bc3e0d5"/><file name="JSON.php" hash="cbb23366cd8c20319292458a87dc2870"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name=".htaccess" hash="34479bc8d9df775c38a980ecaf6f3f4b"/></dir></target><target name="mage"><dir name="app"><dir name="design"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="shopgate.xml" hash="608ba89093ef89e1c182cd6085dbf3b1"/></dir><dir name="template"><dir name="shopgate"><file name="mobile_website.phtml" hash="229cbefd12ea77676f8af9c7159528ea"/><dir name="payment"><file name="mobile_payment.phtml" hash="1e18979028fb13e99af7c595c75a5d27"/><file name="shopgate.phtml" hash="1e18979028fb13e99af7c595c75a5d27"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="shopgate.xml" hash="8bab300fb25a48cd2c8119ae1942ed54"/></dir><dir name="template"><dir name="shopgate"><dir name="oauth"><dir name="config"><file name="connector.phtml" hash="478c309bdde7834bf20a48b65a4699fb"/></dir><dir name="connect"><file name="info.phtml" hash="4f75dc4311616081873a7d416b96c1c2"/><file name="overlay.phtml" hash="2a17d5b6ff8023568437b194f8a9d482"/></dir><file name="connect.phtml" hash="6956aa22eedf549c4565304b4e4a4ab9"/><file name="data.phtml" hash="09b4c5d83863f104db7a018510cdb315"/><file name="disconnect.phtml" hash="2858cebe9004c9fb5764f79faee46f87"/><file name="manage.phtml" hash="1f99255efbce4dbdc1ee781820d455b8"/></dir><dir name="payment"><file name="mobile_payment.phtml" hash="2892e0dd200db6c0ffa5fa83f87d838c"/><file name="shopgate.phtml" hash="5457030290f8aa08c2711a8bd27c3dee"/></dir></dir></dir></dir></dir></dir></dir></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>