バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 配送料の計算を変更したい

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
umebius
投稿日時: 2019/4/6 23:37
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 配送料の計算を変更したい
そうですね、getNewDetailsの前だからです。

ですので、getNewDetailsの後で、もう一度個数計算してみてはいかがでしょうか?
あるいはShippingエンティティに集計メソッド作って置けば良いと思います。CartエンティティのgetTotalQuantityのような形で。


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

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

mii
投稿日時: 2019/4/6 10:16
対応状況: −−−
半人前
登録日: 2019/2/21
居住地:
投稿: 21
Re: 配送料の計算を変更したい
ありがとうございます、確認してみました。
一応下記式に置き換えてみたのですが、やはり0になるのは$this->getNewDetailsの前だからという理由ですよね?

$itemQuantity = 0;
$shipmentItems=$Shipping->getShipmentItems();
foreach ($shipmentItems as $ShipmentItem) {
$itemQuantity += $ShipmentItem->getQuantity();
}
$Shipping->setShippingDeliveryKosu($itemQuantity);

個数を計算の必須条件にするとなると、どっかから引っ張ってくるってことになると思いますが、適切なのはカートとかでしょうか
umebius
投稿日時: 2019/4/6 9:22
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 配送料の計算を変更したい
カートから確認画面へ移動した時、ShoppingServiceのregisterPreOrder内でShippingが生成されますが
$Order = $this->getNewDetails($Order);が呼ばれるまで個数の情報は入っていません。

カートから移動した時にsetShippingDeliveryFeeが呼ばれるのはその1つ前のgetNewShippingだから0なのではないでしょうか(ちゃんと確認してませんが)

また、Shipping内の個数を取得するならOrderDetailではなく、ShipmentItemから個数とった方が良いかもしれません。


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

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

mii
投稿日時: 2019/4/6 9:12
対応状況: −−−
半人前
登録日: 2019/2/21
居住地:
投稿: 21
配送料の計算を変更したい
[EC-CUBE]3.017
[レンタルサーバ]ロリポップ
[OS]Win10
[PHP]5.6
[データベース]MySQL5.6

カスタマイズで、Eccube/Service/ShopingService.php内にて思う値が取れない状態でして、ご質問させていただきます。(ShoppingController.phpにも類似記述してる、省略)
カートからレジに移動間の計算で、Eccube/Entity/Shippingへ項目を追加しています。(名前:Kosu)

入れたい値は商品の個数合計(複数注文の場合はそれぞれの注文での個数合計)で、個数を取得できたらこれを元にいろいろ式をいじりたいのですが、今のところ0で取得できていません。以下の関数を修正して試しました
ShopingService.php内下記部位

public function setShippingDeliveryFee(Shipping $Shipping, Delivery $Delivery = null,Order $Order = null)
{/*←$Order追加*/
(省略)
$Shipping->setShippingDeliveryFee($deliveryFee->getFee() + $productDeliveryFeeTotal);

if(!empty($Order)){ /*↓ここから追加*/
$OrderDetailItems=$Order->getOrderDetails();
$itemQuantity=0;
foreach($OrderDetailItems as $OrderDetailItem){$itemQuantity+=$OrderDetailItem->getQuantity();}
$Shipping->setShippingDeliveryKosuu($itemQuantity);
}
}

スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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.