| 1 | <?php |
|---|
| 2 | /* |
|---|
| 3 | * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved. |
|---|
| 4 | * |
|---|
| 5 | * http://www.lockon.co.jp/ |
|---|
| 6 | */ |
|---|
| 7 | require_once("../require.php"); |
|---|
| 8 | |
|---|
| 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 | } |
|---|
| 22 | |
|---|
| 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; |
|---|
| 29 | |
|---|
| 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 | } |
|---|
| 334 | ?> |
|---|