1

我正在使用 prestashop 1.6。我的网站为购买超过 80 美元提供“免费送货”服务。我的网站也有“买一送一”的促销活动。

现在,一件商品的价格约为60 美元,我坚持要求客户购买同一类别的 2 件产品,以获得买 1 送 1 的资格。

如果客户购买一件产品,它应该花费 60 美元(没有免费送货,因为最终价格 < 80)

如果客户购买 2 = 120 美元,但在“买 1 送 1”促销后,最终总价为 60。因此,该客户没有获得免费送货,但我的网站向该客户提供免费送货,因为“免费送货”的逻辑是基于打折前的总价(120 美元)。

我该如何解决这个问题?我希望免费送货的计算基于最终总价(折扣后)

点击这里查看打印屏幕

4

1 回答 1

0

您将不得不从 覆盖getPackageShippingCost()方法Cart.php

并更改这些行:

    } else {
        if ($shipping_method == Carrier::SHIPPING_METHOD_WEIGHT) {
            $shipping_cost += $carrier->getDeliveryPriceByWeight($this->getTotalWeight($product_list), $id_zone);
        } else { // by price
            $shipping_cost += $carrier->getDeliveryPriceByPrice($order_total, $id_zone, (int)$this->id_currency);
        }
    }
} else {
    if ($shipping_method == Carrier::SHIPPING_METHOD_WEIGHT) {
        $shipping_cost += $carrier->getDeliveryPriceByWeight($this->getTotalWeight($product_list), $id_zone);
    } else {
        $shipping_cost += $carrier->getDeliveryPriceByPrice($order_total, $id_zone, (int)$this->id_currency);
    }
}

通过替换$order_total$orderTotalwithDiscounts

    } else {
        if ($shipping_method == Carrier::SHIPPING_METHOD_WEIGHT) {
            $shipping_cost += $carrier->getDeliveryPriceByWeight($this->getTotalWeight($product_list), $id_zone);
        } else { // by price
            $shipping_cost += $carrier->getDeliveryPriceByPrice($orderTotalwithDiscounts, $id_zone, (int)$this->id_currency);
        }
    }
} else {
    if ($shipping_method == Carrier::SHIPPING_METHOD_WEIGHT) {
        $shipping_cost += $carrier->getDeliveryPriceByWeight($this->getTotalWeight($product_list), $id_zone);
    } else {
        $shipping_cost += $carrier->getDeliveryPriceByPrice($orderTotalwithDiscounts, $id_zone, (int)$this->id_currency);
    }
}

如果您不知道如何覆盖类,请查看此文档

于 2016-06-02T08:10:27.220 回答