/** * Sync the given order item to Klevu. Returns true on successful sync and * the error message otherwise. * * @param Mage_Sales_Model_Order_Item $item * * @return bool|string */ protected function sync($item) { if (!$this->getApiKey($item->getStoreId())) { return "Klevu Search is not configured for this store."; } $parent = null; if ($item->getParentItemId()) { $parent = Mage::getModel("sales/order_item")->load($item->getParentItemId()); } $response = Mage::getModel("klevu_search/api_action_producttracking")->execute(array("klevu_apiKey" => $this->getApiKey($item->getStoreId()), "klevu_type" => "checkout", "klevu_productId" => Mage::helper("klevu_search")->getKlevuProductId($item->getProductId(), $parent ? $parent->getProductId() : 0), "klevu_unit" => $item->getQtyOrdered() ? $item->getQtyOrdered() : ($parent ? $parent->getQtyOrdered() : null), "klevu_salePrice" => $item->getPriceInclTax() ? $item->getPriceInclTax() : ($parent ? $parent->getPriceInclTax() : null), "klevu_currency" => $this->getStoreCurrency($item->getStoreId()), "klevu_shopperIP" => $this->getOrderIP($item->getOrderId()))); if ($response->isSuccessful()) { return true; } else { return $response->getMessage(); } }
/** * Set correct item prices ((original price / new qty) * old qty) * * @param Mage_Sales_Model_Order_Item $orderItem * @param int $oldQty * @param int $newQty * @return Mage_Sales_Model_Order_Item */ protected function _correctPrices($orderItem, $oldQty, $newQty) { $orderItem->setPrice($orderItem->getPrice() / $newQty * $oldQty); $orderItem->setBasePrice($orderItem->getBasePrice() / $newQty * $oldQty); $orderItem->setOriginalPrice($orderItem->getOriginalPrice() / $newQty * $oldQty); $orderItem->setBaseOriginalPrice($orderItem->getBaseOriginalPrice() / $newQty * $oldQty); $orderItem->setPriceInclTax($orderItem->getPriceInclTax() / $newQty * $oldQty); $orderItem->setBasePriceInclTax($orderItem->getBasePriceInclTax() / $newQty * $oldQty); return $orderItem; }