Magento:在审核期间在报价中添加关税/税款
问题描述:
我需要打电话给第三方API才能在结帐过程的审核阶段获取最新的国际运输税/税。我准备好了API调用,但是我错过了将返回的关税和税款添加到报价中的方法。Magento:在审核期间在报价中添加关税/税款
有没有内置的方法来做到这一点?
IM希望有类似
$quote->addCostComponent("Duties", 5.0);
答
您需要执行这些步骤:
所有你需要的,以显示它们为您的关税/税的属性首先,不仅仅增加了总数。在网站货币中应该至少有两个属性值(用于付款捕获,它应该有
base_
前缀)和一个以显示货币表示的值(仅用于显示客户期望货币的金额)。应将这些属性添加到具有财务部分的每个实体(quote_address,order,invoice)。例如,它应该是:带有十进制类型的base_your_attribute_code
和your_attribute_code
。-
然后你需要创建您总集热模式,应该从Mage_Sales_Model_Quote_Address_Total_Abstract进行扩展并实现收集和在本例中取类似的方法:
/** * Your custom total model * */ class Your_Module_Model_Total_Custom extends Mage_Sales_Model_Quote_Address_Total_Abstract { /** * Constructor that should initiaze */ public function __construct() { $this->setCode('your_attribute_code'); } /** * Used each time when collectTotals is invoked * * @param Mage_Sales_Model_Quote_Address $address * @return Your_Module_Model_Total_Custom */ public function collect(Mage_Sales_Model_Quote_Address $address) { parent::collect($address); // ... Some your api calls to retrive amount ... // Set base amount of your custom fee $this->_setBaseAmount($calculatedAmount); // Set amount of your custom fee in displayed currency $this->_setAmount( $address->getQuote()->getStore()->convertPrice($calculatedAmount, false) ); return $this; } /** * Used each time when totals are displayed * * @param Mage_Sales_Model_Quote_Address $address * @return Your_Module_Model_Total_Custom */ public function fetch(Mage_Sales_Model_Quote_Address $address) { // Display total only if it is not zero if ($address->getYourAttributeCode() != 0) { $address->addTotal(array( 'code' => $this->getCode(), 'title' => 'My Custom Duty', 'value' => $address->getYourAttributeCode() )); } } }
-
你之后收集模型创建你需要将它添加到配置:
<config> <global> <sales> <quote> <totals> <your_total_code> <class>your_module/total_custom</class> <before>grand_total</before> <after>shipping</after> </your_total_code> </totals> </quote> </sales> </global> </config>
- 类节点包含您的收集器型号的别名
- 之前和之后节点指示收集器的调用顺序。
-
你需要添加你的总属性进行实地集,将用于复制计算的数据转换成订单或发票:
<config> <global> <fieldsets> <!-- copies data from quote address to order during the order placement --> <sales_convert_quote_address> <base_your_attribute_code><to_order>*</to_order></base_your_attribute_code> <your_attribute_code><to_order>*</to_order></your_attribute_code> </sales_convert_quote_address> <!-- copies data from order to invoice/shipment/creditmemo during their creation --> <sales_convert_order> <base_your_attribute_code><to_invoice>*</to_invoice><to_shipment>*</to_shipment><to_cm>*</to_cm></base_your_attribute_code> <your_attribute_code><to_invoice>*</to_invoice><to_shipment>*</to_shipment><to_cm>*</to_cm></your_attribute_code> </sales_convert_order> </fieldsets> </global> </config>
执行后,这个步骤,你就可以看到你的定制费总计
是的,有。但我忘了如何。这会更好地在magento论坛上被问到吗? – 2011-02-02 18:03:21
@Joe,如果您在寻找代码帮助,Magento论坛是一个荒地。由于这是一个与代码相关的问题,因此这里的观众似乎更适合。 – 2011-02-02 22:46:46