source: branches/feature-module-update/html/admin/order/edit.php @ 15532

Revision 15532, 12.9 KB checked in by nanasess, 17 years ago (diff)

svn:mime-type 修正

  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7require_once("../require.php");
8
9class 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// パラメータ情報の初期化
33lfInitParam();
34
35// 認証可否の判定
36sfIsSuccess($objSess);
37
38// 検索パラメータの引き継ぎ
39foreach ($_POST as $key => $val) {
40    if (ereg("^search_", $key)) {
41        $objPage->arrSearchHidden[$key] = $val;
42    }
43}
44
45// 表示モード判定
46if(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から受注情報を読み込む
55lfGetOrderData($order_id);
56
57switch($_POST['mode']) {
58case 'pre_edit':
59case 'order_id':
60    break;
61case '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// 再計算
79case '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;
89default:
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// 表示モード判定
105if(!$objPage->disp_mode) {
106    $objView->display(MAIN_FRAME);
107} else {
108    $objView->display('order/disp.tpl');
109}
110//-----------------------------------------------------------------------------------------------------------------------------------
111/* パラメータ情報の初期化 */
112function 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
163function 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// 受注詳細データの取得
195function 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/* 入力内容のチェック */
205function 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/* 計算処理 */
216function 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登録処理 */
266function 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?>
Note: See TracBrowser for help on using the repository browser.