バージョン選択

フォーラム

メニュー

オンライン状況

60 人のユーザが現在オンラインです。 (45 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 60
もっと...

サイト内検索

質問 > 管理機能 > ec-cube3で購入合計金額によって送料無料にしたい

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
novarod2
投稿日時: 2019/11/18 15:25
対応状況: 確認中
新米
登録日: 2019/11/5
居住地:
投稿: 9
Re: ec-cube3で購入合計金額によって送料無料にしたい
ご返事ありがとうございます。

- $Order->getDiscount() このコードを入れて見ましたが、結果が変わらないですね、、、理由がわからないですね、、、、



public function setDeliveryFreeAmount(Order $Order)
{
// 配送料無料条件(合計金額)
$deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount();
if (!is_null($deliveryFreeAmount)) {
// 合計金額が設定金額以上であれば送料無料
if ($Order->getSubTotal() - $Order->getDiscount() >= $deliveryFreeAmount) {
$Order->setDeliveryFeeTotal(0);
// お届け先情報の配送料も0にセット
$shippings = $Order->getShippings();
foreach ($shippings as $Shipping) {
$Shipping->setShippingDeliveryFee(0);
}
}
}
}
umebius
投稿日時: 2019/11/16 14:39
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: ec-cube3で購入合計金額によって送料無料にしたい
$Order->getSubTotal() + $Order->getDiscount()
ではなく、
$Order->getSubTotal() - $Order->getDiscount()では?
novarod2
投稿日時: 2019/11/11 16:17
対応状況: −−−
新米
登録日: 2019/11/5
居住地:
投稿: 9
Re: ec-cube3で購入合計金額によって送料無料にしたい
ありがとうございます。

コードを

public function setDeliveryFreeAmount(Order $Order)
{
// 配送料無料条件(合計金額)
$deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount();
if (!is_null($deliveryFreeAmount)) {
// 合計金額が設定金額以上であれば送料無料
if ($Order->getSubTotal() + $Order->getDiscount() >= $deliveryFreeAmount) {
$Order->setDeliveryFeeTotal(0);
// お届け先情報の配送料も0にセット
$shippings = $Order->getShippings();
foreach ($shippings as $Shipping) {
$Shipping->setShippingDeliveryFee(0);
}
}
}
}

修正しましたが、変わらないです。
umebius
投稿日時: 2019/11/11 6:37
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: ec-cube3で購入合計金額によって送料無料にしたい
値引額は$Order->getDiscount()なので
これをsubtotalから引いてやれば値引き後の価格が出ます。
novarod2
投稿日時: 2019/11/8 14:27
対応状況: 確認中
新米
登録日: 2019/11/5
居住地:
投稿: 9
Re: ec-cube3で購入合計金額によって送料無料にしたい
umebius 様

ありがとうございます。

変更して見ましたが、

public function setDeliveryFreeAmount(Order $Order)
{
// 配送料無料条件(合計金額)
$deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount();
if (!is_null($deliveryFreeAmount)) {
// 合計金額が設定金額以上であれば送料無料
if ($Order->getSubTotal() + $Order->getAmount >= $deliveryFreeAmount) {
$Order->setDeliveryFeeTotal(0);
// お届け先情報の配送料も0にセット
$shippings = $Order->getShippings();
foreach ($shippings as $Shipping) {
$Shipping->setShippingDeliveryFee(0);
}
}
}
}

問題があるのか変わらないです。
申し上げございませんが、
1、2番のもっと詳しく教えて下さいませんか?
umebius
投稿日時: 2019/11/6 9:19
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: ec-cube3で購入合計金額によって送料無料にしたい

1. 送料無料の計算は標準では「商品代金」だけで判断されるので、ShoppingService::setDeliveryFreeAmountでポイント利用額(値引き)を計算式に入れてやる必要があります。

2. ポイント利用金額がユーザーによって変更されたタイミングで、
ShoppingService::getAmountを呼んで合計額の更新をする必要があります。


他にも必要な処理があるかもしれませんが、概ね上記になるかと思います。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

novarod2
投稿日時: 2019/11/5 16:42
対応状況: −−−
新米
登録日: 2019/11/5
居住地:
投稿: 9
ec-cube3で購入合計金額によって送料無料にしたい
▼テンプレート
[EC-CUBE] 3.0.16
[レンタルサーバ] sakura vps サーバ
[OS] Linux ik1-301-10745
[PHP] 7.1.22
[データベース] MySQL 5.5.60-MariaDB
[WEBサーバ] Apache/2.4.6 (CentOS)
[ブラウザ] chrome, firefox
[導入プラグインの有無]
[カスタマイズの有無]
[現象]

購入金額5000円以上の場合:送料無料したいですが、

カートに商品を入れてご注文内容確認ページで見ると

小計     5,142円
手数料     0円
送料      0円
値引き     -143円
利用ポイント  143 pt
加算ポイント   1 pt

合計 4,999円税込

この状況になります。

ポイント利用して合計が4,999円になりましたげと小計が5,142円などで送料は0円になってます。
ポイント利用して合計が5,000円未満になると設定した送料が追加になるようにはどうすればいいでしょうか?

※設定>ショップマスター>送料設定>送料無料条件(金額)は 5,000円になっています。
追加で下のようにコードも修正して見ましたけとかわらなったので元に戻りました。
/src/Eccube/Service/ShoppingService.php 683行目付近
------------------------------------------------------------------
修正後

public function setDeliveryFreeAmount(Order $Order)
{
// 配送料無料条件(合計金額)
$deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount();
if (!is_null($deliveryFreeAmount)) {
// 合計金額が設定金額以上であれば送料無料
if ($Order->getSubTotal() <= 5000) {
}else{
$Order->setDeliveryFeeTotal(0);

// お届け先情報の配送料も0にセット
$shippings = $Order->getShippings();
foreach ($shippings as $Shipping) {
$Shipping->setShippingDeliveryFee(0);
}
}
}
}


/* 元のコード▼ー------*/
public function setDeliveryFreeAmount(Order $Order)
{
// 配送料無料条件(合計金額)
$deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount();
if (!is_null($deliveryFreeAmount)) {
// 合計金額が設定金額以上であれば送料無料
if ($Order->getSubTotal() >= $deliveryFreeAmount) {
$Order->setDeliveryFeeTotal(0);
// お届け先情報の配送料も0にセット
$shippings = $Order->getShippings();
foreach ($shippings as $Shipping) {
$Shipping->setShippingDeliveryFee(0);
}
}
}
}
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,288名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.