The code that drives the price can be found in Mage_Catalog_Model_Product_Type_Price
public function getFinalPrice($qty=null, $product)
{
if (is_null($qty) && !is_null($product->getCalculatedFinalPrice())) {
return $product->getCalculatedFinalPrice();
}
$finalPrice = $product->getPrice();
$finalPrice = $this->_applyTierPrice($product, $qty, $finalPrice);
$finalPrice = $this->_applySpecialPrice($product, $finalPrice);
$product->setFinalPrice($finalPrice);
Mage::dispatchEvent('catalog_product_get_final_price', array('product'=>$product, 'qty' => $qty));
$finalPrice = $product->getData('final_price');
$finalPrice = $this->_applyOptionsPrice($product, $qty, $finalPrice);
return max(0, $finalPrice);
}
In _applyTierPrice
$finalPrice = min($finalPrice, $tierPrice);
and through _applySpecialPrice
$finalPrice = min($finalPrice, $specialPrice);
There are no options involved and it will return the minimum price.
In my view this also matches the expectation of the customer!
If you do want to change this behaviour you can observe the event
catalog_product_get_final_price and use $product->setData('final_price',X.YZ); to the value you want.
All the tier prices are stored in the table catalog_product_entity_tier_price
. The columns mean the following:
value_id
- table auto increment
entity_id
- the product id
all_groups
- 0/1 flag that tells if the prices apply to all customer groups
customer_group_id
- the id of the customer group the prices are applied. If all_groups
is 1 this has no value. If you have one price that should apply to only 2 customer groups add 2 different records in the table one for each customer group
qty
- represents the minimum quantity for which the tier price is applied.
value
- is the actual price value
website_id
- the id of the website for which the prices are applied. 0 for all websites.
I know it's not a good practice to edit the DB directly, but in this case, when there is only one table involved, the risk is minimum. I've done this with success in the past.
If you manage to format you data in the same format of the columns described above you can directly insert/update data in this table.
If you plan to take this approach backup your database before starting.
After you are done a price reindex is required.
Best Answer
No, you can't do that with a native Magento instance.
You would have to use shopping cart price rules for that, which are applied to the lowest of price, group price, tier price and special price.