EC-CUBEバージョン:3.0.16
PHPバージョン:7.2.10
DBバージョン:MySQL 5.7.23
WEBサーバ:Apache/2.2.34 (Unix)
ECCUBE3で作成したサイトにて
複数の配送先を設定し、配送料無料対象商品をカートに入れるとカート内全ての配送料が無料になってしまうのですが、
配送料無料対象商品を配送しない場所は配送料金を有料にしたいです。
全ての配送料を無料にしている箇所(下記のコード)はなんとか
見つけられたのですが、カート内の情報から
配送料無料対象商品が含まれているお届け先の情報だけを抽出する方法などが、わかりません。
php
1//UtilService.php 2public function setDeliveryFreeProduct($Order) 3 { 4 $app = $this->app; 5 $exSouryo=0; 6 $deliv_free_flg = $this->checkDeliveryFree($Order); 7 if ($deliv_free_flg) { 8 $delivFee = $Order->getDeliveryFeeTotal(); 9 $before_total = $Order->getTotal(); 10 $before_payment_total = $Order->getPaymentTotal(); 11 12ここをコメントアウトすると全ての配送料が無料になる事はなくなった。 13//$Order->setDeliveryFeeTotal(0); 14 15 $shippings = $Order->getShippings(); 16 foreach ($shippings as $Shipping) { 17 if ($Shipping->getPref()->getId()%46==1) { 18 if ($Shipping->getShippingDeliveryFee()<600) { 19 $Shipping->setShippingDeliveryFee(600); 20 } 21 $Order->setDeliveryFeeTotal($Order->getDeliveryFeeTotal()+600); 22 $exSouryo+=600; 23 #$delivFee=0; 24 if($_SERVER["REMOTE_ADDR"]=="000.00.00.000"){ echo "DEBUG!! _ exSouryo::{$before_total}-{$delivFee}+{$exSouryo}=".($before_total - $delivFee+$exSouryo); } 25 }else{ 26 $Shipping->setShippingDeliveryFee(0); 27 } 28 } 29 $Order->setTotal($before_total - $delivFee+$exSouryo); 30 $Order->setPaymentTotal($before_payment_total - $delivFee+$exSouryo); 31 } 32 33 $app['orm.em']->persist($Order); 34 $app['orm.em']->flush(); 35 } 36
解決方法や参考URL等、どなたか恐れ入りますがよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー