2016-06-01 10 views
1

私はprestashop 1.6を使用しています。私のサイトは、購入のために "送料無料"を提供しています80ドル以上。私のサイトは「Buy 1 get free 1」というプロモーションを持っています。Prestashop 1.6 - 最終合計価格に基づく無料配送

今、一つの項目を約60ドルを要することができると私は順番に同じカテゴリから2つの製品を購入する顧客を主張し、顧客が一つの製品を購入した場合1.

を取得購入1のために資格を得るために、

顧客は2 = 120ドルを購入した場合が、後に昇進「1は1自由を得る買う」、最終合計価格が正しいことにより、だから、60である。それは、60ドル(最終価格< 80があるため何も送料無料)の費用べきではありませんこの顧客は送料が無料になるわけではありませんが、私のサイトはこの顧客に無料配送を提供します。なぜなら、「無料配送」ロジックは割引前の合計金額(120ドル) 。

どうすれば解決できますか?私はあなたがCart.phpからメソッドgetPackageShippingCost()をオーバーライドする必要があります

click here to view print screen

+0

この質問とプログラミングの関係をより明確に理解できますか?この質問に関連するコードが表示されない –

+0

コードを掘り下げずに解決できるのであれば、どうやって知りたいのですか? 私はコードを掘る必要がある場合、私はどのファイルを変更する方法を知りたいです。 – Sean

+0

あなたの質問がPrestaShopフォーラムに適しているように感じます –

答えて

0

(割引後の後)、最終的な合計金額に基づいていると、送料無料の計算をしたいです。

そして、それらの行に変更:$orderTotalwithDiscounts$order_totalを置き換えることにより、

} 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); 
    } 
} 

} 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); 
    } 
} 

をあなたはクラスをオーバーライドする方法がわからない場合は、this documentationを見てください。

関連する問題