バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 当日のお届け時間の表示について

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tatsu
投稿日時: 2011/6/27 7:37
対応状況: −−−
新米
登録日: 2011/6/23
居住地:
投稿: 4
当日のお届け時間の表示について
宅配系のサイトを製作しております。

当日含め、2日先までお客様がお届け日時を選択でき、一日に何便か配送に回ります。
しかし、当日の場合、購入時間がお届け時間を過ぎているにも関わらず、過ぎているお届け時間も表示されてしまいます。

そこで、受付締切り時間を設けて、過ぎたお届け時間は表示しないようにしたいのですがどうすればよろしいでしょうか?
(例えば、受付締切〜12:00の場合、配達時間は13:00〜15:00で、購入時間が12:00を過ぎたら13:00〜15:00のお届け時間は表示しないなど)

アドバイスのほう、よろしくお願いします。

ちなみに、当日配送に対応していなかったので、商品登録の時の発送日目安を即日にし、

/data/class/helper/SC_Helper_Purchase.phpの"//即日発送"を0にし"//お届け可能日のスタート値がセットされていれば"という部分も0にして当日の選択もできるようにしてあります。
(表示される事を確認しただけで、問題が無いかはまだ確認していません。)

------------------------------------------------------------------------------------------
[EC-CUBE] 2.11.1
[レンタルサーバ] Xサーバー
[OS] Linux
[PHP] PHP 5.1.6
[データベース] MySQL 5.0.77
[WEBサーバ] apache
[ブラウザ] Windows XP
------------------------------------------------------------------------------------------
134
投稿日時: 2011/6/27 19:54
対応状況: −−−
一人前
登録日: 2009/10/20
居住地: 京都市
投稿: 91
Re: 当日のお届け時間の表示について
JavaScriptで選択肢が動的に変更されるとカッコイイですが、
携帯では使用できなかったり、PCでも場合によってはすり抜けられたり
してしまいますので、サーバ側でチェックをするほうが確実かと思います。

サーバ側+JavaScriptが理想的ですが…。

とりあえず、サーバ側でのチェックでしたら、
LC_Page_Shopping_Payment::lfCheckError() に
下記のようなコードを書き足せばチェックできると思います。

10時までなら配達時刻の1と2が選べる、
12時までなら2のみ選べる、
12時以降はいずれも選べない、という形です。
「指定しない」が選択された場合など、細かな動作は調整が必要です。


$i = 0;
while (isset($arrForm['deliv_date'.$i])) {
	$deliv_date = $arrForm['deliv_date'.$i];
	$deliv_time = $arrForm['deliv_time_id'.$i];
	if (!SC_Utils_Ex::isBlank($deliv_date) && !SC_Utils_Ex::isBlank($deliv_time)) {
		$d = mb_strcut($deliv_date, 0, 10);
		$arrDate = explode("/", $d);
		if (mktime(0, 0, 0, $arrDate[1], $arrDate[2], $arrDate[0]) > date()) {
			if (date('G') >= 12 && in_array($deliv_time, array(1, 2))) {
				$objErr->arrErr['deliv_time_id'.$i] = "※ 本日お届けの締め切り時刻を過ぎているため、選択いただけません。<br>";
			}
			elseif (date('G') >= 10 && in_array($deliv_time, array(1))) {
				$objErr->arrErr['deliv_time_id'.$i] = "※ 本日午後お届けの締め切り時刻を過ぎているため、選択いただけません。<br>";
			}
		}
	}
	$i++;
}
tatsu
投稿日時: 2011/6/28 11:45
対応状況: −−−
新米
登録日: 2011/6/23
居住地:
投稿: 4
Re: 当日のお届け時間の表示について
ありがとうございます。
サーバー側のチェックだけでも十分です。

設置して確認したところ当日はうまくチェックできましたが、翌日以降までチェックしまいます。

当日のみにするにはどうしたらよろしいでしょうか?
134
投稿日時: 2011/6/28 12:28
対応状況: −−−
一人前
登録日: 2009/10/20
居住地: 京都市
投稿: 91
Re: 当日のお届け時間の表示について
すみません、試しに翌日以降をエラーとしたソースを貼り付けて
しまっていました。

中段あたり、下記の修正が必要です。
誤:if (mktime(0, 0, 0, $arrDate[1], $arrDate[2], $arrDate[0]) > date()) {
正:if (mktime(0, 0, 0, $arrDate[1], $arrDate[2], $arrDate[0]) <= date()) {

以下、修正した全文です。
尚、このソースでは、当日の日付を選択しても、
お届け希望時刻を「希望なし」にするとエラーになりません。
このあたりは調整が必要と思います。


$i = 0;
while (isset($arrForm['deliv_date'.$i])) {
	$deliv_date = $arrForm['deliv_date'.$i];
	$deliv_time = $arrForm['deliv_time_id'.$i];
	if (!SC_Utils_Ex::isBlank($deliv_date) && !SC_Utils_Ex::isBlank($deliv_time)) {
		$d = mb_strcut($deliv_date, 0, 10);
		$arrDate = explode("/", $d);
		if (mktime(0, 0, 0, $arrDate[1], $arrDate[2], $arrDate[0]) <= date()) {
			if (date('G') >= 12 && in_array($deliv_time, array(1, 2))) {
				$objErr->arrErr['deliv_time_id'.$i] = "※ 本日お届けの締め切り時刻を過ぎているため、選択いただけません。<br>";
			}
			elseif (date('G') >= 10 && in_array($deliv_time, array(1))) {
				$objErr->arrErr['deliv_time_id'.$i] = "※ 本日午後お届けの締め切り時刻を過ぎているため、選択いただけません。<br>";
			}
		}
	}
	$i++;
}
tatsu
投稿日時: 2011/6/28 13:36
対応状況: −−−
新米
登録日: 2011/6/23
居住地:
投稿: 4
Re: 当日のお届け時間の表示について
ありがとうございます。

変更してみたのですが、すると当日もエラーが出なくなってしまいした。

自分の設定が何か違っているのでしょうかね?
134
投稿日時: 2011/6/29 12:28
対応状況: −−−
一人前
登録日: 2009/10/20
居住地: 京都市
投稿: 91
Re: 当日のお届け時間の表示について
すみません、なぜか現在時刻を date() だけで取れると思い込んで
お恥ずかしいコードをさらしていました。
下記のような感じでしょうか。


$i = 0;
while (isset($arrForm['deliv_date'.$i])) {
	$deliv_date = $arrForm['deliv_date'.$i];
	$deliv_time = $arrForm['deliv_time_id'.$i];
	if (!SC_Utils_Ex::isBlank($deliv_date) && !SC_Utils_Ex::isBlank($deliv_time)) {
		$d = mb_strcut($deliv_date, 0, 10);
		$arrDate = explode("/", $d);
		if (mktime(0, 0, 0, $arrDate[1], $arrDate[2], $arrDate[0]) <= mktime()) {
			if (date('G') >= 12 && in_array($deliv_time, array(1, 2))) {
				$objErr->arrErr['deliv_time_id'.$i] = "※ 本日お届けの締め切り時刻を過ぎているため、選択いただけません。<br>";
			}
			elseif (date('G') >= 10 && in_array($deliv_time, array(1))) {
				$objErr->arrErr['deliv_time_id'.$i] = "※ 本日午前お届けの締め切り時刻を過ぎているため、選択いただけません。<br>";
			}
		}
	}
	$i++;
}
tatsu
投稿日時: 2011/6/29 18:08
対応状況: −−−
新米
登録日: 2011/6/23
居住地:
投稿: 4
Re: 当日のお届け時間の表示について
うまく行きました!

助かりました。ありがとうございます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,287名です
総投稿数は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.