Unfortunately I did not find an event that you can use.
But you can override the method Mage_Shipping_Model_Carrier_Flatrate::proccessAdditionalValidation
and check if the subtotal is below 500.
You will need to create a new module. Let's call it Easylife_Shipping
.
app/etc/modules/Easylife_Shipping.xml
- the declaration file
<?xml version="1.0"?>
<config>
<modules>
<Easylife_Shipping>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Shipping />
</depends>
</Easylife_Shipping>
</modules>
</config>
app/code/local/Easylife/Shipping/etc/config.xml
- the configuration file
<?xml version="1.0"?>
<config>
<modules>
<Easylife_Shipping>
<version>1.0.0</version>
</Easylife_Shipping>
</modules>
<global>
<models>
<shipping>
<rewrite>
<carrier_flatrate>Easylife_Shipping_Model_Carrier_Flatrate</carrier_flatrate>
</rewrite>
</shipping>
</models>
</global>
</config>
app/code/local/Easylife/Shipping/Model/Carrier/Flatrate.php
- your new model class
<?php
class Easylife_Shipping_Model_Carrier_Flatrate extends Mage_Shipping_Model_Carrier_Flatrate implements Mage_Shipping_Model_Carrier_Interface {
public function proccessAdditionalValidation(Mage_Shipping_Model_Rate_Request $request) {
if ($request->getSubtotal() > 500) {
return false;
}
return parent::proccessAdditionalValidation($request);
}
}
of course a better idea would be not to hard code 500
. You can put it in a config setting and read it from there.