バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 出荷締め切り時刻以降はお届け日を1日延長したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
resorty
投稿日時: 2019/4/8 13:47
対応状況: −−−
新米
登録日: 2019/4/8
居住地:
投稿: 8
出荷締め切り時刻以降はお届け日を1日延長したい
[EC-CUBE]3.0.17
[レンタルサーバ]xserver
[OS]Linux
[PHP]7.1.18
[データベース]MuSQL 5.7.16
[WEBサーバ]Apache
[ブラウザ]Chrome 73.0.3683.103
[導入プラグインの有無]
詳しい商品一覧
どこでも商品情報取得
CategoryContent
カテゴリー並び替えプラグイン
最近チェックした商品
商品お問い合わせ
メールテンプレート機能拡張プラグイン
メール設定プラグイン
OrderPdf
ぱんクズプラグイン
関連商品プラグイン
配送伝票番号プラグイン
受注管理詳細画面登録ボタン追加プラグイン
新着商品ブロックプラグイン
サイトマップ
PAGE TOP プラグイン
[カスタマイズの有無]
ページタイトル変更等、軽微なカスタマイズ多数

当フォーラム内で似たような質問があったのですが、eccubeのバージョンが違うようでしたので質問させていただきます。

「お届け可能日」が「1~2日後」の商品を購入する場合、注文日の翌日からお届け日を選択できるかと思いますが、当社出荷締め切り時刻(16時)を過ぎても(実際は翌日配達できないのに)翌日配達を選択できてしまうため、なんとか対処できればと考えております。

/src/Eccube/Service/ShoppingService.php の getFormDeliveryDates() の部分で、「もし16時~0時までなら配送日数に1日加える」といった処理を加えればよいのではないかと思うのですが、恥ずかしながらphpの知識がないためどう書けばよいのかわかりません。

お分かりになる方おられましたらご教示のほど何卒よろしくお願いいたします。
468
投稿日時: 2019/4/9 9:50
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 出荷締め切り時刻以降はお届け日を1日延長したい
該当function内の$minDateが直近の配送可能日になるかと思いますので、
new \DatePeriod()の処理の前に、現在時刻を判定して$minDateに+1すれば良いかと思います。

16時以降かどうかの判定は、DateTimeインスタンスの比較で判定できるのではないかと思います。
//現在時刻のDateTimeインスタンス
$date1 = new DateTime();

//本日の16時のDateTimeインスタンス
$date2 = new DateTime($date1->format('Y-m-d 16:00:00'));

if($date1 > $date2) {
    //16時以降
    $minDate += 1;
}


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

resorty
投稿日時: 2019/4/9 12:49
対応状況: 解決済
新米
登録日: 2019/4/8
居住地:
投稿: 8
Re: 出荷締め切り時刻以降はお届け日を1日延長したい
ご返答誠にありがとうございます。

ご提示いただきましたコードを $period = new \DatePeriod の前に追記してみましたところ、下記のようなエラーとなりました……が、

ClassNotFoundException in ShoppingService.php line ****:
Attempted to load class "DateTime" from namespace "Eccube\Service".
Did you forget a "use" statement for "Symfony\Component\Validator\Constraints\DateTime"?

たまたま思い付きなのですが、DateTime の前に「\」をつけてみたところエラーがなくなり時刻による判定も成功いたしました!
# これでよかったのかどうかわかりませんが。

対応できない配達日を指定いただくたびにお断りや確認などしておりましたが、お陰様で随分と作業がはかどると思います。
大変助かりました。
このたびは誠にありがとうございました。
心よりお礼申し上げます。


//現在時刻のDateTimeインスタンス
$date1 = new \DateTime();  //ここが当初エラーの出た行にあたります。\を付けたらエラー解消しました。

//本日の16時のDateTimeインスタンス
$date2 = new \DateTime($date1->format('Y-m-d 16:00:00'));  //この部分にも\付加

if($date1 > $date2) {
//16時以降
$minDate += 1;
}
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
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.