Index: /branches/version-2/data/class/pages/admin/basis/LC_Page_Admin_Basis_Delivery_Input.php
===================================================================
--- /branches/version-2/data/class/pages/admin/basis/LC_Page_Admin_Basis_Delivery_Input.php	(revision 16741)
+++ /branches/version-2/data/class/pages/admin/basis/LC_Page_Admin_Basis_Delivery_Input.php	(revision 17513)
@@ -132,5 +132,10 @@
     }
 
-    /* DBに登録する */
+    
+    /**
+     * 配送情報を登録する
+     *
+     * @return $deliv_id 
+     */
     function lfRegistData() {
         $arrRet = $this->objFormParam->getHashArray();
@@ -145,11 +150,53 @@
         $sqlval['update_date'] = 'Now()';
 
+
+        // deliv_id が決まっていた場合
         if($_POST['deliv_id'] != "") {
             $deliv_id = $_POST['deliv_id'];
             $where = "deliv_id = ?";
             $objQuery->update("dtb_deliv", $sqlval, $where, array($deliv_id));
-            $objQuery->delete("dtb_delivfee", $where, array($deliv_id));
-            $objQuery->delete("dtb_delivtime", $where, array($deliv_id));
-        } else {
+
+            // 配送時間の登録
+            $table = "dtb_delivtime";
+            $where = "deliv_id = ? AND time_id = ?";
+            for($cnt = 1; $cnt <= DELIVTIME_MAX; $cnt++) {
+                $sqlval = array();
+                $keyname = "deliv_time".$cnt;
+                $arrval = array($deliv_id, ($cnt * $deliv_id));
+                // 既存データの有無を確認
+                $curData = $objQuery->select("*", $table, $where, $arrval);
+
+                if(strcmp($arrRet[$keyname], "") != 0) {
+                    $sqlval['deliv_time'] = $arrRet[$keyname];
+
+                    // 入力が空ではなく、DBに情報があれば更新
+                    if(count($curData)) {
+                        $objQuery->update($table, $sqlval, $where, $arrval);
+                    }
+                    // DBに情報がなければ登録
+                    else {
+                        $sqlval['deliv_id'] = $deliv_id;
+                        $sqlval['time_id'] = ($cnt * $deliv_id);
+                        $objQuery->insert($table, $sqlval);
+                    }
+                }
+                // 入力が空で、DBに情報がある場合は削除
+                else if(count($curData)) {
+                    $objQuery->delete($table, $where, $arrval);
+                }
+            }
+
+            // 配送料の登録
+            if(INPUT_DELIV_FEE) {
+                for($cnt = 1; $cnt <= DELIVFEE_MAX; $cnt++) {
+                    $keyname = "fee".$cnt;
+                    if(strcmp($arrRet[$keyname], "") != 0) {
+                        $sqlval = array('fee' => $arrRet[$keyname]);
+                        $objQuery->update("dtb_delivfee", $sqlval, "deliv_id = ? AND pref = ?", array($deliv_id, $cnt));
+                    }
+                }
+            }
+        }
+        else {
             // 登録する配送業者IDの取得
 
@@ -167,29 +214,30 @@
                 $deliv_id = $objQuery->nextval('dtb_deliv', 'deliv_id');
             }
-        }
-
-        $sqlval = array();
-        // 配送時間の設定
-        for($cnt = 1; $cnt <= DELIVTIME_MAX; $cnt++) {
-            $keyname = "deliv_time$cnt";
-            if($arrRet[$keyname] != "") {
-                $sqlval['deliv_id'] = $deliv_id;
-                $sqlval['deliv_time'] = $arrRet[$keyname];
-                // INSERTの実行
-                $objQuery->insert("dtb_delivtime", $sqlval);
-            }
-        }
-
-        if(INPUT_DELIV_FEE) {
+
             $sqlval = array();
-            // 配送料金の設定
-            for($cnt = 1; $cnt <= DELIVFEE_MAX; $cnt++) {
-                $keyname = "fee$cnt";
+            // 配送時間の設定
+            for($cnt = 1; $cnt <= DELIVTIME_MAX; $cnt++) {
+                $keyname = "deliv_time$cnt";
                 if($arrRet[$keyname] != "") {
                     $sqlval['deliv_id'] = $deliv_id;
-                    $sqlval['fee'] = $arrRet[$keyname];
-                    $sqlval['pref'] = $cnt;
+                    $sqlval['time_id'] = ($cnt * $deliv_id);
+                    $sqlval['deliv_time'] = $arrRet[$keyname];
                     // INSERTの実行
-                    $objQuery->insert("dtb_delivfee", $sqlval);
+                    $objQuery->insert("dtb_delivtime", $sqlval);
+                }
+            }
+
+            if(INPUT_DELIV_FEE) {
+                $sqlval = array();
+                // 配送料金の設定
+                for($cnt = 1; $cnt <= DELIVFEE_MAX; $cnt++) {
+                    $keyname = "fee$cnt";
+                    if($arrRet[$keyname] != "") {
+                        $sqlval['deliv_id'] = $deliv_id;
+                        $sqlval['fee'] = $arrRet[$keyname];
+                        $sqlval['pref'] = $cnt;
+                        // INSERTの実行
+                        $objQuery->insert("dtb_delivfee", $sqlval);
+                    }
                 }
             }
@@ -198,4 +246,5 @@
         return $deliv_id;
     }
+    
 
     /* 配送業者情報の取得 */
