1 | <?php
|
---|
2 | /**
|
---|
3 | *
|
---|
4 | * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
|
---|
5 | *
|
---|
6 | * http://www.lockon.co.jp/
|
---|
7 | *
|
---|
8 | * 配送先の追加
|
---|
9 | */
|
---|
10 | require_once("../require.php");
|
---|
11 |
|
---|
12 | class LC_Page{
|
---|
13 | function LC_Page(){
|
---|
14 | $this->tpl_mainpage = 'shopping/deliv_addr.tpl';
|
---|
15 | $this->tpl_title = "新しいお届け先の追加";
|
---|
16 | }
|
---|
17 | }
|
---|
18 |
|
---|
19 | $objPage = new LC_Page();
|
---|
20 | $objView = new SC_MobileView(false);
|
---|
21 | $objQuery = new SC_Query();
|
---|
22 | $objCustomer = new SC_Customer();
|
---|
23 | $objConn = new SC_DBConn();
|
---|
24 | $objSiteSess = new SC_SiteSession();
|
---|
25 | $objCartSess = new SC_CartSession();
|
---|
26 |
|
---|
27 | //ログイン判定
|
---|
28 | if (!$objCustomer->isLoginSuccess()){
|
---|
29 | sfDispSiteError(CUSTOMER_ERROR, "", false, "", true);
|
---|
30 | }
|
---|
31 |
|
---|
32 | $objPage->arrForm = $_POST;
|
---|
33 | $objPage->arrPref = $arrPref;
|
---|
34 | //-- データ設定
|
---|
35 | foreach($_POST as $key => $val) {
|
---|
36 | if ($key != "mode" && $key != "return" && $key != "submit" && $key != session_name()) {
|
---|
37 | $objPage->list_data[ $key ] = $val;
|
---|
38 | }
|
---|
39 | }
|
---|
40 | // ユーザユニークIDの取得と購入状態の正当性をチェック
|
---|
41 | $uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess);
|
---|
42 |
|
---|
43 | //別のお届け先DB登録用カラム配列
|
---|
44 | $arrRegistColumn = array(
|
---|
45 | array( "column" => "name01", "convert" => "aKV" ),
|
---|
46 | array( "column" => "name02", "convert" => "aKV" ),
|
---|
47 | array( "column" => "kana01", "convert" => "CKV" ),
|
---|
48 | array( "column" => "kana02", "convert" => "CKV" ),
|
---|
49 | array( "column" => "zip01", "convert" => "n" ),
|
---|
50 | array( "column" => "zip02", "convert" => "n" ),
|
---|
51 | array( "column" => "pref", "convert" => "n" ),
|
---|
52 | array( "column" => "addr01", "convert" => "aKV" ),
|
---|
53 | array( "column" => "addr02", "convert" => "aKV" ),
|
---|
54 | array( "column" => "tel01", "convert" => "n" ),
|
---|
55 | array( "column" => "tel02", "convert" => "n" ),
|
---|
56 | array( "column" => "tel03", "convert" => "n" ),
|
---|
57 | );
|
---|
58 |
|
---|
59 | // 戻るボタン用処理
|
---|
60 | if (!empty($_POST["return"])) {
|
---|
61 | switch ($_POST["mode"]) {
|
---|
62 | case 'complete':
|
---|
63 | $_POST["mode"] = "set2";
|
---|
64 | break;
|
---|
65 | case 'set2':
|
---|
66 | $_POST["mode"] = "set1";
|
---|
67 | break;
|
---|
68 | default:
|
---|
69 | header("Location: " . gfAddSessionId('deliv.php'));
|
---|
70 | exit;
|
---|
71 | }
|
---|
72 | }
|
---|
73 |
|
---|
74 | switch ($_POST['mode']){
|
---|
75 | case 'set1':
|
---|
76 | $objPage->arrErr = lfErrorCheck1($objPage->arrForm);
|
---|
77 | if (count($objPage->arrErr) == 0 && empty($_POST["return"])) {
|
---|
78 | $objPage->tpl_mainpage = 'shopping/set1.tpl';
|
---|
79 |
|
---|
80 | $checkVal = array("pref", "addr01", "addr02", "addr03", "tel01", "tel02", "tel03");
|
---|
81 | foreach($checkVal as $key) {
|
---|
82 | unset($objPage->list_data[$key]);
|
---|
83 | }
|
---|
84 |
|
---|
85 | // 郵便番号から住所の取得
|
---|
86 | if (@$objPage->arrForm['pref'] == "" && @$objPage->arrForm['addr01'] == "" && @$objPage->arrForm['addr02'] == "") {
|
---|
87 | $address = lfGetAddress($_REQUEST['zip01'].$_REQUEST['zip02']);
|
---|
88 |
|
---|
89 | $objPage->arrForm['pref'] = @$address[0]['state'];
|
---|
90 | $objPage->arrForm['addr01'] = @$address[0]['city'] . @$address[0]['town'];
|
---|
91 | }
|
---|
92 | } else {
|
---|
93 | $checkVal = array("name01", "name02", "kana01", "kana02", "zip01", "zip02");
|
---|
94 | foreach($checkVal as $key) {
|
---|
95 | unset($objPage->list_data[$key]);
|
---|
96 | }
|
---|
97 | }
|
---|
98 | break;
|
---|
99 | case 'set2':
|
---|
100 | $objPage->arrErr = lfErrorCheck2($objPage->arrForm);
|
---|
101 | if (count($objPage->arrErr) == 0 && empty($_POST["return"])) {
|
---|
102 | $objPage->tpl_mainpage = 'shopping/set2.tpl';
|
---|
103 | } else {
|
---|
104 | $objPage->tpl_mainpage = 'shopping/set1.tpl';
|
---|
105 |
|
---|
106 | $checkVal = array("pref", "addr01", "addr02", "addr03", "tel01", "tel02", "tel03");
|
---|
107 | foreach($checkVal as $key) {
|
---|
108 | unset($objPage->list_data[$key]);
|
---|
109 | }
|
---|
110 | }
|
---|
111 | break;
|
---|
112 | case 'complete':
|
---|
113 | $objPage->arrErr = lfErrorCheck($objPage->arrForm);
|
---|
114 | if (count($objPage->arrErr) == 0) {
|
---|
115 | // 登録
|
---|
116 | $other_deliv_id = lfRegistData($_POST,$arrRegistColumn);
|
---|
117 |
|
---|
118 | // 登録済みの別のお届け先を受注一時テーブルに書き込む
|
---|
119 | lfRegistOtherDelivData($uniqid, $objCustomer, $other_deliv_id);
|
---|
120 |
|
---|
121 | // 正常に登録されたことを記録しておく
|
---|
122 | $objSiteSess->setRegistFlag();
|
---|
123 | // お支払い方法選択ページへ移動
|
---|
124 | header("Location: " . gfAddSessionId(MOBILE_URL_SHOP_PAYMENT));
|
---|
125 | exit;
|
---|
126 | } else {
|
---|
127 | sfDispSiteError(CUSTOMER_ERROR, "", false, "", true);
|
---|
128 | }
|
---|
129 | break;
|
---|
130 | default:
|
---|
131 | $deliv_count = $objQuery->count("dtb_other_deliv", "customer_id=?", array($objCustomer->getValue('customer_id')));
|
---|
132 | if ($deliv_count >= DELIV_ADDR_MAX){
|
---|
133 | sfDispSiteError(FREE_ERROR_MSG, "", false, "最大登録件数を超えています。");
|
---|
134 | }
|
---|
135 | }
|
---|
136 |
|
---|
137 | $objView->assignobj($objPage);
|
---|
138 | $objView->display(SITE_FRAME);
|
---|
139 |
|
---|
140 | //-------------------------------------------------------------------------------------------------------------
|
---|
141 |
|
---|
142 | /* エラーチェック */
|
---|
143 | function lfErrorCheck() {
|
---|
144 | $objErr = new SC_CheckError();
|
---|
145 |
|
---|
146 | $objErr->doFunc(array("お名前(姓)", 'name01', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
|
---|
147 | $objErr->doFunc(array("お名前(名)", 'name02', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK"));
|
---|
148 | $objErr->doFunc(array("お名前(カナ/姓)", 'kana01', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK"));
|
---|
149 | $objErr->doFunc(array("お名前(カナ/名)", 'kana02', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK"));
|
---|
150 | $objErr->doFunc(array("郵便番号1", "zip01", ZIP01_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
|
---|
151 | $objErr->doFunc(array("郵便番号2", "zip02", ZIP02_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
|
---|
152 | $objErr->doFunc(array("郵便番号", "zip01", "zip02"), array("ALL_EXIST_CHECK"));
|
---|
153 | $objErr->doFunc(array("都道府県", 'pref'), array("SELECT_CHECK","NUM_CHECK"));
|
---|
154 | $objErr->doFunc(array("市区町村", "addr01", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
|
---|
155 | $objErr->doFunc(array("番地", "addr02", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
|
---|
156 | $objErr->doFunc(array("電話番号1", 'tel01'), array("EXIST_CHECK","NUM_CHECK"));
|
---|
157 | $objErr->doFunc(array("電話番号2", 'tel02'), array("EXIST_CHECK","NUM_CHECK"));
|
---|
158 | $objErr->doFunc(array("電話番号3", 'tel03'), array("EXIST_CHECK","NUM_CHECK"));
|
---|
159 | $objErr->doFunc(array("電話番号", "tel01", "tel02", "tel03", TEL_LEN) ,array("TEL_CHECK"));
|
---|
160 | return $objErr->arrErr;
|
---|
161 |
|
---|
162 | }
|
---|
163 |
|
---|
164 | /* エラーチェック */
|
---|
165 | function lfErrorCheck1() {
|
---|
166 | $objErr = new SC_CheckError();
|
---|
167 |
|
---|
168 | $objErr->doFunc(array("お名前(姓)", 'name01', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
|
---|
169 | $objErr->doFunc(array("お名前(名)", 'name02', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK"));
|
---|
170 | $objErr->doFunc(array("お名前(カナ/姓)", 'kana01', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK"));
|
---|
171 | $objErr->doFunc(array("お名前(カナ/名)", 'kana02', STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK"));
|
---|
172 | $objErr->doFunc(array("郵便番号1", "zip01", ZIP01_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
|
---|
173 | $objErr->doFunc(array("郵便番号2", "zip02", ZIP02_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
|
---|
174 | $objErr->doFunc(array("郵便番号", "zip01", "zip02"), array("ALL_EXIST_CHECK"));
|
---|
175 | return $objErr->arrErr;
|
---|
176 |
|
---|
177 | }
|
---|
178 |
|
---|
179 | /* エラーチェック */
|
---|
180 | function lfErrorCheck2() {
|
---|
181 | $objErr = new SC_CheckError();
|
---|
182 |
|
---|
183 | $objErr->doFunc(array("都道府県", 'pref'), array("SELECT_CHECK","NUM_CHECK"));
|
---|
184 | $objErr->doFunc(array("市区町村", "addr01", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
|
---|
185 | $objErr->doFunc(array("番地", "addr02", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
|
---|
186 | $objErr->doFunc(array("電話番号1", 'tel01'), array("EXIST_CHECK","NUM_CHECK"));
|
---|
187 | $objErr->doFunc(array("電話番号2", 'tel02'), array("EXIST_CHECK","NUM_CHECK"));
|
---|
188 | $objErr->doFunc(array("電話番号3", 'tel03'), array("EXIST_CHECK","NUM_CHECK"));
|
---|
189 | $objErr->doFunc(array("電話番号", "tel01", "tel02", "tel03", TEL_LEN) ,array("TEL_CHECK"));
|
---|
190 | return $objErr->arrErr;
|
---|
191 |
|
---|
192 | }
|
---|
193 |
|
---|
194 |
|
---|
195 |
|
---|
196 | /* 登録実行 */
|
---|
197 | function lfRegistData($array, $arrRegistColumn) {
|
---|
198 | global $objConn;
|
---|
199 | global $objCustomer;
|
---|
200 |
|
---|
201 | foreach ($arrRegistColumn as $data) {
|
---|
202 | if (strlen($array[ $data["column"] ]) > 0) {
|
---|
203 | $arrRegist[ $data["column"] ] = $array[ $data["column"] ];
|
---|
204 | }
|
---|
205 | }
|
---|
206 |
|
---|
207 | $arrRegist['customer_id'] = $objCustomer->getvalue('customer_id');
|
---|
208 |
|
---|
209 | //-- 編集登録実行
|
---|
210 | $objConn->query("BEGIN");
|
---|
211 | if ($array['other_deliv_id'] != ""){
|
---|
212 | $objConn->autoExecute("dtb_other_deliv", $arrRegist, "other_deliv_id='" .addslashes($array["other_deliv_id"]). "'");
|
---|
213 | }else{
|
---|
214 | $objConn->autoExecute("dtb_other_deliv", $arrRegist);
|
---|
215 |
|
---|
216 | $sqlse = "SELECT max(other_deliv_id) FROM dtb_other_deliv WHERE customer_id = ?";
|
---|
217 | $array['other_deliv_id'] = $objConn->getOne($sqlse, array($arrRegist['customer_id']));
|
---|
218 | }
|
---|
219 |
|
---|
220 | $objConn->query("COMMIT");
|
---|
221 |
|
---|
222 | return $array['other_deliv_id'];
|
---|
223 | }
|
---|
224 |
|
---|
225 | //---- 取得文字列の変換
|
---|
226 | function lfConvertParam($array, $arrRegistColumn) {
|
---|
227 | /*
|
---|
228 | * 文字列の変換
|
---|
229 | * K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換
|
---|
230 | * C : 「全角ひら仮名」を「全角かた仮名」に変換
|
---|
231 | * V : 濁点付きの文字を一文字に変換。"K","H"と共に使用します
|
---|
232 | * n : 「全角」数字を「半角(ハンカク)」に変換
|
---|
233 | * a : 全角英数字を半角英数字に変換する
|
---|
234 | */
|
---|
235 | // カラム名とコンバート情報
|
---|
236 | foreach ($arrRegistColumn as $data) {
|
---|
237 | $arrConvList[ $data["column"] ] = $data["convert"];
|
---|
238 | }
|
---|
239 |
|
---|
240 | // 文字変換
|
---|
241 | foreach ($arrConvList as $key => $val) {
|
---|
242 | // POSTされてきた値のみ変換する。
|
---|
243 | if(strlen(($array[$key])) > 0) {
|
---|
244 | $array[$key] = mb_convert_kana($array[$key] ,$val);
|
---|
245 | }
|
---|
246 | }
|
---|
247 | return $array;
|
---|
248 | }
|
---|
249 |
|
---|
250 | // 郵便番号から住所の取得
|
---|
251 | function lfGetAddress($zipcode) {
|
---|
252 | global $arrPref;
|
---|
253 |
|
---|
254 | $conn = new SC_DBconn(ZIP_DSN);
|
---|
255 |
|
---|
256 | // 郵便番号検索文作成
|
---|
257 | $zipcode = mb_convert_kana($zipcode ,"n");
|
---|
258 | $sqlse = "SELECT state, city, town FROM mtb_zip WHERE zipcode = ?";
|
---|
259 |
|
---|
260 | $data_list = $conn->getAll($sqlse, array($zipcode));
|
---|
261 |
|
---|
262 | // インデックスと値を反転させる。
|
---|
263 | $arrREV_PREF = array_flip($arrPref);
|
---|
264 |
|
---|
265 | /*
|
---|
266 | 総務省からダウンロードしたデータをそのままインポートすると
|
---|
267 | 以下のような文字列が入っているので 対策する。
|
---|
268 | ・(1・19丁目)
|
---|
269 | ・以下に掲載がない場合
|
---|
270 | */
|
---|
271 | $town = $data_list[0]['town'];
|
---|
272 | $town = ereg_replace("(.*)$","",$town);
|
---|
273 | $town = ereg_replace("以下に掲載がない場合","",$town);
|
---|
274 | $data_list[0]['town'] = $town;
|
---|
275 | $data_list[0]['state'] = $arrREV_PREF[$data_list[0]['state']];
|
---|
276 |
|
---|
277 | return $data_list;
|
---|
278 | }
|
---|
279 |
|
---|
280 | /* 別のお届け先住所を一時受注テーブルへ */
|
---|
281 | function lfRegistOtherDelivData($uniqid, $objCustomer, $other_deliv_id) {
|
---|
282 | // 登録データの作成
|
---|
283 | $sqlval['order_temp_id'] = $uniqid;
|
---|
284 | $sqlval['update_date'] = 'Now()';
|
---|
285 | $sqlval['customer_id'] = $objCustomer->getValue('customer_id');
|
---|
286 | $sqlval['order_birth'] = $objCustomer->getValue('birth');
|
---|
287 |
|
---|
288 | $objQuery = new SC_Query();
|
---|
289 | $where = "other_deliv_id = ?";
|
---|
290 | $arrRet = $objQuery->select("*", "dtb_other_deliv", $where, array($other_deliv_id));
|
---|
291 |
|
---|
292 | $sqlval['deliv_check'] = '1';
|
---|
293 | $sqlval['deliv_name01'] = $arrRet[0]['name01'];
|
---|
294 | $sqlval['deliv_name02'] = $arrRet[0]['name02'];
|
---|
295 | $sqlval['deliv_kana01'] = $arrRet[0]['kana01'];
|
---|
296 | $sqlval['deliv_kana02'] = $arrRet[0]['kana02'];
|
---|
297 | $sqlval['deliv_zip01'] = $arrRet[0]['zip01'];
|
---|
298 | $sqlval['deliv_zip02'] = $arrRet[0]['zip02'];
|
---|
299 | $sqlval['deliv_pref'] = $arrRet[0]['pref'];
|
---|
300 | $sqlval['deliv_addr01'] = $arrRet[0]['addr01'];
|
---|
301 | $sqlval['deliv_addr02'] = $arrRet[0]['addr02'];
|
---|
302 | $sqlval['deliv_tel01'] = $arrRet[0]['tel01'];
|
---|
303 | $sqlval['deliv_tel02'] = $arrRet[0]['tel02'];
|
---|
304 | $sqlval['deliv_tel03'] = $arrRet[0]['tel03'];
|
---|
305 | sfRegistTempOrder($uniqid, $sqlval);
|
---|
306 | }
|
---|
307 |
|
---|
308 | ?>
|
---|