Index: /branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php =================================================================== --- /branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php (revision 19920) +++ /branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php (revision 19923) @@ -356,10 +356,82 @@ /** - * 商品規格IDの配列からお届け予定日の配列を取得する. - * - * @param array $productClassIds 商品規格IDの配列 - */ - function getDelivDate($productClassIds) { - // TODO + * お届け日一覧を取得する. + */ + function getDelivDate(&$objCartSess, $productTypeId) { + $cartList = $objCartSess->getCartList($productTypeId); + $delivDateIds = array(); + foreach ($cartList as $item) { + $delivDateIds[] = $item['productsClass']['deliv_date_id']; + } + $max_date = max($delivDateIds); + //発送目安 + switch($max_date) { + //即日発送 + case '1': + $start_day = 1; + break; + //1-2日後 + case '2': + $start_day = 3; + break; + //3-4日後 + case '3': + $start_day = 5; + break; + //1週間以内 + case '4': + $start_day = 8; + break; + //2週間以内 + case '5': + $start_day = 15; + break; + //3週間以内 + case '6': + $start_day = 22; + break; + //1ヶ月以内 + case '7': + $start_day = 32; + break; + //2ヶ月以降 + case '8': + $start_day = 62; + break; + //お取り寄せ(商品入荷後) + case '9': + $start_day = ""; + break; + default: + //お届け日が設定されていない場合 + $start_day = ""; + } + //お届け可能日のスタート値から、お届け日の配列を取得する + $arrDelivDate = $this->getDateArray($start_day, DELIV_DATE_END_MAX); + return $arrDelivDate; + } + + /** + * お届け可能日のスタート値から, お届け日の配列を取得する. + */ + function getDateArray($start_day, $end_day) { + $masterData = new SC_DB_MasterData(); + $arrWDAY = $masterData->getMasterData("mtb_wday"); + //お届け可能日のスタート値がセットされていれば + if($start_day >= 1) { + $now_time = time(); + $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) = split(" ", 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; } Index: /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Multiple.php =================================================================== --- /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Multiple.php (revision 19872) +++ /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Multiple.php (revision 19923) @@ -113,22 +113,20 @@ array($other_deliv_id)); foreach ($otherDeliv[0] as $key => $val) { - $sqlval[$other_deliv_id]['shipping_' . $key] = $val; + $sqlval[$i]['shipping_' . $key] = $val; } } else { - $objPurchase->copyFromCustomer($sqlval[0], $objCustomer, + $objPurchase->copyFromCustomer($sqlval[$i], $objCustomer, "shipping"); } - } else { } - $sqlval[$other_deliv_id]['deliv_id'] = $objPurchase->getDeliv($this->cartKey); - $objPurchase->setShipmentItemTemp($other_deliv_id, $params['product_class_id' . $i], $params['quantity' . $i]); + $sqlval[$i]['deliv_id'] = $objPurchase->getDeliv($this->cartKey); + $objPurchase->setShipmentItemTemp($i, $params['product_class_id' . $i], $params['quantity' . $i]); $i++; } - foreach ($sqlval as $key => $val) { - $objPurchase->saveShippingTemp($val, $key); + foreach ($sqlval as $shipping_id => $val) { + $objPurchase->saveShippingTemp($val, $shipping_id); } - // FIXME $objPurchase->saveOrderTemp($uniqid, $sqlval[0], $objCustomer); $objSiteSess->setRegistFlag(); Index: /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php =================================================================== --- /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php (revision 19915) +++ /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php (revision 19923) @@ -98,4 +98,7 @@ $this->cartKey = $objCartSess->getKey(); + // 配送時間を取得 + $this->arrDelivTime = $objPurchase->getDelivTime($this->cartKey); + // 会員ログインチェック if($this->objCustomer->isLoginSuccess()) { @@ -146,8 +149,14 @@ // 入力エラーなし if(count($this->arrErr) == 0) { - // DBへのデータ登録 + + foreach (array_keys($_SESSION['shipping']) as $key) { + $timeId = $this->objFormParam->getValue('deliv_time_id' . $key); + $_SESSION['shipping'][$key]['time_id'] = $timeId; + $_SESSION['shipping'][$key]['shipping_time'] = $this->arrDelivTime[$timeId]; + // XXX 文字列を代入しておいてもDBで自動変換可能? + $_SESSION['shipping'][$key]['shipping_date'] = $this->objFormParam->getValue('deliv_date' . $key); + } $this->lfRegistData($uniqid, $objPurchase); - $_SESSION['shipping'][0]['time_id'] = $this->objFormParam->getValue('deliv_time_id'); - $_SESSION['shipping'][0]['deliv_date'] = $this->objFormParam->getValue('deliv_date'); + // 正常に登録されたことを記録しておく $objSiteSess->setRegistFlag(); @@ -159,5 +168,5 @@ $uniqid = $objSiteSess->getUniqId(); // 受注一時テーブルからの情報を格納 - $this->lfSetOrderTempData($uniqid); + $this->objFormParam->setParam($objPurchase->getOrderTemp($uniqid)); } break; @@ -177,12 +186,8 @@ } - // 配送時間を取得 - $this->arrDelivTime = $objPurchase->getDelivTime($this->cartKey); - // 支払い方法の画像があるなしを取得($img_show true:ある false:なし) $this->img_show = $this->lfGetImgShow($this->arrPayment); - // FIXME お届け日一覧の取得 - $this->arrDelivDate = $this->lfGetDelivDate(); - + // お届け日一覧の取得 + $this->arrDelivDate = $objPurchase->getDelivDate($objCartSess, $this->cartKey); $this->arrForm = $this->objFormParam->getFormParamList(); } @@ -262,6 +267,6 @@ $objQuery = new SC_Query(); $where = "payment_id = ?"; - $arrRet = $objQuery->select("charge", "dtb_payment", $where, array($payment_id)); - return (array($arrRet[0]['charge'], $arrRet[0]['deliv_id'])); + $arrRet = $objQuery->getRow("charge, payment_method", "dtb_payment", $where, array($payment_id)); + return (array($arrRet['charge'], $arrRet['payment_method'])); } @@ -275,5 +280,5 @@ if (strlen($sqlval['payment_id']) >= 1) { - // FIXME list($sqlval['charge'], $sqlval['deliv_id']) = $this->lfGetPaymentInfo($sqlval['payment_id']); + list($sqlval['charge'], $sqlval['payment_method']) = $this->lfGetPaymentInfo($sqlval['payment_id']); } @@ -286,99 +291,8 @@ } - /* お届け日一覧を取得する */ - function lfGetDelivDate() { - $objCartSess = new SC_CartSession(); - $objQuery = new SC_Query(); - // 商品IDの取得 - $max = $objCartSess->getMax(); - for($i = 1; $i <= $max; $i++) { - if($_SESSION[$objCartSess->key][$i]['id'][0] != "") { - $arrID['product_id'][$i] = $_SESSION[$objCartSess->key][$i]['id'][0]; - } - } - if(count($arrID['product_id']) > 0) { - $id = implode(",", $arrID['product_id']); - //商品から発送目安の取得 - $deliv_date = $objQuery->get("MAX(deliv_date_id)", "dtb_products", "product_id IN (".$id.")"); - //発送目安 - switch($deliv_date) { - //即日発送 - case '1': - $start_day = 1; - break; - //1-2日後 - case '2': - $start_day = 3; - break; - //3-4日後 - case '3': - $start_day = 5; - break; - //1週間以内 - case '4': - $start_day = 8; - break; - //2週間以内 - case '5': - $start_day = 15; - break; - //3週間以内 - case '6': - $start_day = 22; - break; - //1ヶ月以内 - case '7': - $start_day = 32; - break; - //2ヶ月以降 - case '8': - $start_day = 62; - break; - //お取り寄せ(商品入荷後) - case '9': - $start_day = ""; - break; - default: - //お届け日が設定されていない場合 - $start_day = ""; - break; - } - //お届け可能日のスタート値から、お届け日の配列を取得する - $arrDelivDate = $this->lfGetDateArray($start_day, DELIV_DATE_END_MAX); - } - return $arrDelivDate; - } - - //お届け可能日のスタート値から、お届け日の配列を取得する - function lfGetDateArray($start_day, $end_day) { - $masterData = new SC_DB_MasterData(); - $arrWDAY = $masterData->getMasterData("mtb_wday"); - //お届け可能日のスタート値がセットされていれば - if($start_day >= 1) { - $now_time = time(); - $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) = split(" ", date("y m d w", $tmp_time)); - $val = sprintf("%02d/%02d/%02d(%s)", $y, $m, $d, $arrWDAY[$w]); - $arrDate[$val] = $val; - } - } else { - $arrDate = false; - } - return $arrDate; - } - //一時受注テーブルからの情報を格納する - function lfSetOrderTempData($uniqid) { - $objQuery = new SC_Query(); - $col = "payment_id, use_point, message, point_check "; - $from = "dtb_order_temp"; - $where = "order_temp_id = ?"; - $arrRet = $objQuery->select($col, $from, $where, array($uniqid)); - // DB値の取得 - $this->objFormParam->setParam($arrRet[0]); + function lfSetOrderTempData($uniqid, &$objPurchase) { + $arrOrderTemp = $objPurchase->getOrderTemp($uniqid); + $this->objFormParam->setParam($arrOrderTemp); return $this->objFormParam; } @@ -395,16 +309,4 @@ return $img_show; } - - /* 配送時間の配列を生成 */ - function lfSetDelivTime() { - $objDb = new SC_Helper_DB_Ex(); - $objJson = new Services_JSON; - - // 配送時間の取得 - $arrRet = $objDb->sfGetDelivTime($this->cartKey); - // JSONエンコード - echo $objJson->encode($arrRet); - exit; - } } ?> Index: /branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php =================================================================== --- /branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php (revision 19920) +++ /branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php (revision 19923) @@ -85,8 +85,9 @@ $objSess = new SC_Session(); $objDb = new SC_Helper_DB_Ex(); - $objDate = new SC_Date(1901); - $this->arrYearDelivDate = $objDate->getYear('', date('Y'), ''); - $this->arrMonthDelivDate = $objDate->getMonth(true); - $this->arrDayDelivDate = $objDate->getDay(true); + $objDate = new SC_Date(1970); + $objPurchase = new SC_Helper_Purchase_Ex(); + $this->arrYearShippingDate = $objDate->getYear('', date('Y'), ''); + $this->arrMonthShippingDate = $objDate->getMonth(true); + $this->arrDayShippingDate = $objDate->getDay(true); // パラメータ管理クラス @@ -221,9 +222,9 @@ // 支払い方法の取得 $this->arrPayment = $objDb->sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); - // お届け時間の取得 - $arrRet = $objDb->sfGetDelivTime($this->objFormParam->getValue('payment_id')); - $this->arrDelivTime = SC_Utils_Ex::sfArrKeyValue($arrRet, 'time_id', 'deliv_time'); $this->arrForm = $this->objFormParam->getFormParamList(); + // XXX 商品種別IDは0番目の配列を使用 + $this->product_type_id = $this->arrForm['product_type_id']['value'][0]; + $this->arrDelivTime = $objPurchase->getDelivTime($this->product_type_id); $this->product_count = count($this->arrForm['quantity']['value']); @@ -290,4 +291,5 @@ // 受注詳細情報 + $this->objFormParam->addParam("商品種別ID", "product_type_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); $this->objFormParam->addParam("単価", "price", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); $this->objFormParam->addParam("数量", "quantity", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); @@ -336,7 +338,10 @@ $this->objFormParam->addParam("電話番号2", "shipping_tel02_" . $shipping['shipping_id'], TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); $this->objFormParam->addParam("電話番号3", "shipping_tel03_" . $shipping['shipping_id'], TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); - $this->objFormParam->addParam("お届け時間ID", "deliv_time_id_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); - $this->objFormParam->addParam("お届け時間", "deliv_time_" . $shipping['shipping_id']); - $this->objFormParam->addParam("お届け日", "deliv_date_" . $shipping['shipping_id'], STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); + $this->objFormParam->addParam("お届け時間ID", "time_id_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); + $this->objFormParam->addParam("お届け時間", "shipping_time_" . $shipping['shipping_id']); + $this->objFormParam->addParam("お届け日(年)", "shipping_date_year_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); + $this->objFormParam->addParam("お届け日(月)", "shipping_date_month_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); + $this->objFormParam->addParam("お届け日(日)", "shipping_date_day_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); + $this->objFormParam->addParam("お届け日", "shipping_date_" . $shipping['shipping_id'], STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); $this->objFormParam->addParam("配送商品規格数", "shipping_product_quantity_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); foreach ($shipping['shipment_item'] as $productClassId => $item) { @@ -378,8 +383,20 @@ $this->objFormParam->setValue('shipping_quantity', $this->arrForm['shipping_quantity']); + // 配送情報の処理 foreach ($this->arrShipping as $shipping) { $this->arrShippingIds[] = $shipping['shipping_id']; $this->arrProductClassIds[] = array_keys($shipping['shipment_item']); + + // お届け日の取得 + $ts = strtotime($shipping["shipping_date"]); + $this->objFormParam->setValue('shipping_date_year_' . $shipping['shipping_id'], date("Y", $ts)); + $this->arrForm['shipping_date_year_' . $shipping['shipping_id']] = date("Y", $ts); + $this->objFormParam->setValue('shipping_date_month_' . $shipping['shipping_id'], date("n", $ts)); + $this->arrForm['shipping_date_month_' . $shipping['shipping_id']] = date("n", $ts); + $this->objFormParam->setValue('shipping_date_day_' . $shipping['shipping_id'], date("j", $ts)); + $this->arrForm['shipping_date_day_' . $shipping['shipping_id']] = date("j", $ts); + + // 配送内容の処理 foreach ($shipping as $shippingKey => $shippingVal) { @@ -391,4 +408,5 @@ $this->arrForm['shipping_product_quantity' . '_' . $shipping['shipping_id']]); + // 配送商品の処理 foreach ($shipping['shipment_item'] as $productClassId => $item) { foreach ($item as $itemKey => $itemVal) { @@ -417,7 +435,11 @@ function lfGetOrderDetail($order_id) { $objQuery = new SC_Query(); - $col = "product_id, product_class_id, product_code, product_name, classcategory_name1, classcategory_name2, price, quantity, point_rate"; - $where = "order_id = ?"; - $arrRet = $objQuery->select($col, "dtb_order_detail", $where, array($order_id)); + $from = <<< __EOS__ + dtb_order_detail T1 + JOIN dtb_products_class T2 + ON T1.product_class_id = T2.product_class_id +__EOS__; + $arrRet = $objQuery->select("T1.*, T2.product_type_id", $from, + "order_id = ?", array($order_id)); return $arrRet; } Index: /branches/version-2_5-dev/data/Smarty/templates/default/shopping/confirm.tpl =================================================================== --- /branches/version-2_5-dev/data/Smarty/templates/default/shopping/confirm.tpl (revision 19868) +++ /branches/version-2_5-dev/data/Smarty/templates/default/shopping/confirm.tpl (revision 19923) @@ -231,9 +231,9 @@
注文番号 | -+ | |
---|---|---|
お届け時間 | - + |