Index: branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_DeliveryAddr.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_DeliveryAddr.php	(revision 19862)
+++ branches/version-2_5-dev/data/class/pages/mypage/LC_Page_Mypage_DeliveryAddr.php	(revision 19872)
@@ -80,14 +80,11 @@
         $this->ParentPage = $ParentPage;
         
-        // ログイン判定 及び 退会判定
-        if (!$objCustomer->isLoginSuccess()){
+        /*
+         * ログイン判定 及び 退会判定
+         * 未ログインでも, 複数配送設定ページからのアクセスの場合は表示する
+         */
+        if (!$objCustomer->isLoginSuccess() && $ParentPage != MULTIPLE_URL_PATH){
             $this->tpl_onload = "fnUpdateParent('". $this->getLocation($_POST['ParentPage']) ."'); window.close();";
         }
-         
-        //退会判定に統合 
-        ////ログイン判定
-        // if (!$objCustomer->isLoginSuccess()){
-        //     SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
-        //}
 
         if (!isset($_POST['mode'])) $_POST['mode'] = "";
@@ -147,5 +144,9 @@
                     }
                     
-                    $this->lfRegistData($_POST, $arrRegistColumn, $objCustomer);
+                    if ($objCustomer->isLoginSuccess()) {
+                        $this->lfRegistData($_POST, $arrRegistColumn, $objCustomer);
+                    } else {
+                        $this->lfRegistDataNonMember($_POST, $arrRegistColumn);
+                    }
                 }
                 break;
@@ -221,4 +222,15 @@
     }
 
+    function lfRegistDataNonMember($array, $arrRegistColumn) {
+        foreach ($arrRegistColumn as $data) {
+            $arrRegist['shipping_' . $data["column"] ] = $array[ $data["column"] ];
+        }
+        if (count($shipping) >= DELIV_ADDR_MAX) {
+            SC_Utils_Ex::sfDispSiteError(FREE_ERROR_MSG, "", false, '別のお届け先最大登録数に達しています。');
+        } else {
+            $_SESSION['shipping'][] = $arrRegist;
+        }
+    }
+
     //----　取得文字列の変換
     function lfConvertParam($array, $arrRegistColumn) {
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 19868)
+++ branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Multiple.php	(revision 19872)
@@ -73,5 +73,7 @@
         $this->objFormParam = new SC_FormParam();
 
-        $this->addrs = $this->getDelivAddrs($objCustomer);
+        $uniqid = $objSiteSess->getUniqId();
+
+        $this->addrs = $this->getDelivAddrs($objCustomer, $objPurchase, $uniqid);
         $this->items = $this->splitItems($objCartSess);
 
@@ -79,5 +81,4 @@
         $this->objFormParam->setParam($_POST);
 
-        $uniqid = $objSiteSess->getUniqId();
         $objPurchase->verifyChangeCart($uniqid, $objCartSess);
 
@@ -106,14 +107,17 @@
                     while ($params['cart_no' . $i] != null) {
                         $other_deliv_id = $params['shipping' . $i];
-                        if ($other_deliv_id != 0) {
-                            $otherDeliv = $objQuery->select("*", "dtb_other_deliv",
-                                                            "other_deliv_id = ?",
-                                                            array($other_deliv_id));
-                            foreach ($otherDeliv[0] as $key => $val) {
-                                $sqlval[$other_deliv_id]['shipping_' . $key] = $val;
+                        if ($objCustomer->isLoginSuccess()) {
+                            if ($other_deliv_id != 0) {
+                                $otherDeliv = $objQuery->select("*", "dtb_other_deliv",
+                                                                "other_deliv_id = ?",
+                                                                array($other_deliv_id));
+                                foreach ($otherDeliv[0] as $key => $val) {
+                                    $sqlval[$other_deliv_id]['shipping_' . $key] = $val;
+                                }
+                            } else {
+                                $objPurchase->copyFromCustomer($sqlval[0], $objCustomer,
+                                                               "shipping");
                             }
                         } else {
-                            $objPurchase->copyFromCustomer($sqlval[0], $objCustomer,
-                                                           "shipping");
                         }
                         $sqlval[$other_deliv_id]['deliv_id'] = $objPurchase->getDeliv($this->cartKey);
@@ -182,16 +186,20 @@
      * 非会員の場合は, 「お届け先の指定」画面で入力した住所を取得する.
      */
-    function getDelivAddrs(&$objCustomer) {
+    function getDelivAddrs(&$objCustomer, &$objPurchase, $uniqid) {
         if ($objCustomer->isLoginSuccess()) {
             $addrs = $objCustomer->getCustomerAddress($_SESSION['customer']['customer_id']);
+            $results = array();
+            foreach ($addrs as $key => $val) {
+                $other_deliv_id = SC_Utils_Ex::isBlank($val['other_deliv_id']) ? 0 : $val['other_deliv_id'];
+                $results[$other_deliv_id] = $val['name01'] . $val['name02']
+                    . " " . $this->arrPref[$val['pref']] . $val['addr01'] . $val['addr02'];
+            }
         } else {
-            // TODO
-            $addrs = array();
-        }
-        $results = array();
-        foreach ($addrs as $key => $val) {
-            $other_deliv_id = SC_Utils_Ex::isBlank($val['other_deliv_id']) ? 0 : $val['other_deliv_id'];
-            $results[$other_deliv_id] = $val['name01'] . $val['name02']
-                . " " . $this->arrPref[$val['pref']] . $val['addr01'] . $val['addr02'];
+            $shipping = $objPurchase->getShippingTemp();
+            foreach ($shipping as $shipping_id => $val) {
+                $results[$shipping_id] = $val['shipping_name01'] . $val['shipping_name02']
+                    . " " . $this->arrPref[$val['shipping_pref']]
+                    . $val['shipping_addr01'] . $val['shipping_addr02'];
+            }
         }
         return $results;
Index: branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping.php	(revision 19866)
+++ branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping.php	(revision 19872)
@@ -166,5 +166,5 @@
                 $objSiteSess->setRegistFlag();
 
-                SC_Response_Ex::sendRedirect("multiple.php");
+                SC_Response_Ex::sendRedirect(MULTIPLE_URL_PATH);
                 exit;
             }
@@ -181,4 +181,5 @@
             // ※breakなし
         default:
+            $objPurchase->unsetShippingTemp();
             if(isset($_GET['from']) && $_GET['from'] == 'nonmember') {
                 $this->tpl_mainpage = 'shopping/nonmember_input.tpl';
@@ -334,5 +335,22 @@
             $objPurchase->copyFromOrder($sqlval, $params);
         }
-        $objPurchase->saveShippingTemp($sqlval);
+
+        /*
+         * order_* と shipping_* をそれぞれ $_SESSION['shipping'][$shipping_id]
+         * に, shipping_* というキーで保存
+         */
+        $order_val = array();
+        $shipping_val = array();
+        foreach ($sqlval as $key => $val) {
+            if (preg_match('/^order_/', $key)) {
+                $order_val['shipping_' . str_replace('order_', '', $key)] = $val;
+            } elseif (preg_match('/^shipping_/', $key)) {
+                $shipping_val[$key] = $val;
+            }
+        }
+        $objPurchase->saveShippingTemp($order_val, 0);
+        if ($params['deliv_check'] == '1') {
+            $objPurchase->saveShippingTemp($shipping_val, 1);
+        }
         $objPurchase->saveOrderTemp($uniqid, $sqlval, $objCustomer);
     }
@@ -375,50 +393,5 @@
         $objErr->doFunc(array("メールアドレス", "メールアドレス（確認）", "order_email", "order_email02"), array("EQUAL_CHECK"));
 
-        //既存メールアドレスでの登録不可（購入時強制会員登録が有効の場合のみ）
-        if (PURCHASE_CUSTOMER_REGIST == '1' && strlen($arrRet["order_email"]) > 0) {
-            $array['email'] = strtolower($arrRet['order_email']);
-            $objQuery = new SC_Query();
-            $arrEmailCheck = $objQuery->select("email, update_date, del_flg", "dtb_customer","email = ? OR email_mobile = ? ORDER BY del_flg", array($array["email"], $array["email"]));
-
-            if(!empty($arrEmailCheck)) {
-                if($arrEmailCheck[0]['del_flg'] != '1') {
-                    // 会員である場合
-                    $objErr->arrErr["order_email"] .= "※ すでに会員登録で使用されているメールアドレスです。<br />";
-                } else {
-                    // 退会した会員である場合
-                    $leave_time = SC_Utils_Ex::sfDBDatetoTime($arrEmailCheck[0]['update_date']);
-                    $now_time = time();
-                    $pass_time = $now_time - $leave_time;
-                    // 退会から何時間-経過しているか判定する。
-                    $limit_time = ENTRY_LIMIT_HOUR * 3600;
-                    if($pass_time < $limit_time) {
-                        $objErr->arrErr["order_email"] .= "※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br />";
-                    }
-                }
-            }
-        }
-
         return $objErr->arrErr;
-    }
-
-    /**
-     * 受注一時テーブルに登録する顧客(お客様情報)をお届け先へコピーする
-     *
-     * @param array $sqlval
-     * @return void
-     */
-    function lfCopyDeliv(&$sqlval) {
-        $sqlval['deliv_name01'] = $sqlval['order_name01'];
-        $sqlval['deliv_name02'] = $sqlval['order_name02'];
-        $sqlval['deliv_kana01'] = $sqlval['order_kana01'];
-        $sqlval['deliv_kana02'] = $sqlval['order_kana02'];
-        $sqlval['deliv_pref']   = $sqlval['order_pref'];
-        $sqlval['deliv_zip01']  = $sqlval['order_zip01'];
-        $sqlval['deliv_zip02']  = $sqlval['order_zip02'];
-        $sqlval['deliv_addr01'] = $sqlval['order_addr01'];
-        $sqlval['deliv_addr02'] = $sqlval['order_addr02'];
-        $sqlval['deliv_tel01']  = $sqlval['order_tel01'];
-        $sqlval['deliv_tel02']  = $sqlval['order_tel02'];
-        $sqlval['deliv_tel03']  = $sqlval['order_tel03'];
     }
 }
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 19868)
+++ branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php	(revision 19872)
@@ -218,5 +218,9 @@
      */
     function saveShippingTemp(&$src, $otherDelivId = 0) {
-        $_SESSION['shipping'][$otherDelivId] = array_merge($_SESSION['shipping'][$otherDelivId], $src);
+        if (empty($_SESSION['shipping'][$otherDelivId])) {
+            $_SESSION['shipping'][$otherDelivId] = $src;
+        } else {
+            $_SESSION['shipping'][$otherDelivId] = array_merge($_SESSION['shipping'][$otherDelivId], $src);
+        }
     }
 
