/** * @param Bronto_Api_Order $orderObject * @param array $orderCache * @param array $result * * @return array * @access protected */ protected function _flushOrders($orderObject, $orderCache, $result) { // Get delivery results from order object $flushResult = $orderObject->flush(); $flushCount = count($flushResult); // Log Order import flush process starting $this->_helper->writeDebug(" Flush resulted in {$flushCount} orders processed"); $this->_helper->writeVerboseDebug('===== FLUSH =====', 'bronto_order_api.log'); $this->_helper->writeVerboseDebug(var_export($orderObject->getApi()->getLastRequest(), true), 'bronto_order_api.log'); $this->_helper->writeVerboseDebug(var_export($orderObject->getApi()->getLastResponse(), true), 'bronto_order_api.log'); // Cycle through flush results and handle any errors that were returned foreach ($flushResult as $i => $flushResultRow) { if ($flushResultRow->hasError()) { $hasError = true; $errorCode = $flushResultRow->getErrorCode(); $errorMessage = $flushResultRow->getErrorMessage(); } else { $hasError = false; $errorCode = false; $errorMessage = false; } if (isset($orderCache[$i])) { /** @var Mage_Sales_Model_Order $order */ $order = Mage::getModel('sales/order')->load($orderCache[$i]['orderId']); /** @var Mage_Core_Model_Store $store */ $store = Mage::getModel('core/store')->load($orderCache[$i]['storeId']); /** @var Mage_Core_Model_Website $website */ $website = Mage::getModel('core/website')->load($store->getWebsiteId()); $storeMessage = "For `{$website->getName()}`:`{$store->getName()}`: "; /** @var Bronto_Order_Model_Queue $orderRow */ $orderRow = Mage::getModel('bronto_order/queue')->getOrderRow($order->getId(), $order->getQuoteId(), $order->getStoreId()); } else { if ($hasError) { Mage::helper('bronto_order')->writeError("[{$errorCode}] {$errorMessage}"); $result['error']++; } continue; } if ($hasError) { // If error code is 915, try to pull customer email address if (915 == $errorCode) { if ($customerEmail = $order->getCustomerEmail()) { $errorMessage = "Invalid Email Address: `{$customerEmail}`"; } else { $errorMessage = "Email Address is empty for this order"; } } // Append order id to message to assist troubleshooting $errorMessage .= " (Order #: {$order->getIncrementId()})"; // Log and Display error message $this->_helper->writeError("[{$errorCode}] {$storeMessage}{$errorMessage}"); // Reset Bronto Import status $orderRow->setBrontoImported(null)->setBrontoSuppressed($errorMessage)->save(); // Increment number of errors $result['error']++; } else { $orderRow->setBrontoImported(Mage::getSingleton('core/date')->gmtDate()); $orderRow->save(); // Increment number of successes $result['success']++; } } return $result; }