Ignore:
Timestamp:
2011/07/03 04:16:46 (10 years ago)
Author:
Seasoft
Message:

#1322 (単価の表示が永続化される変数と異なる)
#1328 (複数配送時に入力内容確認画面でお届け先別商品欄に単価が表示されない)
#1362 (お届け先の複数指定 数量0も保持される)
#1387 (お届け先の複数指定 数量空欄も許容したい)

File:
1 edited

Legend:

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

    r21006 r21008  
    7575                                            $this->tpl_uniqid); 
    7676        $this->tpl_addrmax = count($this->addrs); 
     77        $this->addrs = array_merge(array('' => '選択してください'), $this->addrs); 
    7778        $this->lfInitParam($objFormParam); 
    7879 
     
    132133        $objFormParam->addParam("メイン一覧画像", "main_list_image"); 
    133134        $objFormParam->addParam("販売価格", "price"); 
    134         $objFormParam->addParam("数量", 'quantity', INT_LEN, 'n', array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 
    135         $objFormParam->addParam("配送先住所", 'shipping', INT_LEN, 'n', array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
     135        $objFormParam->addParam("数量", 'quantity', INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 
     136        $objFormParam->addParam("配送先住所", 'shipping', INT_LEN, 'n', array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    136137        $objFormParam->addParam("カート番号", "cart_no", INT_LEN, 'n', array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
    137138        $objFormParam->addParam("行数", "line_of_num", INT_LEN, 'n', array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
     
    213214        $objFormParam->convParam(); 
    214215        $arrErr = $objFormParam->checkError(); 
     216 
     217        $arrKey = $objFormParam->getKeyList(); 
     218        unset($arrKey['line_of_num']); 
     219        $arrParams = $objFormParam->getSwapArray(); 
     220 
     221        foreach ($arrParams as $index => $arrParam) { 
     222            // お届け先を選択していて、数量を入力していない 
     223            if (!SC_Utils_Ex::isBlank($arrParam['shipping']) && SC_Utils_Ex::isBlank($arrParam['quantity'])) { 
     224                $arrErr['quantity'][$index] = '※ 数量が入力されていません。<br />'; 
     225            } 
     226            // 数量を入力していて、お届け先を選択していない 
     227            if (!SC_Utils_Ex::isBlank($arrParam['quantity']) && SC_Utils_Ex::isBlank($arrParam['shipping'])) { 
     228                $arrErr['shipping'][$index] = '※ お届け先が入力されていません。<br />'; 
     229            } 
     230        } 
     231 
    215232        // 入力エラーが無い場合、カゴの中身との数量の整合を確認 
    216  
    217233        if (empty($arrErr)) { 
    218234            $arrQuantity = array(); 
    219235            // 入力内容を集計 
    220             $arrParams = $objFormParam->getHashArray(); 
    221             $arrParams = SC_Utils_Ex::sfSwapArray($arrParams); 
    222236            foreach ($arrParams as $arrParam) { 
    223237                $product_class_id = $arrParam['product_class_id']; 
     
    230244                // 差異がある場合、エラーを記録 
    231245                if ($arrCartRow['quantity'] != $arrQuantity[$product_class_id]) { 
    232                     foreach ($arrParams as $key => $arrParam) { 
     246                    foreach ($arrParams as $index => $arrParam) { 
    233247                        if ($arrParam['product_class_id'] == $product_class_id) { 
    234                             $arrErr['quantity'][$key] = 'カゴの中(数量:' . $arrCartRow['quantity'] .')と合計が一致していません。<br />'; 
     248                            $arrErr['quantity'][$index] = '※ カゴの中(数量:' . $arrCartRow['quantity'] .')と合計が一致していません。<br />'; 
    235249                        } 
    236250                    } 
     
    257271        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    258272 
    259         $arrParams = $objFormParam->getHashArray(); 
    260         $total = $arrParams['line_of_num']; 
    261  
    262         for ($index = 0; $index < $total; $index++) { 
    263             $other_deliv_id = $arrParams['shipping'][$index]; 
     273        $arrParams = $objFormParam->getSwapArray(); 
     274 
     275        foreach ($arrParams as $arrParam) { 
     276            $other_deliv_id = $arrParam['shipping']; 
    264277 
    265278            if ($objCustomer->isLoginSuccess(true)) { 
     
    278291                $arrValues = $objPurchase->getShippingTemp(); 
    279292            } 
    280             $arrItemTemp[$other_deliv_id][$arrParams['product_class_id'][$index]] += $arrParams['quantity'][$index]; 
     293            $arrItemTemp[$other_deliv_id][$arrParam['product_class_id']] += $arrParam['quantity']; 
    281294        } 
    282295 
     
    289302        foreach ($arrItemTemp as $other_deliv_id => $arrProductClassIds) { 
    290303            foreach ($arrProductClassIds as $product_class_id => $quantity) { 
     304                if ($quantity == 0) continue; 
    291305                $objPurchase->setShipmentItemTemp($other_deliv_id, 
    292306                                                  $product_class_id, 
Note: See TracChangeset for help on using the changeset viewer.