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;
     }
