質問 > フロント機能 > 2.12.5のお届け日指定のカスタマイズについて。 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ゲスト |
投稿日時: 2014/1/3 7:53
対応状況: 確認中
|
2.12.5のお届け日指定のカスタマイズについて。 2.12.5のお届け指定日のカスタマイズですが、下記では休業日設定より大きく遅れてお届け指定日が表示されます。
デフォルトの配送目安日を下記で修正を行っております。 * お届け日一覧を取得する. */ function getDelivDate(&$objCartSess, $productTypeId) { $cartList = $objCartSess->getCartList($productTypeId); $delivDateIds = array(); foreach ($cartList as $item) { $delivDateIds[] = $item['productsClass']['deliv_date_id']; } $max_date = max($delivDateIds); //発送目安 ★発送目安日の変更★2014012add:acsports switch ($max_date) { //即日発送 case '1': $start_day = 8; break; //1-2日後 case '2': $start_day = 11; break; //3-4日後 case '3': $start_day = 8; break; //1週間以内 case '4': $start_day = 15; break; //2週間以内 case '5': $start_day = 22; break; //3週間以内 case '6': $start_day = ''; break; //1ヶ月以内 case '7': $start_day = 15; break; //2ヶ月以降 case '8': $start_day = ''; break; //お取り寄せ(商品入荷後) case '9': $start_day = ''; break; default: //お届け日が設定されていない場合 $start_day = ''; break; } //お届け可能日のスタート値から、お届け日の配列を取得する $arrDelivDate = $this->getDateArray($start_day, DELIV_DATE_END_MAX); return $arrDelivDate; } /** その上で、下記の休業日に注文をされた場合は、翌営業日にお届け指定日を合わせる様にしております。 /** * お届け可能日のスタート値から, お届け日の配列を取得する. */ function getDateArray($start_day, $end_day) { $masterData = new SC_DB_MasterData_Ex(); $arrWDAY = $masterData->getMasterData('mtb_wday'); //お届け可能日のスタート値がセットされていれば if ($start_day >= 1) { $now_time = time(); /* ここから追加 ★お届け予定日の休日変更★2014012add:acsports */ // カレンダーブロック表示用オブジェクトを生成し、定休日設定を取得 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(); // 配達可能日の起点を指定「営業日」以降に変更 for ($i = 1, $j = 1; $j < $start_day; $i++ ) { // 定休日管理で設定された休日と、日曜・土曜を休日とする $tmp_time = $now_time + ($i * 24 * 3600); list($y, $m, $d, $w) = explode(" ", date("Y m d w", $tmp_time)); $m = intval( $m ); $d = intval( $d ); $w = intval( $w ); if ( $BlocCalendar->lfCheckHoliday( $y, $m, $d ) ) { continue; } // 日数加算 $j++; } // スタート値を調整 $start_day += $i - $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; } /** 上記で行っておりますが、お届け指定日が大幅に遅れて表示がされます。デフォルトの配送目安を変更した場合は、上記の変更は出来ないのでしょうか? それとも2.12.5の場合は、方法が違うのでしょうか? お手数ですが、お教え下さい。 |
|
sumida |
投稿日時: 2014/1/3 9:31
対応状況: −−−
|
仙人 登録日: 2013/2/10 居住地: 広島県呉市ときどき瀬戸内海 投稿: 641 |
Re: 2.12.5のお届け日指定のカスタマイズについて。 ざっと見です。(検証していません。)
$BlocCalendar->lfCheckHoliday( $y, $m, $d ) は、正常に機能しているでしょうか? 常に、falseが戻ってきているような。 追記: 配送目安日は、$max_date = max($delivDateIds);によって求めている訳で、 $max_dateが、1, 2, 3, ...となれば、 対応する$start_dayが、a, b, c, ...とした場合、 a < b < c < ... という関係にならないと本来の意図した日数にならないと思います。 (少なくとも修正後のソースでは、この関係が成立していない。) 注文の商品が、以下の2つに該当した場合、 //1-2日後 case '2': $start_day = 11; break; //3-4日後 case '3': $start_day = 8; break; $start_dayは、8 になる。 (このケースであれば、11 になることを想定しているのかも。) 「お届け指定日が大幅に遅れて表示」という表現が具体的に、どういう状態かわかりませんが。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |