The way Magento handles tier prices related to configurable products is a little bit strange. Assuming we have a basic T-Shirt which is available in red and blue and normally costs 10 Euro. If you purchase 10 or more shirts, the price is only 9 Euro. I (and many others of you out there, too!) would expect to get the cheaper price if you buy e.g. 6 blue and 4 red shirts. Anyways, this is not the case in Magento. In order to achieve this behaviour, the guys from Tridian wrote a nice piece of code. Unfortunately, it seems to be old and unsupported. So I updated the script to Magento 18.104.22.168 and removed a little bug. The script from Tridian works fine for configurable products that have tiering prices. Sadly, there are problems with configurable products that do not have tier prices but a special price. In my version below, this bug is fixed.
Basically, the module rewrites the class Mage_Catalog_Model_Product_Type_Configurable_Price and the method getFinalPrice($qty=null, $product) in that class. If the given product has tiering prices configured, the new method calcConfigProductTierPricing($product) is called. This method generally does the following:
- gets all items from the quote
- iterates over all these items
- creates an array mapping the sku of the current item to the quantity
- gets the entry at the base products sku
- sums up all quantities
- calculates the tier price with the computed quantity and the parent product
The reason why this does the job is that the items collection in the quote has instances of the parent and the child product.
UPDATE March 12, 2012:
The above information explaining how the extension works is outdated. The extension development has been moved to GitHub.
You can also download the latest version from there. Anyway, the extension is also available on Magento Connect.
If you use and like the extension, I am happy to read your comment or message.
If you have any problem with the extension, please open an issue on GitHub.