Ignore:
Timestamp:
2012/03/12 15:35:03 (12 years ago)
Author:
Seasoft
Message:

#1439 (「お届け先の指定」に戻った際に、選択した状態を引き継いでいない)

  • 実装誤りの修正

#1672 (非会員購入時「お届け先の複数指定」から戻るボタンで遷移すると追加したお届け先が削除される)

  • 実装誤りの修正

#1675 (「お届け先の複数指定」画面での入力内容が復元されない)
#1315 (複数のお届け先関連のキー情報が怪しい)

  • 根本的な解決ではありませんが、とりあえず会員に関しては other_deliv_id を使うようにした。

#1613 (typo修正・ソース整形・ソースコメントの改善)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/class/pages/shopping/LC_Page_Shopping_Deliv.php

    r21596 r21629  
    122122                $objPurchase->unsetShippingTemp(); 
    123123 
    124                 $success = $this->registerDeliv($arrForm['deliv_check'], $this->tpl_uniqid, $objPurchase, $objCustomer); 
     124                $shipping_id = $arrForm['deliv_check'] == -1 ? 0 : $arrForm['deliv_check']; 
     125                $success = $this->registerDeliv($shipping_id, $this->tpl_uniqid, $objPurchase, $objCustomer); 
    125126                if (!$success) { 
    126127                    SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true); 
    127128                } 
    128129 
    129                 $objPurchase->setShipmentItemTempForSole($objCartSess); 
     130                $objPurchase->setShipmentItemTempForSole($objCartSess, $shipping_id); 
    130131                $objSiteSess->setRegistFlag(); 
    131132                SC_Response_Ex::sendRedirect(SHOPPING_PAYMENT_URLPATH); 
     
    158159                exit; 
    159160                break; 
     161 
    160162            default: 
     163                // 配送IDの取得 
     164                $shippingData = $objPurchase->getShippingTemp(); 
     165                $arrShippingId = array_keys($shippingData); 
     166                if (isset($arrShippingId[0])) { 
     167                    $this->arrForm['deliv_check']['value'] = $arrShippingId[0] == 0 ? -1 : $arrShippingId[0]; 
     168                } 
    161169                break; 
    162170        } 
     
    210218     * お届け先チェックの値が不正な場合は false を返す. 
    211219     * 
    212      * @param integer $deliv_check お届け先チェック 
     220     * @param integer $other_deliv_id  
    213221     * @param string $uniqid 受注一時テーブルのユニークID 
    214222     * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス 
     
    216224     * @return boolean お届け先チェックの値が妥当な場合 true 
    217225     */ 
    218     function registerDeliv($deliv_check, $uniqid, &$objPurchase, &$objCustomer) { 
     226    function registerDeliv($other_deliv_id, $uniqid, &$objPurchase, &$objCustomer) { 
    219227        GC_Utils_Ex::gfDebugLog('register deliv. deliv_check=' . $deliv_check); 
    220228        $arrValues = array(); 
    221229        // 会員登録住所がチェックされている場合 
    222         if ($deliv_check == '-1') { 
     230        if ($other_deliv_id == 0) { 
    223231            $objPurchase->copyFromCustomer($arrValues, $objCustomer, 'shipping'); 
    224             $objPurchase->saveShippingTemp($arrValues); 
    225             $objPurchase->saveOrderTemp($uniqid, $arrValues, $objCustomer); 
    226             return true; 
    227232        } 
    228233        // 別のお届け先がチェックされている場合 
    229         elseif ($deliv_check >= 1) { 
     234        else { 
    230235            $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    231236            $arrOtherDeliv = $objQuery->getRow('*', 'dtb_other_deliv', 
    232237                                               'customer_id = ? AND other_deliv_id = ?', 
    233                                                array($objCustomer->getValue('customer_id'), $deliv_check)); 
    234             if (SC_Utils_Ex::isBlank($arrOtherDeliv)) { 
     238                                               array($objCustomer->getValue('customer_id'), $other_deliv_id)); 
     239            if (empty($arrOtherDeliv)) { 
    235240                return false; 
    236241            } 
    237242 
    238243            $objPurchase->copyFromOrder($arrValues, $arrOtherDeliv, 'shipping', ''); 
    239             $objPurchase->saveShippingTemp($arrValues); 
    240             $objPurchase->saveOrderTemp($uniqid, $arrValues, $objCustomer); 
    241             return true; 
    242         } 
    243         // お届け先チェックが不正な場合 
    244         else { 
    245             return false; 
    246         } 
     244        } 
     245        $objPurchase->saveShippingTemp($arrValues, $other_deliv_id); 
     246        $objPurchase->saveOrderTemp($uniqid, $arrValues, $objCustomer); 
     247        return true; 
    247248    } 
    248249} 
Note: See TracChangeset for help on using the changeset viewer.