在 Magento 中添加自定义折扣订单总计不会更改销售税

2024-04-28

我创建了一个自定义订单总额,在某些情况下会提供折扣。总计总是正确的,但是销售税计算在计算时没有考虑我的折扣(因此,如果我提供 10 美元的折扣,则销售税金额是根据折扣前的全部金额计算的)。

以下面为例:

Subtotal:              $856.49
Multi Unit Discounts: -$22.50
Shipping:              $10.96
Tax:                   $52.05
Grand Total:           $897.00

我的自定义折扣是多单位折扣。税率为6%。正如您所看到的,基于所有行项目的总计是正确的,但税额本身不正确(它基于除我的折扣之外的所有行项目)。

在我的 config.xml 文件中,我有以下内容可以让我的订单总数在系统中工作:

     <sales>
        <quote>
            <totals>
                <mud>
                    <class>Wpe_Multiunitdiscount_Model_Multiunitdiscount</class>
                    <before>tax</before>
                </mud>
            </totals>
        </quote>
    </sales>    

以下是我的订单总课内容:

class Wpe_Multiunitdiscount_Model_Multiunitdiscount extends Mage_Sales_Model_Quote_Address_Total_Abstract {

public function collect(Mage_Sales_Model_Quote_Address $address) {

    if ($address->getData('address_type')=='billing') return $this;

    $items = $address->getAllItems();

    $total_discount = 0;

    foreach($items as $item) {
        $product_discounts = Mage::helper("multiunitdiscount")->findDiscounts($item);
        if($product_discounts > 0) {
            $total_discount += $product_discounts;
        }
    }

    $address->setMudAmount($total_discount);

    $address->setGrandTotal($address->getGrandTotal() - $address->getMudAmount() );
$address->setBaseGrandTotal($address->getBaseGrandTotal() - $address->getMudAmount());
    return $this;
}

public function fetch(Mage_Sales_Model_Quote_Address $address) {

    if ($address->getData('address_type')=='billing') return $this;

    if($address->getMudAmount() > 0) {

        $address->addTotal(array(
            'code'  => $this->getCode(),
            'title' => Mage::helper('sales')->__('Multi Unit Discounts'),
            'value' => -$address->getMudAmount(),
        ));
    }
    return $this;
}

}

为了不在这里发布大量我不确定是否有必要的代码,我可以告诉您,上面代码中的帮助程序只是返回报价中该特定项目的折扣金额。

有人可以帮助我指出正确的方向以正确计算销售税吗?

EDIT:

为了保持简单,我删除了计算折扣背后的许多逻辑,现在尝试简单地从订单总额中扣除 10 美元作为折扣。正如建议的那样,我没有修改地址的总计,现在只设置折扣金额和基本折扣金额。现在销售税没有加起来,总计也关闭了。也许如果有人可以指点我一个好的教程会有帮助吗?我似乎不明白订单总数是如何相互作用的。

public function collect(Mage_Sales_Model_Quote_Address $address) {

    if ($address->getData('address_type')=='billing') return $this;

    $address->setMudDiscount(10);
    $address->setDiscountAmount($address->getDiscountAmount() + $address->getMudDiscount());
    $address->setBaseDiscountAmount($address->getBaseDiscountAmount() + $address->getMudDiscount());

    return $this;
}

public function fetch(Mage_Sales_Model_Quote_Address $address) {

    if ($address->getData('address_type')=='billing') return $this;

    $address->addTotal(array(
        'code'  => $this->getCode(),
        'title' => Mage::helper('sales')->__('Multi Unit Discounts'),
        'value' => -$address->getMudDiscount(),
    ));
    return $this;
}

Go to System > Configuration。选择 ”Tax” 从左侧导航中,然后打开"Calculation Settings"组(如果尚未组)。

尝试更改“Apply Customer Tax“参数为”After Discount"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Magento 中添加自定义折扣订单总计不会更改销售税 的相关文章

  • 运行没有扩展名的 PHP 页面

    我想在 apache Web 服务器上运行我的 PHP 网页 而不需要 php扩大 所以我添加了以下代码 RewriteEngine on RewriteBase Rewritecond REQUEST URI NC RewriteRule
  • 使用 php 获取当前月份的最后 3 个月

    我想获取当前月份最近 3 个月的名称 例如当前月份是八月 所以 我想要六月 七月 八月这样的数据 我已经尝试过这段代码echo date F strtotime 3 months 它只返回六月 如何使用 php 获取当前月份的最后 3 个月
  • 通过 __get() 通过引用返回 null

    快速规格 PHP 5 3 error reporting 1 the highest 我正在使用 get 通过引用技巧神奇地访问对象中任意深度的数组元素 快速示例 public function get key return isset t
  • SMTP 配置在生产中不起作用

    我正在尝试在提交表单时发送电子邮件 我正在使用 PHPMailer 使用以下配置发送邮件 mail new PHPMailer mail gt isSMTP mail gt Host mail example in mail gt Port
  • Yii2 异常:ApcCache 需要加载 PHP apc 扩展

    在高级模板前端的主配置中配置缓存组件时 我收到异常 在我的 php ini 上启用了扩展 rsults 如何解决此问题 前端 config main php cache gt class gt yii caching ApcCache ke
  • PHP 开发相当于 Mongrel/Webrick 吗?

    PHP 开发中是否有与 Rails 开发期间使用 Mongrel Webrick 等效的方法 我通常在端口 3000 上使用 Mongrel 在开发过程中为我的 Rails 应用程序提供服务 我从事 PHP 开发已经有几年了 据我所知 方法
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 为什么验证不起作用并跳转到另一个页面?

    我写了一个customer display php来验证数据 到目前为止只有名字 但无论名字字段是否为空 网页都会跳转到customer search php并且没有更改数据库中的信息 为什么
  • 使用先前的反向引用作为命名捕获组的名称

    有没有办法使用对先前捕获组的反向引用作为捕获组的名称命名捕获组 这可能不可能 如果不可能 那么这就是一个有效的答案 下列 data description some description preg match data matches p
  • 如何在 PHP 中使用 cURL 发出同时包含 GET 和 POST 参数的请求?

    其他人已经问过如何从 perl java bash 等执行此操作 但我需要在 PHP 中执行此操作 并且我没有看到任何已提出的专门与 PHP 相关的问题 或包含 PHP 的答案 My code ch curl init url curl s
  • 限制自己超载外部 API 的速率

    我发现了很多信息和脚本示例 展示了如何对 API 用户进行速率限制 但我无法找到任何示例来说明在施加这些限制时如何对您自己的 API 请求进行速率限制 我总是用诸如以下的代码来限制我的脚本sleep or usleep命令 但感觉这是一种低
  • PHP:读取字体文件的 TrueType/OpenType 元数据

    如何阅读字体详细信息 例如 字体在其元数据中包含版权 姓氏 设计者 版本等信息 我还希望脚本能够计算文件中的字形数量 并返回字体支持的语言 例如 典型的字体可能包含西方语言 瑞典语和罗马语言支持 并具有数百个字形 它应该支持 truetyp
  • Laravel 5 中的自定义验证器

    我正在将 Laravel 应用程序从 4 升级到 5 但是 我有一个自定义验证器 但无法运行 在L4中 我做了一个验证器 php文件并将其包含在全局 php using require app path validators php 我尝试
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • 如何在 OS X 上使用 OpenSSL 1.0.1 编译 PHP 5.5.19

    我已经安装了 OpenSSL 1 0 1j usr local ssl现在我尝试使用此版本的 OpenSSL 编译 PHP 5 5 19 这是我的配置过程 export CFLAGS arch x86 64 export CXXFLAGS
  • MVC 模式中的验证层

    验证模型将使用的数据的最佳位置在哪里 例如 考虑登记表 我们有一些来自注册表的数据 那么验证这些数据的最佳位置在哪里 我们应该通过 if 语句或特殊的验证器类来检查每个数据 这意味着大量的编码 所以我想了解在哪里可以做到这一点 在控制器中
  • URL 中的 %2F 中断并且未引用所需的 .php 文件 [重复]

    这个问题在这里已经有答案了 我需要将 作为变量作为 URL 的一部分传递 我的结构如下所示 www domain com listings page 1 city Burnaby South type Townhome bedroom 2
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入

随机推荐