- Timestamp:
- 2013/05/02 18:11:36 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_12-dev/data/class/helper/SC_Helper_Purchase.php
r22568 r22796 32 32 * @version $Id$ 33 33 */ 34 class SC_Helper_Purchase 35 { 34 class SC_Helper_Purchase { 36 35 37 36 var $arrShippingKey = array( … … 61 60 * @return void 62 61 */ 63 function completeOrder($orderStatus = ORDER_NEW) 64 { 62 function completeOrder($orderStatus = ORDER_NEW) { 65 63 $objQuery =& SC_Query_Ex::getSingletonInstance(); 66 64 $objSiteSession = new SC_SiteSession_Ex(); … … 117 115 * @return void 118 116 */ 119 function cancelOrder($order_id, $orderStatus = ORDER_CANCEL, $is_delete = false) 120 { 117 function cancelOrder($order_id, $orderStatus = ORDER_CANCEL, $is_delete = false) { 121 118 $objQuery =& SC_Query_Ex::getSingletonInstance(); 122 119 $in_transaction = $objQuery->inTransaction(); … … 160 157 * @return string 受注一時ID 161 158 */ 162 function rollbackOrder($order_id, $orderStatus = ORDER_CANCEL, $is_delete = false) 163 { 159 function rollbackOrder($order_id, $orderStatus = ORDER_CANCEL, $is_delete = false) { 164 160 $objQuery =& SC_Query_Ex::getSingletonInstance(); 165 161 $in_transaction = $objQuery->inTransaction(); … … 203 199 * @return void 204 200 */ 205 function verifyChangeCart($uniqId, &$objCartSession) 206 { 201 function verifyChangeCart($uniqId, &$objCartSession) { 207 202 $cartKey = $objCartSession->getKey(); 208 203 … … 239 234 * @return array 受注一時情報の配列 240 235 */ 241 function getOrderTemp($uniqId) 242 { 236 function getOrderTemp($uniqId) { 243 237 $objQuery =& SC_Query_Ex::getSingletonInstance(); 244 238 return $objQuery->getRow('*', 'dtb_order_temp', 'order_temp_id = ?', array($uniqId)); … … 251 245 * @return array 受注一時情報の配列 252 246 */ 253 function getOrderTempByOrderId($order_id) 254 { 247 function getOrderTempByOrderId($order_id) { 255 248 $objQuery =& SC_Query_Ex::getSingletonInstance(); 256 249 return $objQuery->getRow('*', 'dtb_order_temp', 'order_id = ?', array($order_id)); … … 265 258 * @param array $params 登録する受注情報の配列 266 259 * @param SC_Customer $objCustomer SC_Customer インスタンス 267 * @return void 268 */ 269 function saveOrderTemp($uniqId, $params, &$objCustomer = NULL) 270 { 260 * @return array void 261 */ 262 function saveOrderTemp($uniqId, $params, &$objCustomer = NULL) { 271 263 if (SC_Utils_Ex::isBlank($uniqId)) { 272 264 return; … … 303 295 * @param bool $has_shipment_item 配送商品を保有している配送先のみ返す。 304 296 */ 305 function getShippingTemp($has_shipment_item = false) 306 { 297 function getShippingTemp($has_shipment_item = false) { 307 298 if ($has_shipment_item) { 308 299 $arrReturn = array(); … … 323 314 * @return void 324 315 */ 325 function clearShipmentItemTemp($shipping_id = null) 326 { 316 function clearShipmentItemTemp($shipping_id = null) { 327 317 if (is_null($shipping_id)) { 328 318 foreach ($_SESSION['shipping'] as $key => $value) { … … 344 334 * @return void 345 335 */ 346 function setShipmentItemTemp($shipping_id, $product_class_id, $quantity) 347 { 336 function setShipmentItemTemp($shipping_id, $product_class_id, $quantity) { 348 337 // 配列が長くなるので, リファレンスを使用する 349 338 $arrItems =& $_SESSION['shipping'][$shipping_id]['shipment_item'][$product_class_id]; … … 375 364 * 配送先都道府県の配列を返す. 376 365 */ 377 function getShippingPref($is_multiple) 378 { 366 function getShippingPref($is_multiple) { 379 367 $results = array(); 380 368 foreach (SC_Helper_Purchase_Ex::getShippingTemp($is_multiple) as $val) { … … 389 377 * @return boolean 複数配送指定の購入の場合 true 390 378 */ 391 function isMultiple() 392 { 379 function isMultiple() { 393 380 return count(SC_Helper_Purchase_Ex::getShippingTemp(true)) >= 2; 394 381 } … … 402 389 * @return void 403 390 */ 404 function saveShippingTemp($arrSrc, $shipping_id = 0) 405 { 391 function saveShippingTemp($arrSrc, $shipping_id = 0) { 406 392 // 配送商品は引き継がない 407 393 unset($arrSrc['shipment_item']); … … 421 407 * @return void 422 408 */ 423 function unsetShippingTemp() 424 { 409 function unsetShippingTemp() { 425 410 SC_Helper_Purchase_Ex::unsetAllShippingTemp(true); 426 411 } … … 432 417 * @return void 433 418 */ 434 static function unsetAllShippingTemp($multiple_temp = false) 435 { 419 static function unsetAllShippingTemp($multiple_temp = false) { 436 420 unset($_SESSION['shipping']); 437 421 if ($multiple_temp) { … … 446 430 * @return void 447 431 */ 448 static function unsetOneShippingTemp($shipping_id) 449 { 432 static function unsetOneShippingTemp($shipping_id) { 450 433 unset($_SESSION['shipping'][$shipping_id]); 451 434 } … … 509 492 * @return void 510 493 */ 511 function copyFromOrder(&$dest, $src, $prefix = 'shipping', $src_prefix = 'order', $arrKey = null) 512 { 494 function copyFromOrder(&$dest, $src, $prefix = 'shipping', $src_prefix = 'order', $arrKey = null) { 513 495 if (is_null($arrKey)) { 514 496 $arrKey = $this->arrShippingKey; … … 533 515 * @return void 534 516 */ 535 function extractShipping($arrSrc) 536 { 517 function extractShipping($arrSrc) { 537 518 $arrKey = array(); 538 519 foreach ($this->arrShippingKey as $key) { … … 543 524 544 525 /** 526 * 購入金額に応じた支払方法を取得する. 527 * 528 * @param integer $total 購入金額 529 * @param integer $deliv_id 配送業者ID 530 * @return array 購入金額に応じた支払方法の配列 531 */ 532 function getPaymentsByPrice($total, $deliv_id) { 533 534 $arrPaymentIds = $this->getPayments($deliv_id); 535 if (SC_Utils_Ex::isBlank($arrPaymentIds)) { 536 return array(); 537 } 538 539 $objQuery =& SC_Query_Ex::getSingletonInstance(); 540 541 // 削除されていない支払方法を取得 542 $where = 'del_flg = 0 AND payment_id IN (' . SC_Utils_Ex::repeatStrWithSeparator('?', count($arrPaymentIds)) . ')'; 543 $objQuery->setOrder('rank DESC'); 544 $payments = $objQuery->select('payment_id, payment_method, rule_max, upper_rule, note, payment_image, charge', 'dtb_payment', $where, $arrPaymentIds); 545 $arrPayment = array(); 546 foreach ($payments as $data) { 547 // 下限と上限が設定されている 548 if (strlen($data['rule_max']) != 0 && strlen($data['upper_rule']) != 0) { 549 if ($data['rule_max'] <= $total && $data['upper_rule'] >= $total) { 550 $arrPayment[] = $data; 551 } 552 } 553 // 下限のみ設定されている 554 elseif (strlen($data['rule_max']) != 0) { 555 if ($data['rule_max'] <= $total) { 556 $arrPayment[] = $data; 557 } 558 } 559 // 上限のみ設定されている 560 elseif (strlen($data['upper_rule']) != 0) { 561 if ($data['upper_rule'] >= $total) { 562 $arrPayment[] = $data; 563 } 564 } 565 // いずれも設定なし 566 else { 567 $arrPayment[] = $data; 568 } 569 } 570 return $arrPayment; 571 } 572 573 /** 574 * 支払方法の詳細を取得する. 575 * 576 * @param integer $payment_id お支払い方法 577 * @return array 支払方法詳細の配列 578 */ 579 function getPaymentsByPaymentsId($payment_id) { 580 $objQuery =& SC_Query_Ex::getSingletonInstance(); 581 $where = 'payment_id = ? AND del_flg = 0'; 582 $arrValues = array($payment_id); 583 return $objQuery->getRow('*', 'dtb_payment', $where, $arrValues); 584 } 585 586 /** 545 587 * お届け日一覧を取得する. 546 588 */ 547 function getDelivDate(&$objCartSess, $productTypeId) 548 { 589 function getDelivDate(&$objCartSess, $productTypeId) { 549 590 $cartList = $objCartSess->getCartList($productTypeId); 550 591 $delivDateIds = array(); … … 604 645 * お届け可能日のスタート値から, お届け日の配列を取得する. 605 646 */ 606 function getDateArray($start_day, $end_day) 607 { 647 function getDateArray($start_day, $end_day) { 608 648 $masterData = new SC_DB_MasterData_Ex(); 609 649 $arrWDAY = $masterData->getMasterData('mtb_wday'); … … 627 667 628 668 /** 669 * 配送業者IDからお届け時間の配列を取得する. 670 * 671 * @param integer $deliv_id 配送業者ID 672 * @return array お届け時間の配列 673 */ 674 function getDelivTime($deliv_id) { 675 $objQuery =& SC_Query_Ex::getSingletonInstance(); 676 $objQuery->setOrder('time_id'); 677 $results = $objQuery->select('time_id, deliv_time', 678 'dtb_delivtime', 679 'deliv_id = ?', array($deliv_id)); 680 $arrDelivTime = array(); 681 foreach ($results as $val) { 682 $arrDelivTime[$val['time_id']] = $val['deliv_time']; 683 } 684 return $arrDelivTime; 685 } 686 687 /** 688 * 商品種別ID から配送業者を取得する. 689 * 690 * @param integer $product_type_id 商品種別ID 691 * @return array 配送業者の配列 692 */ 693 function getDeliv($product_type_id) { 694 $objQuery =& SC_Query_Ex::getSingletonInstance(); 695 $objQuery->setOrder('rank DESC'); 696 return $objQuery->select('*', 'dtb_deliv', 'product_type_id = ? AND del_flg = 0', 697 array($product_type_id)); 698 } 699 700 /** 701 * 配送業者ID から, 有効な支払方法IDを取得する. 702 * 703 * @param integer $deliv_id 配送業者ID 704 * @return array 有効な支払方法IDの配列 705 */ 706 function getPayments($deliv_id) { 707 $objQuery =& SC_Query_Ex::getSingletonInstance(); 708 $objQuery->setOrder('rank'); 709 return $objQuery->getCol('payment_id', 'dtb_payment_options', 710 'deliv_id = ?', 711 array($deliv_id), MDB2_FETCHMODE_ORDERED); 712 } 713 714 /** 629 715 * 配送情報の登録を行う. 630 716 * … … 638 724 * @return void 639 725 */ 640 function registerShipping($order_id, $arrParams, $convert_shipping_date = true) 641 { 726 function registerShipping($order_id, $arrParams, $convert_shipping_date = true) { 642 727 $objQuery =& SC_Query_Ex::getSingletonInstance(); 643 728 $table = 'dtb_shipping'; … … 677 762 * @return void 678 763 */ 679 function registerShipmentItem($order_id, $shipping_id, $arrParams) 680 { 764 function registerShipmentItem($order_id, $shipping_id, $arrParams) { 681 765 $objQuery =& SC_Query_Ex::getSingletonInstance(); 682 766 $table = 'dtb_shipment_item'; … … 734 818 * @param integer 受注ID 735 819 */ 736 function registerOrderComplete($orderParams, &$objCartSession, $cartKey) 737 { 820 function registerOrderComplete($orderParams, &$objCartSession, $cartKey) { 738 821 $objQuery =& SC_Query_Ex::getSingletonInstance(); 739 822 … … 774 857 $arrDetail[$i]['price'] = $item['price']; 775 858 $arrDetail[$i]['quantity'] = $item['quantity']; 776 $arrDetail[$i]['tax_rate'] = $orderParams['order_tax_rate'];777 $arrDetail[$i]['tax_rule'] = $orderParams['order_tax_rule'];778 859 779 860 // 在庫の減少処理 … … 805 886 * @return integer 受注ID 806 887 */ 807 function registerOrder($order_id, $arrParams) 808 { 888 function registerOrder($order_id, $arrParams) { 809 889 $table = 'dtb_order'; 810 890 $where = 'order_id = ?'; … … 860 940 * @return void 861 941 */ 862 function registerOrderDetail($order_id, $arrParams) 863 { 942 function registerOrderDetail($order_id, $arrParams) { 864 943 $table = 'dtb_order_detail'; 865 944 $where = 'order_id = ?'; … … 882 961 * @return array 受注情報の配列 883 962 */ 884 function getOrder($order_id, $customer_id = null) 885 { 963 function getOrder($order_id, $customer_id = null) { 886 964 $objQuery =& SC_Query_Ex::getSingletonInstance(); 887 965 $where = 'order_id = ?'; … … 901 979 * @return array 受注詳細の配列 902 980 */ 903 function getOrderDetail($order_id, $has_order_status = true) 904 { 981 function getOrderDetail($order_id, $has_order_status = true) { 905 982 $objQuery =& SC_Query_Ex::getSingletonInstance(); 906 983 $dbFactory = SC_DB_DBFactory_Ex::getInstance(); … … 916 993 T2.quantity, 917 994 T2.point_rate, 918 T2.tax_rate,919 T2.tax_rule,920 995 __EOS__; 921 996 if ($has_order_status) { … … 959 1034 * @return void 960 1035 */ 961 function setDownloadableFlgTo(&$arrOrderDetail) 962 { 1036 function setDownloadableFlgTo(&$arrOrderDetail) { 963 1037 foreach ($arrOrderDetail as $key => $value) { 964 1038 // 販売価格が 0 円 … … 983 1057 * @return array 配送情報の配列 984 1058 */ 985 function getShippings($order_id, $has_items = true) 986 { 1059 function getShippings($order_id, $has_items = true) { 987 1060 $objQuery =& SC_Query_Ex::getSingletonInstance(); 988 1061 $arrResults = array(); … … 1014 1087 * @return array 商品規格IDをキーにした配送商品の配列 1015 1088 */ 1016 function getShipmentItems($order_id, $shipping_id, $has_detail = true) 1017 { 1089 function getShipmentItems($order_id, $shipping_id, $has_detail = true) { 1018 1090 $objQuery =& SC_Query_Ex::getSingletonInstance(); 1019 1091 $objProduct = new SC_Product_Ex(); … … 1047 1119 * @return void 1048 1120 */ 1049 function sendOrderMail($orderId) 1050 { 1121 function sendOrderMail($orderId) { 1051 1122 $mailHelper = new SC_Helper_Mail_Ex(); 1052 1123 $template_id = … … 1067 1138 * @return void 1068 1139 */ 1069 function sfUpdateOrderStatus($orderId, $newStatus = null, $newAddPoint = null, $newUsePoint = null, &$sqlval = array()) 1070 { 1140 function sfUpdateOrderStatus($orderId, $newStatus = null, $newAddPoint = null, $newUsePoint = null, &$sqlval = array()) { 1071 1141 $objQuery =& SC_Query_Ex::getSingletonInstance(); 1072 1142 $arrOrderOld = $objQuery->getRow('status, add_point, use_point, customer_id', 'dtb_order', 'order_id = ?', array($orderId)); … … 1176 1246 * @static 1177 1247 */ 1178 function sfUpdateOrderNameCol($order_id, $temp_table = false) 1179 { 1248 function sfUpdateOrderNameCol($order_id, $temp_table = false) { 1180 1249 $objQuery =& SC_Query_Ex::getSingletonInstance(); 1181 1250 … … 1215 1284 * @return boolean 使用するか(会員テーブルから減算するか) 1216 1285 */ 1217 function isUsePoint($status) 1218 { 1286 function isUsePoint($status) { 1219 1287 if ($status == null) { 1220 1288 return false; … … 1236 1304 * @return boolean 加算するか 1237 1305 */ 1238 function isAddPoint($status) 1239 { 1306 function isAddPoint($status) { 1240 1307 switch ($status) { 1241 1308 case ORDER_NEW: // 新規注文 … … 1273 1340 * @param integer $cartKey 登録を行うカート情報のキー 1274 1341 */ 1275 function cleanupSession($orderId, &$objCartSession, &$objCustomer, $cartKey) 1276 { 1342 function cleanupSession($orderId, &$objCartSession, &$objCustomer, $cartKey) { 1277 1343 // カートの内容を削除する. 1278 1344 $objCartSession->delAllProducts($cartKey); … … 1291 1357 * @return void 1292 1358 */ 1293 function setShipmentItemTempForSole(&$objCartSession, $shipping_id = 0) 1294 { 1359 function setShipmentItemTempForSole(&$objCartSession, $shipping_id = 0) { 1295 1360 $objCartSess = new SC_CartSession_Ex(); 1296 1361 … … 1309 1374 * @return integer 1310 1375 */ 1311 public function getNextOrderID() 1312 { 1376 public function getNextOrderID() { 1313 1377 $objQuery =& SC_Query_Ex::getSingletonInstance(); 1314 1378 return $objQuery->nextVal('dtb_order_order_id');
Note: See TracChangeset
for help on using the changeset viewer.