バージョン選択
フォーラム
メニュー
オンライン状況
|
|
35 人のユーザが現在オンラインです。 (28 人のユーザが フォーラム を参照しています。) |
|
|
フロント機能
投稿者 |
スレッド |
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: お届け日に祝日を反映したい
|
|
|
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 ) ) としていた等、とても基本的なミスのために動いていませんでした。 連休の処理がおかしいのに祝日の処理がおかしいと勘違いしていたため気が付かなかったようです。 お騒がせしました。
|
|
|
|
統計情報
総メンバー数は89,137名です
総投稿数は110,040件です
|