我需要拨打第三方API,以便在结账流程的审核阶段获取国际运费的最新职责/税收.我准备好了API调用,但是我错过了将返回的职责和税收添加到报价中的方法.
有没有内置的方法来做到这一点?
我希望有类似的东西
$quote->addCostComponent("Duties", 5.0);
Run Code Online (Sandbox Code Playgroud)
Iva*_*nyi 15
您需要执行以下步骤:
首先,您需要为自定义职责/税收创建属性,以便按顺序显示它们,而不仅仅是添加到总计.应该至少有两个属性,一个用于网站货币的值(用于支付捕获,它应该有base_前缀)和一个显示货币的值(用于显示客户所需货币的金额).应将此属性添加到具有财务部分的每个实体(quote_address,order,invoice).例如,它应该是:base_your_attribute_code和your_attribute_code十进制类型.
然后,您需要创建应从Mage_Sales_Model_Quote_Address_Total_Abstract扩展的总收集器模型,并实现此示例中的collect和fetch方法:
/**
* 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()
));
}
}
}
Run Code Online (Sandbox Code Playgroud)创建收集器模型后,需要将其添加到配置中:
<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>
Run Code Online (Sandbox Code Playgroud)
您需要将总属性添加到将用于将计算数据复制到订单或发票中的字段集:
<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>
Run Code Online (Sandbox Code Playgroud)执行此步骤后,您将能够按订单总额查看自定义费用