Version Notes
This version is the first to support multi-store installations, including:
- Store-specific currency pricing at Magento's internal exchange rate
- Base currency override
Features include:
- One-click feed export to numerous channels
- Built-in order tracking
- Click & referral tracking
- Historical order importing for reporting and ROI analysis
Download this release
Release Info
| Developer | ShoppingFeeder |
| Extension | shoppingfeeder |
| Version | 1.3.5 |
| Comparing to | |
| See all releases | |
Code changes from version 1.3.4 to 1.3.5
- app/code/community/ShoppingFeeder/Service/Model/Offers.php +11 -7
- app/code/community/ShoppingFeeder/Service/controllers/FeedController.php +7 -2
- app/code/community/ShoppingFeeder/Service/controllers/TestController.php +16 -0
- app/code/community/ShoppingFeeder/Service/controllers/VersionController.php +1 -1
- app/code/community/ShoppingFeeder/Service/etc/config.xml +1 -1
- package.xml +7 -5
app/code/community/ShoppingFeeder/Service/Model/Offers.php
CHANGED
|
@@ -13,7 +13,7 @@ class ShoppingFeeder_Service_Model_Offers extends Mage_Core_Model_Abstract
|
|
| 13 |
return !empty($parents);
|
| 14 |
}
|
| 15 |
|
| 16 |
-
private function getProductInfo(Mage_Catalog_Model_Product $product, Mage_Catalog_Model_Product $parent = null, $variantOptions = null, $lastUpdate = null)
|
| 17 |
{
|
| 18 |
/** @var Mage_Catalog_Model_Product_Type_Configurable $configModel */
|
| 19 |
$configModel = Mage::getModel('catalog/product_type_configurable');
|
|
@@ -238,8 +238,12 @@ class ShoppingFeeder_Service_Model_Offers extends Mage_Core_Model_Abstract
|
|
| 238 |
|
| 239 |
//$priceModel = $product->getPriceModel();
|
| 240 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 241 |
$p['price'] = $price;// Mage::helper('checkout')->convertPrice($priceModel->getPrice($product), false);
|
| 242 |
-
$salePrice = $product->getSpecialPrice();// Mage::helper('checkout')->convertPrice($priceModel->getFinalPrice(null, $product), false);
|
| 243 |
$p['sale_price'] = '';
|
| 244 |
$p['sale_price_effective_date'] = '';
|
| 245 |
if ($salePrice != $p['price'])
|
|
@@ -283,7 +287,7 @@ class ShoppingFeeder_Service_Model_Offers extends Mage_Core_Model_Abstract
|
|
| 283 |
return $p;
|
| 284 |
}
|
| 285 |
|
| 286 |
-
public function getItems($page = null, $numPerPage = 1000, $lastUpdate = null, $store = null)
|
| 287 |
{
|
| 288 |
/* @var Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection $collection */
|
| 289 |
$collection = Mage::getModel('catalog/product')->getCollection()
|
|
@@ -367,7 +371,7 @@ class ShoppingFeeder_Service_Model_Offers extends Mage_Core_Model_Abstract
|
|
| 367 |
/** @var Mage_Catalog_Model_Product $variant */
|
| 368 |
//$variant = Mage::getModel('catalog/product')->load($variantId);
|
| 369 |
|
| 370 |
-
$productData = $this->getProductInfo($variant, $parent, $variantOptions, $lastUpdate);
|
| 371 |
if (!empty($productData))
|
| 372 |
{
|
| 373 |
$products[] = $productData;
|
|
@@ -377,7 +381,7 @@ class ShoppingFeeder_Service_Model_Offers extends Mage_Core_Model_Abstract
|
|
| 377 |
}
|
| 378 |
else
|
| 379 |
{
|
| 380 |
-
$productData = $this->getProductInfo($product, null, null, $lastUpdate);
|
| 381 |
if (!empty($productData))
|
| 382 |
{
|
| 383 |
$products[] = $productData;
|
|
@@ -388,13 +392,13 @@ class ShoppingFeeder_Service_Model_Offers extends Mage_Core_Model_Abstract
|
|
| 388 |
return $products;
|
| 389 |
}
|
| 390 |
|
| 391 |
-
public function getItem($itemId, $store = null)
|
| 392 |
{
|
| 393 |
$products = array();
|
| 394 |
|
| 395 |
$product = Mage::getModel('catalog/product')->load($itemId);
|
| 396 |
|
| 397 |
-
$products[] = $this->getProductInfo($product);
|
| 398 |
|
| 399 |
return $products;
|
| 400 |
}
|
| 13 |
return !empty($parents);
|
| 14 |
}
|
| 15 |
|
| 16 |
+
private function getProductInfo(Mage_Catalog_Model_Product $product, Mage_Catalog_Model_Product $parent = null, $variantOptions = null, $lastUpdate = null, $priceCurrency, $priceCurrencyRate)
|
| 17 |
{
|
| 18 |
/** @var Mage_Catalog_Model_Product_Type_Configurable $configModel */
|
| 19 |
$configModel = Mage::getModel('catalog/product_type_configurable');
|
| 238 |
|
| 239 |
//$priceModel = $product->getPriceModel();
|
| 240 |
|
| 241 |
+
//do a currency conversion. if the currency is in base currency, it will be 1.0
|
| 242 |
+
$price = $price * $priceCurrencyRate;
|
| 243 |
+
$salePrice = $product->getSpecialPrice() * $priceCurrencyRate;
|
| 244 |
+
|
| 245 |
+
$p['currency'] = $priceCurrency;
|
| 246 |
$p['price'] = $price;// Mage::helper('checkout')->convertPrice($priceModel->getPrice($product), false);
|
|
|
|
| 247 |
$p['sale_price'] = '';
|
| 248 |
$p['sale_price_effective_date'] = '';
|
| 249 |
if ($salePrice != $p['price'])
|
| 287 |
return $p;
|
| 288 |
}
|
| 289 |
|
| 290 |
+
public function getItems($page = null, $numPerPage = 1000, $lastUpdate = null, $store = null, $priceCurrency = null, $priceCurrencyRate = null)
|
| 291 |
{
|
| 292 |
/* @var Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection $collection */
|
| 293 |
$collection = Mage::getModel('catalog/product')->getCollection()
|
| 371 |
/** @var Mage_Catalog_Model_Product $variant */
|
| 372 |
//$variant = Mage::getModel('catalog/product')->load($variantId);
|
| 373 |
|
| 374 |
+
$productData = $this->getProductInfo($variant, $parent, $variantOptions, $lastUpdate, $priceCurrency, $priceCurrencyRate);
|
| 375 |
if (!empty($productData))
|
| 376 |
{
|
| 377 |
$products[] = $productData;
|
| 381 |
}
|
| 382 |
else
|
| 383 |
{
|
| 384 |
+
$productData = $this->getProductInfo($product, null, null, $lastUpdate, $priceCurrency, $priceCurrencyRate);
|
| 385 |
if (!empty($productData))
|
| 386 |
{
|
| 387 |
$products[] = $productData;
|
| 392 |
return $products;
|
| 393 |
}
|
| 394 |
|
| 395 |
+
public function getItem($itemId, $store = null, $priceCurrency = null, $priceCurrencyRate = null)
|
| 396 |
{
|
| 397 |
$products = array();
|
| 398 |
|
| 399 |
$product = Mage::getModel('catalog/product')->load($itemId);
|
| 400 |
|
| 401 |
+
$products[] = $this->getProductInfo($product, null, null, null, $priceCurrency, $priceCurrencyRate);
|
| 402 |
|
| 403 |
return $products;
|
| 404 |
}
|
app/code/community/ShoppingFeeder/Service/controllers/FeedController.php
CHANGED
|
@@ -17,6 +17,7 @@ class ShoppingFeeder_Service_FeedController extends ShoppingFeeder_Service_Contr
|
|
| 17 |
$offerId = $this->getRequest()->getParam('offer_id', null);
|
| 18 |
$lastUpdate = $this->getRequest()->getParam('last_update', null);
|
| 19 |
$store = $this->getRequest()->getParam('store', null);
|
|
|
|
| 20 |
|
| 21 |
/**
|
| 22 |
* For per-store system
|
|
@@ -36,13 +37,17 @@ class ShoppingFeeder_Service_FeedController extends ShoppingFeeder_Service_Contr
|
|
| 36 |
Mage::app()->setCurrentStore($defaultStoreCode);
|
| 37 |
}
|
| 38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
if (is_null($offerId))
|
| 40 |
{
|
| 41 |
-
$offers = $offersModel->getItems($page, $numPerPage, $lastUpdate, $store);
|
| 42 |
}
|
| 43 |
else
|
| 44 |
{
|
| 45 |
-
$offers = $offersModel->getItem($offerId, $store);
|
| 46 |
}
|
| 47 |
|
| 48 |
$responseData = array(
|
| 17 |
$offerId = $this->getRequest()->getParam('offer_id', null);
|
| 18 |
$lastUpdate = $this->getRequest()->getParam('last_update', null);
|
| 19 |
$store = $this->getRequest()->getParam('store', null);
|
| 20 |
+
$currency = $this->getRequest()->getParam('currency', null);
|
| 21 |
|
| 22 |
/**
|
| 23 |
* For per-store system
|
| 37 |
Mage::app()->setCurrentStore($defaultStoreCode);
|
| 38 |
}
|
| 39 |
|
| 40 |
+
$baseCurrency = Mage::app()->getStore()->getBaseCurrencyCode();
|
| 41 |
+
$priceCurrency = (is_null($currency)) ? Mage::app()->getStore()->getDefaultCurrencyCode() : $currency;
|
| 42 |
+
$priceCurrencyRate = Mage::helper('directory')->currencyConvert(1, $baseCurrency, $priceCurrency);
|
| 43 |
+
|
| 44 |
if (is_null($offerId))
|
| 45 |
{
|
| 46 |
+
$offers = $offersModel->getItems($page, $numPerPage, $lastUpdate, $store, $priceCurrency, $priceCurrencyRate);
|
| 47 |
}
|
| 48 |
else
|
| 49 |
{
|
| 50 |
+
$offers = $offersModel->getItem($offerId, $store, $priceCurrency, $priceCurrencyRate);
|
| 51 |
}
|
| 52 |
|
| 53 |
$responseData = array(
|
app/code/community/ShoppingFeeder/Service/controllers/TestController.php
CHANGED
|
@@ -262,6 +262,22 @@ class ShoppingFeeder_Service_TestController extends Mage_Core_Controller_Front_A
|
|
| 262 |
}
|
| 263 |
}
|
| 264 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 265 |
$offersModel = false;
|
| 266 |
try {
|
| 267 |
$offersModel = Mage::getSingleton('shoppingfeeder_service/offers');
|
| 262 |
}
|
| 263 |
}
|
| 264 |
|
| 265 |
+
try {
|
| 266 |
+
$currency = $this->getRequest()->getParam('currency', null);
|
| 267 |
+
|
| 268 |
+
$baseCurrency = Mage::app()->getStore()->getBaseCurrencyCode();
|
| 269 |
+
$priceCurrency = (is_null($currency)) ? Mage::app()->getStore()->getDefaultCurrencyCode() : $currency;
|
| 270 |
+
$priceCurrencyRate = Mage::helper('directory')->currencyConvert(1, $baseCurrency, $priceCurrency);
|
| 271 |
+
|
| 272 |
+
echo 'Base currency <span style="color:green;">'.$baseCurrency.'</span>'."<br>\n";
|
| 273 |
+
echo 'Price currency <span style="color:green;">'.$priceCurrency.'</span>'."<br>\n";
|
| 274 |
+
echo 'Exchange rate '.$baseCurrency.'/'.$priceCurrency.' <span style="color:green;">'.$priceCurrencyRate.'</span>'."<br>\n";
|
| 275 |
+
}
|
| 276 |
+
catch (Exception $e)
|
| 277 |
+
{
|
| 278 |
+
echo '<span style="color:red;">could not</span> fetch currencies: ['.$e->getMessage().']'."<br>\n";
|
| 279 |
+
}
|
| 280 |
+
|
| 281 |
$offersModel = false;
|
| 282 |
try {
|
| 283 |
$offersModel = Mage::getSingleton('shoppingfeeder_service/offers');
|
app/code/community/ShoppingFeeder/Service/controllers/VersionController.php
CHANGED
|
@@ -5,7 +5,7 @@ require_once(Mage::getModuleDir('Controller','ShoppingFeeder_Service').DS.'Contr
|
|
| 5 |
|
| 6 |
class ShoppingFeeder_Service_VersionController extends Mage_Core_Controller_Front_Action
|
| 7 |
{
|
| 8 |
-
protected static $_version = '1.3.
|
| 9 |
|
| 10 |
public function indexAction()
|
| 11 |
{
|
| 5 |
|
| 6 |
class ShoppingFeeder_Service_VersionController extends Mage_Core_Controller_Front_Action
|
| 7 |
{
|
| 8 |
+
protected static $_version = '1.3.5';
|
| 9 |
|
| 10 |
public function indexAction()
|
| 11 |
{
|
app/code/community/ShoppingFeeder/Service/etc/config.xml
CHANGED
|
@@ -9,7 +9,7 @@
|
|
| 9 |
<config>
|
| 10 |
<modules>
|
| 11 |
<ShoppingFeeder_Service>
|
| 12 |
-
<version>1.3.
|
| 13 |
</ShoppingFeeder_Service>
|
| 14 |
</modules>
|
| 15 |
<global>
|
| 9 |
<config>
|
| 10 |
<modules>
|
| 11 |
<ShoppingFeeder_Service>
|
| 12 |
+
<version>1.3.5</version>
|
| 13 |
</ShoppingFeeder_Service>
|
| 14 |
</modules>
|
| 15 |
<global>
|
package.xml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>shoppingfeeder</name>
|
| 4 |
-
<version>1.3.
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license>GNU General Public License (GPL)</license>
|
| 7 |
<channel>community</channel>
|
|
@@ -16,7 +16,9 @@ Use ShoppingFeeder to import your Shopify product catalogue, export it to numero
|
|
| 16 |
Export to Google, Shopping.com, Nextag, kelkoo, PriceCheck, Shopmania, Fruugo and more!
|
| 17 |

|
| 18 |
To set up your ShoppingFeeder account and install this extension seamlessly, create an account at: <a href="http://www.shoppingfeeder.com/register">http://www.shoppingfeeder.com/register</a></description>
|
| 19 |
-
<notes>This version is the first to support multi-store installations
|
|
|
|
|
|
|
| 20 |

|
| 21 |
Features include:
|
| 22 |
- One-click feed export to numerous channels
|
|
@@ -24,9 +26,9 @@ Features include:
|
|
| 24 |
- Click & referral tracking
|
| 25 |
- Historical order importing for reporting and ROI analysis</notes>
|
| 26 |
<authors><author><name>ShoppingFeeder</name><user>shoppingfeeder</user><email>support@shoppingfeeder.com</email></author></authors>
|
| 27 |
-
<date>2015-05-
|
| 28 |
-
<time>
|
| 29 |
-
<contents><target name="mageetc"><dir name="modules"><file name="ShoppingFeeder_Service.xml" hash="90b374109c2d1281ddf527f24fa7d914"/></dir></target><target name="magecommunity"><dir name="ShoppingFeeder"><dir name="Service"><dir name="Block"><dir name="Adminhtml"><file name="Service.php" hash="e94d54bc342dc2941753ad635c0454a3"/></dir><file name="Service.php" hash="48874f0e80ce70686b81eb5380e9f498"/></dir><dir name="Controller"><file name="FrontAuth.php" hash="28ed32e1bf3250362911a26869f0e6d7"/></dir><dir name="Helper"><file name="Data.php" hash="17589bd08352e497806bef9884972300"/></dir><dir name="Model"><file name="Auth.php" hash="2cff17b0750ff70695b32524627b2aaf"/><file name="Observer.php" hash="79c5aa286d8bfacbe5b4c759b8b0c5f1"/><file name="Offers.php" hash="
|
| 30 |
<compatible/>
|
| 31 |
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
| 32 |
</package>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>shoppingfeeder</name>
|
| 4 |
+
<version>1.3.5</version>
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license>GNU General Public License (GPL)</license>
|
| 7 |
<channel>community</channel>
|
| 16 |
Export to Google, Shopping.com, Nextag, kelkoo, PriceCheck, Shopmania, Fruugo and more!
|
| 17 |

|
| 18 |
To set up your ShoppingFeeder account and install this extension seamlessly, create an account at: <a href="http://www.shoppingfeeder.com/register">http://www.shoppingfeeder.com/register</a></description>
|
| 19 |
+
<notes>This version is the first to support multi-store installations, including:
|
| 20 |
+
- Store-specific currency pricing at Magento's internal exchange rate
|
| 21 |
+
- Base currency override
|
| 22 |

|
| 23 |
Features include:
|
| 24 |
- One-click feed export to numerous channels
|
| 26 |
- Click & referral tracking
|
| 27 |
- Historical order importing for reporting and ROI analysis</notes>
|
| 28 |
<authors><author><name>ShoppingFeeder</name><user>shoppingfeeder</user><email>support@shoppingfeeder.com</email></author></authors>
|
| 29 |
+
<date>2015-05-09</date>
|
| 30 |
+
<time>10:29:40</time>
|
| 31 |
+
<contents><target name="mageetc"><dir name="modules"><file name="ShoppingFeeder_Service.xml" hash="90b374109c2d1281ddf527f24fa7d914"/></dir></target><target name="magecommunity"><dir name="ShoppingFeeder"><dir name="Service"><dir name="Block"><dir name="Adminhtml"><file name="Service.php" hash="e94d54bc342dc2941753ad635c0454a3"/></dir><file name="Service.php" hash="48874f0e80ce70686b81eb5380e9f498"/></dir><dir name="Controller"><file name="FrontAuth.php" hash="28ed32e1bf3250362911a26869f0e6d7"/></dir><dir name="Helper"><file name="Data.php" hash="17589bd08352e497806bef9884972300"/></dir><dir name="Model"><file name="Auth.php" hash="2cff17b0750ff70695b32524627b2aaf"/><file name="Observer.php" hash="79c5aa286d8bfacbe5b4c759b8b0c5f1"/><file name="Offers.php" hash="ba5e7dd9669ca11fcf51067934a33f00"/><file name="Orders.php" hash="cc3c9f38ae41c11ab7dda0bcb8dd001f"/></dir><dir name="controllers"><file name="AttributesController.php" hash="e937c492f770bc8381a003a080cf878b"/><file name="FeedController.php" hash="a5bf65f2a3b6bf7a061b892b5e07e6c0"/><file name="OrdersController.php" hash="e0dcf407e15ca212b43ee0015c918675"/><file name="StoresController.php" hash="a29fa0e97299ce764fd66360cbf6632a"/><file name="TestController.php" hash="5138a844cb7cbc8e792df664057bdf9b"/><file name="VersionController.php" hash="9df0e83269599781d3f4178b3688a5f6"/></dir><dir name="etc"><file name="config.xml" hash="317ca0d9d47f184d35f4e56e847a7147"/><file name="system.xml" hash="9681c74fa8886143197932690616e2dd"/></dir></dir></dir></target></contents>
|
| 32 |
<compatible/>
|
| 33 |
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
| 34 |
</package>
|
