バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 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 になることを想定しているのかも。)

「お届け指定日が大幅に遅れて表示」という表現が具体的に、どういう状態かわかりませんが。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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.