Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static function updateOrderStatus(DOMElement $ndOrder) {
- $orderNumber = $ndOrder->getElementsByTagName('OrderNumber')->item(0)->nodeValue;
- $status = $ndOrder->getElementsByTagName('Status')->item(0)->nodeValue;
- $order = Mage::getModel('sales/order')->loadByIncrementId($orderNumber);
- if (!$order) { throw new Exception("Order number $orderNumber was not found."); }
- // Get shipment increment ID - if there are already shipments, just get the last one
- $shipmentId = false; $shipments = false;
- $api = Mage::getModel('sales/order_shipment_api');
- try {
- $shipments = $order->getShipmentsCollection();
- if (!$shipments || empty($shipments) || !count($shipments)) {
- // returns incrementId of new shipment
- $shipmentId = $api->create($orderNumber);
- } else {
- // get incrementId of last shipment
- foreach ($shipments as $shipment) {
- $shipmentId = $shipment['increment_id'];
- }
- if ($shipmentId === false) {
- $shipmentId = $api->create($orderNumber);
- }
- }
- $shipments = $api->info($shipmentId);
- } catch (Exception $e) {
- throw $e;
- }
- // Are we updating tracking data?
- $packages = $ndOrder->getElementsByTagName('Package');
- $doTracking = ($packages != null && $packages->length > 0);
- if ($doTracking) {
- foreach ($packages as $package) {
- $trackNum = $package->getElementsByTagName('TrackNum')->item(0)->nodeValue;
- $carrier = $package->getElementsByTagName('Shipper')->item(0)->nodeValue;
- $carrierCode = self::parseShipmentCarrier($orderNumber, $carrier, $api);
- if (!$carrierCode || self::trackingNumberExists($trackNum, $shipments)) { continue; }
- $api->addTrack($shipmentId, $carrierCode, $status, $trackNum);
- //RJZ 9-12-2012 mark order shipped via Udropship
- Mage::helper('udropship')->setShipmentComplete($shipmentId);
- }
- }
- try {
- // Add status change to order status history (does not add comment or notify customer)
- $api = Mage::getModel('sales/order_api');
- $api->addComment($orderNumber, $status);
- // Change the status
- $state = self::parseOrderState($status);
- if (!$state) { return; }
- $order = Mage::getModel('sales/order')->loadByIncrementId($orderNumber);
- $order->setStatus($state);
- $order->save();
- } catch (Exception $e) {
- if (self::$_debug) { echo "Status update error: $e\r\n"; }
- throw $e;
- }
- }
Add Comment
Please, Sign In to add comment