1

prestashop 1.6 を使用しています。私のサイトでは、80 ドル以上の購入で「送料無料」を提供しています。当サイトでは「1個買うと1個プレゼント」キャンペーンも実施中です。

現在、1 つの商品の価格は約60 ドルであり、1 つ買うと 1 つもらえる権利を得るために、同じカテゴリーから 2 つの商品を購入するよう顧客に主張しました。

顧客が 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 に答える