在Magento的Mage_Sales_Model_Quote_Item_Abstract中获得价格函数的不同之处是什么?

时间:2014-03-03 20:37:13

标签: php magento

getBaseCalculationPrice(第315行) 获取以基础货币计算报价的计算价格。

getBaseOriginalPrice(第389行) 以基本网站货币获得原始商品价格(来自产品)。

getCalculationPrice(第296行) 获取用于报价计算过程的商品价格。

getConvertedPrice(第434行) 获取商品价格转换为报价货币

getOriginalPrice(第363行) 获取物品的原始价格(从产品中检索)。

getPrice(第412行) 获取商品价格。商品价格货币是网站基础货币。

我正在尝试获取购物车中显示的最终价格,如果有任何促销活动,则已经打折的价格。我应该使用getPricegetCalculationPricegetBaseCalculationPrice还是其他? Magento中所有这些不同的价格函数有何不同。

2 个答案:

答案 0 :(得分:3)

复杂不是吗?但它必须复杂,以便Magento可以涵盖所有可能的方式来计算和显示价格。

快速回答是:getCalculationPrice()

我建议研究显示购物车价格的.phtml文件,因为在您的问题中,您写的是“我正在尝试获取购物车中显示的最终价格”,为此,您需要遵循逻辑通过那些.phtml文件。您需要应用税务逻辑,税收显示逻辑,货币转换和显示格式。留出几天的时间进行代码阅读和测试。

有许多价格计算(这些没有与您上面列出的函数一对一映射,这只是设置场景)。价格可能会显示为:

//price excluding discount without tax in default currency
//price excluding discount without tax in local currency

//price excluding discount with tax in default currency
//price excluding discount with tax in local currency

//price including discount without tax in default currency
//price including discount without tax in local currency

//price including discount with tax in default currency
//price including discount with tax in local currency

税收很复杂,因为Magento有WEEE税和销售税(WEEE可能不适用于您的商店,但WEEE逻辑会混淆下面讨论的.phtml文件)。在您的商店中,您可以选择在购物车中显示已包含或不包含税的价格。并且可能已输入原始产品价格,包括税。

因此,Magento正在跳过箍,例如,以包含税的产品价格以默认货币计算,减去税,应用折扣,为当前区域设置添加本地税并转换为货币当前的语言环境。

您列出的功能与您在上面描述的功能类似,但我们非常认真地考虑价格的存储和更改的不同方式,您需要阅读代码并应用每种情况的逻辑:产品可能具有例如定制价格。大多数功能确实返回相同的数字或两个数字之一(原价或折扣价)

getBaseCalculationPrice():包括折扣,无货币兑换,可能包括也可能不包含税。如果没有自定义价格,则与调用getPrice()相同

getBaseOriginalPrice():不包括折扣,不包括货币转换,可能包括也可能不包含税

如果没有自定义价格,

getCalculationPrice()getConvertedPrice()相同

getConvertedPrice()会返回getPrice()的结果并应用了货币转换

getPrice():包括折扣(我认为),没有货币兑换,可能包括也可能不包含税

getOriginalPrice()getBaseOriginalPrice()

的货币换算

这可能没有帮助。 您必须阅读代码

如果您想获得购物车中显示的价格,您应该遵循构成购物车布局的那些.phtml文件中的逻辑。

对于非捆绑产品,请参阅

app/design/frontend/themename/default/template/checkout/cart/item/default.phtml

对于捆绑产品,请参阅

app/design/frontend/themename/default/template/bundle/catalog/product/price.phtml

并注意捆绑功能$_priceModel->getTotalPrices()添加到您的大量定价功能(它返回捆绑的最高和最低价格(包括或不包括税),因此不在购物车显示中使用)。

所以有很多代码要做。但是如果你仔细阅读所有函数(从.phtml文件开始,而不是抽象类 - 比起尝试从抽象类中追踪更容易处理)那么你就会知道每个函数的作用。如果您阅读这些函数并设置一些测试代码来输出所有不同的值,您将会到达它的底部。

税务助手$_taxHelper = Mage::helper('tax');也有一个功能$_taxHelper->getPrice();

答案 1 :(得分:2)

在购物车中显示的是购物车总数,而不是价格。 所以我认为如果Mage_Sales_Model_Quote_Item

你应该使用以下方法
  • getRowTotal()
  • getRowTotalInclTax()
  • getRowTotalWithDiscount()