I very confused by this setting in System > Configuration > Catalog > Catalog > Price : Catalog Price Scope.
It simply means that you can set prices only globally or you can set them on a per website basis. For example: B2C and B2B or French store (EUR) and German store (also EUR) and show them different prices. In combination with the setting to change the base currency you can also create a US store (USD) and a UK store (GBP) and all have their own prices.
But it does not make sense. Because in my Magento configuration I am getting these two options : Global, and Website. But inside of the documentation of Magento I get these options
The settings for the Catalog Price Scope can only be configured globally, which probably is a bit confusing. You globally set that the prices of the catalog can be configured on a per website basis.
The reason it can't be configured on a store view basis is because that's not the philosophy what store views are intended for. Store views are for different languages, mobile version, b2b version, etc.
My website is selling downloadable products so we want anyone with a PayPal account to be able to buy.
Knowing this what is the best option and why is it not listing Store, and Store view?
- Allow multiple currencies, this allows the customer to switch to different currencies. The disadvantage here is that the conversion from the base currency is dynamic and changes dayly.
- Install a module that allows you to set prices per currency. For example (there may be a ton of others): http://innoexts.com/promotion/currency-pricing/
What you mentioned already, is correct. The Global scope is the same as the Admin scope. They are not quite the same, but because all other scopes (Store View, Store, Website) are managed from within the Magento Admin Panel, the Magento Admin Panel needs to have the scope Global to work. This also means that the Base URL of your Global Scope needs to point to the Magento admin URL. However, Magento has also introduced the option "Custom Admin URL" as you mentioned - and this complicates things a little bit. As I understand it, the "Custom Admin URL" should be used if the Magento backend should be only accessed through a private URL (for instance, an internal URL for people behind a corporate firewall) - so this would then become privateseparatenode.com
. However, the Magento global scope might still need contacting from the outside world. For instance, if PayPal does an IPN callback, it contacts Magento and this might be on the global scope (don't know if this is actually true or not), and for that reason you would need a public URL like publicseparatenode.com
. So in short, the Custom Admin URL is normally only needed if the Admin needs to be accessed through a private method, while the global scope (Base URL in Global Scope) should be publicly accessible.
In short: Your setup seems completely correct in that the Global Scope is using the domain separatenode.com
(assuming it is publicly accessible). However, I've seen third party modules in the past that did not respect the scoping at all, and simply loaded stuff from the global scope because that seemed easier. So your issue might be with a third party module (?).
The fact that your Magento backend is on a different node is not important. With Magento, it is suggested that you have one "virtual" application instance pointing to one "virtual" database, even though there could be multiple application instances on different nodes pointing to the same database, or multiple database instances because of clustering or alike. Think of it this way: There is one Magento configuration tree, which has values across multiple scopes. That same configuration tree is accessed from your Magento backend node.
Best Answer
I spent days on figuring this out. But I finally got it done.
Actually it seems the product price scope is global - unless you have some kind of module which is overriding it. However the root of the issue can be found in catalog_product_entity_decimal table:
If it shows you multiple rows for different store_ids you are facing the same issue like me. Because there should ONLY be one entry (one for store_id 0, if you set price to global and inherit the price from default scope).
How to fix?
Run following query:
Please double check if price attribute id = 75 in your setup!