Guest User

Untitled

a guest
Nov 20th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. private static function updateOrderStatus(DOMElement $ndOrder) {
  2. $orderNumber = $ndOrder->getElementsByTagName('OrderNumber')->item(0)->nodeValue;
  3. $status = $ndOrder->getElementsByTagName('Status')->item(0)->nodeValue;
  4.  
  5. $order = Mage::getModel('sales/order')->loadByIncrementId($orderNumber);
  6. if (!$order) { throw new Exception("Order number $orderNumber was not found."); }
  7.  
  8. // Get shipment increment ID - if there are already shipments, just get the last one
  9. $shipmentId = false; $shipments = false;
  10. $api = Mage::getModel('sales/order_shipment_api');
  11.  
  12. try {
  13. $shipments = $order->getShipmentsCollection();
  14.  
  15. if (!$shipments || empty($shipments) || !count($shipments)) {
  16. // returns incrementId of new shipment
  17. $shipmentId = $api->create($orderNumber);
  18. } else {
  19. // get incrementId of last shipment
  20. foreach ($shipments as $shipment) {
  21. $shipmentId = $shipment['increment_id'];
  22. }
  23. if ($shipmentId === false) {
  24. $shipmentId = $api->create($orderNumber);
  25. }
  26. }
  27. $shipments = $api->info($shipmentId);
  28. } catch (Exception $e) {
  29. throw $e;
  30. }
  31.  
  32. // Are we updating tracking data?
  33. $packages = $ndOrder->getElementsByTagName('Package');
  34. $doTracking = ($packages != null && $packages->length > 0);
  35. if ($doTracking) {
  36. foreach ($packages as $package) {
  37. $trackNum = $package->getElementsByTagName('TrackNum')->item(0)->nodeValue;
  38. $carrier = $package->getElementsByTagName('Shipper')->item(0)->nodeValue;
  39. $carrierCode = self::parseShipmentCarrier($orderNumber, $carrier, $api);
  40. if (!$carrierCode || self::trackingNumberExists($trackNum, $shipments)) { continue; }
  41. $api->addTrack($shipmentId, $carrierCode, $status, $trackNum);
  42. //RJZ 9-12-2012 mark order shipped via Udropship
  43. Mage::helper('udropship')->setShipmentComplete($shipmentId);
  44. }
  45. }
  46.  
  47. try {
  48. // Add status change to order status history (does not add comment or notify customer)
  49. $api = Mage::getModel('sales/order_api');
  50. $api->addComment($orderNumber, $status);
  51.  
  52. // Change the status
  53. $state = self::parseOrderState($status);
  54. if (!$state) { return; }
  55.  
  56. $order = Mage::getModel('sales/order')->loadByIncrementId($orderNumber);
  57. $order->setStatus($state);
  58. $order->save();
  59. } catch (Exception $e) {
  60. if (self::$_debug) { echo "Status update error: $e\r\n"; }
  61. throw $e;
  62. }
  63. }
Add Comment
Please, Sign In to add comment