Camiloo_Channelunity - Version 1.0.0.3

Version Notes

The ChannelUnity connector kit for Magento.
This version imports the shipping service level into an order, and also resolves an issue when copying product data where catalog flat product is enabled.

Download this release

Release Info

Developer Magento Core Team
Extension Camiloo_Channelunity
Version 1.0.0.3
Comparing to
See all releases


Code changes from version 1.0.0.2 to 1.0.0.3

app/code/community/Camiloo/Channelunity/Model/Categories.php CHANGED
@@ -48,23 +48,29 @@ class Camiloo_Channelunity_Model_Categories extends Camiloo_Channelunity_Model_A
48
  <StoreviewId><![CDATA[{$storeViewId}]]></StoreviewId>\n";
49
 
50
  foreach ($collection as $category) {
51
-
52
- $catPathTemp = $category->getData('path');
53
-
54
- if (strpos($catPathTemp, "$rootCatId/") === 0 // start of path
55
- || strpos($catPathTemp, "/$rootCatId/") > 0 // middle of path
56
- || strpos($catPathTemp, "/$rootCatId") == (strlen($catPathTemp)-strlen("/$rootCatId")) ) // OR at END of path
57
- {
58
- $messageToSend .= "<Category>\n";
59
- $messageToSend .= " <ID><![CDATA[{$category->getId()}]]></ID>\n";
60
- $messageToSend .= " <Name><![CDATA[{$category->getName()}]]></Name>\n";
61
- $messageToSend .= " <Position><![CDATA[{$category->getData('position')}]]></Position>\n";
62
- $messageToSend .= " <CategoryPath><![CDATA[{$catPathTemp}]]></CategoryPath>\n";
63
- $messageToSend .= " <ParentID><![CDATA[{$category->getData('parent_id')}]]></ParentID>\n";
64
- $messageToSend .= " <Level><![CDATA[{$category->getData('level')}]]></Level>\n";
65
- $messageToSend .= "</Category>\n\n";
66
-
67
- }
 
 
 
 
 
 
68
  }
69
 
70
  $messageToSend .= "</CategoryList>";
48
  <StoreviewId><![CDATA[{$storeViewId}]]></StoreviewId>\n";
49
 
50
  foreach ($collection as $category) {
51
+
52
+ // $children = $category->getChildren();
53
+ $pid = $category->getData('parent_id');
54
+ $lvl = $category->getData('level');
55
+ // $childCount = $children->count();
56
+
57
+ $catPathTemp = $category->getData('path');
58
+
59
+ if (strpos($catPathTemp, "$rootCatId/") === 0 // start of path
60
+ || strpos($catPathTemp, "/$rootCatId/") > 0 // middle of path
61
+ || strpos($catPathTemp, "/$rootCatId") == (strlen($catPathTemp)-strlen("/$rootCatId")) ) // OR at END of path
62
+ {
63
+ $messageToSend .= "<Category>\n";
64
+ $messageToSend .= " <ID><![CDATA[{$category->getId()}]]></ID>\n";
65
+ $messageToSend .= " <Name><![CDATA[{$category->getName()}]]></Name>\n";
66
+ $messageToSend .= " <Position><![CDATA[{$category->getData('position')}]]></Position>\n";
67
+ $messageToSend .= " <CategoryPath><![CDATA[{$catPathTemp}]]></CategoryPath>\n";
68
+ $messageToSend .= " <ParentID><![CDATA[{$category->getData('parent_id')}]]></ParentID>\n";
69
+ $messageToSend .= " <Level><![CDATA[{$category->getData('level')}]]></Level>\n";
70
+ $messageToSend .= "</Category>\n\n";
71
+
72
+ }
73
+
74
  }
75
 
76
  $messageToSend .= "</CategoryList>";
app/code/community/Camiloo/Channelunity/Model/Collection.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ class Camiloo_Channelunity_Model_Collection extends Mage_Catalog_Model_Resource_Product_Collection {
5
+ public function isEnabledFlat()
6
+ {
7
+ return false;
8
+ }
9
+ }
10
+
11
+
app/code/community/Camiloo/Channelunity/Model/Customrate.php CHANGED
@@ -20,7 +20,7 @@ class Camiloo_Channelunity_Model_Customrate
20
  $method->setCarrier('channelunitycustomrate');
21
  $method->setCarrierTitle($this->getConfigData('title'));
22
  $method->setMethod('channelunitycustomrate');
23
- $method->setMethodTitle($this->getConfigData('name'));
24
 
25
  $shipPrice = Mage::getSingleton('core/session')->getShippingPrice();
26
 
20
  $method->setCarrier('channelunitycustomrate');
21
  $method->setCarrierTitle($this->getConfigData('title'));
22
  $method->setMethod('channelunitycustomrate');
23
+ // $method->setMethodTitle(Mage::getSingleton('core/session')->getShippingMethod());
24
 
25
  $shipPrice = Mage::getSingleton('core/session')->getShippingPrice();
26
 
app/code/community/Camiloo/Channelunity/Model/Observer.php CHANGED
@@ -1,122 +1,199 @@
1
  <?php
2
 
 
 
 
 
3
  class Camiloo_Channelunity_Model_Observer extends Camiloo_Channelunity_Model_Abstract {
4
 
 
 
 
5
  public function productWasSaved(Varien_Event_Observer $observer) {
6
- $product = $observer->getEvent()->getProduct();
7
-
8
- $storeViewId = $product->getStoreId();
 
9
 
10
- $xml = "<Products>\n";
11
- $xml .= "<SourceURL>".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)
12
- ."</SourceURL>\n";
13
-
14
- $xml .= "<StoreViewId>$storeViewId</StoreViewId>\n";
15
-
16
- $xml .= Mage::getModel('channelunity/products')->generateCuXmlForSingleProduct($product->getId(), $storeViewId);
17
-
18
- $xml .= "</Products>\n";
19
-
20
- $this->postToChannelUnity($xml, "ProductData");
21
- }
22
-
23
- public function hookToControllerActionPostDispatch($observer) {
24
- $evname = $observer->getEvent()->getControllerAction()->getFullActionName();
25
-
26
- if ($evname == 'adminhtml_catalog_product_action_attribute_save')
27
- {
28
  $xml = "<Products>\n";
29
  $xml .= "<SourceURL>".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)
30
  ."</SourceURL>\n";
31
 
32
- $storeViewId = Mage::helper('adminhtml/catalog_product_edit_action_attribute')->getSelectedStoreId();
33
  $xml .= "<StoreViewId>$storeViewId</StoreViewId>\n";
34
 
35
- $pids = Mage::helper('adminhtml/catalog_product_edit_action_attribute')->getProductIds();
36
-
37
- foreach ($pids as $productId) {
38
- $xml .= Mage::getModel('channelunity/products')->generateCuXmlForSingleProduct(
39
- $productId, $storeViewId);
40
- }
41
 
42
  $xml .= "</Products>\n";
43
 
44
  $this->postToChannelUnity($xml, "ProductData");
45
  }
46
- else if ($evname == 'adminhtml_catalog_category_save') {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
48
- $this->categorySave($observer);
 
 
 
49
  }
50
- else if ($evname == 'adminhtml_catalog_category_delete') {
 
 
 
 
 
 
 
 
51
 
52
- $this->categoryDelete($observer);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  }
54
  }
55
 
 
 
 
56
  public function orderWasPlaced(Varien_Event_Observer $observer)
57
  {
58
- if (is_object($observer)) {
59
-
60
- $ev = $observer->getEvent();
61
-
62
- if (is_object($ev)) {
63
 
64
- $order = $ev->getOrder();
65
 
66
- if (is_object($order)) {
67
-
68
- $items = $order->getAllItems();
69
 
70
- $this->getItemsForUpdateCommon($items, $order->getStore()->getId());
71
 
72
- }
73
- }
74
- }
 
 
 
 
 
 
 
 
 
75
  }
76
 
77
  public function getItemsForUpdateCommon($items, $storeId) {
78
-
79
- foreach ($items as $item) {
80
-
81
- $sku = $item->getSku();
82
-
83
- $prodTemp = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
84
- if (!$prodTemp) {
 
 
 
85
 
86
- continue;
 
 
 
 
87
  }
88
-
89
- // Item was ordered on website, stock will have reduced, update to CU
90
- $xml = Mage::getModel('channelunity/products')->generateCuXmlForSingleProduct(
91
- $prodTemp->getId(), $storeId);
92
-
93
- $this->postToChannelUnity($xml, "ProductData");
94
- }
95
  }
96
 
97
  public function onInvoicePaid(Varien_Event_Observer $observer)
98
  {
99
- if (is_object($observer) && is_object($observer->getInvoice()))
100
- {
101
- $order = $observer->getInvoice()->getOrder();
102
-
103
- if (is_object($order))
104
- {
105
- $items = $order->getAllItems();
106
- $this->getItemsForUpdateCommon($items, $order->getStore()->getId());
107
- }
108
- }
 
 
 
 
109
  }
110
 
111
  /**
112
  * Order is cancelled and has been saved. post order status change msg to CU
113
  */
114
  public function checkForCancellation(Varien_Event_Observer $observer) {
115
-
116
- $order = $observer->getOrder();
117
-
118
- $xml = Mage::getModel('channelunity/orders')->generateCuXmlForOrderStatus($order);
119
- $this->postToChannelUnity($xml, "OrderStatusUpdate");
 
 
 
120
  }
121
 
122
  /**
@@ -124,38 +201,53 @@ class Camiloo_Channelunity_Model_Observer extends Camiloo_Channelunity_Model_Abs
124
  */
125
  public function saveTrackingToAmazon(Varien_Event_Observer $observer)
126
  {
127
- // Only mark as shipped when order has tracking information.
128
- $track = $observer->getEvent()->getTrack();
129
- $order = $track->getShipment()->getOrder();
130
-
131
- if ($track->getCarrierCode() == "custom") {
132
- $carrierName = $track->getTitle();
133
- } else {
134
- $carrierName = $track->getCarrierCode();
135
- }
136
-
137
- $xml = Mage::getModel('channelunity/orders')->generateCuXmlForOrderShip($order,
138
- $carrierName,
139
- $track->getTitle(),
140
- $track->getNumber());
141
- $this->postToChannelUnity($xml, "OrderStatusUpdate");
 
 
 
 
142
  }
143
 
144
  public function shipAmazon(Varien_Event_Observer $observer)
145
  {
146
- $shipment = $observer->getEvent()->getShipment();
147
- $order = $shipment->getOrder();
148
-
149
- $xml = Mage::getModel('channelunity/orders')->generateCuXmlForOrderShip($order,
150
- "",
151
- "",
152
- "");
153
- $this->postToChannelUnity($xml, "OrderStatusUpdate");
 
 
 
 
154
  }
155
 
 
 
 
156
  public function categorySave(Varien_Event_Observer $observer) {
157
- $myStoreURL = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
158
- $categoryStatus = Mage::getModel('channelunity/categories')->postCategoriesToCU($myStoreURL);
 
 
 
 
159
  }
160
 
161
  public function categoryDelete(Varien_Event_Observer $observer) {
1
  <?php
2
 
3
+ /**
4
+ * ChannelUnity observers.
5
+ * Posts events to the CU cloud when various Magento events occur.
6
+ */
7
  class Camiloo_Channelunity_Model_Observer extends Camiloo_Channelunity_Model_Abstract {
8
 
9
+ /**
10
+ * Called on saving a product in Magento.
11
+ */
12
  public function productWasSaved(Varien_Event_Observer $observer) {
13
+ try {
14
+ $product = $observer->getEvent()->getProduct();
15
+
16
+ $storeViewId = $product->getStoreId();
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  $xml = "<Products>\n";
19
  $xml .= "<SourceURL>".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)
20
  ."</SourceURL>\n";
21
 
 
22
  $xml .= "<StoreViewId>$storeViewId</StoreViewId>\n";
23
 
24
+ $xml .= Mage::getModel('channelunity/products')->generateCuXmlForSingleProduct($product->getId(), $storeViewId);
 
 
 
 
 
25
 
26
  $xml .= "</Products>\n";
27
 
28
  $this->postToChannelUnity($xml, "ProductData");
29
  }
30
+ catch (Exception $x) {
31
+ }
32
+ }
33
+
34
+ /**
35
+ * Called on deleting a product in Magento.
36
+ */
37
+ public function productWasDeleted(Varien_Event_Observer $observer) {
38
+ try {
39
+ $product = $observer->getEvent()->getProduct();
40
+
41
+ $storeViewId = $product->getStoreId();
42
+
43
+ $xml = "<Products>\n";
44
+ $xml .= "<SourceURL>".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)
45
+ ."</SourceURL>\n";
46
+ $xml .= "<StoreViewId>$storeViewId</StoreViewId>\n";
47
+ $xml .= "<ProductID>{$product->getId()}</ProductID>\n";
48
+ $xml .= "<Deleted>TRUE</Deleted>\n";
49
+
50
+ $xml .= "</Products>\n";
51
 
52
+ $this->postToChannelUnity($xml, "ProductData");
53
+
54
+ }
55
+ catch (Exception $x) {
56
  }
57
+ }
58
+
59
+ /**
60
+ * Allows the observing of more generic events in Magento.
61
+ * Useful in multiple product save for example.
62
+ */
63
+ public function hookToControllerActionPostDispatch($observer) {
64
+ try {
65
+ $evname = $observer->getEvent()->getControllerAction()->getFullActionName();
66
 
67
+ if ($evname == 'adminhtml_catalog_product_action_attribute_save')
68
+ {
69
+ $xml = "<Products>\n";
70
+ $xml .= "<SourceURL>".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)
71
+ ."</SourceURL>\n";
72
+
73
+ $storeViewId = Mage::helper('adminhtml/catalog_product_edit_action_attribute')->getSelectedStoreId();
74
+ $xml .= "<StoreViewId>$storeViewId</StoreViewId>\n";
75
+
76
+ $pids = Mage::helper('adminhtml/catalog_product_edit_action_attribute')->getProductIds();
77
+
78
+ foreach ($pids as $productId) {
79
+ $xml .= Mage::getModel('channelunity/products')->generateCuXmlForSingleProduct(
80
+ $productId, $storeViewId);
81
+ }
82
+
83
+ $xml .= "</Products>\n";
84
+
85
+ $this->postToChannelUnity($xml, "ProductData");
86
+ }
87
+ else if ($evname == 'adminhtml_catalog_category_save') {
88
+
89
+ $this->categorySave($observer);
90
+ }
91
+ else if ($evname == 'adminhtml_catalog_category_delete') {
92
+
93
+ $this->categoryDelete($observer);
94
+ }
95
+ else if ($evname == 'adminhtml_catalog_product_delete') {
96
+ $xml = "<Products>\n";
97
+ $xml .= "<SourceURL>".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)
98
+ ."</SourceURL>\n";
99
+
100
+ $storeViewId = Mage::helper('adminhtml/catalog_product_edit_action_attribute')->getSelectedStoreId();
101
+ $xml .= "<StoreViewId>$storeViewId</StoreViewId>\n";
102
+
103
+ $productId = $observer->getEvent()->getControllerAction()->getRequest()->getParam('id');
104
+
105
+ $xml .= "<DeletedProductId>".$productId."</DeletedProductId>\n";
106
+
107
+ $xml .= "</Products>\n";
108
+
109
+ $this->postToChannelUnity($xml, "ProductData");
110
+ }
111
+ }
112
+ catch (Exception $x) {
113
  }
114
  }
115
 
116
+ /**
117
+ * Called on placing an order. Stock levels are updated on CU.
118
+ */
119
  public function orderWasPlaced(Varien_Event_Observer $observer)
120
  {
121
+ try {
122
+ if (is_object($observer)) {
 
 
 
123
 
124
+ $ev = $observer->getEvent();
125
 
126
+ if (is_object($ev)) {
 
 
127
 
128
+ $order = $ev->getOrder();
129
 
130
+ if (is_object($order)) {
131
+
132
+ $items = $order->getAllItems();
133
+
134
+ $this->getItemsForUpdateCommon($items, $order->getStore()->getId());
135
+
136
+ }
137
+ }
138
+ }
139
+ }
140
+ catch (Exception $x) {
141
+ }
142
  }
143
 
144
  public function getItemsForUpdateCommon($items, $storeId) {
145
+ try {
146
+ foreach ($items as $item) {
147
+
148
+ $sku = $item->getSku();
149
+
150
+ $prodTemp = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
151
+ if (!$prodTemp) {
152
+
153
+ continue;
154
+ }
155
 
156
+ // Item was ordered on website, stock will have reduced, update to CU
157
+ $xml = Mage::getModel('channelunity/products')->generateCuXmlForSingleProduct(
158
+ $prodTemp->getId(), $storeId);
159
+
160
+ $this->postToChannelUnity($xml, "ProductData");
161
  }
162
+ }
163
+ catch (Exception $x) {
164
+ }
 
 
 
 
165
  }
166
 
167
  public function onInvoicePaid(Varien_Event_Observer $observer)
168
  {
169
+ try {
170
+ if (is_object($observer) && is_object($observer->getInvoice()))
171
+ {
172
+ $order = $observer->getInvoice()->getOrder();
173
+
174
+ if (is_object($order))
175
+ {
176
+ $items = $order->getAllItems();
177
+ $this->getItemsForUpdateCommon($items, $order->getStore()->getId());
178
+ }
179
+ }
180
+ }
181
+ catch (Exception $x) {
182
+ }
183
  }
184
 
185
  /**
186
  * Order is cancelled and has been saved. post order status change msg to CU
187
  */
188
  public function checkForCancellation(Varien_Event_Observer $observer) {
189
+ try {
190
+ $order = $observer->getOrder();
191
+
192
+ $xml = Mage::getModel('channelunity/orders')->generateCuXmlForOrderStatus($order);
193
+ $this->postToChannelUnity($xml, "OrderStatusUpdate");
194
+ }
195
+ catch (Exception $x) {
196
+ }
197
  }
198
 
199
  /**
201
  */
202
  public function saveTrackingToAmazon(Varien_Event_Observer $observer)
203
  {
204
+ try {
205
+ // Only mark as shipped when order has tracking information.
206
+ $track = $observer->getEvent()->getTrack();
207
+ $order = $track->getShipment()->getOrder();
208
+
209
+ if ($track->getCarrierCode() == "custom") {
210
+ $carrierName = $track->getTitle();
211
+ } else {
212
+ $carrierName = $track->getCarrierCode();
213
+ }
214
+
215
+ $xml = Mage::getModel('channelunity/orders')->generateCuXmlForOrderShip($order,
216
+ $carrierName,
217
+ $track->getTitle(),
218
+ $track->getNumber());
219
+ $this->postToChannelUnity($xml, "OrderStatusUpdate");
220
+ }
221
+ catch (Exception $x) {
222
+ }
223
  }
224
 
225
  public function shipAmazon(Varien_Event_Observer $observer)
226
  {
227
+ try {
228
+ $shipment = $observer->getEvent()->getShipment();
229
+ $order = $shipment->getOrder();
230
+
231
+ $xml = Mage::getModel('channelunity/orders')->generateCuXmlForOrderShip($order,
232
+ "",
233
+ "",
234
+ "");
235
+ $this->postToChannelUnity($xml, "OrderStatusUpdate");
236
+ }
237
+ catch (Exception $x) {
238
+ }
239
  }
240
 
241
+ /**
242
+ * Category is saved. CU needs to know about it.
243
+ */
244
  public function categorySave(Varien_Event_Observer $observer) {
245
+ try {
246
+ $myStoreURL = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
247
+ $categoryStatus = Mage::getModel('channelunity/categories')->postCategoriesToCU($myStoreURL);
248
+ }
249
+ catch (Exception $x) {
250
+ }
251
  }
252
 
253
  public function categoryDelete(Varien_Event_Observer $observer) {
app/code/community/Camiloo/Channelunity/Model/Orders.php CHANGED
@@ -277,11 +277,11 @@ class Camiloo_Channelunity_Model_Orders extends Camiloo_Channelunity_Model_Abstr
277
  'region' => (string) $order->ShippingInfo->State,
278
  'region_id' => (string) $order->ShippingInfo->State,
279
  'country_id' => (string) $order->ShippingInfo->Country,
280
- // 'email' => (string) $order->ShippingInfo->email,
281
  'telephone' => (string) $order->ShippingInfo->PhoneNumber
282
  );
283
 
284
  Mage::getSingleton('core/session')->setShippingPrice(((string) $order->ShippingInfo->ShippingPrice) / $reverseRate);
 
285
 
286
  // add the shipping address to the quote.
287
  $shippingAddress = $quote->getShippingAddress()->addData($shippingAddressData);
@@ -290,14 +290,13 @@ class Camiloo_Channelunity_Model_Orders extends Camiloo_Channelunity_Model_Abstr
290
  $method->setCarrier('channelunitycustomrate');
291
  $method->setCarrierTitle('ChannelUnity Shipping');
292
  $method->setMethod('channelunitycustomrate');
293
- $method->setMethodTitle('ChannelUnity Rate');
294
 
295
  $shipPrice = Mage::getSingleton('core/session')->getShippingPrice();
296
 
297
  $method->setPrice($shipPrice);
298
  $method->setCost($shipPrice);
299
-
300
-
301
  $rate = Mage::getModel('sales/quote_address_rate')
302
  ->importShippingRate($method);
303
 
@@ -375,9 +374,10 @@ class Camiloo_Channelunity_Model_Orders extends Camiloo_Channelunity_Model_Abstr
375
  $transaction->setOrderPaymentObject($newOrder->getPayment());
376
  $transaction->setOrder($newOrder);
377
  $transaction->setTxnType('capture');
378
- $transaction->setTxnId((string) $order->OrderId); // TODO check this avail in Mage vers
379
  $transaction->setAdditionalInformation('SubscriptionId', (string) $dataArray->SubscriptionId);
380
  $transaction->setAdditionalInformation('RemoteOrderID', (string) $order->OrderId);
 
381
 
382
  $serviceType = (string) $order->ServiceSku;
383
  switch ($serviceType) {
@@ -413,7 +413,7 @@ class Camiloo_Channelunity_Model_Orders extends Camiloo_Channelunity_Model_Abstr
413
  if (isset($order->OrderFlags) && ( ((string) $order->OrderFlags) == "AMAZON_FBA")) {
414
 
415
  $transaction->setAdditionalInformation('AmazonFBA', 'Yes');
416
- // TODO - can't set 'complete' state manually - ideally import tracking info and create shipment in Mage
417
  // $newOrder->setState('complete', 'complete', 'Order was fulfilled by Amazon', false);
418
  }
419
  $transaction->save();
@@ -434,7 +434,7 @@ class Camiloo_Channelunity_Model_Orders extends Camiloo_Channelunity_Model_Abstr
434
  $newOrder->setData('gift_message_id', $gift_message_id);
435
  }
436
 
437
- $newOrder->setCreatedAt(((string) $order->PurchaseDate));
438
  $newOrder->save();
439
 
440
 
277
  'region' => (string) $order->ShippingInfo->State,
278
  'region_id' => (string) $order->ShippingInfo->State,
279
  'country_id' => (string) $order->ShippingInfo->Country,
 
280
  'telephone' => (string) $order->ShippingInfo->PhoneNumber
281
  );
282
 
283
  Mage::getSingleton('core/session')->setShippingPrice(((string) $order->ShippingInfo->ShippingPrice) / $reverseRate);
284
+ // Mage::getSingleton('core/session')->setShippingMethod((string) $order->ShippingInfo->Service);
285
 
286
  // add the shipping address to the quote.
287
  $shippingAddress = $quote->getShippingAddress()->addData($shippingAddressData);
290
  $method->setCarrier('channelunitycustomrate');
291
  $method->setCarrierTitle('ChannelUnity Shipping');
292
  $method->setMethod('channelunitycustomrate');
293
+ $method->setMethodTitle((string) $order->ShippingInfo->Service);
294
 
295
  $shipPrice = Mage::getSingleton('core/session')->getShippingPrice();
296
 
297
  $method->setPrice($shipPrice);
298
  $method->setCost($shipPrice);
299
+
 
300
  $rate = Mage::getModel('sales/quote_address_rate')
301
  ->importShippingRate($method);
302
 
374
  $transaction->setOrderPaymentObject($newOrder->getPayment());
375
  $transaction->setOrder($newOrder);
376
  $transaction->setTxnType('capture');
377
+ $transaction->setTxnId((string) $order->OrderId);
378
  $transaction->setAdditionalInformation('SubscriptionId', (string) $dataArray->SubscriptionId);
379
  $transaction->setAdditionalInformation('RemoteOrderID', (string) $order->OrderId);
380
+ $transaction->setAdditionalInformation('ShippingService', (string) $order->ShippingInfo->Service);
381
 
382
  $serviceType = (string) $order->ServiceSku;
383
  switch ($serviceType) {
413
  if (isset($order->OrderFlags) && ( ((string) $order->OrderFlags) == "AMAZON_FBA")) {
414
 
415
  $transaction->setAdditionalInformation('AmazonFBA', 'Yes');
416
+ // Can't set 'complete' state manually - ideally import tracking info and create shipment in Mage
417
  // $newOrder->setState('complete', 'complete', 'Order was fulfilled by Amazon', false);
418
  }
419
  $transaction->save();
434
  $newOrder->setData('gift_message_id', $gift_message_id);
435
  }
436
 
437
+ $newOrder->setCreatedAt((string) $order->PurchaseDate);
438
  $newOrder->save();
439
 
440
 
app/code/community/Camiloo/Channelunity/Model/Products.php CHANGED
@@ -275,11 +275,17 @@
275
  $myval = serialize($myval);
276
  }
277
 
278
- $prodDataValue = $attribute->getSource()
279
- ->getOptionText($myval);
280
-
281
- if ($prodDataValue == '') {
282
 
 
 
 
 
 
 
283
  $prodDataValue = $myval;
284
  }
285
  } else {
@@ -376,6 +382,23 @@
376
  return $val;
377
  }
378
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
379
  /**
380
  * Return a set of product data to CU.
381
  */
@@ -396,19 +419,19 @@
396
  try {
397
 
398
  // get the highest product ID
399
- $collectionOfProduct = Mage::getModel($this->_collection)->getCollection()->setStoreId($storeId);
400
  $collectionOfProduct->setOrder('entity_id', 'DESC');
401
  $collectionOfProduct->setPageSize(1);
402
  $collectionOfProduct->setCurPage(1);
403
  $totp = $collectionOfProduct->getFirstItem();
404
  $totp = $totp->getEntityId();
405
 
406
- $collectionOfProduct = Mage::getModel($this->_collection)->getCollection()->setStoreId($storeId);
407
 
408
  $totalNumProducts = $this->executeQueryScalar(str_replace("SELECT", "SELECT count(*) as count_cu, ", $collectionOfProduct->getSelect()), 'count_cu');
409
 
410
  $collectionOfProduct->addAttributeToFilter("entity_id", array('gteq' => $rangeFrom))
411
- ->setOrder('entity_id', 'ASC');
412
 
413
  // monitor memory and max exec
414
  if ($this->maxMemoryChar == "M") {
275
  $myval = serialize($myval);
276
  }
277
 
278
+ if (is_object($attribute)) {
279
+
280
+ $prodDataValue = $attribute->getSource()
281
+ ->getOptionText($myval);
282
 
283
+ if ($prodDataValue == '') {
284
+
285
+ $prodDataValue = $myval;
286
+ }
287
+ }
288
+ else {
289
  $prodDataValue = $myval;
290
  }
291
  } else {
382
  return $val;
383
  }
384
 
385
+ public function doSetValue($request) {
386
+ $storeId = (string) $request->StoreviewId;
387
+ $fieldName = (string) $request->FieldName;
388
+ $fieldValue = (string) $request->FieldValue;
389
+ $sku = (string) $request->SKU;
390
+
391
+ $collectionOfProduct = Mage::getModel($this->_collection)->getCollection()->addStoreFilter($storeId);
392
+ $collectionOfProduct->setPageSize(1);
393
+ $collectionOfProduct->setCurPage(1);
394
+ $collectionOfProduct->addFieldToFilter('sku', $sku);
395
+ $product = $collectionOfProduct->getFirstItem();
396
+
397
+ // set an attribute for the product
398
+ $product->setData($fieldName, $fieldValue);
399
+ $product->save();
400
+ }
401
+
402
  /**
403
  * Return a set of product data to CU.
404
  */
419
  try {
420
 
421
  // get the highest product ID
422
+ $collectionOfProduct = Mage::getModel('channelunity/collection')->addStoreFilter($storeId);
423
  $collectionOfProduct->setOrder('entity_id', 'DESC');
424
  $collectionOfProduct->setPageSize(1);
425
  $collectionOfProduct->setCurPage(1);
426
  $totp = $collectionOfProduct->getFirstItem();
427
  $totp = $totp->getEntityId();
428
 
429
+ $collectionOfProduct = Mage::getModel('channelunity/collection')->addStoreFilter($storeId);
430
 
431
  $totalNumProducts = $this->executeQueryScalar(str_replace("SELECT", "SELECT count(*) as count_cu, ", $collectionOfProduct->getSelect()), 'count_cu');
432
 
433
  $collectionOfProduct->addAttributeToFilter("entity_id", array('gteq' => $rangeFrom))
434
+ ->setOrder('entity_id', 'ASC');
435
 
436
  // monitor memory and max exec
437
  if ($this->maxMemoryChar == "M") {
app/code/community/Camiloo/Channelunity/controllers/ApiController.php CHANGED
@@ -10,6 +10,7 @@ class Camiloo_Channelunity_ApiController extends Mage_Core_Controller_Front_Acti
10
  echo ' </ChannelUnity>';
11
  die;
12
  }
 
13
  public function testtableAction() {
14
  if (Mage::getModel('channelunity/orders')->table_exists("moo")) {
15
  echo "true";
@@ -133,8 +134,8 @@ EOD;
133
  Mage::getModel('channelunity/orders')->doUpdate($request);
134
  break;
135
 
136
- case "OrderDataUpdate":
137
-
138
  break;
139
 
140
  case "ProductData":
10
  echo ' </ChannelUnity>';
11
  die;
12
  }
13
+
14
  public function testtableAction() {
15
  if (Mage::getModel('channelunity/orders')->table_exists("moo")) {
16
  echo "true";
134
  Mage::getModel('channelunity/orders')->doUpdate($request);
135
  break;
136
 
137
+ case "AttributePush":
138
+ Mage::getModel('channelunity/products')->doSetValue($request);
139
  break;
140
 
141
  case "ProductData":
app/code/community/Camiloo/Channelunity/etc/config.xml CHANGED
@@ -129,6 +129,15 @@
129
  </channelunity>
130
  </observers>
131
  </catalog_product_save_after>
 
 
 
 
 
 
 
 
 
132
  <controller_action_postdispatch>
133
  <observers>
134
 
129
  </channelunity>
130
  </observers>
131
  </catalog_product_save_after>
132
+ <catalog_controller_product_delete>
133
+ <observers>
134
+ <channelunity>
135
+ <type>model</type>
136
+ <class>channelunity/observer</class>
137
+ <method>productWasDeleted</method>
138
+ </channelunity>
139
+ </observers>
140
+ </catalog_controller_product_delete>
141
  <controller_action_postdispatch>
142
  <observers>
143
 
app/design/adminhtml/default/default/template/channelunity/configheader.phtml CHANGED
@@ -16,7 +16,7 @@
16
  <h3>ChannelUnity Integration for Magento</h3>
17
  Devised and Developed in Manchester, UK by <a href="http://www.camiloo.co.uk/?ref=cu" target="_blank">Camiloo Limited</a><br />
18
  <?php
19
- $xml = Mage::getModel('channelunity/checkforupdates')->getRemoteXMLFileData("http://my.channelunity.com/versioncheck.php?Version=1.0.0.2");
20
  $html = $xml->DisplayMessage[0];
21
  echo $html;
22
  ?>
16
  <h3>ChannelUnity Integration for Magento</h3>
17
  Devised and Developed in Manchester, UK by <a href="http://www.camiloo.co.uk/?ref=cu" target="_blank">Camiloo Limited</a><br />
18
  <?php
19
+ $xml = Mage::getModel('channelunity/checkforupdates')->getRemoteXMLFileData("http://my.channelunity.com/versioncheck.php?Version=1.0.0.3");
20
  $html = $xml->DisplayMessage[0];
21
  echo $html;
22
  ?>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Camiloo_Channelunity</name>
4
- <version>1.0.0.2</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.camiloo.co.uk/license.txt">Camiloo EULA</license>
7
  <channel>community</channel>
@@ -11,11 +11,11 @@
11
 
12
  Should you need any help getting started, please email support@camiloo.co.uk</description>
13
  <notes>The ChannelUnity connector kit for Magento.
14
- This version checks for orders imported by the Amazon module so as not to import 2 copies of the same order when moving over to ChannelUnity.</notes>
15
  <authors><author><name>Camiloo Limited</name><user>auto-converted</user><email>hello@camiloo.co.uk</email></author></authors>
16
- <date>2012-05-01</date>
17
- <time>09:26:10</time>
18
- <contents><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="channelunity"><file name="configheader.phtml" hash="7518354940f62a011a895d371d2e7c4c"/><file name="paymentinfo.phtml" hash="60967f7ab38fe17c879b272eed25f986"/></dir></dir></dir></dir></dir></target><target name="magecommunity"><dir name="Camiloo"><dir name="Channelunity"><dir name="Block"><file name="Configheader.php" hash="6d7de078f04901e94b8b9675bcd9e4ac"/><file name="Paymentform.php" hash="1f3e79556f15a57b9761c3665a103103"/><file name="Paymentinfo.php" hash="6c3c36d92592dd802fb8045dc065d231"/></dir><dir name="controllers"><file name="ApiController.php" hash="0c8654c03d157db4fb70dd163f5da654"/><file name="ApiController.php.old.php" hash="01ff34c2cf5798a82cfc11b19ab6decd"/></dir><dir name="etc"><file name="config.xml" hash="94c1ec56968437ee64488eabc4451b0f"/><file name="system.xml" hash="b43f861f8ab3dadca3c122be10790609"/></dir><dir name="Helper"><file name="Data.php" hash="1ccace887d4a09eca0b641394c65d35f"/></dir><dir name="Model"><file name="Abstract.php" hash="dde32099ae2fc34f9cd7e9c2ae23bc3c"/><file name="Attributes.php" hash="b6428ef515e083e172ccf0b6e07e32fe"/><file name="Categories.php" hash="0d741f1a1384bca8b26b933e5fa23157"/><file name="Checkforupdates.php" hash="6fcf97b37aa3f3a1e0149f7761975925"/><file name="Customrate.php" hash="5dab412e72c869599c8cfb670519da65"/><file name="Entity.php" hash="8ff876068c52106c589a5079cc0f9215"/><file name="Observer.php" hash="66bfe119a54fad8c2a80f7fa6e33c238"/><file name="Ordercreatebackport.php" hash="3b696fb97ce6550a967d76436a3d131c"/><file name="Orders.php" hash="cfa2856e253b0fddef6b53bfd50e95d4"/><file name="Payment.php" hash="7fe570cf0aaf7c2bcdf1982b6e69caa6"/><file name="Paymentinfo.php" hash="e11658c9fa02420557441f5c8a41f8a0"/><file name="Paymentmethoduk.php" hash="a99409ed4ee5f7e426df4eaf793482d6"/><file name="Products.php" hash="6ee2b3ad8383e4f560eefa66bdeea2c9"/><file name="Stores.php" hash="7f299877f0b62ca9d30a46b333124680"/></dir><dir name="sql"><dir name="channelunity_setup"><file name="install-1.0.0.php" hash="7127fff7219108813aa35dd7596b09d3"/><file name="mysql4-install-0.0.1.php" hash="7ebc892c87b9401bf402a7e1976133e3"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Camiloo_Channelunity.xml" hash="cccfbce64ee176372c5afecb8676fab0"/></dir></target></contents>
19
  <compatible/>
20
  <dependencies/>
21
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Camiloo_Channelunity</name>
4
+ <version>1.0.0.3</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.camiloo.co.uk/license.txt">Camiloo EULA</license>
7
  <channel>community</channel>
11
 
12
  Should you need any help getting started, please email support@camiloo.co.uk</description>
13
  <notes>The ChannelUnity connector kit for Magento.
14
+ This version imports the shipping service level into an order, and also resolves an issue when copying product data where catalog flat product is enabled.</notes>
15
  <authors><author><name>Camiloo Limited</name><user>auto-converted</user><email>hello@camiloo.co.uk</email></author></authors>
16
+ <date>2012-05-13</date>
17
+ <time>20:18:08</time>
18
+ <contents><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="channelunity"><file name="configheader.phtml" hash="162d755efb5cc23dfb49e9d9f479248c"/><file name="paymentinfo.phtml" hash="60967f7ab38fe17c879b272eed25f986"/></dir></dir></dir></dir></dir></target><target name="magecommunity"><dir name="Camiloo"><dir name="Channelunity"><dir name="Block"><file name="Configheader.php" hash="6d7de078f04901e94b8b9675bcd9e4ac"/><file name="Paymentform.php" hash="1f3e79556f15a57b9761c3665a103103"/><file name="Paymentinfo.php" hash="6c3c36d92592dd802fb8045dc065d231"/></dir><dir name="controllers"><file name="ApiController.php" hash="97e35be7817e58617c3a60daaeb070ac"/><file name="ApiController.php.old.php" hash="01ff34c2cf5798a82cfc11b19ab6decd"/></dir><dir name="etc"><file name="config.xml" hash="4d813910e0807b964b3e68484eb38f41"/><file name="system.xml" hash="b43f861f8ab3dadca3c122be10790609"/></dir><dir name="Helper"><file name="Data.php" hash="1ccace887d4a09eca0b641394c65d35f"/></dir><dir name="Model"><file name="Abstract.php" hash="dde32099ae2fc34f9cd7e9c2ae23bc3c"/><file name="Attributes.php" hash="b6428ef515e083e172ccf0b6e07e32fe"/><file name="Categories.php" hash="39e83c8cd3a75821feb358843ea80c9a"/><file name="Checkforupdates.php" hash="6fcf97b37aa3f3a1e0149f7761975925"/><file name="Collection.php" hash="28172943843f2462d75193a9f9be78b9"/><file name="Customrate.php" hash="bf274c6eaeacd56e22b0dc92e476d1ad"/><file name="Entity.php" hash="8ff876068c52106c589a5079cc0f9215"/><file name="Observer.php" hash="7571550a51d97398d01dcaba3d091436"/><file name="Ordercreatebackport.php" hash="3b696fb97ce6550a967d76436a3d131c"/><file name="Orders.php" hash="85dbe1274bb2600068b9e7aa5d0ca356"/><file name="Payment.php" hash="7fe570cf0aaf7c2bcdf1982b6e69caa6"/><file name="Paymentinfo.php" hash="e11658c9fa02420557441f5c8a41f8a0"/><file name="Paymentmethoduk.php" hash="a99409ed4ee5f7e426df4eaf793482d6"/><file name="Products.php" hash="fb35dc5c88ed976e7cfce58fea905892"/><file name="Stores.php" hash="7f299877f0b62ca9d30a46b333124680"/></dir><dir name="sql"><dir name="channelunity_setup"><file name="install-1.0.0.php" hash="7127fff7219108813aa35dd7596b09d3"/><file name="mysql4-install-0.0.1.php" hash="7ebc892c87b9401bf402a7e1976133e3"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Camiloo_Channelunity.xml" hash="cccfbce64ee176372c5afecb8676fab0"/></dir></target></contents>
19
  <compatible/>
20
  <dependencies/>
21
  </package>