Changeset 15594 for branches/feature-module-update
- Timestamp:
- 2007/09/04 17:18:38 (17 years ago)
- Location:
- branches/feature-module-update
- Files:
-
- 2 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/html/admin/order/edit.php
r15532 r15594 5 5 * http://www.lockon.co.jp/ 6 6 */ 7 require_once("../require.php");8 7 9 class LC_Page { 10 function LC_Page() { 11 $this->tpl_mainpage = 'order/edit.tpl'; 12 $this->tpl_subnavi = 'order/subnavi.tpl'; 13 $this->tpl_mainno = 'order'; 14 $this->tpl_subno = 'index'; 15 $this->tpl_subtitle = '受注管理'; 16 global $arrPref; 17 $this->arrPref = $arrPref; 18 global $arrORDERSTATUS; 19 $this->arrORDERSTATUS = $arrORDERSTATUS; 20 } 21 } 8 // {{{ requires 9 require_once("../../require.php"); 10 require_once(CLASS_PATH . "page_extends/admin/order/LC_Page_Admin_Order_Edit_Ex.php"); 22 11 23 $conn = new SC_DBConn(); 24 $objPage = new LC_Page(); 25 $objView = new SC_AdminView(); 26 $objSess = new SC_Session(); 27 $objSiteInfo = new SC_SiteInfo(); 28 $arrInfo = $objSiteInfo->data; 12 // }}} 13 // {{{ generate page 29 14 30 // パラメータ管理クラス 31 $objFormParam = new SC_FormParam(); 32 // パラメータ情報の初期化 33 lfInitParam(); 34 35 // 認証可否の判定 36 sfIsSuccess($objSess); 37 38 // 検索パラメータの引き継ぎ 39 foreach ($_POST as $key => $val) { 40 if (ereg("^search_", $key)) { 41 $objPage->arrSearchHidden[$key] = $val; 42 } 43 } 44 45 // 表示モード判定 46 if(sfIsInt($_GET['order_id'])) { 47 $objPage->disp_mode = true; 48 $order_id = $_GET['order_id']; 49 } else { 50 $order_id = $_POST['order_id']; 51 } 52 $objPage->tpl_order_id = $order_id; 53 54 // DBから受注情報を読み込む 55 lfGetOrderData($order_id); 56 57 switch($_POST['mode']) { 58 case 'pre_edit': 59 case 'order_id': 60 break; 61 case 'edit': 62 // POST情報で上書き 63 $objFormParam->setParam($_POST); 64 65 // 入力値の変換 66 $objFormParam->convParam(); 67 $objPage->arrErr = lfCheckError($arrRet); 68 if(count($objPage->arrErr) == 0) { 69 $objPage->arrErr = lfCheek($arrInfo); 70 if(count($objPage->arrErr) == 0) { 71 lfRegistData($_POST['order_id']); 72 // DBから受注情報を再読込 73 lfGetOrderData($order_id); 74 $objPage->tpl_onload = "window.alert('受注履歴を編集しました。');"; 75 } 76 } 77 break; 78 // 再計算 79 case 'cheek': 80 // POST情報で上書き 81 $objFormParam->setParam($_POST); 82 // 入力値の変換 83 $objFormParam->convParam(); 84 $objPage->arrErr = lfCheckError($arrRet); 85 if(count($objPage->arrErr) == 0) { 86 $objPage->arrErr = lfCheek($arrInfo); 87 } 88 break; 89 default: 90 break; 91 } 92 93 // 支払い方法の取得 94 $objPage->arrPayment = sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 95 // 配送時間の取得 96 $arrRet = sfGetDelivTime($objFormParam->getValue('payment_id')); 97 $objPage->arrDelivTime = sfArrKeyValue($arrRet, 'time_id', 'deliv_time'); 98 99 $objPage->arrForm = $objFormParam->getFormParamList(); 100 101 $objPage->arrInfo = $arrInfo; 102 103 $objView->assignobj($objPage); 104 // 表示モード判定 105 if(!$objPage->disp_mode) { 106 $objView->display(MAIN_FRAME); 107 } else { 108 $objView->display('order/disp.tpl'); 109 } 110 //----------------------------------------------------------------------------------------------------------------------------------- 111 /* パラメータ情報の初期化 */ 112 function lfInitParam() { 113 global $objFormParam; 114 // 配送先情報 115 $objFormParam->addParam("お名前1", "deliv_name01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 116 $objFormParam->addParam("お名前2", "deliv_name02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 117 $objFormParam->addParam("フリガナ1", "deliv_kana01", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 118 $objFormParam->addParam("フリガナ2", "deliv_kana02", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 119 $objFormParam->addParam("郵便番号1", "deliv_zip01", ZIP01_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK")); 120 $objFormParam->addParam("郵便番号2", "deliv_zip02", ZIP02_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK")); 121 $objFormParam->addParam("都道府県", "deliv_pref", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 122 $objFormParam->addParam("住所1", "deliv_addr01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 123 $objFormParam->addParam("住所2", "deliv_addr02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 124 $objFormParam->addParam("電話番号1", "deliv_tel01", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 125 $objFormParam->addParam("電話番号2", "deliv_tel02", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 126 $objFormParam->addParam("電話番号3", "deliv_tel03", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 127 // 受注商品情報 128 $objFormParam->addParam("値引き", "discount", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 129 $objFormParam->addParam("送料", "deliv_fee", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 130 $objFormParam->addParam("手数料", "charge", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 131 $objFormParam->addParam("利用ポイント", "use_point", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 132 $objFormParam->addParam("お支払い方法", "payment_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 133 $objFormParam->addParam("配送時間ID", "deliv_time_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 134 $objFormParam->addParam("対応状況", "status", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 135 $objFormParam->addParam("配達日", "deliv_date", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 136 $objFormParam->addParam("お支払方法名称", "payment_method"); 137 $objFormParam->addParam("配送時間", "deliv_time"); 138 139 // 受注詳細情報 140 $objFormParam->addParam("単価", "price", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 141 $objFormParam->addParam("個数", "quantity", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 142 $objFormParam->addParam("商品ID", "product_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 143 $objFormParam->addParam("ポイント付与率", "point_rate"); 144 $objFormParam->addParam("商品コード", "product_code"); 145 $objFormParam->addParam("商品名", "product_name"); 146 $objFormParam->addParam("規格1", "classcategory_id1"); 147 $objFormParam->addParam("規格2", "classcategory_id2"); 148 $objFormParam->addParam("規格名1", "classcategory_name1"); 149 $objFormParam->addParam("規格名2", "classcategory_name2"); 150 $objFormParam->addParam("メモ", "note", MTEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 151 // DB読込用 152 $objFormParam->addParam("小計", "subtotal"); 153 $objFormParam->addParam("合計", "total"); 154 $objFormParam->addParam("支払い合計", "payment_total"); 155 $objFormParam->addParam("加算ポイント", "add_point"); 156 $objFormParam->addParam("お誕生日ポイント", "birth_point"); 157 $objFormParam->addParam("消費税合計", "tax"); 158 $objFormParam->addParam("最終保持ポイント", "total_point"); 159 $objFormParam->addParam("顧客ID", "customer_id"); 160 $objFormParam->addParam("現在のポイント", "point"); 161 } 162 163 function lfGetOrderData($order_id) { 164 global $objFormParam; 165 global $objPage; 166 if(sfIsInt($order_id)) { 167 // DBから受注情報を読み込む 168 $objQuery = new SC_Query(); 169 $where = "order_id = ?"; 170 $arrRet = $objQuery->select("*", "dtb_order", $where, array($order_id)); 171 $objFormParam->setParam($arrRet[0]); 172 list($point, $total_point) = sfGetCustomerPoint($order_id, $arrRet[0]['use_point'], $arrRet[0]['add_point']); 173 $objFormParam->setValue('total_point', $total_point); 174 $objFormParam->setValue('point', $point); 175 $objPage->arrDisp = $arrRet[0]; 176 // 受注詳細データの取得 177 $arrRet = lfGetOrderDetail($order_id); 178 $arrRet = sfSwapArray($arrRet); 179 $objPage->arrDisp = array_merge($objPage->arrDisp, $arrRet); 180 $objFormParam->setParam($arrRet); 181 182 // その他支払い情報を表示 183 if($objPage->arrDisp["memo02"] != "") $objPage->arrDisp["payment_info"] = unserialize($objPage->arrDisp["memo02"]); 184 if($objPage->arrDisp["memo01"] == PAYMENT_CREDIT_ID){ 185 $objPage->arrDisp["payment_type"] = "クレジット決済"; 186 }elseif($objPage->arrDisp["memo01"] == PAYMENT_CONVENIENCE_ID){ 187 $objPage->arrDisp["payment_type"] = "コンビニ決済"; 188 }else{ 189 $objPage->arrDisp["payment_type"] = "お支払い"; 190 } 191 } 192 } 193 194 // 受注詳細データの取得 195 function lfGetOrderDetail($order_id) { 196 $objQuery = new SC_Query(); 197 $col = "product_id, classcategory_id1, classcategory_id2, product_code, product_name, classcategory_name1, classcategory_name2, price, quantity, point_rate"; 198 $where = "order_id = ?"; 199 $objQuery->setorder("classcategory_id1, classcategory_id2"); 200 $arrRet = $objQuery->select($col, "dtb_order_detail", $where, array($order_id)); 201 return $arrRet; 202 } 203 204 /* 入力内容のチェック */ 205 function lfCheckError() { 206 global $objFormParam; 207 // 入力データを渡す。 208 $arrRet = $objFormParam->getHashArray(); 209 $objErr = new SC_CheckError($arrRet); 210 $objErr->arrErr = $objFormParam->checkError(); 211 212 return $objErr->arrErr; 213 } 214 215 /* 計算処理 */ 216 function lfCheek($arrInfo) { 217 global $objFormParam; 218 219 $arrVal = $objFormParam->getHashArray(); 220 221 // 商品の種類数 222 $max = count($arrVal['quantity']); 223 $subtotal = 0; 224 $totalpoint = 0; 225 $totaltax = 0; 226 for($i = 0; $i < $max; $i++) { 227 // 小計の計算 228 $subtotal += sfPreTax($arrVal['price'][$i], $arrInfo['tax'], $arrInfo['tax_rule']) * $arrVal['quantity'][$i]; 229 // 小計の計算 230 $totaltax += sfTax($arrVal['price'][$i], $arrInfo['tax'], $arrInfo['tax_rule']) * $arrVal['quantity'][$i]; 231 // 加算ポイントの計算 232 $totalpoint += sfPrePoint($arrVal['price'][$i], $arrVal['point_rate'][$i]) * $arrVal['quantity'][$i]; 233 } 234 235 // 消費税 236 $arrVal['tax'] = $totaltax; 237 // 小計 238 $arrVal['subtotal'] = $subtotal; 239 // 合計 240 $arrVal['total'] = $subtotal - $arrVal['discount'] + $arrVal['deliv_fee'] + $arrVal['charge']; 241 // お支払い合計 242 $arrVal['payment_total'] = $arrVal['total'] - ($arrVal['use_point'] * POINT_VALUE); 243 244 // 加算ポイント 245 $arrVal['add_point'] = sfGetAddPoint($totalpoint, $arrVal['use_point'], $arrInfo); 246 247 list($arrVal['point'], $arrVal['total_point']) = sfGetCustomerPoint($_POST['order_id'], $arrVal['use_point'], $arrVal['add_point']); 248 249 if($arrVal['total'] < 0) { 250 $arrErr['total'] = '合計額がマイナス表示にならないように調整して下さい。<br />'; 251 } 252 253 if($arrVal['payment_total'] < 0) { 254 $arrErr['payment_total'] = 'お支払い合計額がマイナス表示にならないように調整して下さい。<br />'; 255 } 256 257 if($arrVal['total_point'] < 0) { 258 $arrErr['total_point'] = '最終保持ポイントがマイナス表示にならないように調整して下さい。<br />'; 259 } 260 261 $objFormParam->setParam($arrVal); 262 return $arrErr; 263 } 264 265 /* DB登録処理 */ 266 function lfRegistData($order_id) { 267 global $objFormParam; 268 $objQuery = new SC_Query(); 269 270 $objQuery->begin(); 271 272 // 入力データを渡す。 273 $arrRet = $objFormParam->getHashArray(); 274 275 foreach($arrRet as $key => $val) { 276 // 配列は登録しない 277 if(!is_array($val)) { 278 $sqlval[$key] = $val; 279 } 280 } 281 282 unset($sqlval['total_point']); 283 unset($sqlval['point']); 284 285 $where = "order_id = ?"; 286 287 // 受注ステータスの判定 288 if ($sqlval['status'] == ODERSTATUS_COMMIT) { 289 // 受注テーブルの発送済み日を更新する 290 $addcol['commit_date'] = "Now()"; 291 } 292 293 // 受注テーブルの更新 294 $objQuery->update("dtb_order", $sqlval, $where, array($order_id), $addcol); 295 296 $sql = ""; 297 $sql .= " UPDATE"; 298 $sql .= " dtb_order"; 299 $sql .= " SET"; 300 $sql .= " payment_method = (SELECT payment_method FROM dtb_payment WHERE payment_id = ?)"; 301 $sql .= " ,deliv_time = (SELECT deliv_time FROM dtb_delivtime WHERE time_id = ? AND deliv_id = (SELECT deliv_id FROM dtb_payment WHERE payment_id = ? ))"; 302 $sql .= " WHERE order_id = ?"; 303 304 if ($arrRet['deliv_time_id'] == "") { 305 $deliv_time_id = 0; 306 }else{ 307 $deliv_time_id = $arrRet['deliv_time_id']; 308 } 309 $arrUpdData = array($arrRet['payment_id'], $deliv_time_id, $arrRet['payment_id'], $order_id); 310 $objQuery->query($sql, $arrUpdData); 311 312 // 受注詳細データの更新 313 $arrDetail = $objFormParam->getSwapArray(array("product_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_id1", "classcategory_id2", "classcategory_name1", "classcategory_name2")); 314 $objQuery->delete("dtb_order_detail", $where, array($order_id)); 315 316 $max = count($arrDetail); 317 for($i = 0; $i < $max; $i++) { 318 $sqlval = array(); 319 $sqlval['order_id'] = $order_id; 320 $sqlval['product_id'] = $arrDetail[$i]['product_id']; 321 $sqlval['product_code'] = $arrDetail[$i]['product_code']; 322 $sqlval['product_name'] = $arrDetail[$i]['product_name']; 323 $sqlval['price'] = $arrDetail[$i]['price']; 324 $sqlval['quantity'] = $arrDetail[$i]['quantity']; 325 $sqlval['point_rate'] = $arrDetail[$i]['point_rate']; 326 $sqlval['classcategory_id1'] = $arrDetail[$i]['classcategory_id1']; 327 $sqlval['classcategory_id2'] = $arrDetail[$i]['classcategory_id2']; 328 $sqlval['classcategory_name1'] = $arrDetail[$i]['classcategory_name1']; 329 $sqlval['classcategory_name2'] = $arrDetail[$i]['classcategory_name2']; 330 $objQuery->insert("dtb_order_detail", $sqlval); 331 } 332 $objQuery->commit(); 333 } 15 $objPage = new LC_Page_Admin_Order_Edit_Ex(); 16 $objPage->init(); 17 $objPage->process(); 18 register_shutdown_function(array($objPage, "destroy")); 334 19 ?>
Note: See TracChangeset
for help on using the changeset viewer.