バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > SC_Helper_Purchase.phpで定休日の判別をしたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
longview
投稿日時: 2014/10/29 14:31
対応状況: −−−
半人前
登録日: 2013/6/4
居住地:
投稿: 18
SC_Helper_Purchase.phpで定休日の判別をしたい
以下の記事を参考にお届け日の調整を行いました。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=14921&forum=10&post_id=66718

?定休日のご注文は翌々営業日以降指定
?14時以降は翌々営業日以降指定

?はdate('G')を利用し、実現できたのですが、
?がうまくいきません。
10/29が定休日で14時以降に注文したとすると、11/1以降の指定になってしまいます。(本当は10/31にしたい)
定休日の注文は時間指定は関係なく、翌々営業日指定とするために、注文日が定休日であればという条件式を書きたいのです。

SC_Date.phpやisHolidayあたりを参考に色々試してみましたがうかくいきません。


    public function getDateArray($start_day, $end_day)
    {
        $masterData = new SC_DB_MasterData_Ex();
        $arrWDAY = $masterData->getMasterData('mtb_wday');
        //お届け可能日のスタート値がセットされていれば
        if ($start_day >= 0) {
            $now_time = time();

/* added */
            $horiday = new SC_Date_Ex();
            $start_day_i = 0;
            for ($i = 0;; $i++) {
                // 基本時間から日数を追加していく
                $tmp_time = $now_time + ($i * 24 * 3600);
                list($y, $m, $d, $w) = explode(' ', date('Y m d w', $tmp_time));
                if ($horiday->isHoliday($y, $m, $d)) {
                } else {
                    if ($start_day_i >= $start_day) {
                        // 即日発送 = 1($start_day_new)
                        $start_day_new = $i;
                        break;
                    }
                    $start_day_i++;
                }
            }
//追加ここから
        if(注文日が定休日ならという条件文){
		$start_day = $start_day_new + 1;
        }else{
            //時刻を取得
            	$now_jikoku = date('G');
		if(date('G') >= 14){
		$start_day = $start_day_new + 2;
		}else{
		$start_day = $start_day_new + 1;
		}
        }
//追加ここまで
            //$start_day = $start_day_new;
/* added */

            $max_day = $start_day + $end_day;
以下続く
}

ちなみに即日と1-2日後の設定は0にしています。
tsuji
投稿日時: 2014/10/29 15:01
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: SC_Helper_Purchase.phpで定休日の判別をしたい
longview 様

「注文日が定休日ならという条件文」であれば、SC_Date.phpのisHolidayに
注文日の年月日を入れたらうまくいきそうな気がしますので、
当日の年月日をisHolidayに入れてみてはいかがでしょうか?


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

longview
投稿日時: 2014/10/29 16:01
対応状況: −−−
半人前
登録日: 2013/6/4
居住地:
投稿: 18
Re: SC_Helper_Purchase.phpで定休日の判別をしたい
tsuji様ありがとうございます。

当日の年月日をisHolidayに入れるとは具体的にどう記述するのでしょうか?

当日の年月日->isHoliday($y, $m, $d)という感じでしょうか。
date() == isHoliday($y, $m, $d)
date() -> isHoliday($y, $m, $d)
としてみましたが駄目でした。
tsuji
投稿日時: 2014/10/29 16:34
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: SC_Helper_Purchase.phpで定休日の判別をしたい
longview 様

SC_Date.phpの中にisHolidayの記述があります。
isHolidayの戻り値を見るなら、if文の書き方が分かるかと思います。

> isHoliday($y, $m, $d)
$y, $m, $dにそれぞれシステム日付の年、月、日が入っているならば
その記述の仕方でよいと思います。


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

longview
投稿日時: 2014/10/29 18:14
対応状況: −−−
半人前
登録日: 2013/6/4
居住地:
投稿: 18
Re: SC_Helper_Purchase.phpで定休日の判別をしたい
tsuji様ありがとうございます。

isHolidayはtrueを返したら休日と判定しているので、
以下のように書いたのですが、システムエラーになってしまいました。


	$year=date('Y');
	$month=date('m');
	$day=date('d');
	if(isHoliday($year,$month,$day) == true) {
    }


isHoliday に注文日の年月日を入れて、休日だったらtrueが返るということを書きたかったのですが、難しいですね…。
図々しいですが、もう少しアドバイスを頂けると助かります。
tsuji
投稿日時: 2014/10/29 19:13
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: SC_Helper_Purchase.phpで定休日の判別をしたい
longview 様

isHolidayの参照先が明確になっていないことがエラーの原因です。
SC_Dateのオブジェクトを作成してそこから呼ぶことになります。
コードは保証しませんが、下記のようになるかと思います。


	$year=date('Y');
	$month=date('m');
	$day=date('d');
        $objDate = new SC_Date_Ex();
	if($objDate->isHoliday($year,$month,$day) == true) {
    }


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

longview
投稿日時: 2014/10/29 19:57
対応状況: 解決済
半人前
登録日: 2013/6/4
居住地:
投稿: 18
Re: SC_Helper_Purchase.phpで定休日の判別をしたい
tsuji様ありがとうございます。
解決いたしました。


$year=date('Y');
$month=date('m');
$day=date('d');
$objDate = new SC_Date_Ex();
if($objDate->isHoliday($year,$month,$day) == true) {
}


教えていただいた上記のコードでもうまくいったのですが、
もともと$holidayが参照しに行っていることに気づき、$objDateと同じ役割をしていたので、$holidayをそのまま使用しましたところ、こちらもうまくいきました。


            $horiday = new SC_Date_Ex();
            $start_day_i = 0;
            for ($i = 0;; $i++) {
                // 基本時間から日数を追加していく
                $tmp_time = $now_time + ($i * 24 * 3600);
                list($y, $m, $d, $w) = explode(' ', date('Y m d w', $tmp_time));
                if ($horiday->isHoliday($y, $m, $d)) {
                } else {
                    if ($start_day_i >= $start_day) {
                        // 即日発送 = 1($start_day_new)
                        $start_day_new = $i;
                        break;
                    }
                    $start_day_i++;
                }
            }

この$holidayを使用して

$year=date('Y');
$month=date('m');
$day=date('d');
if ($horiday->isHoliday($year, $month, $day)==true) {
}


tsuji様お付き合いいただきましてありがとうございました。
やみくもにやっていましたが、どこを注目したらよいのか記号の意味合い(->は参照なのですね)など大変勉強になりました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1291
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.