shopgate_module - Version 2.9.32

Version Notes

Shopgate Modul

Download this release

Release Info

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


Code changes from version 2.9.31 to 2.9.32

app/code/community/Shopgate/CartRules/Model/Observer.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_CartRules_Model_Observer extends Shopgate_Framework_Model_Observer
25
+ {
26
+ /**
27
+ * This observer blocks any rule that is not a coupon,
28
+ * so it's made to be empty to stop that restriction.
29
+ *
30
+ * @see https://shopgate.atlassian.net/browse/MAGENTO-1163
31
+ * @param Varien_Event_Observer $event
32
+ * @return $this
33
+ */
34
+ public function beforeSalesrulesLoaded($event)
35
+ {
36
+ return $this;
37
+ }
38
+ }
app/code/community/Shopgate/CartRules/Model/Shopgate/Plugin.php ADDED
@@ -0,0 +1,216 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_CartRules_Model_Shopgate_Plugin extends Shopgate_Framework_Model_Shopgate_Plugin
25
+ {
26
+ const CART_RULE_COUPON_CODE = '1';
27
+
28
+ /**
29
+ * Rewrite adaption for cart price rules to work
30
+ * without a coupon code.
31
+ *
32
+ * @see https://shopgate.atlassian.net/browse/MAGENTO-1163
33
+ * @param $mageCart
34
+ * @param ShopgateCart $cart
35
+ * @return array|null
36
+ */
37
+ public function checkCoupons($mageCart, ShopgateCart $cart)
38
+ {
39
+ /* @var $mageQuote Mage_Sales_Model_Quote */
40
+ /* @var $mageCart Mage_Checkout_Model_Cart */
41
+ /* @var $mageCoupon Mage_SalesRule_Model_Coupon */
42
+ /* @var $mageRule Mage_SalesRule_Model_Rule */
43
+ $mageQuote = $mageCart->getQuote();
44
+ $mageQuote->setTotalsCollectedFlag(false)->collectTotals();
45
+
46
+ $externalCoupons = array();
47
+ $validCouponsInCart = 0;
48
+ $returnEmptyCoupon = false;
49
+ $appliedRules = $mageQuote->getAppliedRuleIds();
50
+ $totals = $mageQuote->getTotals();
51
+ $discountAmount = empty($totals['discount']) ? 0 : $totals['discount']->getValue();
52
+
53
+ if (!$cart->getExternalCoupons()
54
+ && empty($discountAmount)
55
+ ) {
56
+ return null;
57
+ }
58
+
59
+ foreach ($cart->getExternalCoupons() as $coupon) {
60
+ if ($coupon->getCode() === self::CART_RULE_COUPON_CODE) {
61
+ $returnEmptyCoupon = true;
62
+ continue;
63
+ }
64
+ /** @var ShopgateExternalCoupon $coupon */
65
+ $externalCoupon = new ShopgateExternalCoupon();
66
+ $externalCoupon->setIsValid(true);
67
+ $externalCoupon->setCode($coupon->getCode());
68
+
69
+ try {
70
+ $mageQuote->setCouponCode($coupon->getCode());
71
+ $mageQuote->setTotalsCollectedFlag(false)->collectTotals();
72
+ $totals = $mageQuote->getTotals();
73
+ } catch (Exception $e) {
74
+ $externalCoupon->setIsValid(false);
75
+ $externalCoupon->setNotValidMessage($e->getMessage());
76
+ }
77
+
78
+ if ($this->_getConfigHelper()->getIsMagentoVersionLower1410()) {
79
+ $mageRule = Mage::getModel('salesrule/rule')->load($coupon->getCode(), 'coupon_code');
80
+ $mageCoupon = $mageRule;
81
+ } else {
82
+ $mageCoupon = Mage::getModel('salesrule/coupon')->load($coupon->getCode(), 'code');
83
+ $mageRule = Mage::getModel('salesrule/rule')->load($mageCoupon->getRuleId());
84
+ }
85
+
86
+ if ($mageRule->getId() && $mageQuote->getCouponCode()) {
87
+ $discountName = isset($totals['discount'])
88
+ ? $totals['discount']->getTitle()
89
+ : $mageRule->getDescription();
90
+
91
+ $couponInfo = array();
92
+ $couponInfo["coupon_id"] = $mageCoupon->getId();
93
+ $couponInfo["rule_id"] = $mageRule->getId();
94
+
95
+ $amountCoupon = $mageQuote->getSubtotal() - $mageQuote->getSubtotalWithDiscount();
96
+
97
+ $storeLabel = $mageRule->getStoreLabel(Mage::app()->getStore()->getId());
98
+ $externalCoupon->setName($storeLabel ? $storeLabel : $mageRule->getName());
99
+ $externalCoupon->setDescription($discountName);
100
+ $externalCoupon->setIsFreeShipping((bool)$mageQuote->getShippingAddress()->getFreeShipping());
101
+ $externalCoupon->setInternalInfo($this->jsonEncode($couponInfo));
102
+ if ($this->useTaxClasses) {
103
+ $externalCoupon->setAmountGross($amountCoupon);
104
+ } else {
105
+ $externalCoupon->setAmountNet($amountCoupon);
106
+ }
107
+ if (!$amountCoupon && !$externalCoupon->getIsFreeShipping()) {
108
+ $externalCoupon->setIsValid(0);
109
+ $externalCoupon->setAmount(0);
110
+ $externalCoupon->setNotValidMessage(
111
+ $this->_getHelper()->__(
112
+ 'Coupon code "%s" is not valid.',
113
+ Mage::helper('core')->htmlEscape($coupon->getCode())
114
+ )
115
+ );
116
+ }
117
+ } else {
118
+ $externalCoupon->setIsValid(0);
119
+ $externalCoupon->setAmount(0);
120
+ $externalCoupon->setNotValidMessage(
121
+ $this->_getHelper()->__(
122
+ 'Coupon code "%s" is not valid.',
123
+ Mage::helper('core')->htmlEscape($coupon->getCode())
124
+ )
125
+ );
126
+ }
127
+
128
+ if ($externalCoupon->getIsValid() && $validCouponsInCart >= 1) {
129
+ $errorCode = ShopgateLibraryException::COUPON_TOO_MANY_COUPONS;
130
+ $externalCoupon->setIsValid(false);
131
+ $externalCoupon->setNotValidMessage(ShopgateLibraryException::getMessageFor($errorCode));
132
+ }
133
+
134
+ if ($externalCoupon->getIsValid()) {
135
+ $validCouponsInCart++;
136
+ }
137
+ $externalCoupon->setCurrency(Mage::app()->getStore()->getCurrentCurrencyCode());
138
+ $externalCoupons[] = $externalCoupon;
139
+ }
140
+
141
+ if (!empty($discountAmount)
142
+ && $validCouponsInCart == 0
143
+ ) {
144
+ try {
145
+ $totals = $mageQuote->getTotals();
146
+ if ($totals['discount']) {
147
+ $discount = $totals['discount'];
148
+
149
+ /** @var ShopgateExternalCoupon $coupon */
150
+ $coupon = new ShopgateExternalCoupon();
151
+ $coupon->setIsValid(true);
152
+ $coupon->setCode(self::CART_RULE_COUPON_CODE);
153
+ $title = $discount->getTitle();
154
+ $title = empty($title) ? Mage::helper('sales')->__('Discount') : $title;
155
+ $coupon->setName($title);
156
+ $coupon->setDescription($discount->getTitle());
157
+ $amountCoupon = abs($discount->getValue());
158
+ if ($this->useTaxClasses) {
159
+ $coupon->setAmountGross($amountCoupon);
160
+ } else {
161
+ $coupon->setAmountNet($amountCoupon);
162
+ }
163
+ $coupon->setCurrency(Mage::app()->getStore()->getCurrentCurrencyCode());
164
+ $coupon->setInternalInfo(
165
+ $this->_getHelper()->getConfig()->jsonEncode(array('rule_ids' => $appliedRules))
166
+ );
167
+ $externalCoupons[] = $coupon;
168
+ $returnEmptyCoupon = false;
169
+ }
170
+ } catch (Exception $e) {
171
+ $this->log(
172
+ "Could not add rule with id " . $appliedRules . " to quote",
173
+ ShopgateLogger::LOGTYPE_DEBUG
174
+ );
175
+ return null;
176
+ }
177
+ }
178
+
179
+ if ($returnEmptyCoupon) {
180
+ $coupon = new ShopgateExternalCoupon();
181
+ $coupon->setCode(self::CART_RULE_COUPON_CODE);
182
+ $coupon->setName(Mage::helper('sales')->__('Discount'));
183
+ $coupon->setIsValid(false);
184
+ $externalCoupons[] = $coupon;
185
+ }
186
+
187
+ return $externalCoupons;
188
+ }
189
+
190
+ /**
191
+ * Add coupon from this system to quote
192
+ *
193
+ * @param Mage_Sales_Model_Quote $quote
194
+ * @param ShopgateCartBase $order
195
+ *
196
+ * @return Mage_Sales_Model_Quote
197
+ * @throws ShopgateLibraryException
198
+ */
199
+ protected function _setQuoteShopCoupons($quote, $order)
200
+ {
201
+ $externalCoupons = array();
202
+
203
+ foreach ($order->getExternalCoupons() as $coupon) {
204
+ /* @var $coupon ShopgateExternalCoupon */
205
+ if ($coupon->getCode() !== self::CART_RULE_COUPON_CODE ) {
206
+ $externalCoupons[] = $coupon;
207
+ }
208
+ }
209
+ $order->setExternalCoupons($externalCoupons);
210
+ $quote = parent::_setQuoteShopCoupons($quote, $order);
211
+
212
+ $session = Mage::getSingleton('checkout/session');
213
+ $session->replaceQuote($quote);
214
+ return $quote;
215
+ }
216
+ }
app/code/community/Shopgate/CartRules/etc/config.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Shopgate_CartRules>
5
+ <version>0.1.0</version>
6
+ </Shopgate_CartRules>
7
+ </modules>
8
+ <global>
9
+ <models>
10
+ <shopgate>
11
+ <rewrite>
12
+ <shopgate_plugin>Shopgate_CartRules_Model_Shopgate_Plugin</shopgate_plugin>
13
+ <observer>Shopgate_CartRules_Model_Observer</observer>
14
+ </rewrite>
15
+ </shopgate>
16
+ </models>
17
+ </global>
18
+ </config>
app/code/community/Shopgate/Framework/Block/Payment/MobilePayment.php CHANGED
@@ -34,6 +34,8 @@
34
  * @author Shopgate GmbH, 35510 Butzbach, DE
35
  * @package Shopgate_Framework
36
  */
 
 
37
  class Shopgate_Framework_Block_Payment_MobilePayment extends Mage_Payment_Block_Info
38
  {
39
  /**
34
  * @author Shopgate GmbH, 35510 Butzbach, DE
35
  * @package Shopgate_Framework
36
  */
37
+ include_once Mage::getBaseDir("lib") . '/Shopgate/shopgate.php';
38
+
39
  class Shopgate_Framework_Block_Payment_MobilePayment extends Mage_Payment_Block_Info
40
  {
41
  /**
app/code/community/Shopgate/Framework/Helper/Data.php CHANGED
@@ -736,8 +736,8 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
736
  $item->setIsBuyable((int)$isBuyable);
737
  $item->setQtyBuyable($qtyBuyable);
738
  $item->setStockQuantity($stockQuantity);
739
- $item->setUnitAmount($priceExclTax);
740
- $item->setUnitAmountWithTax($priceInclTax);
741
 
742
  foreach ($errors as $error) {
743
  $item->setError($error['type']);
@@ -834,8 +834,8 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
834
  public function checkQtyIncrements($stockItem, $qty)
835
  {
836
  $result = new Varien_Object();
837
-
838
- if ($this->getSuppressCheckQtyIncrements()) {
839
  return $result;
840
  }
841
 
@@ -861,8 +861,10 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
861
  }
862
 
863
  /**
864
- * Generates the uri to direct back after oauth authorization
865
- * and makes the uri unique via storeviewid
 
 
866
  *
867
  * @param int $storeViewId
868
  *
@@ -874,17 +876,20 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
874
  $oldStoreViewId = Mage::app()->getStore()->getId();
875
  Mage::app()->setCurrentStore($storeViewId);
876
  $url = Mage::app()->getStore($storeViewId)
877
- ->getUrl('shopgate/framework/receive_authorization/storeviewid/' . $storeViewId);
 
 
 
878
  Mage::app()->setCurrentStore($oldStoreViewId);
879
-
880
  $url = $this->includeHtpassToUrl($url);
 
881
  return $url;
882
  }
883
 
884
  /**
885
  * Injects .htpassw user & pass into URL
886
  * E.g. http://user:pass@store.com/
887
- *
888
  * @param $url
889
  * @return string
890
  */
@@ -896,10 +901,10 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
896
  $htpsw = $_SERVER['PHP_AUTH_USER'] . ':' . $_SERVER['PHP_AUTH_PW'] . '@';
897
  $url = str_replace(array($http, $https), array($http . $htpsw, $https . $htpsw), $url);
898
  }
899
-
900
  return $url;
901
  }
902
-
903
  /**
904
  * Check for enterprise edition
905
  *
@@ -977,9 +982,7 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
977
  public function calculateTaxRate($amount, $taxAmount, $precision = 2)
978
  {
979
  if ($taxAmount > 0) {
980
- return round(
981
- (100 * $taxAmount) / ($amount - $taxAmount), $precision
982
- );
983
  }
984
 
985
  return 0.00;
@@ -988,15 +991,18 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
988
  /**
989
  * Checks if totals from shopgate and magento differ by 1 cent
990
  *
991
- * @param ShopgateOrder $shopgateOrder
992
- * @param Mage_Sales_Model_Order $magentoOrder
993
  * @return bool
994
  */
995
  public function oneCentBugDetected($shopgateOrder, $magentoOrder)
996
  {
997
- $config = $this->getConfig();
998
- $bugDetected = round(abs($shopgateOrder->getAmountComplete() - $magentoOrder->getQuoteBaseGrandTotal()), 2) == 0.01;
999
- $shouldFixBug = $config->getFixOneCentBug();
 
 
 
1000
  return $bugDetected && $shouldFixBug;
1001
  }
1002
  }
736
  $item->setIsBuyable((int)$isBuyable);
737
  $item->setQtyBuyable($qtyBuyable);
738
  $item->setStockQuantity($stockQuantity);
739
+ $item->setUnitAmount(round($priceExclTax, 4));
740
+ $item->setUnitAmountWithTax(round($priceInclTax, 4));
741
 
742
  foreach ($errors as $error) {
743
  $item->setError($error['type']);
834
  public function checkQtyIncrements($stockItem, $qty)
835
  {
836
  $result = new Varien_Object();
837
+
838
+ if ($stockItem->getSuppressCheckQtyIncrements()) {
839
  return $result;
840
  }
841
 
861
  }
862
 
863
  /**
864
+ * Generates the URI to direct back after oAuth authorization
865
+ * and makes the URI unique via store view id.
866
+ * Due to this being called from frontend & backend we need
867
+ * to exclude SID to make the redirect_uri match in both calls.
868
  *
869
  * @param int $storeViewId
870
  *
876
  $oldStoreViewId = Mage::app()->getStore()->getId();
877
  Mage::app()->setCurrentStore($storeViewId);
878
  $url = Mage::app()->getStore($storeViewId)
879
+ ->getUrl(
880
+ 'shopgate/framework/receive_authorization/storeviewid/' . $storeViewId,
881
+ array('_nosid' => true)
882
+ );
883
  Mage::app()->setCurrentStore($oldStoreViewId);
 
884
  $url = $this->includeHtpassToUrl($url);
885
+
886
  return $url;
887
  }
888
 
889
  /**
890
  * Injects .htpassw user & pass into URL
891
  * E.g. http://user:pass@store.com/
892
+ *
893
  * @param $url
894
  * @return string
895
  */
901
  $htpsw = $_SERVER['PHP_AUTH_USER'] . ':' . $_SERVER['PHP_AUTH_PW'] . '@';
902
  $url = str_replace(array($http, $https), array($http . $htpsw, $https . $htpsw), $url);
903
  }
904
+
905
  return $url;
906
  }
907
+
908
  /**
909
  * Check for enterprise edition
910
  *
982
  public function calculateTaxRate($amount, $taxAmount, $precision = 2)
983
  {
984
  if ($taxAmount > 0) {
985
+ return round((100 * $taxAmount) / ($amount - $taxAmount), $precision);
 
 
986
  }
987
 
988
  return 0.00;
991
  /**
992
  * Checks if totals from shopgate and magento differ by 1 cent
993
  *
994
+ * @param ShopgateOrder $shopgateOrder
995
+ * @param Mage_Sales_Model_Order $magentoOrder
996
  * @return bool
997
  */
998
  public function oneCentBugDetected($shopgateOrder, $magentoOrder)
999
  {
1000
+ $config = $this->getConfig();
1001
+ $bugDetected = round(
1002
+ abs($shopgateOrder->getAmountComplete() - $magentoOrder->getQuoteBaseGrandTotal()),
1003
+ 2
1004
+ ) == 0.01;
1005
+ $shouldFixBug = $config->getFixOneCentBug();
1006
  return $bugDetected && $shouldFixBug;
1007
  }
1008
  }
app/code/community/Shopgate/Framework/Helper/Sales.php CHANGED
@@ -204,8 +204,17 @@ class Shopgate_Framework_Helper_Sales extends Mage_Core_Helper_Abstract
204
 
205
  /** @var Mage_Sales_Model_Quote_Item $_item */
206
  foreach ($quote->getAllVisibleItems() as $_item) {
207
- /** @var Mage_Catalog_Model_Product $_item */
208
- $items[] = $validator->validateStock($_item, $_item->getPriceInclTax(), $_item->getPrice());
 
 
 
 
 
 
 
 
 
209
  }
210
 
211
  foreach (Mage::helper('shopgate')->fetchMissingQuoteItems($cart, $quote) as $_item) {
204
 
205
  /** @var Mage_Sales_Model_Quote_Item $_item */
206
  foreach ($quote->getAllVisibleItems() as $_item) {
207
+ $price = $_item->getProduct()->getFinalPrice();
208
+ $priceIncludesTax = Mage::helper('tax')->priceIncludesTax($quote->getStore());
209
+ $percent = $_item->getTaxPercent();
210
+ if ($priceIncludesTax) {
211
+ $priceInclTax = $price;
212
+ $priceExclTax = $price / (1 + ($percent/100));
213
+ } else {
214
+ $priceInclTax = $price * (1 + ($percent/100));
215
+ $priceExclTax = $price;
216
+ }
217
+ $items[] = $validator->validateStock($_item, $priceInclTax, $priceExclTax);
218
  }
219
 
220
  foreach (Mage::helper('shopgate')->fetchMissingQuoteItems($cart, $quote) as $_item) {
app/code/community/Shopgate/Framework/Model/Observer.php CHANGED
@@ -61,8 +61,8 @@ class Shopgate_Framework_Model_Observer
61
  public function setShippingStatus(Varien_Event_Observer $observer)
62
  {
63
  ShopgateLogger::getInstance()->log(
64
- "Try to set Shipping state for current Order",
65
- ShopgateLogger::LOGTYPE_DEBUG
66
  );
67
 
68
  $order = $observer->getEvent()->getShipment()->getOrder();
@@ -78,13 +78,13 @@ class Shopgate_Framework_Model_Observer
78
  $errors = 0;
79
 
80
  if (!Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_ACTIVE, $order->getStore())) {
81
- ShopgateLogger::getInstance()->log("> Plugin is not active, return!", ShopgateLogger::LOGTYPE_DEBUG);
82
  return;
83
  }
84
 
85
  $this->_initMerchantApi($order->getStoreId());
86
  if (!$this->_config->isValidConfig()) {
87
- ShopgateLogger::getInstance()->log("> Plugin has no valid config data!", ShopgateLogger::LOGTYPE_DEBUG);
88
  return;
89
  }
90
 
@@ -93,8 +93,8 @@ class Shopgate_Framework_Model_Observer
93
  /** @var $shipments Mage_Sales_Model_Resource_Order_Shipment_Collection */
94
  $shipments = $order->getShipmentsCollection();
95
  ShopgateLogger::getInstance()->log(
96
- "> getTrackCollections from MagentoOrder (count: '" . count($shipments->count()) . "')",
97
- ShopgateLogger::LOGTYPE_DEBUG
98
  );
99
 
100
  $reportedShipments = $shopgateOrder->getReportedShippingCollections();
@@ -107,29 +107,29 @@ class Shopgate_Framework_Model_Observer
107
  /** @var Mage_Sales_Model_Resource_Order_Shipment_Track_Collection $tracks */
108
  $tracks = $shipment->getTracksCollection();
109
  ShopgateLogger::getInstance()->log(
110
- "> getTrackCollections from MagentoOrderShippment (count: '" . count($tracks->count()) . "')",
111
- ShopgateLogger::LOGTYPE_DEBUG
112
  );
113
 
114
  $notes = array();
115
  if ($tracks->count() == 0) {
116
- $notes[] = array("service" => ShopgateDeliveryNote::OTHER, "tracking_number" => "");
117
  }
118
 
119
  foreach ($tracks as $track) {
120
  /* @var $track Mage_Sales_Model_Order_Shipment_Track */
121
  switch ($track->getCarrierCode()) {
122
- case "fedex":
123
  $carrier = ShopgateDeliveryNote::FEDEX;
124
  break;
125
- case "usps":
126
  $carrier = ShopgateDeliveryNote::USPS;
127
  break;
128
- case "ups":
129
  $carrier = ShopgateDeliveryNote::UPS;
130
  break;
131
- case "dhlint":
132
- case "dhl":
133
  $carrier = ShopgateDeliveryNote::DHL;
134
  break;
135
  default:
@@ -137,23 +137,23 @@ class Shopgate_Framework_Model_Observer
137
  break;
138
  }
139
 
140
- $notes[] = array("service" => $carrier, "tracking_number" => $track->getNumber());
141
  }
142
 
143
  foreach ($notes as $note) {
144
  try {
145
  ShopgateLogger::getInstance()->log(
146
- "> Try to call SMA::addOrderDeliveryNote (Ordernumber: {$shopgateOrder->getShopgateOrderNumber()} )",
147
- ShopgateLogger::LOGTYPE_DEBUG
148
  );
149
  $this->_merchantApi->addOrderDeliveryNote(
150
- $shopgateOrder->getShopgateOrderNumber(),
151
- $note["service"],
152
- $note["tracking_number"]
153
  );
154
  ShopgateLogger::getInstance()->log(
155
- "> Call to SMA::addOrderDeliveryNote was successfull!",
156
- ShopgateLogger::LOGTYPE_DEBUG
157
  );
158
  $reportedShipments[] = $shipment->getId();
159
  } catch (ShopgateMerchantApiException $e) {
@@ -166,23 +166,23 @@ class Shopgate_Framework_Model_Observer
166
 
167
  $errors++;
168
  ShopgateLogger::getInstance()->log(
169
- "! (#{$orderNumber}) SMA-Error on add delivery note! Message: {$e->getCode()} - {$e->getMessage()}",
170
- ShopgateLogger::LOGTYPE_DEBUG
171
  );
172
  ShopgateLogger::getInstance()->log(
173
- "(#{$orderNumber}) SMA-Error on add delivery note! Message: {$e->getCode()} - {$e->getMessage()}",
174
- ShopgateLogger::LOGTYPE_ERROR
175
  );
176
  }
177
  } catch (Exception $e) {
178
 
179
  ShopgateLogger::getInstance()->log(
180
- "! (#{$orderNumber}) SMA-Error on add delivery note! Message: {$e->getCode()} - {$e->getMessage()}",
181
- ShopgateLogger::LOGTYPE_DEBUG
182
  );
183
  ShopgateLogger::getInstance()->log(
184
- "(#{$orderNumber}) SMA-Error on add delivery note! Message: {$e->getCode()} - {$e->getMessage()}",
185
- ShopgateLogger::LOGTYPE_ERROR
186
  );
187
  $errors++;
188
  }
@@ -196,18 +196,18 @@ class Shopgate_Framework_Model_Observer
196
  $shopgateOrder->setReportedShippingCollections($reportedShipments);
197
  $shopgateOrder->save();
198
 
199
- ShopgateLogger::getInstance()->log("> Save data and return!", ShopgateLogger::LOGTYPE_DEBUG);
200
 
201
  if ($errors > 0) {
202
  Mage::getSingleton('core/session')->addError(
203
- Mage::helper("shopgate")->__(
204
- "[SHOPGATE] Order status was updated but %s errors occurred",
205
  $errors['errorcount']
206
  )
207
  );
208
  } else {
209
  Mage::getSingleton('core/session')->addSuccess(
210
- Mage::helper("shopgate")->__("[SHOPGATE] Order status was updated successfully at Shopgate")
211
  );
212
  }
213
  }
@@ -221,7 +221,7 @@ class Shopgate_Framework_Model_Observer
221
  {
222
  /* @var $config Shopgate_Framework_Model_Config */
223
  if ($this->_config == null) {
224
- $this->_config = Mage::helper("shopgate/config")->getConfig($storeId);
225
  }
226
  $builder = new ShopgateBuilder($this->_config);
227
  $this->_merchantApi = $builder->buildMerchantApi();
@@ -250,69 +250,69 @@ class Shopgate_Framework_Model_Observer
250
  && $order->getState() == Mage_Sales_Model_Order::STATE_COMPLETE
251
  ) {
252
  ShopgateLogger::getInstance()->log(
253
- "> (#{$orderNumber}) Order state is complete and should send to Shopgate",
254
- ShopgateLogger::LOGTYPE_DEBUG
255
  );
256
  $isShipmentComplete = true;
257
  }
258
 
259
  if (!$isShipmentComplete) {
260
  ShopgateLogger::getInstance()->log(
261
- "> (#{$orderNumber}) This order is not shipped completly",
262
- ShopgateLogger::LOGTYPE_DEBUG
263
  );
264
  return true;
265
  }
266
 
267
  try {
268
  ShopgateLogger::getInstance()->log(
269
- "> (#{$orderNumber}) Try to call SMA::setOrderShippingCompleted (Ordernumber: {$shopgateOrder->getShopgateOrderNumber()} )",
270
- ShopgateLogger::LOGTYPE_DEBUG
271
  );
272
  $this->_merchantApi->setOrderShippingCompleted($shopgateOrder->getShopgateOrderNumber());
273
  ShopgateLogger::getInstance()->log(
274
- "> (#{$orderNumber}) Call to SMA::setOrderShippingCompleted was successfull!",
275
- ShopgateLogger::LOGTYPE_DEBUG
276
  );
277
  } catch (ShopgateMerchantApiException $e) {
278
  if ($e->getCode() == ShopgateMerchantApiException::ORDER_SHIPPING_STATUS_ALREADY_COMPLETED
279
  || $e->getCode() == ShopgateMerchantApiException::ORDER_ALREADY_COMPLETED
280
  ) {
281
  Mage::getSingleton('core/session')->addNotice(
282
- Mage::helper("shopgate")->__(
283
- "[SHOPGATE] The order status is already set to \"shipped\" at Shopgate!"
284
  )
285
  );
286
  } else {
287
  Mage::getSingleton('core/session')->addError(
288
- Mage::helper("shopgate")->__(
289
- "[SHOPGATE] An error occured while updating the shipping status.<br />Please contact Shopgate support."
290
  )
291
  );
292
  Mage::getSingleton('core/session')->addError("{$e->getCode()} - {$e->getMessage()}");
293
  ShopgateLogger::getInstance()->log(
294
- "! (#{$orderNumber}) SMA-Error on set shipping complete! Message: {$e->getCode()} - {$e->getMessage()}",
295
- ShopgateLogger::LOGTYPE_DEBUG
296
  );
297
  ShopgateLogger::getInstance()->log(
298
- "(#{$orderNumber}) SMA-Error on set shipping complete! Message: {$e->getCode()} - {$e->getMessage()}",
299
- ShopgateLogger::LOGTYPE_ERROR
300
  );
301
  return false;
302
  }
303
  } catch (Exception $e) {
304
  Mage::getSingleton('core/session')->addError(
305
- Mage::helper("shopgate")->__(
306
- "[SHOPGATE] An unknown error occured!<br />Please contact Shopgate support."
307
  )
308
  );
309
  ShopgateLogger::getInstance()->log(
310
- "! (#{$orderNumber}) unknown error on set shipping complete! Message: {$e->getCode()} - {$e->getMessage()}",
311
- ShopgateLogger::LOGTYPE_DEBUG
312
  );
313
  ShopgateLogger::getInstance()->log(
314
- "(#{$orderNumber}) Unkwon error on set shipping complete! Message: {$e->getCode()} - {$e->getMessage()}",
315
- ShopgateLogger::LOGTYPE_ERROR
316
  );
317
  return false;
318
  }
@@ -324,42 +324,44 @@ class Shopgate_Framework_Model_Observer
324
 
325
  /**
326
  * full cancel of the order at shopgate
327
- * $data["order"] should set with an object of Mage_Sales_Model_Order
328
- * called on event "order_cancel_after"
329
  * called from Mage_Sales_Model_Order::cancel()
330
  * Uses the cancle_order action in ShopgateMerchantApi
331
  *
332
  * @see http://wiki.shopgate.com/Merchant_API_cancel_order
333
  * @param Varien_Event_Observer $observer
334
- * @return bool
 
335
  */
336
  public function cancelOrder(Varien_Event_Observer $observer)
337
  {
338
  /* @var $order Mage_Sales_Model_Order */
339
  $order = $observer->getEvent()->getOrder();
340
  /* @var $shopgateOrder Shopgate_Framework_Model_Shopgate_Order */
341
- $shopgateOrder = Mage::getModel("shopgate/shopgate_order")->load($order->getId(), "order_id");
342
 
343
  if (!$shopgateOrder->getId()) {
344
  return true;
345
  }
346
 
347
  if ($order instanceof Mage_Sales_Model_Order) {
 
348
  try {
349
- $orderNumber = $shopgateOrder->getShopgateOrderNumber();
350
  $this->_initMerchantApi($order->getStoreId());
351
 
352
  // Do nothing if plugin is not active for this store
353
  if (!Mage::getStoreConfig(
354
- Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_ACTIVE,
355
- $this->_config->getStoreViewId()
356
  )
357
  ) {
358
- return true;
359
  }
360
 
361
  if (!$this->_config->isValidConfig()) {
362
- return true;
363
  }
364
 
365
  $cancellationItems = array();
@@ -368,7 +370,6 @@ class Shopgate_Framework_Model_Observer
368
  $rd = $shopgateOrder->getShopgateOrderObject();
369
 
370
  $orderItems = $order->getItemsCollection();
371
- $rdItem = false;
372
 
373
  foreach ($orderItems as $orderItem) {
374
  /** @var $orderItem Mage_Sales_Model_Order_Item */
@@ -388,8 +389,8 @@ class Shopgate_Framework_Model_Observer
388
  ) {
389
 
390
  $cancellationItems[] = array(
391
- "item_number" => $rdItem->getItemNumber(),
392
- "quantity" => intval($orderItem->getQtyCanceled()) + intval($orderItem->getQtyRefunded())
393
  );
394
  $qtyCancelled += intval($orderItem->getQtyCanceled()) + intval($orderItem->getQtyRefunded());
395
  }
@@ -399,16 +400,14 @@ class Shopgate_Framework_Model_Observer
399
  && empty($cancellationItems)
400
  ) {
401
  $order->addStatusHistoryComment(
402
- '[SHOPGATE] Notice: Credit memo was not sent to Shopgate because no product quantity was affected.'
403
  );
404
  $order->save();
405
  return true;
406
  }
407
 
408
- $fullCancellation = empty($cancellationItems);
409
- $fullCancellation = $fullCancellation || $qtyCancelled == $order->getTotalQtyOrdered();
410
  $cancelShippingCosts = !$shopgateOrder->hasShippedItems($order);
411
-
412
  /** @var Mage_Sales_Model_Order_Creditmemo $creditMemo */
413
  $creditMemo = $observer->getEvent()->getCreditMemo();
414
  if ($creditMemo) {
@@ -419,16 +418,19 @@ class Shopgate_Framework_Model_Observer
419
  }
420
  }
421
 
 
 
 
422
  $this->_merchantApi->cancelOrder(
423
- $shopgateOrder->getShopgateOrderNumber(),
424
- $fullCancellation,
425
- $cancellationItems,
426
- $cancelShippingCosts,
427
- "Order was cancelled in Shopsystem!"
428
  );
429
 
430
  Mage::getSingleton('core/session')->addSuccess(
431
- Mage::helper("shopgate")->__("[SHOPGATE] Order successfully cancelled at Shopgate.")
432
  );
433
 
434
  $shopgateOrder->setIsCancellationSentToShopgate(true);
@@ -436,56 +438,58 @@ class Shopgate_Framework_Model_Observer
436
 
437
  if (!$shopgateOrder->getIsSentToShopgate() && !$this->_completeShipping($shopgateOrder, $order)) {
438
  $this->_logShopgateError(
439
- "! (#{$orderNumber}) not sent to shopgate and shipping not complete",
440
- ShopgateLogger::LOGTYPE_ERROR
441
  );
442
  }
443
  } catch (ShopgateMerchantApiException $e) {
444
 
445
- if ($e->getCode() == "222") {
446
  // order already canceled in shopgate
447
  $shopgateOrder->setIsCancellationSentToShopgate(true);
448
  $shopgateOrder->save();
449
  } else {
450
  // Received error from shopgate server
451
  Mage::getSingleton('core/session')->addError(
452
- Mage::helper("shopgate")->__(
453
- "[SHOPGATE] An error occured while trying to cancel the order at Shopgate.<br />Please contact Shopgate support."
454
  )
455
  );
456
 
457
  Mage::getSingleton('core/session')->addError("Error: {$e->getCode()} - {$e->getMessage()}");
458
 
459
  $this->_logShopgateError(
460
- "! (#{$orderNumber}) SMA-Error on cancel order! Message: {$e->getCode()} -
461
  {$e->getMessage()}",
462
- ShopgateLogger::LOGTYPE_ERROR
463
  );
464
  $this->_logShopgateError(
465
- "! (#{$orderNumber}) SMA-Error on cancel order! Message: {$e->getCode()} -
466
  {$e->getMessage()}",
467
- ShopgateLogger::LOGTYPE_DEBUG
468
  );
469
  }
470
  } catch (Exception $e) {
471
  Mage::getSingleton('core/session')->addError(
472
- Mage::helper("shopgate")->__(
473
- "[SHOPGATE] An unknown error occured!<br />Please contact Shopgate support."
474
  )
475
  );
476
 
477
  $this->_logShopgateError(
478
- "! (#{$orderNumber}) SMA-Error on cancel order! Message: {$e->getCode()} -
479
  {$e->getMessage()}",
480
- ShopgateLogger::LOGTYPE_ERROR
481
  );
482
  $this->_logShopgateError(
483
- "! (#{$orderNumber}) SMA-Error on cancel order! Message: {$e->getCode()} -
484
  {$e->getMessage()}",
485
- ShopgateLogger::LOGTYPE_DEBUG
486
  );
487
  }
488
  }
 
 
489
  }
490
 
491
  /**
@@ -555,8 +559,8 @@ class Shopgate_Framework_Model_Observer
555
  $object = Mage::helper('shopgate')->getConfig()->jsonDecode($json_info);
556
  } catch (Exception $e) {
557
  ShopgateLogger::getInstance()->log(
558
- "Product ID (#{$id}) Json parse error! Message: {$e->getCode()} - {$e->getMessage()}",
559
- ShopgateLogger::LOGTYPE_ERROR
560
  );
561
  return false;
562
  }
@@ -576,12 +580,12 @@ class Shopgate_Framework_Model_Observer
576
  */
577
  public function beforeSalesrulesLoaded($observer)
578
  {
579
- if (Mage::helper("shopgate")->isShopgateApiRequest()) {
580
  $collection = $observer->getEvent()->getCollection();
581
  if ($collection instanceof Mage_SalesRule_Model_Resource_Rule_Collection) {
582
  $collection->getSelect()->where(
583
- "coupon_type = " . Mage_SalesRule_Model_Rule::COUPON_TYPE_SPECIFIC .
584
- " OR simple_free_shipping IN (1,2)"
585
  );
586
  }
587
  }
@@ -592,34 +596,34 @@ class Shopgate_Framework_Model_Observer
592
  */
593
  public function deleteShopgateCouponProducts($observer)
594
  {
595
- if (Mage::helper("shopgate")->isShopgateApiRequest()) {
596
- $eventResourceModule = explode("/", $observer->getResourceName());
597
- $eventResourceModule = count($eventResourceModule) ? $eventResourceModule[0] : "default";
598
  /* Prevent collection loading on admin to avoid an error while using flat tables */
599
- if ((Mage::app()->getStore()->isAdmin() && !$eventResourceModule == "cron") ||
600
- (!Mage::helper('shopgate')->isShopgateApiRequest() && !$eventResourceModule == "cron")
601
  ) {
602
  return;
603
  }
604
-
605
  $oldStoreViewId = Mage::app()->getStore()->getId();
606
-
607
- if ($eventResourceModule == "cron") {
608
  $storeViewIds = Mage::getModel('core/store')->getCollection()->toOptionArray();
609
  } else {
610
- $storeViewIds = array(array("value" => $oldStoreViewId, "label" => "current"));
611
  }
612
-
613
  foreach ($storeViewIds as $storeView) {
614
  $storeViewId = $storeView['value'];
615
  Mage::app()->setCurrentStore($storeViewId);
616
-
617
  $collection = Mage::getModel('catalog/product')
618
  ->getResourceCollection()
619
  ->addFieldToFilter('type_id', 'virtual');
620
-
621
  $helper = Mage::helper('shopgate/coupon');
622
-
623
  foreach ($collection->getItems() as $product) {
624
  if ($helper->isShopgateCoupon($product)) {
625
  Mage::app()->setCurrentStore(0);
@@ -646,14 +650,18 @@ class Shopgate_Framework_Model_Observer
646
  $storeViewId = Mage::app()->getRequest()->getParam('storeviewid');
647
 
648
  if (Mage::helper('shopgate/config')->isOAuthShopAlreadyRegistered($settings['shop_number'], $storeViewId)) {
649
- Mage::throwException('For the current storeView with id #' . $storeViewId . ' is already a shopnumber set. OAuth registration canceled.');
 
 
650
  }
651
 
652
  $config->setStoreViewId($storeViewId);
653
 
654
  /* pre save shop_number in proper scope to trigger the save mechanisms scope definition algorithm */
655
  if (!$config->oauthSaveNewShopNumber($settings['shop_number'], $storeViewId)) {
656
- Mage::throwExecption('Could not determine proper scope for new shop with number: #' . $settings['shop_number']);
 
 
657
  }
658
 
659
  unset($settings['shop_number']);
@@ -669,7 +677,10 @@ class Shopgate_Framework_Model_Observer
669
  && Mage::app()->getRequest()->getParam('action') == 'receive_authorization'
670
  ) {
671
  $storeViewId = Mage::app()->getRequest()->getParam('storeviewid');
672
- $shopnumber = Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_SHOP_NUMBER, $storeViewId);
 
 
 
673
 
674
  $collection = Mage::getModel('core/config_data')
675
  ->getCollection()
@@ -692,14 +703,14 @@ class Shopgate_Framework_Model_Observer
692
  */
693
  public function checkForUpdates()
694
  {
695
- $model = Mage::getModel('shopgate/feed');
696
  $model->checkUpdate();
697
  }
698
 
699
  /**
700
  * @param Varien_Event_Observer $observer
701
  *
702
- * @return $this|void
703
  */
704
  public function manipulateShipmentForBillsafe(Varien_Event_Observer $observer)
705
  {
@@ -709,15 +720,16 @@ class Shopgate_Framework_Model_Observer
709
  $code = $shipment->getOrder()->getPayment()->getMethodInstance()->getCode();
710
 
711
  if ($code != Netresearch_Billsafe_Model_Payment::CODE) {
712
- return;
713
  }
714
 
715
- $magentoShopgateOrder = Mage::getModel("shopgate/shopgate_order")->load(
716
- $shipment->getOrder()->getId(), "order_id"
 
717
  );
718
 
719
  if ($magentoShopgateOrder->getId() == null) {
720
- return;
721
  }
722
 
723
  /**
@@ -730,7 +742,6 @@ class Shopgate_Framework_Model_Observer
730
  $order->setIsShopgateOrder(true);
731
 
732
  return $this;
733
-
734
  }
735
 
736
  return $this;
@@ -756,7 +767,8 @@ class Shopgate_Framework_Model_Observer
756
  */
757
  $config = $observer->getConfig();
758
  $optionTab = $config->getNode('sections/shopgate/groups/option/fields');
759
- $devConfig = new Mage_Core_Model_Config_Element('
 
760
  <fields>
761
  <customer_number translate="label comment tooltip">
762
  <label>Customer number</label>
@@ -792,7 +804,8 @@ class Shopgate_Framework_Model_Observer
792
  </validate>
793
  </api_key>
794
  </fields>
795
- ');
 
796
 
797
  $optionTab->extend($devConfig);
798
 
@@ -802,7 +815,8 @@ class Shopgate_Framework_Model_Observer
802
  * @var Mage_Core_Model_Config_Element $shopgateSection
803
  */
804
  $shopgateSection = $config->getNode('sections/shopgate/groups');
805
- $hiddenGroup = new Mage_Core_Model_Config_Element('
 
806
  <hidden translate="label">
807
  <label>Developer Only Section</label>
808
  <sort_order>15</sort_order>
@@ -821,7 +835,8 @@ class Shopgate_Framework_Model_Observer
821
  </oauth_access_token>
822
  </fields>
823
  </hidden>
824
- ');
 
825
  $shopgateSection->appendChild($hiddenGroup);
826
 
827
  return $this;
61
  public function setShippingStatus(Varien_Event_Observer $observer)
62
  {
63
  ShopgateLogger::getInstance()->log(
64
+ 'Try to set Shipping state for current Order',
65
+ ShopgateLogger::LOGTYPE_DEBUG
66
  );
67
 
68
  $order = $observer->getEvent()->getShipment()->getOrder();
78
  $errors = 0;
79
 
80
  if (!Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_ACTIVE, $order->getStore())) {
81
+ ShopgateLogger::getInstance()->log('> Plugin is not active, return!', ShopgateLogger::LOGTYPE_DEBUG);
82
  return;
83
  }
84
 
85
  $this->_initMerchantApi($order->getStoreId());
86
  if (!$this->_config->isValidConfig()) {
87
+ ShopgateLogger::getInstance()->log('> Plugin has no valid config data!', ShopgateLogger::LOGTYPE_DEBUG);
88
  return;
89
  }
90
 
93
  /** @var $shipments Mage_Sales_Model_Resource_Order_Shipment_Collection */
94
  $shipments = $order->getShipmentsCollection();
95
  ShopgateLogger::getInstance()->log(
96
+ "> getTrackCollections from MagentoOrder (count: '" . $shipments->count() . "')",
97
+ ShopgateLogger::LOGTYPE_DEBUG
98
  );
99
 
100
  $reportedShipments = $shopgateOrder->getReportedShippingCollections();
107
  /** @var Mage_Sales_Model_Resource_Order_Shipment_Track_Collection $tracks */
108
  $tracks = $shipment->getTracksCollection();
109
  ShopgateLogger::getInstance()->log(
110
+ "> getTrackCollections from MagentoOrderShippment (count: '" . $tracks->count() . "')",
111
+ ShopgateLogger::LOGTYPE_DEBUG
112
  );
113
 
114
  $notes = array();
115
  if ($tracks->count() == 0) {
116
+ $notes[] = array('service' => ShopgateDeliveryNote::OTHER, 'tracking_number' => '');
117
  }
118
 
119
  foreach ($tracks as $track) {
120
  /* @var $track Mage_Sales_Model_Order_Shipment_Track */
121
  switch ($track->getCarrierCode()) {
122
+ case 'fedex':
123
  $carrier = ShopgateDeliveryNote::FEDEX;
124
  break;
125
+ case 'usps':
126
  $carrier = ShopgateDeliveryNote::USPS;
127
  break;
128
+ case 'ups':
129
  $carrier = ShopgateDeliveryNote::UPS;
130
  break;
131
+ case 'dhlint':
132
+ case 'dhl':
133
  $carrier = ShopgateDeliveryNote::DHL;
134
  break;
135
  default:
137
  break;
138
  }
139
 
140
+ $notes[] = array('service' => $carrier, 'tracking_number' => $track->getNumber());
141
  }
142
 
143
  foreach ($notes as $note) {
144
  try {
145
  ShopgateLogger::getInstance()->log(
146
+ "> Try to call SMA::addOrderDeliveryNote (Ordernumber: {$shopgateOrder->getShopgateOrderNumber()} )",
147
+ ShopgateLogger::LOGTYPE_DEBUG
148
  );
149
  $this->_merchantApi->addOrderDeliveryNote(
150
+ $shopgateOrder->getShopgateOrderNumber(),
151
+ $note['service'],
152
+ $note['tracking_number']
153
  );
154
  ShopgateLogger::getInstance()->log(
155
+ '> Call to SMA::addOrderDeliveryNote was successfull!',
156
+ ShopgateLogger::LOGTYPE_DEBUG
157
  );
158
  $reportedShipments[] = $shipment->getId();
159
  } catch (ShopgateMerchantApiException $e) {
166
 
167
  $errors++;
168
  ShopgateLogger::getInstance()->log(
169
+ "! (#{$orderNumber}) SMA-Error on add delivery note! Message: {$e->getCode()} - {$e->getMessage()}",
170
+ ShopgateLogger::LOGTYPE_DEBUG
171
  );
172
  ShopgateLogger::getInstance()->log(
173
+ "(#{$orderNumber}) SMA-Error on add delivery note! Message: {$e->getCode()} - {$e->getMessage()}",
174
+ ShopgateLogger::LOGTYPE_ERROR
175
  );
176
  }
177
  } catch (Exception $e) {
178
 
179
  ShopgateLogger::getInstance()->log(
180
+ "! (#{$orderNumber}) SMA-Error on add delivery note! Message: {$e->getCode()} - {$e->getMessage()}",
181
+ ShopgateLogger::LOGTYPE_DEBUG
182
  );
183
  ShopgateLogger::getInstance()->log(
184
+ "(#{$orderNumber}) SMA-Error on add delivery note! Message: {$e->getCode()} - {$e->getMessage()}",
185
+ ShopgateLogger::LOGTYPE_ERROR
186
  );
187
  $errors++;
188
  }
196
  $shopgateOrder->setReportedShippingCollections($reportedShipments);
197
  $shopgateOrder->save();
198
 
199
+ ShopgateLogger::getInstance()->log('> Save data and return!', ShopgateLogger::LOGTYPE_DEBUG);
200
 
201
  if ($errors > 0) {
202
  Mage::getSingleton('core/session')->addError(
203
+ Mage::helper('shopgate')->__(
204
+ '[SHOPGATE] Order status was updated but %s errors occurred',
205
  $errors['errorcount']
206
  )
207
  );
208
  } else {
209
  Mage::getSingleton('core/session')->addSuccess(
210
+ Mage::helper('shopgate')->__('[SHOPGATE] Order status was updated successfully at Shopgate')
211
  );
212
  }
213
  }
221
  {
222
  /* @var $config Shopgate_Framework_Model_Config */
223
  if ($this->_config == null) {
224
+ $this->_config = Mage::helper('shopgate/config')->getConfig($storeId);
225
  }
226
  $builder = new ShopgateBuilder($this->_config);
227
  $this->_merchantApi = $builder->buildMerchantApi();
250
  && $order->getState() == Mage_Sales_Model_Order::STATE_COMPLETE
251
  ) {
252
  ShopgateLogger::getInstance()->log(
253
+ "> (#{$orderNumber}) Order state is complete and should send to Shopgate",
254
+ ShopgateLogger::LOGTYPE_DEBUG
255
  );
256
  $isShipmentComplete = true;
257
  }
258
 
259
  if (!$isShipmentComplete) {
260
  ShopgateLogger::getInstance()->log(
261
+ "> (#{$orderNumber}) This order is not shipped completly",
262
+ ShopgateLogger::LOGTYPE_DEBUG
263
  );
264
  return true;
265
  }
266
 
267
  try {
268
  ShopgateLogger::getInstance()->log(
269
+ "> (#{$orderNumber}) Try to call SMA::setOrderShippingCompleted (Ordernumber: {$shopgateOrder->getShopgateOrderNumber()} )",
270
+ ShopgateLogger::LOGTYPE_DEBUG
271
  );
272
  $this->_merchantApi->setOrderShippingCompleted($shopgateOrder->getShopgateOrderNumber());
273
  ShopgateLogger::getInstance()->log(
274
+ "> (#{$orderNumber}) Call to SMA::setOrderShippingCompleted was successfull!",
275
+ ShopgateLogger::LOGTYPE_DEBUG
276
  );
277
  } catch (ShopgateMerchantApiException $e) {
278
  if ($e->getCode() == ShopgateMerchantApiException::ORDER_SHIPPING_STATUS_ALREADY_COMPLETED
279
  || $e->getCode() == ShopgateMerchantApiException::ORDER_ALREADY_COMPLETED
280
  ) {
281
  Mage::getSingleton('core/session')->addNotice(
282
+ Mage::helper('shopgate')->__(
283
+ '[SHOPGATE] The order status is already set to "shipped" at Shopgate!'
284
  )
285
  );
286
  } else {
287
  Mage::getSingleton('core/session')->addError(
288
+ Mage::helper('shopgate')->__(
289
+ '[SHOPGATE] An error occured while updating the shipping status.<br />Please contact Shopgate support.'
290
  )
291
  );
292
  Mage::getSingleton('core/session')->addError("{$e->getCode()} - {$e->getMessage()}");
293
  ShopgateLogger::getInstance()->log(
294
+ "! (#{$orderNumber}) SMA-Error on set shipping complete! Message: {$e->getCode()} - {$e->getMessage()}",
295
+ ShopgateLogger::LOGTYPE_DEBUG
296
  );
297
  ShopgateLogger::getInstance()->log(
298
+ "(#{$orderNumber}) SMA-Error on set shipping complete! Message: {$e->getCode()} - {$e->getMessage()}",
299
+ ShopgateLogger::LOGTYPE_ERROR
300
  );
301
  return false;
302
  }
303
  } catch (Exception $e) {
304
  Mage::getSingleton('core/session')->addError(
305
+ Mage::helper('shopgate')->__(
306
+ '[SHOPGATE] An unknown error occured!<br />Please contact Shopgate support.'
307
  )
308
  );
309
  ShopgateLogger::getInstance()->log(
310
+ "! (#{$orderNumber}) unknown error on set shipping complete! Message: {$e->getCode()} - {$e->getMessage()}",
311
+ ShopgateLogger::LOGTYPE_DEBUG
312
  );
313
  ShopgateLogger::getInstance()->log(
314
+ "(#{$orderNumber}) Unkwon error on set shipping complete! Message: {$e->getCode()} - {$e->getMessage()}",
315
+ ShopgateLogger::LOGTYPE_ERROR
316
  );
317
  return false;
318
  }
324
 
325
  /**
326
  * full cancel of the order at shopgate
327
+ * $data['order'] should set with an object of Mage_Sales_Model_Order
328
+ * called on event 'order_cancel_after'
329
  * called from Mage_Sales_Model_Order::cancel()
330
  * Uses the cancle_order action in ShopgateMerchantApi
331
  *
332
  * @see http://wiki.shopgate.com/Merchant_API_cancel_order
333
  * @param Varien_Event_Observer $observer
334
+ *
335
+ * @return $this
336
  */
337
  public function cancelOrder(Varien_Event_Observer $observer)
338
  {
339
  /* @var $order Mage_Sales_Model_Order */
340
  $order = $observer->getEvent()->getOrder();
341
  /* @var $shopgateOrder Shopgate_Framework_Model_Shopgate_Order */
342
+ $shopgateOrder = Mage::getModel('shopgate/shopgate_order')->load($order->getId(), 'order_id');
343
 
344
  if (!$shopgateOrder->getId()) {
345
  return true;
346
  }
347
 
348
  if ($order instanceof Mage_Sales_Model_Order) {
349
+ $orderNumber = $shopgateOrder->getShopgateOrderNumber();
350
  try {
351
+
352
  $this->_initMerchantApi($order->getStoreId());
353
 
354
  // Do nothing if plugin is not active for this store
355
  if (!Mage::getStoreConfig(
356
+ Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_ACTIVE,
357
+ $this->_config->getStoreViewId()
358
  )
359
  ) {
360
+ return $this;
361
  }
362
 
363
  if (!$this->_config->isValidConfig()) {
364
+ return $this;
365
  }
366
 
367
  $cancellationItems = array();
370
  $rd = $shopgateOrder->getShopgateOrderObject();
371
 
372
  $orderItems = $order->getItemsCollection();
 
373
 
374
  foreach ($orderItems as $orderItem) {
375
  /** @var $orderItem Mage_Sales_Model_Order_Item */
389
  ) {
390
 
391
  $cancellationItems[] = array(
392
+ 'item_number' => $rdItem->getItemNumber(),
393
+ 'quantity' => intval($orderItem->getQtyCanceled()) + intval($orderItem->getQtyRefunded())
394
  );
395
  $qtyCancelled += intval($orderItem->getQtyCanceled()) + intval($orderItem->getQtyRefunded());
396
  }
400
  && empty($cancellationItems)
401
  ) {
402
  $order->addStatusHistoryComment(
403
+ '[SHOPGATE] Notice: Credit memo was not sent to Shopgate because no product quantity was affected.'
404
  );
405
  $order->save();
406
  return true;
407
  }
408
 
 
 
409
  $cancelShippingCosts = !$shopgateOrder->hasShippedItems($order);
410
+
411
  /** @var Mage_Sales_Model_Order_Creditmemo $creditMemo */
412
  $creditMemo = $observer->getEvent()->getCreditMemo();
413
  if ($creditMemo) {
418
  }
419
  }
420
 
421
+ $fullCancellation = empty($cancellationItems) || $qtyCancelled == $order->getTotalQtyOrdered();
422
+ $fullCancellation = $fullCancellation && $cancelShippingCosts;
423
+
424
  $this->_merchantApi->cancelOrder(
425
+ $shopgateOrder->getShopgateOrderNumber(),
426
+ $fullCancellation,
427
+ $cancellationItems,
428
+ $cancelShippingCosts,
429
+ 'Order was cancelled in Shopsystem!'
430
  );
431
 
432
  Mage::getSingleton('core/session')->addSuccess(
433
+ Mage::helper('shopgate')->__('[SHOPGATE] Order successfully cancelled at Shopgate.')
434
  );
435
 
436
  $shopgateOrder->setIsCancellationSentToShopgate(true);
438
 
439
  if (!$shopgateOrder->getIsSentToShopgate() && !$this->_completeShipping($shopgateOrder, $order)) {
440
  $this->_logShopgateError(
441
+ "! (#{$orderNumber}) not sent to shopgate and shipping not complete",
442
+ ShopgateLogger::LOGTYPE_ERROR
443
  );
444
  }
445
  } catch (ShopgateMerchantApiException $e) {
446
 
447
+ if ($e->getCode() == '222') {
448
  // order already canceled in shopgate
449
  $shopgateOrder->setIsCancellationSentToShopgate(true);
450
  $shopgateOrder->save();
451
  } else {
452
  // Received error from shopgate server
453
  Mage::getSingleton('core/session')->addError(
454
+ Mage::helper('shopgate')->__(
455
+ '[SHOPGATE] An error occured while trying to cancel the order at Shopgate.<br />Please contact Shopgate support.'
456
  )
457
  );
458
 
459
  Mage::getSingleton('core/session')->addError("Error: {$e->getCode()} - {$e->getMessage()}");
460
 
461
  $this->_logShopgateError(
462
+ "! (#{$orderNumber}) SMA-Error on cancel order! Message: {$e->getCode()} -
463
  {$e->getMessage()}",
464
+ ShopgateLogger::LOGTYPE_ERROR
465
  );
466
  $this->_logShopgateError(
467
+ "! (#{$orderNumber}) SMA-Error on cancel order! Message: {$e->getCode()} -
468
  {$e->getMessage()}",
469
+ ShopgateLogger::LOGTYPE_DEBUG
470
  );
471
  }
472
  } catch (Exception $e) {
473
  Mage::getSingleton('core/session')->addError(
474
+ Mage::helper('shopgate')->__(
475
+ '[SHOPGATE] An unknown error occured!<br />Please contact Shopgate support.'
476
  )
477
  );
478
 
479
  $this->_logShopgateError(
480
+ "! (#{$orderNumber}) SMA-Error on cancel order! Message: {$e->getCode()} -
481
  {$e->getMessage()}",
482
+ ShopgateLogger::LOGTYPE_ERROR
483
  );
484
  $this->_logShopgateError(
485
+ "! (#{$orderNumber}) SMA-Error on cancel order! Message: {$e->getCode()} -
486
  {$e->getMessage()}",
487
+ ShopgateLogger::LOGTYPE_DEBUG
488
  );
489
  }
490
  }
491
+
492
+ return $this;
493
  }
494
 
495
  /**
559
  $object = Mage::helper('shopgate')->getConfig()->jsonDecode($json_info);
560
  } catch (Exception $e) {
561
  ShopgateLogger::getInstance()->log(
562
+ "Product ID (#{$id}) Json parse error! Message: {$e->getCode()} - {$e->getMessage()}",
563
+ ShopgateLogger::LOGTYPE_ERROR
564
  );
565
  return false;
566
  }
580
  */
581
  public function beforeSalesrulesLoaded($observer)
582
  {
583
+ if (Mage::helper('shopgate')->isShopgateApiRequest()) {
584
  $collection = $observer->getEvent()->getCollection();
585
  if ($collection instanceof Mage_SalesRule_Model_Resource_Rule_Collection) {
586
  $collection->getSelect()->where(
587
+ 'coupon_type = ' . Mage_SalesRule_Model_Rule::COUPON_TYPE_SPECIFIC .
588
+ ' OR simple_free_shipping IN (1,2)'
589
  );
590
  }
591
  }
596
  */
597
  public function deleteShopgateCouponProducts($observer)
598
  {
599
+ if (Mage::helper('shopgate')->isShopgateApiRequest()) {
600
+ $eventResourceModule = explode('/', $observer->getResourceName());
601
+ $eventResourceModule = count($eventResourceModule) ? $eventResourceModule[0] : 'default';
602
  /* Prevent collection loading on admin to avoid an error while using flat tables */
603
+ if ((Mage::app()->getStore()->isAdmin() && !$eventResourceModule == 'cron') ||
604
+ (!Mage::helper('shopgate')->isShopgateApiRequest() && !$eventResourceModule == 'cron')
605
  ) {
606
  return;
607
  }
608
+
609
  $oldStoreViewId = Mage::app()->getStore()->getId();
610
+
611
+ if ($eventResourceModule == 'cron') {
612
  $storeViewIds = Mage::getModel('core/store')->getCollection()->toOptionArray();
613
  } else {
614
+ $storeViewIds = array(array('value' => $oldStoreViewId, 'label' => 'current'));
615
  }
616
+
617
  foreach ($storeViewIds as $storeView) {
618
  $storeViewId = $storeView['value'];
619
  Mage::app()->setCurrentStore($storeViewId);
620
+
621
  $collection = Mage::getModel('catalog/product')
622
  ->getResourceCollection()
623
  ->addFieldToFilter('type_id', 'virtual');
624
+
625
  $helper = Mage::helper('shopgate/coupon');
626
+
627
  foreach ($collection->getItems() as $product) {
628
  if ($helper->isShopgateCoupon($product)) {
629
  Mage::app()->setCurrentStore(0);
650
  $storeViewId = Mage::app()->getRequest()->getParam('storeviewid');
651
 
652
  if (Mage::helper('shopgate/config')->isOAuthShopAlreadyRegistered($settings['shop_number'], $storeViewId)) {
653
+ Mage::throwException(
654
+ 'For the current storeView with id #' . $storeViewId . ' is already a shopnumber set. OAuth registration canceled.'
655
+ );
656
  }
657
 
658
  $config->setStoreViewId($storeViewId);
659
 
660
  /* pre save shop_number in proper scope to trigger the save mechanisms scope definition algorithm */
661
  if (!$config->oauthSaveNewShopNumber($settings['shop_number'], $storeViewId)) {
662
+ Mage::throwExecption(
663
+ 'Could not determine proper scope for new shop with number: #' . $settings['shop_number']
664
+ );
665
  }
666
 
667
  unset($settings['shop_number']);
677
  && Mage::app()->getRequest()->getParam('action') == 'receive_authorization'
678
  ) {
679
  $storeViewId = Mage::app()->getRequest()->getParam('storeviewid');
680
+ $shopnumber = Mage::getStoreConfig(
681
+ Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_SHOP_NUMBER,
682
+ $storeViewId
683
+ );
684
 
685
  $collection = Mage::getModel('core/config_data')
686
  ->getCollection()
703
  */
704
  public function checkForUpdates()
705
  {
706
+ $model = Mage::getModel('shopgate/feed');
707
  $model->checkUpdate();
708
  }
709
 
710
  /**
711
  * @param Varien_Event_Observer $observer
712
  *
713
+ * @return $this
714
  */
715
  public function manipulateShipmentForBillsafe(Varien_Event_Observer $observer)
716
  {
720
  $code = $shipment->getOrder()->getPayment()->getMethodInstance()->getCode();
721
 
722
  if ($code != Netresearch_Billsafe_Model_Payment::CODE) {
723
+ return $this;
724
  }
725
 
726
+ $magentoShopgateOrder = Mage::getModel('shopgate/shopgate_order')->load(
727
+ $shipment->getOrder()->getId(),
728
+ 'order_id'
729
  );
730
 
731
  if ($magentoShopgateOrder->getId() == null) {
732
+ return $this;
733
  }
734
 
735
  /**
742
  $order->setIsShopgateOrder(true);
743
 
744
  return $this;
 
745
  }
746
 
747
  return $this;
767
  */
768
  $config = $observer->getConfig();
769
  $optionTab = $config->getNode('sections/shopgate/groups/option/fields');
770
+ $devConfig = new Mage_Core_Model_Config_Element(
771
+ '
772
  <fields>
773
  <customer_number translate="label comment tooltip">
774
  <label>Customer number</label>
804
  </validate>
805
  </api_key>
806
  </fields>
807
+ '
808
+ );
809
 
810
  $optionTab->extend($devConfig);
811
 
815
  * @var Mage_Core_Model_Config_Element $shopgateSection
816
  */
817
  $shopgateSection = $config->getNode('sections/shopgate/groups');
818
+ $hiddenGroup = new Mage_Core_Model_Config_Element(
819
+ '
820
  <hidden translate="label">
821
  <label>Developer Only Section</label>
822
  <sort_order>15</sort_order>
835
  </oauth_access_token>
836
  </fields>
837
  </hidden>
838
+ '
839
+ );
840
  $shopgateSection->appendChild($hiddenGroup);
841
 
842
  return $this;
app/code/community/Shopgate/Framework/Model/Payment/Payone/Abstract.php CHANGED
@@ -58,11 +58,11 @@ class Shopgate_Framework_Model_Payment_Payone_Abstract extends Shopgate_Framewor
58
  protected $_transExists;
59
 
60
  /**
61
- * @param ShopgateOrder $shopgateOrder
62
  */
63
- public function __construct(ShopgateOrder $shopgateOrder)
64
  {
65
- $this->setShopgateOrder($shopgateOrder);
66
  $this->_initConfigs();
67
  }
68
 
@@ -241,7 +241,7 @@ class Shopgate_Framework_Model_Payment_Payone_Abstract extends Shopgate_Framewor
241
  *
242
  * @return Mage_Sales_Model_Order
243
  */
244
- public function manipulateOrderWithPaymentData($order = null)
245
  {
246
  $paymentPayone = $this->getPaymentModel();
247
 
58
  protected $_transExists;
59
 
60
  /**
61
+ * Initialize Payone Factory on load
62
  */
63
+ public function _construct()
64
  {
65
+ parent::_construct();
66
  $this->_initConfigs();
67
  }
68
 
241
  *
242
  * @return Mage_Sales_Model_Order
243
  */
244
+ public function manipulateOrderWithPaymentData($order)
245
  {
246
  $paymentPayone = $this->getPaymentModel();
247
 
app/code/community/Shopgate/Framework/Model/Payment/Payone/BankAbstract.php CHANGED
@@ -45,7 +45,7 @@ class Shopgate_Framework_Model_Payment_Payone_BankAbstract extends Shopgate_Fram
45
  {
46
  $this->getOrder()->getPayment()->setPayoneOnlinebanktransferType($this->_getConfigCode());
47
 
48
- return parent::manipulateOrderWithPaymentData();
49
  }
50
 
51
  }
45
  {
46
  $this->getOrder()->getPayment()->setPayoneOnlinebanktransferType($this->_getConfigCode());
47
 
48
+ return parent::manipulateOrderWithPaymentData($order);
49
  }
50
 
51
  }
app/code/community/Shopgate/Framework/Model/Payment/Payone/Cc.php CHANGED
@@ -49,7 +49,7 @@ class Shopgate_Framework_Model_Payment_Payone_Cc
49
  $this->getOrder()->getPayment()->setCcOwner($paymentInfo['credit_card']['holder']);
50
  $this->getOrder()->getPayment()->setCcNumberEnc($paymentInfo['credit_card']['masked_number']);
51
 
52
- return parent::manipulateOrderWithPaymentData();
53
  }
54
 
55
  /**
49
  $this->getOrder()->getPayment()->setCcOwner($paymentInfo['credit_card']['holder']);
50
  $this->getOrder()->getPayment()->setCcNumberEnc($paymentInfo['credit_card']['masked_number']);
51
 
52
+ return parent::manipulateOrderWithPaymentData($order);
53
  }
54
 
55
  /**
app/code/community/Shopgate/Framework/Model/Payment/Payone/Prp.php CHANGED
@@ -69,7 +69,7 @@ class Shopgate_Framework_Model_Payment_Payone_Prp
69
  $this->getOrder()->getPayment()->setPayoneClearingBankBic(strtoupper($info['clearing_bankbic']));
70
  }
71
 
72
- return parent::manipulateOrderWithPaymentData();
73
  }
74
 
75
  /**
69
  $this->getOrder()->getPayment()->setPayoneClearingBankBic(strtoupper($info['clearing_bankbic']));
70
  }
71
 
72
+ return parent::manipulateOrderWithPaymentData($order);
73
  }
74
 
75
  /**
app/code/community/Shopgate/Framework/Model/Shopgate/Cart/Validation/Stock/Bundle.php CHANGED
@@ -45,6 +45,10 @@ class Shopgate_Framework_Model_Shopgate_Cart_Validation_Stock_Bundle
45
  $isBuyable = true;
46
  $qtyBuyable = null;
47
 
 
 
 
 
48
  foreach ($item->getChildren() as $childItem) {
49
  /** @var Mage_Catalog_Model_Product $childProduct */
50
  $childProduct = $childItem->getProduct();
45
  $isBuyable = true;
46
  $qtyBuyable = null;
47
 
48
+ if (null == $product->getShopgateItemNumber()) {
49
+ $product->setShopgateItemNumber($product->getId());
50
+ }
51
+
52
  foreach ($item->getChildren() as $childItem) {
53
  /** @var Mage_Catalog_Model_Product $childProduct */
54
  $childProduct = $childItem->getProduct();
app/code/community/Shopgate/Framework/Model/Shopgate/Cart/Validation/Stock/Simple.php CHANGED
@@ -53,6 +53,10 @@ class Shopgate_Framework_Model_Shopgate_Cart_Validation_Stock_Simple
53
  $stockItem = $item->getProduct()->getCustomOption('simple_product')->getProduct()->getStockItem();
54
  }
55
 
 
 
 
 
56
  $errors = array();
57
 
58
  if (Mage::helper('shopgate/config')->getIsMagentoVersionLower1410()) {
53
  $stockItem = $item->getProduct()->getCustomOption('simple_product')->getProduct()->getStockItem();
54
  }
55
 
56
+ if (null == $product->getShopgateItemNumber()) {
57
+ $product->setShopgateItemNumber($product->getId());
58
+ }
59
+
60
  $errors = array();
61
 
62
  if (Mage::helper('shopgate/config')->getIsMagentoVersionLower1410()) {
app/code/community/Shopgate/Framework/changelog.txt CHANGED
@@ -1,3 +1,12 @@
 
 
 
 
 
 
 
 
 
1
  '''Version 2.9.31'''
2
  * improve discount detection
3
  * update to library version 2.9.41
1
+ '''Version 2.9.32'''
2
+ * Shopgate dropdown is now visible with proper permissions set
3
+ * Shopgate menu moved under the Systems dropdown
4
+ * Fixed issue with PayOne Shopgate order not passed as array
5
+ * Fixed partial shipping refunds
6
+ * Fixed a bug with oAuth store connection & URI's with SID
7
+ * Fixed amount and itemNumber in checkCart
8
+ * Fixed bug in magento order detail page
9
+
10
  '''Version 2.9.31'''
11
  * improve discount detection
12
  * update to library version 2.9.41
app/code/community/Shopgate/Framework/controllers/Adminhtml/ShopgateController.php CHANGED
@@ -89,7 +89,8 @@ class Shopgate_Framework_Adminhtml_ShopgateController extends Mage_Adminhtml_Con
89
  );
90
  }
91
  ShopgateLogger::getInstance()->log(
92
- "Unregister OAuth Shop Connection has failed \"" . (string)$connectionIds . "\"", ShopgateLogger::LOGTYPE_ERROR
 
93
  );
94
  }
95
  }
@@ -258,7 +259,8 @@ class Shopgate_Framework_Adminhtml_ShopgateController extends Mage_Adminhtml_Con
258
  $responseData['errors'] = Mage::helper('shopgate')->__($msg);
259
  }
260
  ShopgateLogger::getInstance()->log(
261
- "Unregister OAuth Shop Connection with store View Id \"" . (string)$storeViewId . "\" could not get loaded", ShopgateLogger::LOGTYPE_ERROR
 
262
  );
263
  }
264
 
@@ -309,6 +311,7 @@ class Shopgate_Framework_Adminhtml_ShopgateController extends Mage_Adminhtml_Con
309
  * Helper method to check if a storeViewId is already in use by a shopgate connection
310
  *
311
  * @param int $storeViewId
 
312
  * @return boolean
313
  */
314
  protected function _isStoreViewAlreadyRegisterdToConnection($storeViewId)
@@ -317,9 +320,20 @@ class Shopgate_Framework_Adminhtml_ShopgateController extends Mage_Adminhtml_Con
317
  Mage::getSingleton('adminhtml/session')->addError(
318
  Mage::helper('shopgate')->__("The given storeview is already in use by a shopgate connection.")
319
  );
 
320
  return true;
321
  }
322
 
323
  return false;
324
  }
 
 
 
 
 
 
 
 
 
 
325
  }
89
  );
90
  }
91
  ShopgateLogger::getInstance()->log(
92
+ "Unregister OAuth Shop Connection has failed \"" . (string)$connectionIds . "\"",
93
+ ShopgateLogger::LOGTYPE_ERROR
94
  );
95
  }
96
  }
259
  $responseData['errors'] = Mage::helper('shopgate')->__($msg);
260
  }
261
  ShopgateLogger::getInstance()->log(
262
+ "Unregister OAuth Shop Connection with store View Id \"" . (string)$storeViewId
263
+ . "\" could not get loaded", ShopgateLogger::LOGTYPE_ERROR
264
  );
265
  }
266
 
311
  * Helper method to check if a storeViewId is already in use by a shopgate connection
312
  *
313
  * @param int $storeViewId
314
+ *
315
  * @return boolean
316
  */
317
  protected function _isStoreViewAlreadyRegisterdToConnection($storeViewId)
320
  Mage::getSingleton('adminhtml/session')->addError(
321
  Mage::helper('shopgate')->__("The given storeview is already in use by a shopgate connection.")
322
  );
323
+
324
  return true;
325
  }
326
 
327
  return false;
328
  }
329
+
330
+ /**
331
+ * ACL fix for SUPEE-6285 changes
332
+ *
333
+ * @return bool
334
+ */
335
+ public function _isAllowed()
336
+ {
337
+ return Mage::getSingleton('admin/session')->isAllowed('shopgate_menu/manage');
338
+ }
339
  }
app/code/community/Shopgate/Framework/etc/adminhtml.xml CHANGED
@@ -1,72 +1,66 @@
1
  <?xml version="1.0"?>
2
  <config>
3
- <menu>
4
- <shopgate module="shopgate">
5
- <title>Shopgate</title>
6
- <sort_order>100</sort_order>
7
- <children>
8
- <manage translate="title" module="shopgate">
9
- <title>Manage Connections</title>
10
- <action>adminhtml/shopgate/manage</action>
11
- <sort_order>20</sort_order>
12
- </manage>
13
- <support>
14
- <title>Support</title>
15
- <action>adminhtml/shopgate/support</action>
16
- <sort_order>40</sort_order>
17
- </support>
18
- <shopgate>
19
- <title>www.shopgate.com</title>
20
- <action>adminhtml/shopgate/shopgate</action>
21
- <sort_order>50</sort_order>
22
- </shopgate>
23
- </children>
24
- </shopgate>
25
- </menu>
26
- <acl>
27
- <resources>
28
- <all>
29
- <title>Allow Everything</title>
30
- </all>
31
- <admin>
32
- <children>
33
- <system>
34
- <children>
35
- <config>
36
- <children>
37
- <shopgate>
38
- <title>Shopgate</title>
39
- </shopgate>
40
- </children>
41
- </config>
42
- </children>
43
- </system>
44
- <shopgate>
45
- <children>
46
- <connect translate="title" module="shopgate">
47
- <title>Connect to Shopgate</title>
48
- <sort_order>10</sort_order>
49
- </connect>
50
- <manage translate="title" module="shopgate">
51
- <title>Manage interfaces</title>
52
- <sort_order>20</sort_order>
53
- </manage>
54
- <disconnect translate="title" module="shopgate">
55
- <title>Disconnect from Shopgate</title>
56
- <sort_order>30</sort_order>
57
- </disconnect>
58
- <support translate="title" module="shopgate">
59
- <title>Manage interfaces</title>
60
- <sort_order>40</sort_order>
61
- </support>
62
- <info translate="title" module="shopgate">
63
- <title>Manage interfaces</title>
64
- <sort_order>50</sort_order>
65
- </info>
66
- </children>
67
- </shopgate>
68
- </children>
69
- </admin>
70
- </resources>
71
- </acl>
72
  </config>
1
  <?xml version="1.0"?>
2
  <config>
3
+ <menu>
4
+ <shopgate_menu module="shopgate">
5
+ <title>Shopgate</title>
6
+ <sort_order>100</sort_order>
7
+ <children>
8
+ <manage translate="title" module="shopgate">
9
+ <title>Manage Connections</title>
10
+ <action>adminhtml/shopgate/manage</action>
11
+ <sort_order>20</sort_order>
12
+ </manage>
13
+ <support translate="title" module="shopgate">
14
+ <title>Support</title>
15
+ <action>adminhtml/shopgate/support</action>
16
+ <sort_order>40</sort_order>
17
+ </support>
18
+ <website translate="title" module="shopgate">
19
+ <title>www.shopgate.com</title>
20
+ <action>adminhtml/shopgate/shopgate</action>
21
+ <sort_order>50</sort_order>
22
+ </website>
23
+ </children>
24
+ </shopgate_menu>
25
+ </menu>
26
+ <acl>
27
+ <resources>
28
+ <all>
29
+ <title>Allow Everything</title>
30
+ </all>
31
+ <admin>
32
+ <children>
33
+ <system>
34
+ <children>
35
+ <config>
36
+ <children>
37
+ <shopgate>
38
+ <title>Shopgate</title>
39
+ </shopgate>
40
+ </children>
41
+ </config>
42
+ </children>
43
+ </system>
44
+ <shopgate_menu module="shopgate">
45
+ <title>Shopgate</title>
46
+ <sort_order>100</sort_order>
47
+ <children>
48
+ <manage translate="title" module="shopgate">
49
+ <title>Manage Connections</title>
50
+ <sort_order>10</sort_order>
51
+ </manage>
52
+ <support translate="title" module="shopgate">
53
+ <title>Support</title>
54
+ <sort_order>20</sort_order>
55
+ </support>
56
+ <website translate="title" module="shopgate">
57
+ <title>www.shopgate.com</title>
58
+ <sort_order>30</sort_order>
59
+ </website>
60
+ </children>
61
+ </shopgate_menu>
62
+ </children>
63
+ </admin>
64
+ </resources>
65
+ </acl>
 
 
 
 
 
 
66
  </config>
app/code/community/Shopgate/Framework/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Shopgate_Framework>
5
- <version>2.9.31</version>
6
  </Shopgate_Framework>
7
  </modules>
8
  <phpunit>
2
  <config>
3
  <modules>
4
  <Shopgate_Framework>
5
+ <version>2.9.32</version>
6
  </Shopgate_Framework>
7
  </modules>
8
  <phpunit>
app/code/community/Shopgate/MatrixShipCustom/Helper/Framework/Sales.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_MatrixShipCustom_Helper_Framework_Sales extends Shopgate_Framework_Helper_Sales
25
+ {
26
+
27
+ /**
28
+ * Quote setting per COST-492 & MAGENTO-1293 story.
29
+ * The quote is used by a customer matrix shipping
30
+ * rewrite that is using the checkout session to
31
+ * analyze the item data.
32
+ *
33
+ * @param Mage_Checkout_Model_Cart $mageCart
34
+ * @return array
35
+ */
36
+ public function getShippingMethods($mageCart)
37
+ {
38
+ Mage::getSingleton('checkout/session')->replaceQuote($mageCart->getQuote());
39
+
40
+ return parent::getShippingMethods($mageCart);
41
+ }
42
+ }
app/code/community/Shopgate/MatrixShipCustom/etc/config.xml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Shopgate_MatrixShipCustom>
5
+ <version>0.1.0</version>
6
+ </Shopgate_MatrixShipCustom>
7
+ </modules>
8
+ <global>
9
+ <helpers>
10
+ <shopgate_matrixShipCustom>
11
+ <class>Shopgate_MatrixShipCustom_Helper</class>
12
+ </shopgate_matrixShipCustom>
13
+ <shopgate>
14
+ <rewrite>
15
+ <sales>Shopgate_MatrixShipCustom_Helper_Framework_Sales</sales>
16
+ </rewrite>
17
+ </shopgate>
18
+ </helpers>
19
+ </global>
20
+ </config>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>shopgate_module</name>
4
- <version>2.9.31</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>Peter Liebig</name><user>Shopgate</user><email>p.liebig@me.com</email></author><author><name>Stephan Recknagel</name><user>Shopgate</user><email>mail@recknagel.io</email></author><author><name>Andr&#xE9; Kraus</name><user>Shopgate</user><email>andre.kraus83@googlemail.com</email></author></authors>
13
- <date>2016-02-03</date>
14
- <time>10:16:32</time>
15
- <contents><target name="mageetc"><dir name="modules"><file name="Shopgate_Framework.xml" hash="3fb114204bd038da711122083876f161"/></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="7de8af7ec46e107c46a73efaf2a02034"/><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="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="d139b614f156a02804dc1d4416973074"/><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="b09515cf38c29a49df20e242b452c850"/></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="8cda00444e4c5e1be46e4ff4d5e45cf9"/><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="33a088547b1a242b0ab330af14fa33ab"/></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="a76ea12d338dadd418be4dbfcfe9eeb3"/></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="c0437e883a28cf8c67ab67517d0788f3"/><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="5c4c0d849d8d22dab1e6bf374dfc6c79"/><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="e6e34d9b64d8669c131f545b88dffae5"/><file name="BankAbstract.php" hash="fa4ef2c918868001c5f1df97cb4bc400"/><file name="Cc.php" hash="f78795e91c1e6cb9c4cb129d61c4d132"/><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="76079d7e154c3a982b1d117793942c3a"/><file name="Sue.php" hash="31280f2c8abf21f0a582b656fb0d38ad"/></dir><dir name="Pp"><file name="Abstract.php" hash="e6c5afcb0653d2ec3de3bd5d1442b355"/><file name="Wspp.php" hash="42ff0a5d004c82401277dbf00cd9e00f"/></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="7cc03239fbefe3a8e71755a178299944"/><file name="Simple.php" hash="9da9891d52c89e0772af5bcea7581ae8"/></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="f228f0d9274907d4753c40b6ac710ee2"/><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="14969ce8762a7fa5e5e5d6bc64285f52"/></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="77382cb829f4b3b50120d7e1359e0051"/></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="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="4ffb2fea4bdec8e755528405e2a67fd7"/><dir name="controllers"><dir name="Adminhtml"><file name="ShopgateController.php" hash="cd2305edb0348a15f956d20d39433778"/></dir><file name="FrameworkController.php" hash="2152205bd372d999a56eb378ed810a8d"/></dir><dir name="etc"><file name="adminhtml.xml" hash="d1f345ca5fc8b0619234f9c270fb84a7"/><file name="config.xml" hash="1683a4189fb64738ae40887d4dc7c203"/><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.32</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>Peter Liebig</name><user>Shopgate</user><email>p.liebig@me.com</email></author><author><name>Stephan Recknagel</name><user>Shopgate</user><email>mail@recknagel.io</email></author><author><name>Andr&#xE9; Kraus</name><user>Shopgate</user><email>andre.kraus83@googlemail.com</email></author></authors>
13
+ <date>2016-02-17</date>
14
+ <time>11:18:21</time>
15
+ <contents><target name="mageetc"><dir name="modules"><file name="Shopgate_Framework.xml" hash="3fb114204bd038da711122083876f161"/></dir></target><target name="magecommunity"><dir name="Shopgate"><dir name="CartRules"><dir name="Model"><file name="Observer.php" hash="8f41806fae0c7fa56abc9416daf0c5bb"/><dir name="Shopgate"><file name="Plugin.php" hash="dab0feb39735b56add7244b48429909e"/></dir></dir><dir name="etc"><file name="config.xml" hash="3c05cbab517147e2ea948d9376095f0c"/></dir></dir><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="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="8cda00444e4c5e1be46e4ff4d5e45cf9"/><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="33a088547b1a242b0ab330af14fa33ab"/></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="a76ea12d338dadd418be4dbfcfe9eeb3"/></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="29d35fb1ffc905ccd06aaa548ef94d98"/><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="5c4c0d849d8d22dab1e6bf374dfc6c79"/><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="e6c5afcb0653d2ec3de3bd5d1442b355"/><file name="Wspp.php" hash="42ff0a5d004c82401277dbf00cd9e00f"/></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="f228f0d9274907d4753c40b6ac710ee2"/><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="14969ce8762a7fa5e5e5d6bc64285f52"/></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="77382cb829f4b3b50120d7e1359e0051"/></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="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="72f5f5477af74c2177d2d0121fb4209d"/><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="646011dcf4b497dec3f5a9dd509efe76"/><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 name="MatrixShipCustom"><dir name="Helper"><dir name="Framework"><file name="Sales.php" hash="7c602ea5cc5c9577a49e1cdacf7ac24e"/></dir></dir><dir name="etc"><file name="config.xml" hash="5c71dcceb01436f1c52dd59cd95dad80"/></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>