7 * LICENSE: This source file is licensed under the terms of the GNU General Public License.
9 * @package Magic3 Framework
10 * @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
11 * @copyright Copyright 2006-2012 Magic3 Project.
12 * @license http://www.gnu.org/copyleft/gpl.html GPL License
13 * @version SVN: $Id: ec_mainOrderDb.php 5475 2012-12-18 14:29:52Z fishbone $
14 * @link http://www.magic3.org
16 require_once($gEnvManager->getDbPath() . '/baseDb.php');
18 class ec_mainOrderDb extends BaseDb
20 const NO_ID = 'order_no'; // 注文番号取得用
25 * @param int $userId ユーザID兼データ更新ユーザ
26 * @param array $memberInfo 会員情報
27 * @param array $personInfo 個人情報
28 * @param array $companyInfo 法人情報
29 * @param array $address 住所
30 * @return true=成功、false=失敗
32 function getMemberInfo($userId, &$memberInfo, &$personInfo, &$companyInfo, &$address)
34 $queryStr = 'SELECT * FROM shop_member WHERE sm_login_user_id = ? AND sm_deleted = false';
35 $ret = $this->selectRecord($queryStr, array($userId), $memberInfo);
37 if ($memberInfo['sm_type'] == 1){ // 個人の場合
38 $queryStr = 'SELECT * FROM person_info WHERE pi_id = ? AND pi_language_id = ? AND pi_deleted = false';
39 $ret = $this->selectRecord($queryStr, array($memberInfo['sm_person_info_id'], $memberInfo['sm_language_id']), $personInfo);
43 $queryStr = 'SELECT * FROM address WHERE ad_id = ? AND ad_language_id = ? AND ad_deleted = false';
44 $ret = $this->selectRecord($queryStr, array($personInfo['pi_address_id'], $personInfo['pi_language_id']), $address);
46 } else if ($memberInfo['sm_type'] == 2){ // 法人の場合
47 $queryStr = 'SELECT * FROM company_info WHERE ci_id = ? AND ci_language_id = ? AND ci_deleted = false';
48 $ret = $this->selectRecord($queryStr, array($memberInfo['sm_company_info_id'], $memberInfo['sm_language_id']), $companyInfo);
52 $queryStr = 'SELECT * FROM address WHERE ad_id = ? AND ad_language_id = ? AND ad_deleted = false';
53 $ret = $this->selectRecord($queryStr, array($companyInfo['ci_address_id'], $companyInfo['ci_language_id']), $address);
64 * @param ing $userId ユーザID
65 * @param string $lang 言語
66 * @param string $clientId クライアントID
67 * @param int $custm_id 得意先(顧客)ID
68 * @param string $custm_name 得意先(顧客)名
69 * @param string $custm_name_kana 得意先(顧客)名(カナ)
70 * @param string $custm_person 得意先(顧客)担当者名
71 * @param string $custm_person_kana 得意先(顧客)担当者名(カナ)
72 * @param string $custm_zipcode 郵便番号(7桁)
73 * @param int $custm_state_id 都道府県、州(geo_zoneテーブル)
74 * @param string $custm_address 市区町村
75 * @param string $custm_address2 建物名
76 * @param string $custm_phone 電話番号
77 * @param string $custm_fax FAX
78 * @param string $custm_email Eメール
79 * @param string $custm_country_id 国ID
80 * @param int $deliv_id 出荷先ID
81 * @param string $deliv_name 出荷先名
82 * @param string $deliv_name_kana 出荷先名(カナ)
83 * @param string $deliv_person 出荷先担当者名
84 * @param string $deliv_person_kana 出荷先担当者名(カナ)
85 * @param string $deliv_zipcode 郵便番号(7桁)
86 * @param int $deliv_state_id 都道府県、州(geo_zoneテーブル)
87 * @param string $deliv_address 市区町村
88 * @param string $deliv_address2 建物名
89 * @param string $deliv_phone 電話番号
90 * @param string $deliv_fax FAX
91 * @param string $deliv_email Eメール
92 * @param string $deliv_country_id 国ID
93 * @param int $bill_id 請求先ID
94 * @param string $bill_name 請求先名
95 * @param string $bill_name_kana 請求先名(カナ)
96 * @param string $bill_person 請求先担当者名
97 * @param string $bill_person_kana 請求先担当者名(カナ)
98 * @param string $bill_zipcode 郵便番号(7桁)
99 * @param int $bill_state_id 都道府県、州(geo_zoneテーブル)
100 * @param string $bill_address 市区町村
101 * @param string $bill_address2 建物名
102 * @param string $bill_phone 電話番号
103 * @param string $bill_fax FAX
104 * @param string $bill_email Eメール
105 * @param string $bill_country_id 国ID
106 * @param string $deliv_method_id 配送方法
107 * @param string $pay_method_id 支払い方法
108 * @param string $card_type クレジットカードタイプ
109 * @param string $card_owner クレジットカード所有者
110 * @param string $card_number クレジットカード番号
111 * @param string $card_expires クレジットカード期限
112 * @param timestamp $demand_dt 希望納期
113 * @param string $demand_time 希望納期(時間帯)
114 * @param timestamp $appoint_dt 予定納期
115 * @param string $currency_id 通貨ID
116 * @param float $subtotal 商品総額
117 * @param float $discount 値引き額
118 * @param float $deliv_fee 配送料
119 * @param float $charge 手数料
120 * @param float $total 支払い総額
121 * @param string $discount_desc 値引き説明
122 * @return true=成功、false=失敗
124 function updateOrderSheet($userId, $lang, $clientId,
125 $custm_id, $custm_name, $custm_name_kana, $custm_person, $custm_person_kana, $custm_zipcode, $custm_state_id, $custm_address, $custm_address2, $custm_phone, $custm_fax, $custm_email, $custm_country_id,
126 $deliv_id, $deliv_name, $deliv_name_kana, $deliv_person, $deliv_person_kana, $deliv_zipcode, $deliv_state_id, $deliv_address, $deliv_address2, $deliv_phone, $deliv_fax, $deliv_email, $deliv_country_id,
127 $bill_id, $bill_name, $bill_name_kana, $bill_person, $bill_person_kana, $bill_zipcode, $bill_state_id, $bill_address, $bill_address2, $bill_phone, $bill_fax, $bill_email, $bill_country_id,
128 $deliv_method_id, $pay_method_id, $card_type, $card_owner, $card_number, $card_expires, $demand_dt, $demand_time, $appoint_dt, $currency_id, $subtotal, $discount, $deliv_fee, $charge, $total,
131 $now = date("Y/m/d H:i:s"); // 現在日時
132 $updateUserId = $this->gEnv->getCurrentUserId(); // 現在のユーザ
135 $this->startTransaction();
140 if (empty($clientId)){
142 $ret = $this->endTransaction();
144 } else {// クライアントIDからデータを取得するとき
145 // クライアントIDが登録済みかどうか確認
146 $queryStr = 'SELECT * FROM order_sheet WHERE oe_client_id = ?';
147 $ret = $this->selectRecords($queryStr, array($clientId), $rows);
149 if (count($rows) > 1){ // 2行以上取得できるときはエラー
151 $ret = $this->endTransaction();
154 $keyUserId = intval($rows[0]['oe_user_id']);
155 $keyLang = $rows[0]['oe_language_id'];
156 if ($keyUserId >= 0){ // クライアントIDで取得の場合はユーザIDがマイナス値のみ許可
158 $ret = $this->endTransaction();
161 } else { // レコードがない場合はユーザIDを作成
164 $queryStr = 'SELECT MIN(oe_user_id) AS mid FROM order_sheet WHERE oe_language_id = ?';
165 $ret = $this->selectRecord($queryStr, array($lang), $row);
166 if ($ret) $keyUserId = intval($row['mid']) -1;
167 if ($keyUserId >= 0) $keyUserId = -1;
172 $keyUserId = $userId;
176 $ret = $this->endTransaction();
182 $queryStr = 'SELECT * FROM order_sheet WHERE oe_user_id = ? AND oe_language_id = ?';
183 $ret = $this->selectRecord($queryStr, array($keyUserId, $keyLang), $row);
185 $queryStr = 'UPDATE order_sheet ';
187 $queryStr .= 'oe_user_id = ?, ';
188 $queryStr .= 'oe_language_id = ?, ';
189 $queryStr .= 'oe_custm_id = ?, ';
190 $queryStr .= 'oe_custm_name = ?, ';
191 $queryStr .= 'oe_custm_name_kana = ?, ';
192 $queryStr .= 'oe_custm_person = ?, ';
193 $queryStr .= 'oe_custm_person_kana = ?, ';
194 $queryStr .= 'oe_custm_zipcode = ?, ';
195 $queryStr .= 'oe_custm_state_id = ?, ';
196 $queryStr .= 'oe_custm_address1 = ?, ';
197 $queryStr .= 'oe_custm_address2 = ?, ';
198 $queryStr .= 'oe_custm_phone = ?, ';
199 $queryStr .= 'oe_custm_fax = ?, ';
200 $queryStr .= 'oe_custm_email = ?, ';
201 $queryStr .= 'oe_custm_country_id = ?, ';
202 $queryStr .= 'oe_deliv_id = ?, ';
203 $queryStr .= 'oe_deliv_name = ?, ';
204 $queryStr .= 'oe_deliv_name_kana = ?, ';
205 $queryStr .= 'oe_deliv_person = ?, ';
206 $queryStr .= 'oe_deliv_person_kana = ?, ';
207 $queryStr .= 'oe_deliv_zipcode = ?, ';
208 $queryStr .= 'oe_deliv_state_id = ?, ';
209 $queryStr .= 'oe_deliv_address1 = ?, ';
210 $queryStr .= 'oe_deliv_address2 = ?, ';
211 $queryStr .= 'oe_deliv_phone = ?, ';
212 $queryStr .= 'oe_deliv_fax = ?, ';
213 $queryStr .= 'oe_deliv_email = ?, ';
214 $queryStr .= 'oe_deliv_country_id = ?, ';
215 $queryStr .= 'oe_bill_id = ?, ';
216 $queryStr .= 'oe_bill_name = ?, ';
217 $queryStr .= 'oe_bill_name_kana = ?, ';
218 $queryStr .= 'oe_bill_person = ?, ';
219 $queryStr .= 'oe_bill_person_kana = ?, ';
220 $queryStr .= 'oe_bill_zipcode = ?, ';
221 $queryStr .= 'oe_bill_state_id = ?, ';
222 $queryStr .= 'oe_bill_address1 = ?, ';
223 $queryStr .= 'oe_bill_address2 = ?, ';
224 $queryStr .= 'oe_bill_phone = ?, ';
225 $queryStr .= 'oe_bill_fax = ?, ';
226 $queryStr .= 'oe_bill_email = ?, ';
227 $queryStr .= 'oe_bill_country_id = ?, ';
228 $queryStr .= 'oe_deliv_method_id = ?, ';
229 $queryStr .= 'oe_pay_method_id = ?, ';
230 $queryStr .= 'oe_card_type = ?, ';
231 $queryStr .= 'oe_card_owner = ?, ';
232 $queryStr .= 'oe_card_number = ?, ';
233 $queryStr .= 'oe_card_expires = ?, ';
234 $queryStr .= 'oe_demand_dt = ?, ';
235 $queryStr .= 'oe_demand_time = ?, ';
236 $queryStr .= 'oe_appoint_dt = ?, ';
237 $queryStr .= 'oe_discount_desc = ?, '; // 値引き説明
238 $queryStr .= 'oe_currency_id = ?, ';
239 $queryStr .= 'oe_subtotal = ?, ';
240 $queryStr .= 'oe_discount = ?, ';
241 $queryStr .= 'oe_deliv_fee = ?, ';
242 $queryStr .= 'oe_charge = ?, ';
243 $queryStr .= 'oe_total = ?, ';
244 $queryStr .= 'oe_client_id = ?, '; // クライアントID
245 $queryStr .= 'oe_session = ?, '; // セッションID
246 $queryStr .= 'oe_update_user_id = ?, ';
247 $queryStr .= 'oe_update_dt = ? ';
248 $queryStr .= 'WHERE oe_serial = ? ';
249 $this->execStatement($queryStr, array($keyUserId, $keyLang,
250 $custm_id, $custm_name, $custm_name_kana, $custm_person, $custm_person_kana, $custm_zipcode, $custm_state_id, $custm_address, $custm_address2, $custm_phone, $custm_fax, $custm_email, $custm_country_id,
251 $deliv_id, $deliv_name, $deliv_name_kana, $deliv_person, $deliv_person_kana, $deliv_zipcode, $deliv_state_id, $deliv_address, $deliv_address2, $deliv_phone, $deliv_fax, $deliv_email, $deliv_country_id,
252 $bill_id, $bill_name, $bill_name_kana, $bill_person, $bill_person_kana, $bill_zipcode, $bill_state_id, $bill_address, $bill_address2, $bill_phone, $bill_fax, $bill_email, $bill_country_id,
253 $deliv_method_id, $pay_method_id, $card_type, $card_owner, $card_number, $card_expires, $demand_dt, $demand_time, $appoint_dt, $discount_desc, $currency_id, $subtotal, $discount, $deliv_fee, $charge, $total,
254 $clientId, session_id(), $updateUserId, $now, $row['oe_serial']));
257 $queryStr = 'INSERT INTO order_sheet (';
258 $queryStr .= 'oe_user_id, ';
259 $queryStr .= 'oe_language_id, ';
260 $queryStr .= 'oe_custm_id, ';
261 $queryStr .= 'oe_custm_name, ';
262 $queryStr .= 'oe_custm_name_kana, ';
263 $queryStr .= 'oe_custm_person, ';
264 $queryStr .= 'oe_custm_person_kana, ';
265 $queryStr .= 'oe_custm_zipcode, ';
266 $queryStr .= 'oe_custm_state_id, ';
267 $queryStr .= 'oe_custm_address1, ';
268 $queryStr .= 'oe_custm_address2, ';
269 $queryStr .= 'oe_custm_phone, ';
270 $queryStr .= 'oe_custm_fax, ';
271 $queryStr .= 'oe_custm_email, ';
272 $queryStr .= 'oe_custm_country_id, ';
273 $queryStr .= 'oe_deliv_id, ';
274 $queryStr .= 'oe_deliv_name, ';
275 $queryStr .= 'oe_deliv_name_kana, ';
276 $queryStr .= 'oe_deliv_person, ';
277 $queryStr .= 'oe_deliv_person_kana, ';
278 $queryStr .= 'oe_deliv_zipcode, ';
279 $queryStr .= 'oe_deliv_state_id, ';
280 $queryStr .= 'oe_deliv_address1, ';
281 $queryStr .= 'oe_deliv_address2, ';
282 $queryStr .= 'oe_deliv_phone, ';
283 $queryStr .= 'oe_deliv_fax, ';
284 $queryStr .= 'oe_deliv_email, ';
285 $queryStr .= 'oe_deliv_country_id, ';
286 $queryStr .= 'oe_bill_id, ';
287 $queryStr .= 'oe_bill_name, ';
288 $queryStr .= 'oe_bill_name_kana, ';
289 $queryStr .= 'oe_bill_person, ';
290 $queryStr .= 'oe_bill_person_kana, ';
291 $queryStr .= 'oe_bill_zipcode, ';
292 $queryStr .= 'oe_bill_state_id, ';
293 $queryStr .= 'oe_bill_address1, ';
294 $queryStr .= 'oe_bill_address2, ';
295 $queryStr .= 'oe_bill_phone, ';
296 $queryStr .= 'oe_bill_fax, ';
297 $queryStr .= 'oe_bill_email, ';
298 $queryStr .= 'oe_bill_country_id, ';
299 $queryStr .= 'oe_deliv_method_id, ';
300 $queryStr .= 'oe_pay_method_id, ';
301 $queryStr .= 'oe_card_type, ';
302 $queryStr .= 'oe_card_owner, ';
303 $queryStr .= 'oe_card_number, ';
304 $queryStr .= 'oe_card_expires, ';
305 $queryStr .= 'oe_demand_dt, ';
306 $queryStr .= 'oe_demand_time, ';
307 $queryStr .= 'oe_appoint_dt, ';
308 $queryStr .= 'oe_discount_desc, '; // 値引き説明
309 $queryStr .= 'oe_currency_id, ';
310 $queryStr .= 'oe_subtotal, ';
311 $queryStr .= 'oe_discount, ';
312 $queryStr .= 'oe_deliv_fee, ';
313 $queryStr .= 'oe_charge, ';
314 $queryStr .= 'oe_total, ';
315 $queryStr .= 'oe_client_id, '; // クライアントID
316 $queryStr .= 'oe_session, '; // セッションID
317 $queryStr .= 'oe_update_user_id, ';
318 $queryStr .= 'oe_update_dt ';
319 $queryStr .= ') VALUES (';
381 $ret = $this->execStatement($queryStr, array($keyUserId, $keyLang,
382 $custm_id, $custm_name, $custm_name_kana, $custm_person, $custm_person_kana, $custm_zipcode, $custm_state_id, $custm_address, $custm_address2, $custm_phone, $custm_fax, $custm_email, $custm_country_id,
383 $deliv_id, $deliv_name, $deliv_name_kana, $deliv_person, $deliv_person_kana, $deliv_zipcode, $deliv_state_id, $deliv_address, $deliv_address2, $deliv_phone, $deliv_fax, $deliv_email, $deliv_country_id,
384 $bill_id, $bill_name, $bill_name_kana, $bill_person, $bill_person_kana, $bill_zipcode, $bill_state_id, $bill_address, $bill_address2, $bill_phone, $bill_fax, $bill_email, $bill_country_id,
385 $deliv_method_id, $pay_method_id, $card_type, $card_owner, $card_number, $card_expires, $demand_dt, $demand_time, $appoint_dt, $discount_desc, $currency_id, $subtotal, $discount, $deliv_fee, $charge, $total,
386 $clientId, session_id(), $updateUserId, $now));
389 $ret = $this->endTransaction();
395 * @param int $serial シリアル番号
396 * @param ing $userId 購入者ユーザID
397 * @param string $lang 言語
398 * @param string $order_no 受注番号(任意)
399 * @param int $custm_id 得意先(顧客)ID
400 * @param string $custm_name 得意先(顧客)名
401 * @param string $custm_name_kana 得意先(顧客)名(カナ)
402 * @param string $custm_person 得意先(顧客)担当者名
403 * @param string $custm_person_kana 得意先(顧客)担当者名(カナ)
404 * @param string $custm_zipcode 郵便番号(7桁)
405 * @param int $custm_state_id 都道府県、州(geo_zoneテーブル)
406 * @param string $custm_address 市区町村
407 * @param string $custm_address2 建物名
408 * @param string $custm_phone 電話番号
409 * @param string $custm_fax FAX
410 * @param string $custm_email Eメール
411 * @param string $custm_country_id 国ID
412 * @param int $deliv_id 出荷先ID
413 * @param string $deliv_name 出荷先名
414 * @param string $deliv_name_kana 出荷先名(カナ)
415 * @param string $deliv_person 出荷先担当者名
416 * @param string $deliv_person_kana 出荷先担当者名(カナ)
417 * @param string $deliv_zipcode 郵便番号(7桁)
418 * @param int $deliv_state_id 都道府県、州(geo_zoneテーブル)
419 * @param string $deliv_address 市区町村
420 * @param string $deliv_address2 建物名
421 * @param string $deliv_phone 電話番号
422 * @param string $deliv_fax FAX
423 * @param string $deliv_email Eメール
424 * @param string $deliv_country_id 国ID
425 * @param int $bill_id 請求先ID
426 * @param string $bill_name 請求先名
427 * @param string $bill_name_kana 請求先名(カナ)
428 * @param string $bill_person 請求先担当者名
429 * @param string $bill_person_kana 請求先担当者名(カナ)
430 * @param string $bill_zipcode 郵便番号(7桁)
431 * @param int $bill_state_id 都道府県、州(geo_zoneテーブル)
432 * @param string $bill_address 市区町村
433 * @param string $bill_address2 建物名
434 * @param string $bill_phone 電話番号
435 * @param string $bill_fax FAX
436 * @param string $bill_email Eメール
437 * @param string $bill_country_id 国ID
438 * @param string $deliv_method_id 配送方法
439 * @param string $pay_method_id 支払い方法
440 * @param string $card_type クレジットカードタイプ
441 * @param string $card_owner クレジットカード所有者
442 * @param string $card_number クレジットカード番号
443 * @param string $card_expires クレジットカード期限
444 * @param timestamp $demand_dt 希望納期
445 * @param string $demand_time 希望納期(時間帯)
446 * @param timestamp $appoint_dt 予定納期
447 * @param string $currency_id 通貨ID
448 * @param float $subtotal 商品総額
449 * @param float $discount 値引き額
450 * @param float $deliv_fee 配送料
451 * @param float $charge 手数料
452 * @param float $total 支払い総額
453 * @param int $order_status 受注状況
454 * @param timestamp $estimate_dt 見積日時
455 * @param timestamp $regist_dt 受注受付日時
456 * @param timestamp $order_dt 受注開始日時
457 * @param timestamp $deliv_dt 配送日時
458 * @param timestamp $close_dt 取引終了日時
459 * @param int $updateUserId 更新者ID
460 * @param timestamp $now 更新日時
461 * @param int $newId 新規ID
462 * @param int $newSerial 新規シリアル番号
463 * @param string $discount_desc 値引き説明
464 * @param timestamp $pay_dt 支払い日時
465 * @return true=成功、false=失敗
467 function updateOrder($serial, $userId, $lang, $order_no,
468 $custm_id, $custm_name, $custm_name_kana, $custm_person, $custm_person_kana, $custm_zipcode, $custm_state_id, $custm_address, $custm_address2, $custm_phone, $custm_fax, $custm_email, $custm_country_id,
469 $deliv_id, $deliv_name, $deliv_name_kana, $deliv_person, $deliv_person_kana, $deliv_zipcode, $deliv_state_id, $deliv_address, $deliv_address2, $deliv_phone, $deliv_fax, $deliv_email, $deliv_country_id,
470 $bill_id, $bill_name, $bill_name_kana, $bill_person, $bill_person_kana, $bill_zipcode, $bill_state_id, $bill_address, $bill_address2, $bill_phone, $bill_fax, $bill_email, $bill_country_id,
471 $deliv_method_id, $pay_method_id, $card_type, $card_owner, $card_number, $card_expires, $demand_dt, $demand_time, $appoint_dt, $currency_id, $subtotal, $discount, $deliv_fee, $charge, $total,
472 $order_status, $estimate_dt, $regist_dt, $order_dt, $deliv_dt, $close_dt,
473 $updateUserId, $now, &$newId, &$newSerial, $discount_desc = '', $pay_dt = '')
475 if (empty($pay_dt)) $pay_dt = $this->gEnv->getInitValueOfTimestamp(); // 日時初期化値
477 $historyIndex = 0; // 履歴番号
478 if ($serial == 0){ // 新規登録のとき
481 $queryStr = 'select max(or_id) as ms from order_header ';
482 $ret = $this->selectRecord($queryStr, array(), $row);
483 if ($ret) $id = $row['ms'] + 1;
486 $queryStr = 'SELECT * FROM order_header ';
487 $queryStr .= 'WHERE or_serial = ? ';
488 $ret = $this->selectRecord($queryStr, array($serial), $row);
489 if ($ret){ // 既に登録レコードがあるとき
490 if ($row['or_deleted']){ // レコードが削除されていれば終了
493 } else { // 存在しない場合は終了
496 $historyIndex = $row['or_history_index'] + 1;
500 $queryStr = 'UPDATE order_header ';
501 $queryStr .= 'SET or_deleted = true, '; // 削除
502 $queryStr .= 'or_update_user_id = ?, ';
503 $queryStr .= 'or_update_dt = ? ';
504 $queryStr .= 'WHERE or_serial = ?';
505 $this->execStatement($queryStr, array($updateUserId, $now, $serial));
509 $queryStr = 'INSERT INTO order_header (';
510 $queryStr .= 'or_id, ';
511 $queryStr .= 'or_history_index, ';
512 $queryStr .= 'or_user_id, ';
513 $queryStr .= 'or_language_id, ';
514 $queryStr .= 'or_order_no, ';
515 $queryStr .= 'or_custm_id, ';
516 $queryStr .= 'or_custm_name, ';
517 $queryStr .= 'or_custm_name_kana, ';
518 $queryStr .= 'or_custm_person, ';
519 $queryStr .= 'or_custm_person_kana, ';
520 $queryStr .= 'or_custm_zipcode, ';
521 $queryStr .= 'or_custm_state_id, ';
522 $queryStr .= 'or_custm_address1, ';
523 $queryStr .= 'or_custm_address2, ';
524 $queryStr .= 'or_custm_phone, ';
525 $queryStr .= 'or_custm_fax, ';
526 $queryStr .= 'or_custm_email, ';
527 $queryStr .= 'or_custm_country_id, ';
528 $queryStr .= 'or_deliv_id, ';
529 $queryStr .= 'or_deliv_name, ';
530 $queryStr .= 'or_deliv_name_kana, ';
531 $queryStr .= 'or_deliv_person, ';
532 $queryStr .= 'or_deliv_person_kana, ';
533 $queryStr .= 'or_deliv_zipcode, ';
534 $queryStr .= 'or_deliv_state_id, ';
535 $queryStr .= 'or_deliv_address1, ';
536 $queryStr .= 'or_deliv_address2, ';
537 $queryStr .= 'or_deliv_phone, ';
538 $queryStr .= 'or_deliv_fax, ';
539 $queryStr .= 'or_deliv_email, ';
540 $queryStr .= 'or_deliv_country_id, ';
541 $queryStr .= 'or_bill_id, ';
542 $queryStr .= 'or_bill_name, ';
543 $queryStr .= 'or_bill_name_kana, ';
544 $queryStr .= 'or_bill_person, ';
545 $queryStr .= 'or_bill_person_kana, ';
546 $queryStr .= 'or_bill_zipcode, ';
547 $queryStr .= 'or_bill_state_id, ';
548 $queryStr .= 'or_bill_address1, ';
549 $queryStr .= 'or_bill_address2, ';
550 $queryStr .= 'or_bill_phone, ';
551 $queryStr .= 'or_bill_fax, ';
552 $queryStr .= 'or_bill_email, ';
553 $queryStr .= 'or_bill_country_id, ';
554 $queryStr .= 'or_deliv_method_id, ';
555 $queryStr .= 'or_pay_method_id, ';
556 $queryStr .= 'or_card_type, ';
557 $queryStr .= 'or_card_owner, ';
558 $queryStr .= 'or_card_number, ';
559 $queryStr .= 'or_card_expires, ';
560 $queryStr .= 'or_demand_dt, ';
561 $queryStr .= 'or_demand_time, ';
562 $queryStr .= 'or_appoint_dt, ';
563 $queryStr .= 'or_discount_desc, '; // 値引き説明
564 $queryStr .= 'or_currency_id, ';
565 $queryStr .= 'or_subtotal, ';
566 $queryStr .= 'or_discount, ';
567 $queryStr .= 'or_deliv_fee, ';
568 $queryStr .= 'or_charge, ';
569 $queryStr .= 'or_total, ';
570 $queryStr .= 'or_order_status, ';
571 $queryStr .= 'or_estimate_dt, ';
572 $queryStr .= 'or_regist_dt, ';
573 $queryStr .= 'or_order_dt, ';
574 $queryStr .= 'or_deliv_dt, ';
575 $queryStr .= 'or_close_dt, ';
576 $queryStr .= 'or_pay_dt, '; // 支払い日時
577 $queryStr .= 'or_create_user_id, ';
578 $queryStr .= 'or_create_dt ';
579 $queryStr .= ') VALUES (';
649 $ret = $this->execStatement($queryStr, array($id, $historyIndex, $userId, $lang, $order_no,
650 $custm_id, $custm_name, $custm_name_kana, $custm_person, $custm_person_kana, $custm_zipcode, $custm_state_id, $custm_address, $custm_address2, $custm_phone, $custm_fax, $custm_email, $custm_country_id,
651 $deliv_id, $deliv_name, $deliv_name_kana, $deliv_person, $deliv_person_kana, $deliv_zipcode, $deliv_state_id, $deliv_address, $deliv_address2, $deliv_phone, $deliv_fax, $deliv_email, $deliv_country_id,
652 $bill_id, $bill_name, $bill_name_kana, $bill_person, $bill_person_kana, $bill_zipcode, $bill_state_id, $bill_address, $bill_address2, $bill_phone, $bill_fax, $bill_email, $bill_country_id,
653 $deliv_method_id, $pay_method_id, $card_type, $card_owner, $card_number, $card_expires, $demand_dt, $demand_time, $appoint_dt, $discount_desc, $currency_id, $subtotal, $discount, $deliv_fee, $charge, $total,
654 $order_status, $estimate_dt, $regist_dt, $order_dt, $deliv_dt, $close_dt, $pay_dt,
655 $updateUserId, $now));
658 $queryStr = 'select max(or_serial) as ns from order_header ';
659 $ret = $this->selectRecord($queryStr, array(), $row);
660 if ($ret) $newSerial = $row['ns'];
666 * @param int $orderId 受注ID
667 * @param int $index 詳細インデックス(0~)
668 * @param string $productClass 商品クラス
669 * @param int $productId 商品ID
670 * @param string $productType 商品タイプ
671 * @param string $productName 商品名
672 * @param string $productCode 商品コード
673 * @param float $unitPrice 税抜き商品単価
674 * @param int $quantity 数量
675 * @param float $tax 税
676 * @param float $total 税込み価格
677 * @param int $userId 更新者ID
678 * @param string $now 現在日時
679 * @return true=成功、false=失敗
681 function addOrderDetail($orderId, $index, $productClass, $productId, $productType, $productName, $productCode, $unitPrice, $quantity, $tax, $total, $userId, $now)
684 $queryStr = 'INSERT INTO order_detail (';
685 $queryStr .= 'od_order_id, ';
686 $queryStr .= 'od_index, ';
687 $queryStr .= 'od_product_class, ';
688 $queryStr .= 'od_product_id, ';
689 $queryStr .= 'od_product_type_id, ';
690 $queryStr .= 'od_product_name, ';
691 $queryStr .= 'od_product_code, ';
692 $queryStr .= 'od_unit_price, ';
693 $queryStr .= 'od_quantity, ';
694 $queryStr .= 'od_tax, ';
695 $queryStr .= 'od_total, ';
696 $queryStr .= 'od_create_user_id, ';
697 $queryStr .= 'od_create_dt ';
698 $queryStr .= ') VALUES (';
712 $ret = $this->execStatement($queryStr, array($orderId, $index, $productClass, $productId, $productType, $productName, $productCode, $unitPrice, $quantity, $tax, $total, $userId, $now));
718 * @param string $orderId 受注ID
719 * @param string $lang 言語ID
720 * @param function $callback コールバック関数
723 function getOrderDetailList($orderId, $lang, $callback)
725 $queryStr = 'SELECT * FROM order_detail LEFT JOIN order_header ON od_order_id = or_id AND or_deleted = false ';
726 $queryStr .= 'LEFT JOIN currency ON or_currency_id = cu_id AND cu_language_id = ? ';
727 $queryStr .= 'LEFT JOIN product_type ON od_product_class = py_product_class AND od_product_type_id = py_id AND or_language_id = py_language_id AND py_deleted = false ';
728 $queryStr .= 'LEFT JOIN photo ON od_product_id = ht_id AND cu_language_id = ht_language_id AND ht_deleted = false '; // フォトギャラリー画像用
729 $queryStr .= 'LEFT JOIN product ON od_product_id = pt_id AND cu_language_id = pt_language_id AND pt_deleted = false '; // 一般商品用
730 $queryStr .= 'WHERE od_order_id = ? AND od_deleted = false ';
731 $queryStr .= 'ORDER BY od_index ';
732 $this->selectLoop($queryStr, array($lang, $orderId), $callback, null);
737 * @param int $userId ユーザID兼データ更新ユーザ
738 * @param string $lang 言語
739 * @param array $row 取得レコード
740 * @return true=成功、false=失敗
742 function getOrderSheet($userId, $lang, &$row)
744 $queryStr = 'SELECT * FROM order_sheet WHERE oe_user_id = ? AND oe_language_id = ?';
745 $ret = $this->selectRecord($queryStr, array($userId, $lang), $row);
751 * @param string $clientId クライアントID
752 * @param array $row 取得レコード
753 * @return true=成功、false=失敗
755 function getOrderSheetByClientId($clientId, &$row)
758 if (empty($clientId)) return false;
760 $queryStr = 'SELECT * FROM order_sheet WHERE oe_client_id = ?';
761 $ret = $this->selectRecords($queryStr, array($clientId), $rows);
763 if (count($rows) > 1){ // 2行以上取得できるときはエラー
766 if (intval($rows[0]['oe_user_id']) >= 0){ // クライアントIDで取得の場合はユーザIDがマイナス値のみ許可
776 * @param int $userId ユーザID兼データ更新ユーザ
777 * @param string $lang 言語
778 * @return true=成功、false=失敗
780 function delOrderSheet($userId, $lang)
782 $startTran = false; // この関数でトランザクションを開始したかどうか
785 if (!$this->isInTransaction()){
786 $this->startTransaction();
790 $queryStr = 'DELETE FROM order_sheet ';
791 $queryStr .= 'WHERE oe_user_id = ? AND oe_language_id = ?';
792 $ret = $this->execStatement($queryStr, array($userId, $lang));
795 if ($startTran) $ret = $this->endTransaction();
801 * @param string $clientId クライアントID
802 * @return true=成功、false=失敗
804 function delOrderSheetByClientId($clientId)
806 $startTran = false; // この関数でトランザクションを開始したかどうか
809 if (!$this->isInTransaction()){
810 $this->startTransaction();
814 $queryStr = 'DELETE FROM order_sheet ';
815 $queryStr .= 'WHERE oe_client_id = ?';
816 $ret = $this->execStatement($queryStr, array($clientId));
819 if ($startTran) $ret = $this->endTransaction();
825 * @param int $id 受注ID
826 * @param array $row 取得レコード
827 * @return true=成功、false=失敗
829 function getOrder($id, &$row)
831 $queryStr = 'SELECT * FROM order_header WHERE or_id = ? AND or_deleted = false';
832 $ret = $this->selectRecord($queryStr, array($id), $row);
838 * @param int $serial シリアル番号
839 * @param array $row 取得レコード
840 * @return true=成功、false=失敗
842 function getOrderBySerial($serial, &$row)
844 $queryStr = 'SELECT * FROM order_header LEFT JOIN _login_user ON or_create_user_id = lu_id AND lu_deleted = false ';
845 $queryStr .= 'WHERE or_serial = ?';
846 $ret = $this->selectRecord($queryStr, array($serial), $row);
852 * @param string $no 注文番号
853 * @param array $row 取得レコード
854 * @return true=成功、false=失敗
856 function getOrderByOrderNo($no, &$row)
858 $queryStr = 'SELECT * FROM order_header LEFT JOIN _login_user ON or_create_user_id = lu_id AND lu_deleted = false ';
859 $queryStr .= 'WHERE or_deleted = false '; // 未削除
860 $queryStr .= 'AND or_order_no = ? ';
861 $ret = $this->selectRecord($queryStr, array($no), $row);
867 * @param array $row 取得レコード
868 * @return true=成功、false=失敗
870 /* function getLatestOrder(&$row)
873 $queryStr = 'SELECT max(or_serial) as ms FROM order_header ';
874 $ret = $this->selectRecord($queryStr, array(), $maxRow);
876 $queryStr = 'SELECT * FROM order_header WHERE or_serial = ?';
877 $ret = $this->selectRecord($queryStr, array($maxRow['ms']), $row);
884 * @return string 注文番号。存在しない場合は空文字列。
886 function getOrderNo()
889 $queryStr = 'SELECT * FROM _used_no WHERE un_id = ?';
890 $ret = $this->selectRecord($queryStr, array(self::NO_ID), $row);
891 if ($ret) $orderNo = $row['un_value'];
897 * @param string $no 注文番号
898 * @return true=成功、false=失敗
900 function updateOrderNo($no)
903 $queryStr = 'SELECT * FROM _used_no ';
904 $queryStr .= 'WHERE un_id = ?';
905 $ret = $this->isRecordExists($queryStr, array(self::NO_ID));
907 $queryStr = "UPDATE _used_no SET un_value = ? WHERE un_id = ?";
908 return $this->execStatement($queryStr, array($no, self::NO_ID));
910 $queryStr = "INSERT INTO _used_no (un_id, un_value) VALUES (?, ?)";
911 return $this->execStatement($queryStr, array(self::NO_ID, $no));
917 * @param int $serialNo シリアルNo
918 * @param int $userId ユーザID(データ更新者)
919 * @return true=成功、false=失敗
921 function delOrder($serialNo, $userId)
923 $now = date("Y/m/d H:i:s"); // 現在日時
926 $this->startTransaction();
928 // 指定のシリアルNoのレコードが削除状態でないかチェック
929 $queryStr = 'select * from order_header ';
930 $queryStr .= 'where or_deleted = false '; // 未削除
931 $queryStr .= 'and or_serial = ? ';
932 $ret = $this->selectRecord($queryStr, array($serialNo), $row);
933 if (!$ret){ // 存在しない場合は終了
934 $this->endTransaction();
939 $queryStr = 'UPDATE order_header ';
940 $queryStr .= 'SET or_deleted = true, '; // 削除
941 $queryStr .= 'or_update_user_id = ?, ';
942 $queryStr .= 'or_update_dt = ? ';
943 $queryStr .= 'WHERE or_serial = ?';
944 $this->execStatement($queryStr, array($userId, $now, $serialNo));
947 $queryStr = 'UPDATE order_detail ';
948 $queryStr .= 'SET od_deleted = true, '; // 削除
949 $queryStr .= 'od_update_user_id = ?, ';
950 $queryStr .= 'od_update_dt = ? ';
951 $queryStr .= 'WHERE od_order_id = ? AND od_deleted = false';
952 $this->execStatement($queryStr, array($userId, $now, $row['or_id']));
955 $ret = $this->endTransaction();
962 * @param string $coutryId 国ID
963 * @param string $lang 言語
964 * @param function $callback コールバック関数
967 function getAllState($coutryId, $lang, $callback)
969 $queryStr = 'SELECT * FROM geo_zone ';
970 $queryStr .= 'WHERE gz_country_id = ? AND gz_type = 1 AND gz_language_id = ? ';
971 $queryStr .= 'ORDER BY gz_index ';
972 $this->selectLoop($queryStr, array($coutryId, $lang), $callback, null);
977 * @param string $coutryId 国ID
978 * @param string $lang 言語
979 * @param string $id 地域ID
982 function getStateName($coutryId, $lang, $id)
984 $queryStr = 'SELECT * FROM geo_zone ';
985 $queryStr .= 'WHERE gz_country_id = ? AND gz_type = 1 AND gz_language_id = ? AND gz_id = ?';
986 $ret = $this->selectRecord($queryStr, array($coutryId, $lang, $id), $row);
988 return $row['gz_name'];
996 * @param string $lang 言語
997 * @param int $setId セットID
1000 function getAllDelivMethodCount($lang, $setId = 0)
1002 // $setId = 0; // デフォルトの定義セット
1003 $queryStr = 'SELECT * FROM delivery_method_def ';
1004 $queryStr .= 'WHERE do_deleted = false ';
1005 $queryStr .= 'AND do_visible = true '; // 表示状態
1006 $queryStr .= 'AND do_language_id = ? ';
1007 $queryStr .= 'AND do_set_id = ? ';
1008 return $this->selectRecordCount($queryStr, array($lang, $setId));
1013 * @param string $lang 言語
1014 * @param int $setId セットID
1015 * @param function $callback コールバック関数
1018 function getAllDelivMethod($lang, $setId, $callback)
1020 // $setId = 0; // デフォルトの定義セット
1021 $queryStr = 'SELECT * FROM delivery_method_def ';
1022 $queryStr .= 'WHERE do_deleted = false ';
1023 $queryStr .= 'AND do_visible = true '; // 表示状態
1024 $queryStr .= 'AND do_language_id = ? ';
1025 $queryStr .= 'AND do_set_id = ? ';
1026 $queryStr .= 'ORDER BY do_index ';
1027 $this->selectLoop($queryStr, array($lang, $setId), $callback, null);
1032 * @param string $id 配送方法ID
1033 * @param string $lang 言語
1034 * @param int $setId セットID
1035 * @param array $row 取得レコード
1036 * @return true=成功、false=失敗
1038 function getDelivMethod($id, $lang, $setId, &$row)
1040 $queryStr = 'SELECT * FROM delivery_method_def ';
1041 $queryStr .= 'WHERE do_deleted = false ';
1042 $queryStr .= 'AND do_id = ? '; // 表示状態
1043 $queryStr .= 'AND do_language_id = ? ';
1044 $queryStr .= 'AND do_set_id = ? ';
1045 $ret = $this->selectRecord($queryStr, array($id, $lang, $setId), $row);
1051 * @param string $lang 言語
1054 function getAllPaymentMethodCount($lang)
1056 $setId = 0; // デフォルトの定義セット
1057 $queryStr = 'SELECT * FROM pay_method_def ';
1058 $queryStr .= 'WHERE po_deleted = false ';
1059 $queryStr .= 'AND po_visible = true '; // 表示状態
1060 $queryStr .= 'AND po_language_id = ? ';
1061 $queryStr .= 'AND po_set_id = ? ';
1062 return $this->selectRecordCount($queryStr, array($lang, $setId));
1067 * @param string $lang 言語
1068 * @param function $callback コールバック関数
1071 function getAllPaymentMethod($lang, $callback)
1073 $setId = 0; // デフォルトの定義セット
1074 $queryStr = 'SELECT * FROM pay_method_def ';
1075 $queryStr .= 'WHERE po_deleted = false ';
1076 $queryStr .= 'AND po_visible = true '; // 表示状態
1077 $queryStr .= 'AND po_language_id = ? ';
1078 $queryStr .= 'AND po_set_id = ? ';
1079 $queryStr .= 'ORDER BY po_index ';
1080 $this->selectLoop($queryStr, array($lang, $setId), $callback, null);
1085 * @param string $id 支払い方法ID
1086 * @param string $lang 言語
1087 * @param int $setId セットID
1088 * @param array $row 取得レコード
1089 * @return true=成功、false=失敗
1091 function getPaymentMethod($id, $lang, $setId, &$row)
1093 $queryStr = 'SELECT * FROM pay_method_def ';
1094 $queryStr .= 'WHERE po_deleted = false ';
1095 $queryStr .= 'AND po_id = ? '; // 表示状態
1096 $queryStr .= 'AND po_language_id = ? ';
1097 $queryStr .= 'AND po_set_id = ? ';
1098 $ret = $this->selectRecord($queryStr, array($id, $lang, $setId), $row);
1102 * インナーウィジェットのメソッド定義を取得
1104 * @param string $type メソッド種別
1105 * @param string $lang 言語
1106 * @param array $rows 取得レコード
1107 * @return bool true=取得、false=取得せず
1109 function getAllIWidgetMethod($type, $lang, &$rows)
1111 $setId = 0; // デフォルトの定義セット
1112 $queryStr = 'SELECT * FROM _iwidget_method ';
1113 $queryStr .= 'WHERE id_deleted = false ';
1114 $queryStr .= 'AND id_visible = true '; // 表示状態
1115 $queryStr .= 'AND id_type = ? ';
1116 $queryStr .= 'AND id_language_id = ? ';
1117 $queryStr .= 'AND id_set_id = ? ';
1118 $queryStr .= 'ORDER BY id_index ';
1119 $retValue = $this->selectRecords($queryStr, array($type, $lang, $setId), $rows);
1125 * @param int $userId ユーザID兼データ更新ユーザ
1126 * @param array $row 取得レコード
1127 * @return true=成功、false=失敗
1129 function getMember($userId, &$row)
1131 $queryStr = 'SELECT * FROM shop_member WHERE sm_login_user_id = ? AND sm_deleted = false';
1132 $ret = $this->selectRecord($queryStr, array($userId), $row);
1138 * @param int $id 個人情報ID
1139 * @param array $row 取得レコード
1140 * @return true=成功、false=失敗
1142 function getPersonInfo($id, &$row)
1144 $queryStr = 'SELECT * FROM person_info WHERE pi_id = ? AND pi_deleted = false';
1145 $ret = $this->selectRecord($queryStr, array($id), $row);
1151 * @param int $id 個人情報ID
1152 * @param array $row 取得レコード
1153 * @return true=成功、false=失敗
1155 function getAddress($id, &$row)
1157 $queryStr = 'SELECT * FROM address WHERE ad_id = ? AND ad_deleted = false';
1158 $ret = $this->selectRecord($queryStr, array($id), $row);
1164 * @param int $statusMin 取得する受注状況のステータス範囲(開始)、指定なしの場合は0
1165 * @param int $statusMax 取得する受注状況のステータス範囲(終了)、指定なしの場合は0
1166 * @param int $limit 取得する項目数
1167 * @param int $offset 取得する先頭位置(0~)
1168 * @param function $callback コールバック関数
1171 function searchOrderHeader($statusMin, $statusMax, $limit, $offset, $callback)
1174 $queryStr = 'SELECT * FROM order_header LEFT JOIN _login_user ON or_user_id = lu_id AND lu_deleted = false ';
1175 $queryStr .= 'WHERE or_deleted = false ';// 削除されていない
1176 if ($statusMin != 0){ // 開始が設定されているとき
1177 $queryStr .= 'AND or_order_status >= ? ';
1178 $param[] = $statusMin;
1180 if ($statusMax != 0){ // 終了が設定されているとき
1181 $queryStr .= 'AND or_order_status <= ? ';
1182 $param[] = $statusMax;
1184 $queryStr .= 'ORDER BY or_id desc limit ' . $limit . ' offset ' . $offset;
1185 $this->selectLoop($queryStr, $param, $callback, null);
1190 * @param int $statusMin 取得する受注状況のステータス範囲(開始)、指定なしの場合は0
1191 * @param int $statusMax 取得する受注状況のステータス範囲(終了)、指定なしの場合は0
1194 function searchOrderHeaderCount($statusMin, $statusMax)
1197 $queryStr = 'SELECT * FROM order_header LEFT JOIN _login_user ON or_user_id = lu_id AND lu_deleted = false ';
1198 $queryStr .= 'WHERE or_deleted = false ';// 削除されていない
1199 if ($statusMin != 0){ // 開始が設定されているとき
1200 $queryStr .= 'AND or_order_status >= ? ';
1201 $param[] = $statusMin;
1203 if ($statusMax != 0){ // 終了が設定されているとき
1204 $queryStr .= 'AND or_order_status <= ? ';
1205 $param[] = $statusMax;
1207 return $this->selectRecordCount($queryStr, $param);
1210 * ユーザを指定して、受注状況一覧を取得
1212 * @param int $userId ユーザID
1213 * @param function $callback コールバック関数
1216 function getOrderHeaderByUser($userId, $callback)
1218 $initDt = $this->gEnv->getInitValueOfTimestamp(); // 日時初期化値
1220 $queryStr = 'SELECT * FROM order_header LEFT JOIN _login_user ON or_user_id = lu_id AND lu_deleted = false ';
1221 $queryStr .= 'WHERE or_deleted = false ';// 削除されていない
1222 $queryStr .= 'AND or_user_id = ? ';
1223 $queryStr .= 'AND or_pay_dt != ? '; // 支払い済み
1224 $queryStr .= 'ORDER BY or_id desc';
1225 $this->selectLoop($queryStr, array($userId, $initDt), $callback);
1228 * 指定受注項目が指定ユーザの受注であるか判断
1230 * @param int $orderId 受注ID
1231 * @param int $userId ユーザID
1234 function isOrderByUser($orderId, $userId)
1236 $queryStr = 'SELECT * FROM order_header ';
1237 $queryStr .= 'WHERE or_deleted = false ';// 削除されていない
1238 $queryStr .= 'AND or_id = ? ';
1239 $queryStr .= 'AND or_user_id = ? ';
1240 return $this->isRecordExists($queryStr, array($orderId, $userId));
1245 * @param int $status 受注ステータス
1246 * @param string $lang 言語
1247 * @param array $row レコード
1248 * @return bool 取得 = true, 取得なし= false
1250 function getOrderStatusName($status, $lang, &$row)
1252 $queryStr = 'SELECT * FROM order_status ';
1253 $queryStr .= 'WHERE os_id = ? AND os_language_id = ? ';
1254 $ret = $this->selectRecord($queryStr, array($status, $lang), $row);
1260 * @param string $coutryId 国ID
1261 * @param string $lang 言語
1262 * @param function $callback コールバック関数
1265 function getAllOrderStatus($lang, $callback)
1267 $queryStr = 'SELECT * FROM order_status ';
1268 $queryStr .= 'WHERE os_language_id = ? ';
1269 $queryStr .= 'ORDER BY os_id ';
1270 $this->selectLoop($queryStr, array($lang), $callback, null);
1275 * @param int $id ユーザID
1276 * @param array $row レコード
1277 * @return bool 取得 = true, 取得なし= false
1279 function getLoginUserById($id, &$row)
1281 $queryStr = 'select * from _login_user ';
1282 $queryStr .= 'WHERE lu_id = ? AND lu_deleted = false';
1283 $ret = $this->selectRecord($queryStr, array($id), $row);
1289 * @param int $id 商品ID
1290 * @param string $lang 言語ID
1291 * @param array $updateParam 更新パラメータ
1292 * @return bool true = 成功、false = 失敗
1294 function updateProductRecord($id, $lang, $updateParam)
1296 $now = date("Y/m/d H:i:s"); // 現在日時
1297 $userId = $this->gEnv->getCurrentUserId(); // 現在のユーザ
1300 $keys = array_keys($updateParam);
1301 if (in_array('pe_serial', $keys)) return false;
1304 $queryStr = 'SELECT * FROM product_record ';
1305 $queryStr .= 'WHERE pe_product_id = ? ';
1306 $queryStr .= 'AND pe_language_id = ? ';
1307 $ret = $this->selectRecord($queryStr, array($id, $lang), $stockRow);
1308 if ($ret){ // データが存在するとき
1309 // ##### データを更新 #####
1311 $queryStr = 'UPDATE product_record ';
1312 $queryStr .= 'SET ';
1314 for ($i = 0; $i < count($keys); $i++){
1315 $queryStr .= $keys[$i] . ' = ?, ';
1316 $values[] = $updateParam[$keys[$i]];
1318 $queryStr .= 'pe_update_user_id = ?, '; $values[] = $userId;
1319 $queryStr .= 'pe_update_dt = ? '; $values[] = $now;
1320 $queryStr .= 'WHERE pe_serial = ? ';
1321 $values[] = $stockRow['pe_serial'];
1322 $ret =$this->execStatement($queryStr, $values);
1324 // ##### データを新規追加 #####
1326 $queryStr = 'INSERT INTO product_record ';
1331 for ($i = 0; $i < count($keys); $i++){
1332 $queryStr .= $keys[$i] . ', ';
1334 $values[] = $updateParam[$keys[$i]];
1336 $queryStr .= 'pe_product_id, pe_language_id, pe_update_user_id, pe_update_dt) ';
1337 $valueStr .= '?, ?, ?, ?) ';
1340 $values[] = $userId;
1343 $queryStr .= 'VALUES ';
1344 $queryStr .= $valueStr;
1345 $ret =$this->execStatement($queryStr, $values);