|
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の場合は、方法が違うのでしょうか? お手数ですが、お教え下さい。
|