我已经在Magento 2中以编程方式创建了一个订单。 我获得了数据:
现在,税收已包含产品价格,因此默认情况下,Magento 2:
总计与提供的总数不同。 我想在计税后增加折扣。
答案 0 :(得分:2)
对于税务配置,有两种解决方法。 在后端配置中: 应用客户税->设置“折扣前”;我猜这应该可以解决您的问题。
您也可以为以下代码自定义代码: 在您的di.xml中,添加如下内容:
<preference for="Magento\Tax\Model\Sales\Total\Quote\Tax" type="<yournamespace>\<yourModule>\Model\Sales\Total\Quote\Tax"/>
现在创建您的类文件Tax.php并添加以下代码:
namespace <yournamespace>\<yourModule>\Model\Sales\Total\Quote;
class Tax extends \Magento\Tax\Model\Sales\Total\Quote\Tax
{
/* override code here */
public function __construct(
/* add dependency classes here */ ) {
parent::__construct(
/* parent class objects here */
);
}
/**
* Custom Collect tax totals for quote address
*
* @param Quote $quote
* @param ShippingAssignmentInterface $shippingAssignment
* @param Address\Total $total
* @return $this
*/
public function collect(
\Magento\Quote\Model\Quote $quote,
\Magento\Quote\Api\Data\ShippingAssignmentInterface $shippingAssignment,
\Magento\Quote\Model\Quote\Address\Total $total
) {
/* your calculation here goes here */
$total->setTaxAmount($set_your_tax_here);
return $this;
}
}
希望这会有所帮助!
答案 1 :(得分:0)
是的,您可以...。您可以使用默认FPT,并可以根据需要修改税额。 您可以使用sales_quote_collect_totals_after事件以编程方式更改产品税金额。
您还可以在上面覆盖的Tax模型中尝试此答案,效果很好。