Changeset 22553 for branches/version-2_12-dev/data
- Timestamp:
- 2013/02/15 20:50:41 (11 years ago)
- Location:
- branches/version-2_12-dev/data/class
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_12-dev/data/class/SC_CartSession.php
r22358 r22553 508 508 function checkProducts($productTypeId) { 509 509 $objProduct = new SC_Product_Ex(); 510 $objDelivery = new SC_Helper_Delivery_Ex(); 511 $arrDeliv = $objDelivery->getList($productTypeId); 510 512 $tpl_message = ''; 511 513 … … 525 527 * 配送業者のチェック 526 528 */ 527 $arrDeliv = SC_Helper_Purchase_Ex::getDeliv($productTypeId);528 529 if (SC_Utils_Ex::isBlank($arrDeliv)) { 529 530 $tpl_message .= '※「' . $product['name'] . '」はまだ配送の準備ができておりません。'; -
branches/version-2_12-dev/data/class/helper/SC_Helper_Delivery.php
r22543 r22553 31 31 class SC_Helper_Delivery 32 32 { 33 /** 34 * 配送方法の情報を取得. 35 * 36 * @param integer $deliv_id 配送方法ID 37 * @param boolean $has_deleted 削除された支払方法も含む場合 true; 初期値 false 38 * @return array 39 */ 40 public function get($deliv_id, $has_deleted = false) { 41 $objQuery =& SC_Query_Ex::getSingletonInstance(); 42 43 // 配送業者一覧の取得 44 $col = 'deliv_id, name, service_name, remark, confirm_url, product_type_id'; 45 $where = 'deliv_id = ?'; 46 if (!$has_deleted) { 47 $where .= ' AND del_flg = 0'; 48 } 49 $table = 'dtb_deliv'; 50 $arrRet = $objQuery->select($col, $table, $where, array($deliv_id)); 51 $arrDeliv = $arrRet[0]; 52 if (!$arrDeliv) { 53 return $arrDeliv; 54 } 55 56 // お届け時間の取得 57 $col = 'deliv_time'; 58 $where = 'deliv_id = ? ORDER BY time_id'; 59 $table = 'dtb_delivtime'; 60 $arrDeliv['deliv_time'] = $objQuery->select($col, $table, $where, array($deliv_id)); 61 62 // 配送料金の取得 63 $col = 'fee'; 64 $where = 'deliv_id = ? ORDER BY pref'; 65 $table = 'dtb_delivfee'; 66 $arrDeliv['fee'] = $objQuery->select($col, $table, $where, array($deliv_id)); 67 68 // 支払方法 69 $col = 'payment_id'; 70 $where = 'deliv_id = ? ORDER BY rank'; 71 $table = 'dtb_payment_options'; 72 $arrRet = $objQuery->select($col, $table, $where, array($deliv_id)); 73 $arrPaymentIds = array(); 74 foreach ($arrRet as $val) { 75 $arrPaymentIds[] = $val['payment_id']; 76 } 77 $arrDeliv['payment_ids'] = $arrPaymentIds; 78 79 return $arrDeliv; 80 } 33 81 34 82 /** 35 83 * 配送方法一覧の取得. 36 84 * 85 * @param integer $product_type_id 商品種別ID 37 86 * @param boolean $has_deleted 削除された支払方法も含む場合 true; 初期値 false 38 87 * @return array 39 88 */ 40 public function getList($ has_deleted = false) {89 public function getList($product_type_id = null, $has_deleted = false) { 41 90 $objQuery =& SC_Query_Ex::getSingletonInstance(); 42 91 $col = '*'; 43 92 $where = ''; 93 $arrVal = array(); 44 94 if (!$has_deleted) { 45 95 $where .= 'del_flg = 0'; 46 96 } 97 if (!is_null($product_type_id)) { 98 if (!$has_deleted) { 99 $where .= ' AND '; 100 } 101 $where .= 'product_type_id = ?'; 102 $arrVal[] = $product_type_id; 103 } 47 104 $table = 'dtb_deliv'; 48 105 $objQuery->setOrder('rank DESC'); 49 $arrRet = $objQuery->select($col, $table, $where );106 $arrRet = $objQuery->select($col, $table, $where, $arrVal); 50 107 return $arrRet; 108 } 109 110 /** 111 * 配送方法の登録. 112 * 113 * @param array $sqlval 114 * @return integer $deliv_id 115 */ 116 public function save($sqlval) { 117 $objQuery =& SC_Query_Ex::getSingletonInstance(); 118 $objQuery->begin(); 119 120 // お届け時間 121 $sqlval_deliv_time = $sqlval['deliv_time']; 122 unset($sqlval['deliv_time']); 123 // 配送料 124 if (INPUT_DELIV_FEE) { 125 $sqlval_deliv_fee = $sqlval['deliv_fee']; 126 } 127 unset($sqlval['deliv_fee']); 128 // 支払い方法 129 $sqlval_payment_ids = $sqlval['payment_ids']; 130 unset($sqlval['payment_ids']); 131 132 // deliv_id が決まっていた場合 133 if ($sqlval['deliv_id'] != '') { 134 $deliv_id = $sqlval['deliv_id']; 135 $where = 'deliv_id = ?'; 136 $objQuery->update('dtb_deliv', $sqlval, $where, array($deliv_id)); 137 138 // お届け時間の登録 139 $table = 'dtb_delivtime'; 140 $where = 'deliv_id = ? AND time_id = ?'; 141 for ($cnt = 1; $cnt <= DELIVTIME_MAX; $cnt++) { 142 $keyname = 'deliv_time'.$cnt; 143 $arrWhereVal = array($deliv_id, $cnt); 144 // 既存データの有無を確認 145 $curData = $objQuery->select('*', $table, $where, $arrWhereVal); 146 147 if (isset($sqlval_deliv_time[$cnt])) { 148 $deliv_time = $sqlval_deliv_time[$cnt]; 149 150 // 入力が空ではなく、DBに情報があれば更新 151 if (count($curData)) { 152 $objQuery->update($table, $deliv_time, $where, $arrWhereVal); 153 } 154 // DBに情報がなければ登録 155 else { 156 $deliv_time['deliv_id'] = $deliv_id; 157 $deliv_time['time_id'] = $cnt; 158 $objQuery->insert($table, $deliv_time); 159 } 160 } 161 // 入力が空で、DBに情報がある場合は削除 162 else if (count($curData)) { 163 $objQuery->delete($table, $where, $arrWhereVal); 164 } 165 } 166 167 // 配送料の登録 168 if (INPUT_DELIV_FEE) { 169 foreach ($sqlval_deliv_fee as $cnt => $deliv_fee) { 170 $objQuery->update('dtb_delivfee', array('fee' => $deliv_fee['fee']), 'deliv_id = ? AND fee_id = ?', array($deliv_id, $cnt)); 171 } 172 } 173 } else { 174 // 登録する配送業者IDの取得 175 $deliv_id = $objQuery->nextVal('dtb_deliv_deliv_id'); 176 $sqlval['deliv_id'] = $deliv_id; 177 $sqlval['rank'] = $objQuery->max('rank', 'dtb_deliv') + 1; 178 $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; 179 // INSERTの実行 180 $objQuery->insert('dtb_deliv', $sqlval); 181 182 // お届け時間の設定 183 foreach ($sqlval_deliv_time as $cnt => $deliv_time) { 184 $deliv_time['deliv_id'] = $deliv_id; 185 $deliv_time['time_id'] = $cnt; 186 // INSERTの実行 187 $objQuery->insert('dtb_delivtime', $deliv_time); 188 } 189 190 if (INPUT_DELIV_FEE) { 191 // 配送料金の設定 192 foreach ($sqlval_deliv_fee as $cnt => $deliv_fee) { 193 $deliv_fee['deliv_id'] = $deliv_id; 194 $deliv_fee['fee_id'] = $cnt; 195 // INSERTの実行 196 $objQuery->insert('dtb_delivfee', $deliv_fee); 197 } 198 } 199 } 200 201 // 支払い方法 202 $objQuery->delete('dtb_payment_options', 'deliv_id = ?', array($deliv_id)); 203 foreach ($sqlval_payment_ids as $payment_ids) { 204 $payment_ids['deliv_id'] = $deliv_id; 205 $objQuery->insert('dtb_payment_options', $payment_ids); 206 } 207 208 $objQuery->commit(); 209 210 return $deliv_id; 51 211 } 52 212 … … 86 246 87 247 /** 248 * 同じ内容の配送方法が存在するか確認. 249 * 250 * @param array $arrDeliv 251 * @return boolean 252 */ 253 public function checkExist($arrDeliv) { 254 $objDb = new SC_Helper_DB_Ex(); 255 if ($arrDeliv['deliv_id'] == '') { 256 $ret = $objDb->sfIsRecord('dtb_deliv', 'service_name', array($arrDeliv['service_name'])); 257 } else { 258 $objQuery =& SC_Query_Ex::getSingletonInstance(); 259 $ret = (($objQuery->count('dtb_deliv', 'deliv_id != ? AND service_name = ? ', array($arrDeliv['deliv_id'], $arrDeliv['service_name'])) > 0)? true : false); 260 } 261 return $ret; 262 } 263 264 /** 88 265 * 配送方法IDをキー, 名前を値とする配列を取得. 89 266 * -
branches/version-2_12-dev/data/class/helper/SC_Helper_Purchase.php
r22537 r22553 673 673 674 674 /** 675 * 商品種別ID から配送業者を取得する.676 *677 * @param integer $product_type_id 商品種別ID678 * @return array 配送業者の配列679 */680 function getDeliv($product_type_id) {681 $objQuery =& SC_Query_Ex::getSingletonInstance();682 $objQuery->setOrder('rank DESC');683 return $objQuery->select('*', 'dtb_deliv', 'product_type_id = ? AND del_flg = 0',684 array($product_type_id));685 }686 687 /**688 675 * 配送業者ID から, 有効な支払方法IDを取得する. 689 676 * -
branches/version-2_12-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_DeliveryInput.php
r22537 r22553 149 149 */ 150 150 function lfRegistData($arrRet, $member_id) { 151 $objQuery =& SC_Query_Ex::getSingletonInstance(); 152 $objQuery->begin(); 151 $objDelivery = new SC_Helper_Delivery_Ex(); 153 152 154 153 // 入力データを渡す。 154 $sqlval['deliv_id'] = $arrRet['deliv_id']; 155 155 $sqlval['name'] = $arrRet['name']; 156 156 $sqlval['service_name'] = $arrRet['service_name']; … … 161 161 $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; 162 162 163 // deliv_id が決まっていた場合 164 if ($arrRet['deliv_id'] != '') { 165 $deliv_id = $arrRet['deliv_id']; 166 $where = 'deliv_id = ?'; 167 $objQuery->update('dtb_deliv', $sqlval, $where, array($deliv_id)); 168 169 // お届け時間の登録 170 $table = 'dtb_delivtime'; 171 $where = 'deliv_id = ? AND time_id = ?'; 172 for ($cnt = 1; $cnt <= DELIVTIME_MAX; $cnt++) { 173 $sqlval = array(); 174 $keyname = 'deliv_time'.$cnt; 175 $arrWhereVal = array($deliv_id, $cnt); 176 // 既存データの有無を確認 177 $curData = $objQuery->select('*', $table, $where, $arrWhereVal); 178 179 if (strcmp($arrRet[$keyname], '') != 0) { 180 $sqlval['deliv_time'] = $arrRet[$keyname]; 181 182 // 入力が空ではなく、DBに情報があれば更新 183 if (count($curData)) { 184 $objQuery->update($table, $sqlval, $where, $arrWhereVal); 185 } 186 // DBに情報がなければ登録 187 else { 188 $sqlval['deliv_id'] = $deliv_id; 189 $sqlval['time_id'] = $cnt; 190 $objQuery->insert($table, $sqlval); 191 } 192 } 193 // 入力が空で、DBに情報がある場合は削除 194 else if (count($curData)) { 195 $objQuery->delete($table, $where, $arrWhereVal); 196 } 163 // お届け時間 164 $sqlval['deliv_time'] = array(); 165 for ($cnt = 1; $cnt <= DELIVTIME_MAX; $cnt++) { 166 $keyname = "deliv_time$cnt"; 167 if ($arrRet[$keyname] != '') { 168 $deliv_time = array(); 169 $deliv_time['deliv_time'] = $arrRet[$keyname]; 170 $sqlval['deliv_time'][$cnt] = $deliv_time; 197 171 } 198 199 // 配送料の登録 200 if (INPUT_DELIV_FEE) { 201 for ($cnt = 1; $cnt <= DELIVFEE_MAX; $cnt++) { 202 $keyname = 'fee'.$cnt; 203 if (strcmp($arrRet[$keyname], '') != 0) { 204 $sqlval = array('fee' => $arrRet[$keyname]); 205 $objQuery->update('dtb_delivfee', $sqlval, 'deliv_id = ? AND fee_id = ?', array($deliv_id, $cnt)); 206 } 172 } 173 174 // 配送料 175 if (INPUT_DELIV_FEE) { 176 $sqlval['deliv_fee'] = array(); 177 // 配送料金の設定 178 for ($cnt = 1; $cnt <= DELIVFEE_MAX; $cnt++) { 179 $keyname = "fee$cnt"; 180 if ($arrRet[$keyname] != '') { 181 $fee = array(); 182 $fee['fee'] = $arrRet[$keyname]; 183 $fee['pref'] = $cnt; 184 $sqlval['deliv_fee'][$cnt] = $fee; 207 185 } 208 186 } 209 } else { 210 // 登録する配送業者IDの取得 211 $deliv_id = $objQuery->nextVal('dtb_deliv_deliv_id'); 212 $sqlval['deliv_id'] = $deliv_id; 213 $sqlval['rank'] = $objQuery->max('rank', 'dtb_deliv') + 1; 214 $sqlval['create_date'] = 'CURRENT_TIMESTAMP'; 215 // INSERTの実行 216 $objQuery->insert('dtb_deliv', $sqlval); 217 218 $sqlval = array(); 219 // お届け時間の設定 220 for ($cnt = 1; $cnt <= DELIVTIME_MAX; $cnt++) { 221 $keyname = "deliv_time$cnt"; 222 if ($arrRet[$keyname] != '') { 223 $sqlval['deliv_id'] = $deliv_id; 224 $sqlval['time_id'] = $cnt; 225 $sqlval['deliv_time'] = $arrRet[$keyname]; 226 // INSERTの実行 227 $objQuery->insert('dtb_delivtime', $sqlval); 228 } 229 } 230 231 if (INPUT_DELIV_FEE) { 232 $sqlval = array(); 233 // 配送料金の設定 234 for ($cnt = 1; $cnt <= DELIVFEE_MAX; $cnt++) { 235 $keyname = "fee$cnt"; 236 if ($arrRet[$keyname] != '') { 237 $sqlval['deliv_id'] = $deliv_id; 238 $sqlval['fee'] = $arrRet[$keyname]; 239 $sqlval['pref'] = $cnt; 240 // INSERTの実行 241 $sqlval['fee_id'] = $cnt; 242 $objQuery->insert('dtb_delivfee', $sqlval); 243 } 244 } 245 } 246 } 247 248 $objQuery->delete('dtb_payment_options', 'deliv_id = ?', array($arrRet['deliv_id'])); 249 $sqlval = array(); 187 } 188 189 // 支払い方法 190 $sqlval['payment_ids'] = array(); 250 191 $i = 1; 251 192 foreach ($arrRet['payment_ids'] as $val) { 252 $ sqlval['deliv_id'] = $deliv_id;253 $ sqlval['payment_id'] = $val;254 $ sqlval['rank'] = $i;255 $ objQuery->insert('dtb_payment_options', $sqlval);193 $payment_ids = array(); 194 $payment_ids['payment_id'] = $val; 195 $payment_ids['rank'] = $i; 196 $sqlval['payment_ids'][] = $payment_ids; 256 197 $i++; 257 198 } 258 $objQuery->commit(); 199 200 $deliv_id = $objDelivery->save($sqlval); 201 259 202 return $deliv_id; 260 203 } … … 263 206 function lfGetDelivData(&$objFormParam) { 264 207 $objQuery =& SC_Query_Ex::getSingletonInstance(); 208 $objDelivery = new SC_Helper_Delivery_Ex(); 265 209 266 210 $deliv_id = $objFormParam->getValue('deliv_id'); … … 269 213 $this->lfInitParam('edit', $objFormParam); 270 214 271 // 配送業者一覧の取得 272 $col = 'deliv_id, name, service_name, remark, confirm_url, product_type_id'; 273 $where = 'deliv_id = ?'; 274 $table = 'dtb_deliv'; 275 $arrRet = $objQuery->select($col, $table, $where, array($deliv_id)); 276 $objFormParam->setParam($arrRet[0]); 277 // お届け時間の取得 278 $col = 'deliv_time'; 279 $where = 'deliv_id = ? ORDER BY time_id'; 280 $table = 'dtb_delivtime'; 281 $arrRet = $objQuery->select($col, $table, $where, array($deliv_id)); 282 $objFormParam->setParamList($arrRet, 'deliv_time'); 283 // 配送料金の取得 284 $col = 'fee'; 285 $where = 'deliv_id = ? ORDER BY pref'; 286 $table = 'dtb_delivfee'; 287 $arrRet = $objQuery->select($col, $table, $where, array($deliv_id)); 288 $objFormParam->setParamList($arrRet, 'fee'); 215 $arrDeliv = $objDelivery->get($deliv_id); 216 217 // お届け時間 218 $objFormParam->setParamList($arrDeliv['deliv_time'], 'deliv_time'); 219 unset($arrDeliv['deliv_time']); 220 // 配送料金 221 $objFormParam->setParamList($arrDeliv['fee'], 'fee'); 222 unset($arrDeliv['fee']); 289 223 // 支払方法 290 $col = 'payment_id'; 291 $where = 'deliv_id = ? ORDER BY rank'; 292 $table = 'dtb_payment_options'; 293 $arrRet = $objQuery->select($col, $table, $where, array($deliv_id)); 294 $arrPaymentIds = array(); 295 foreach ($arrRet as $val) { 296 $arrPaymentIds[] = $val['payment_id']; 297 } 298 $objFormParam->setValue('payment_ids', $arrPaymentIds); 224 $objFormParam->setValue('payment_ids', $arrDeliv['payment_ids']); 225 unset($arrDeliv['payment_ids']); 226 // 配送業者 227 $objFormParam->setParam($arrDeliv); 299 228 } 300 229 … … 308 237 if (!isset($objErr->arrErr['name'])) { 309 238 // 既存チェック 310 $objDb = new SC_Helper_DB_Ex(); 311 if ($arrRet['deliv_id'] == '') { 312 $ret = $objDb->sfIsRecord('dtb_deliv', 'service_name', array($arrRet['service_name'])); 313 } else { 314 $objQuery =& SC_Query_Ex::getSingletonInstance(); 315 $ret = (($objQuery->count('dtb_deliv', 'deliv_id != ? AND service_name = ? ', array($arrRet['deliv_id'], $arrRet['service_name'])) > 0)? true : false); 316 } 317 if ($ret) { 239 $objDelivery = new SC_Helper_Delivery_Ex(); 240 if ($objDelivery->checkExist($arrRet)) { 318 241 $objErr->arrErr['service_name'] = '※ 同じ名称の組み合わせは登録できません。<br>'; 319 242 } -
branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php
r22538 r22553 81 81 $objCustomer = new SC_Customer_Ex(); 82 82 $objFormParam = new SC_FormParam_Ex(); 83 $objDelivery = new SC_Helper_Delivery_Ex(); 83 84 84 85 $this->is_multiple = $objPurchase->isMultiple(); … … 93 94 94 95 // 配送業者を取得 95 $this->arrDeliv = $obj Purchase->getDeliv($cart_key);96 $this->arrDeliv = $objDelivery->getList($cart_key); 96 97 $this->is_single_deliv = $this->isSingleDeliv($this->arrDeliv); 97 98
Note: See TracChangeset
for help on using the changeset viewer.