Magento – Why is Flat Rate shipping not configurable on a store level

shipping

Wondering if this is a bug or this was a design decision?

How should I go about it if I want to enable flat rate for only one of my store?

a) Try to make the default "Flat Rate" work on a single store & stay disable on all others?

b) Just create a new shipping method which I can configure on a store level and I just enabled it on the store I want?

Thoughts?

Best Answer

I think this is a concept thing. Usually a store view only depends on the language and should have basically the same assets. That's why most of the shipping and payment methods can be changed at website level only.
It works without any issues if you change it at store view level.
To allow that you will need an extension that overrides the setting of the active flag for the flat rate. For this create a module. Let's call it Easylife_Flatrate with the following files: app/etc/modules/Easylife_Flatrate.xml - the declaration file

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Flatrate>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Shipping /><!-- should depend on the shipping module -->
            </depends>
        </Easylife_Flatrate>
    </modules>
</config>

app/code/local/Easylife/Flatrate/etc/system.xml - the system->configuration fields

<?xml version="1.0"?>
<config>
    <sections>
        <carriers>
            <groups>
                <flatrate>
                    <fields>
                        <active>
                            <show_in_store>1</show_in_store><!-- override the show_in_store value -->
                        </active>
                    </fields>
                </flatrate>
            </groups>
        </carriers>
    </sections>
</config>

If you need to change other fields as well on the store view level add other tags inside this system.xml files just like <active>.

Related Topic