Php 如何为Magento 2订单编程应用税后折扣?

Php 如何为Magento 2订单编程应用税后折扣?,php,magento,magento2,magento2.2,Php,Magento,Magento2,Magento2.2,我已经在Magento 2中以编程方式创建了一个订单。 我获得了以下数据: 物品价值:10美元 税率:20% 折扣:2美元 总计:10美元 现在,税收包含了产品价格,因此在Magento 2中默认情况下: 物品价格:$10 折扣后的商品价格:$8 税款:8美元的20%=1.6美元 总计:8美元+1.6美元=9.6美元 总计与提供的不相同。 我想添加税后折扣计算。对于税务配置,有两种方法可以解决此问题。 在后端配置中: 申请客户税->设置“折扣前”;我想这应该能解决你的问题 您也可以为以下

我已经在Magento 2中以编程方式创建了一个订单。 我获得了以下数据:

  • 物品价值:10美元
  • 税率:20%
  • 折扣:2美元
  • 总计:10美元
现在,税收包含了产品价格,因此在Magento 2中默认情况下:

  • 物品价格:$10
  • 折扣后的商品价格:$8
  • 税款:8美元的20%=1.6美元
  • 总计:8美元+1.6美元=9.6美元
总计与提供的不相同。
我想添加税后折扣计算。

对于税务配置,有两种方法可以解决此问题。 在后端配置中: 申请客户税->设置“折扣前”;我想这应该能解决你的问题

您也可以为以下内容自定义代码: 在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;
    }

}
namespace\\Model\Sales\Total\Quote;
类别税扩展\Magento\Tax\Model\Sales\Total\Quote\Tax
{
/*在这里重写代码*/
公共函数构造(
/*在此处添加依赖项类*/){
父项::u构造(
/*这里的父类对象*/
);
}
/**
*报价地址的自定义征税总额
*
*@param Quote$Quote
*@param shippingAssignment接口$shippingAssignment
*@param Address\Total$Total
*@return$this
*/
公共功能收集(
\Magento\Quote\Model\Quote$Quote,
\Magento\Quote\Api\Data\shippingAssignment接口$shippingAssignment,
\Magento\Quote\Model\Quote\Address\Total$Total
) {
/*你的计算在这里*/
$total->setTaxAmount($set\u your\u tax\u here);
退还$this;
}
}

希望这有帮助

对于税务配置,有两种方法可以解决此问题。 在后端配置中: 申请客户税->设置“折扣前”;我想这应该能解决你的问题

您也可以为以下内容自定义代码: 在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;
    }

}
namespace\\Model\Sales\Total\Quote;
类别税扩展\Magento\Tax\Model\Sales\Total\Quote\Tax
{
/*在这里重写代码*/
公共函数构造(
/*在此处添加依赖项类*/){
父项::u构造(
/*这里的父类对象*/
);
}
/**
*报价地址的自定义征税总额
*
*@param Quote$Quote
*@param shippingAssignment接口$shippingAssignment
*@param Address\Total$Total
*@return$this
*/
公共功能收集(
\Magento\Quote\Model\Quote$Quote,
\Magento\Quote\Api\Data\shippingAssignment接口$shippingAssignment,
\Magento\Quote\Model\Quote\Address\Total$Total
) {
/*你的计算在这里*/
$total->setTaxAmount($set\u your\u tax\u here);
退还$this;
}
}

希望这有帮助

是的,你可以。。。。您可以使用默认FPT,并可以根据需要修改税额。 您可以在事件后使用“销售”\u“报价”\u“收集”\u“总计”\u以编程方式更改产品税额


这个答案您也可以在上面覆盖的税务模型中尝试,它工作得很好。

是的,您可以。。。。您可以使用默认FPT,并可以根据需要修改税额。 您可以在事件后使用“销售”\u“报价”\u“收集”\u“总计”\u以编程方式更改产品税额


您也可以在上面覆盖的税务模型中尝试这个答案,它工作正常。

hi@Pallavi,我们可以为报价项目设置自定义税务价格吗?hi@Pallavi,我们可以为报价项目设置自定义税务价格吗?