バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > お届け日に祝日を反映したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
shimakko
投稿日時: 2012/1/7 12:05
対応状況: −−−
半人前
登録日: 2011/11/11
居住地:
投稿: 19
お届け日に祝日を反映したい
当社では土日祝を休みとしており、発送業務をしておりません。
また、AM10時までの注文は当日中に処理しますが、10時以降の注文は翌日に処理しています。
さらに、連休中はそのぶんだけ発送業務が延びます。
発送日が延びた分だけ、最短お届け日も延びます

そこで、注文時に選べる「お届け日」にこれを反映させたいと思っています。
以下のように書いてみたのですが「基本情報管理>定休日管理」の祝日やお休みだけが反映されません。
どの部分を修正すればいいでしょうか?

PHP初心者で綺麗でないソースだと思いますがご容赦下さい

EC-CUBEバージョン 2.11.4
PHPバージョン PHP 5.3.3
DBバージョン MySQL 5.0.77

変更ファイル class>helper>SC_Helper_Purchase.php

引用:

/**
* お届け可能日のスタート値から, お届け日の配列を取得する.
*/
function getDateArray($start_day, $end_day) {
$masterData = new SC_DB_MasterData();
$arrWDAY = $masterData->getMasterData("mtb_wday");
//お届け可能日のスタート値がセットされていれば
if($start_day >= 1) {
$now_time = time();



// ここから追加
// カレンダーブロック表示用オブジェクトを生成し、定休日設定を取得
require_once CLASS_REALDIR . 'pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php';
$BlocCalendar = new LC_Page_FrontParts_Bloc_Calendar();
$BlocCalendar->arrRegularHoliday = $BlocCalendar->lfGetRegularHoliday();
$BlocCalendar->arrHoliday = $BlocCalendar->lfGetHoliday();



// 自作追加 日数加算
$j=0;
// フラグ
$shop_i = 0;

//今の日付・時間の取得
$today = getdate();
$y=$today['year'];
$m=$today['mon'] ;
$d=$today['mday'];
$shop_time = date("H"."i");
//$shop_time += 800;

//今日が日曜か祝なら加算 フラグオン
$ptimestamp = mktime(0, 0, 0, $m, $d, $y);
list($dy, $dm, $dd, $dw) = split(" ", date("y m d w", $ptimestamp));
$dm = intval( $dm );
$dd = intval( $dd );
$dy = intval( $dy );
if ( $BlocCalendar->lfCheckHoliday( $y, $m, $d ) )
{
$j++;
$shop_i = 1;
}elseif ( $shop_time > 1000 )
//日曜か祝でなく、10時以降なら加算 フラグオン
{
$j++;
$shop_i = 1;
}

//次が日曜か祝日なら
$ptimestamp = mktime(0, 0, 0, $m, $d+1, $y);
list($dy, $dm, $dd, $dw) = split(" ", date("y m d w", $ptimestamp));
$dm = intval( $dm );
$dd = intval( $dd );
$dy = intval( $dy );
if ( $BlocCalendar->lfCheckHoliday( $y, $m, $d ) )
{
//フラグオンなら加算 
if ( $shop_i == 1 )
{
$j++;
$shop_i = 1;
}
//次が日曜か祝日でないならフラグオフ
}else {
$shop_i = 0;
}
//フラグオンなら
if ( i == 1 )
{

for ($shop_ii=2; $i == 1; $shop_ii++)
{
//次次〜が日曜か祝日なら 加算
$ptimestamp = mktime(0, 0, 0, $m, $d+$shop_ii, $y);
list($dy, $dm, $dd, $dw) = split(" ", date("y m d w", $ptimestamp));
$dm = intval( $dm );
$dd = intval( $dd );
$dy = intval( $dy );
{
continue;
}
if ( $BlocCalendar->lfCheckHoliday( $y, $m, $d ) )
{
$j++;
}else
//でない フラグオフ
{$shop_i = 0;}

}


}


// スタート値を調整
$start_day += $j;
// 追加ここまで




$max_day = $start_day + $end_day;
// 集計
for ($i = $start_day; $i < $max_day; $i++) {
// 基本時間から日数を追加していく
$tmp_time = $now_time + ($i * 24 * 3600);
list($y, $m, $d, $w) = explode(" ", date("Y m d w", $tmp_time));
$val = sprintf("%04d/%02d/%02d(%s)", $y, $m, $d, $arrWDAY[$w]);
$arrDate[$val] = $val;
}
} else {
$arrDate = false;
}
return $arrDate;
}




ゲスト
投稿日時: 2012/1/7 12:31
対応状況: −−−
Re: お届け日に祝日を反映したい
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=thread&topic_id=9551&forum=11&post_id=46471#forumpost46471

な、コードを書いてみました。
参考になりますでしょうか。。。
shimakko
投稿日時: 2012/1/7 15:58
対応状況: −−−
半人前
登録日: 2011/11/11
居住地:
投稿: 19
Re: お届け日に祝日を反映したい
返信ありがとうございます。

そちらの書き込みを参考にもう一度自分の記述したソースを確認しましたところ、おそらく祝日の判定ではなく、連休の判定をする部分がおかしいようでした。

追加部分の最後のほうで、
連休の判定をしなければいけない状況(本日発送ではなく、翌日がお休みの場合)の時に$shop_i == 1とフラグを建てて

引用:

if ( $shop_i == 1 )
{

for ($shop_ii=2; $shop_i == 1; $shop_ii++)
{
//次次〜が日曜か祝日なら 加算
$ptimestamp = mktime(0, 0, 0, $m, $d+$shop_ii, $y);
list($dy, $dm, $dd, $dw) = split(" ", date("y m d w", $ptimestamp));
$dm = intval( $dm );
$dd = intval( $dd );
$dy = intval( $dy );
if ( $BlocCalendar->lfCheckHoliday( $y, $m, $d ) )
{
$j++;
}else
//でない フラグオフ
{$shop_i = 0;
}

}


}


としましたが動いてくれません。もう少し頑張って修正してみようと思います
ありがとうございます。
shimakko
投稿日時: 2012/1/7 18:45
対応状況: 解決済
半人前
登録日: 2011/11/11
居住地:
投稿: 19
Re: お届け日に祝日を反映したい
if ( $BlocCalendar->lfCheckHoliday( $dy, $dm, $dd ) )
とすべきところを
if ( $BlocCalendar->lfCheckHoliday( $y, $m, $d ) )
としていた等、とても基本的なミスのために動いていませんでした。
連休の処理がおかしいのに祝日の処理がおかしいと勘違いしていたため気が付かなかったようです。
お騒がせしました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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.