Ignore:
Timestamp:
2013/05/02 18:11:36 (11 years ago)
Author:
h_yoshimoto
Message:

#2236 2.12.3リリース以降の2.12-devへのコミット差し戻し

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php

    r22567 r22796  
    3232 * @version $Id$ 
    3333 */ 
    34 class LC_Page_Admin_Order_Edit extends LC_Page_Admin_Order_Ex  
    35 { 
     34class LC_Page_Admin_Order_Edit extends LC_Page_Admin_Order_Ex { 
    3635 
    3736    var $arrShippingKeys = array( 
     
    6867    ); 
    6968 
    70     var $arrProductKeys = array( 
    71         'product_id', 
    72         'product_class_id', 
    73         'product_type_id', 
    74         'point_rate', 
    75         'product_code', 
    76         'product_name', 
    77         'classcategory_name1', 
    78         'classcategory_name2', 
    79         'quantity', 
    80         'price', 
    81         'tax_rate', 
    82         'tax_rule' 
    83     ); 
    84  
    8569    // }}} 
    8670    // {{{ functions 
     
    9175     * @return void 
    9276     */ 
    93     function init() 
    94     { 
     77    function init() { 
    9578        parent::init(); 
    9679        $this->tpl_mainpage = 'order/edit.tpl'; 
     
    11093 
    11194        // 支払い方法の取得 
    112         $this->arrPayment = SC_Helper_Payment_Ex::getIDValueList(); 
     95        $this->arrPayment = SC_Helper_DB_Ex::sfGetIDValueList('dtb_payment', 'payment_id', 'payment_method'); 
    11396 
    11497        // 配送業者の取得 
    115         $this->arrDeliv = SC_Helper_Delivery_Ex::getIDValueList(); 
    116  
    117         $this->arrInfo = SC_Helper_DB_Ex::sfGetBasisData(); 
     98        $this->arrDeliv = SC_Helper_DB_Ex::sfGetIDValueList('dtb_deliv', 'deliv_id', 'name'); 
    11899 
    119100        $this->httpCacheControl('nocache'); 
     
    125106     * @return void 
    126107     */ 
    127     function process() 
    128     { 
     108    function process() { 
    129109        $this->action(); 
    130110        $this->sendResponse(); 
     
    136116     * @return void 
    137117     */ 
    138     function action() 
    139     { 
     118    function action() { 
    140119 
    141120        $objPurchase = new SC_Helper_Purchase_Ex(); 
     
    185164                $objFormParam->setParam($_POST); 
    186165                $objFormParam->convParam(); 
    187                 //複数配送時に各商品の総量を設定 
    188                 $this->setProductsQuantity($objFormParam); 
    189166                $this->arrErr = $this->lfCheckError($objFormParam); 
    190167                if (SC_Utils_Ex::isBlank($this->arrErr)) { 
     
    202179                    $objFormParam->setParam($_POST); 
    203180                    $objFormParam->convParam(); 
    204                     //複数配送時に各商品の総量を設定 
    205                     $this->setProductsQuantity($objFormParam); 
    206181                    $this->arrErr = $this->lfCheckError($objFormParam); 
    207182                    if (SC_Utils_Ex::isBlank($this->arrErr)) { 
     
    227202                $objFormParam->setParam($_POST); 
    228203                $objFormParam->convParam(); 
    229                 //複数配送時に各商品の総量を設定 
    230                 $this->setProductsQuantity($objFormParam); 
    231204                $this->arrErr = $this->lfCheckError($objFormParam); 
    232205                break; 
     
    238211                $delete_no = $objFormParam->getValue('delete_no'); 
    239212                $this->doDeleteProduct($delete_no, $objFormParam); 
    240                 //複数配送時に各商品の総量を設定 
    241                 $this->setProductsQuantity($objFormParam); 
    242213                $this->arrErr = $this->lfCheckError($objFormParam); 
    243214                break; 
     
    248219                $objFormParam->convParam(); 
    249220                $this->doRegisterProduct($objFormParam); 
    250                 //複数配送時に各商品の総量を設定 
    251                 $this->setProductsQuantity($objFormParam); 
    252221                $this->arrErr = $this->lfCheckError($objFormParam); 
    253222                break; 
     
    257226                $objFormParam->setParam($_POST); 
    258227                $objFormParam->convParam(); 
    259                 $customer_birth = $this->setCustomerTo($objFormParam->getValue('edit_customer_id'), 
     228                $this->setCustomerTo($objFormParam->getValue('edit_customer_id'), 
    260229                                     $objFormParam); 
    261                 // 加算ポイントの計算 
    262                 if (USE_POINT === true && $this->tpl_mode == 'add'){ 
    263                     $birth_point = 0; 
    264                     if ($customer_birth){ 
    265                         $arrRet = preg_split('|[- :/]|', $customer_birth); 
    266                         $birth_date = intval($arrRet[1]); 
    267                         $now_date   = intval(date('m')); 
    268                         // 誕生日月であった場合 
    269                         if ($birth_date == $now_date) { 
    270                             $birth_point = BIRTH_MONTH_POINT; 
    271                         } 
    272                     } 
    273                     $objFormParam->setValue("birth_point",$birth_point); 
    274                 } 
    275230                $this->arrErr = $this->lfCheckError($objFormParam); 
    276231                break; 
    277232 
    278                 // 複数配送設定表示 
     233            // 複数配送設定表示 
    279234            case 'multiple': 
    280235                $objFormParam->setParam($_POST); 
     
    283238                break; 
    284239 
    285                 // 複数配送設定を反映 
     240            // 複数配送設定を反映 
    286241            case 'multiple_set_to': 
    287242                $this->lfInitMultipleParam($objFormParam); 
     
    291246                break; 
    292247 
    293                 // お届け先の追加 
     248            // お届け先の追加 
    294249            case 'append_shipping': 
    295250                $objFormParam->setParam($_POST); 
     
    302257        } 
    303258 
    304         $this->arrForm        = $objFormParam->getFormParamList(); 
     259        $this->arrForm = $objFormParam->getFormParamList(); 
    305260        $this->arrAllShipping = $objFormParam->getSwapArray(array_merge($this->arrShippingKeys, $this->arrShipmentItemKeys)); 
    306         $this->top_shipping_id      = array_shift((array_keys($this->arrAllShipping))); 
    307         $this->arrDelivTime   = SC_Helper_Delivery_Ex::getDelivTime($objFormParam->getValue('deliv_id')); 
     261        $this->arrDelivTime = $objPurchase->getDelivTime($objFormParam->getValue('deliv_id')); 
    308262        $this->tpl_onload .= $this->getAnchorKey($objFormParam); 
     263        $this->arrInfo = SC_Helper_DB_Ex::sfGetBasisData(); 
    309264        if ($arrValuesBefore['payment_id']) 
    310265            $this->arrPayment[$arrValuesBefore['payment_id']] = $arrValuesBefore['payment_method']; 
    311     } 
    312  
    313 /** 
    314  * デストラクタ. 
    315  * 
    316  * @return void 
    317  */ 
    318 function destroy() 
    319 { 
    320     parent::destroy(); 
    321 } 
    322  
    323 /** 
    324  * パラメーター情報の初期化を行う. 
    325  * 
    326  * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    327  * @return void 
    328  */ 
    329 function lfInitParam(&$objFormParam) 
    330 { 
    331     // 検索条件のパラメーターを初期化 
    332     parent::lfInitParam($objFormParam); 
    333  
    334     // お客様情報 
    335     $objFormParam->addParam('注文者 お名前(姓)', 'order_name01', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    336     $objFormParam->addParam('注文者 お名前(名)', 'order_name02', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    337     $objFormParam->addParam('注文者 お名前(フリガナ・姓)', 'order_kana01', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    338     $objFormParam->addParam('注文者 お名前(フリガナ・名)', 'order_kana02', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    339     $objFormParam->addParam('メールアドレス', 'order_email', null, 'KVCa', array('NO_SPTAB', 'EMAIL_CHECK', 'EMAIL_CHAR_CHECK')); 
    340     $objFormParam->addParam('郵便番号1', 'order_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
    341     $objFormParam->addParam('郵便番号2', 'order_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
    342     $objFormParam->addParam('都道府県', 'order_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    343     $objFormParam->addParam('住所1', 'order_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    344     $objFormParam->addParam('住所2', 'order_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    345     $objFormParam->addParam('電話番号1', 'order_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    346     $objFormParam->addParam('電話番号2', 'order_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    347     $objFormParam->addParam('電話番号3', 'order_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    348     $objFormParam->addParam('FAX番号1', 'order_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    349     $objFormParam->addParam('FAX番号2', 'order_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    350     $objFormParam->addParam('FAX番号3', 'order_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    351  
    352     // 受注商品情報 
    353     $objFormParam->addParam('値引き', 'discount', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    354     $objFormParam->addParam('送料', 'deliv_fee', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    355     $objFormParam->addParam('手数料', 'charge', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    356  
    357     // ポイント機能ON時のみ 
    358     if (USE_POINT !== false) { 
    359         $objFormParam->addParam('利用ポイント', 'use_point', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    360     } 
    361  
    362     $objFormParam->addParam('配送業者', 'deliv_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    363     $objFormParam->addParam('お支払い方法', 'payment_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    364     $objFormParam->addParam('対応状況', 'status', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    365     $objFormParam->addParam('お支払方法名称', 'payment_method'); 
    366  
    367  
    368     // 受注詳細情報 
    369     $objFormParam->addParam('商品種別ID', 'product_type_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    370     $objFormParam->addParam('単価', 'price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    371     $objFormParam->addParam('数量', 'quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    372     $objFormParam->addParam('商品ID', 'product_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    373     $objFormParam->addParam('商品規格ID', 'product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    374     $objFormParam->addParam('ポイント付与率', 'point_rate'); 
    375     $objFormParam->addParam('商品コード', 'product_code'); 
    376     $objFormParam->addParam('商品名', 'product_name'); 
    377     $objFormParam->addParam('規格名1', 'classcategory_name1'); 
    378     $objFormParam->addParam('規格名2', 'classcategory_name2'); 
    379     $objFormParam->addParam('税率', 'tax_rate'); 
    380     $objFormParam->addParam('課税規則', 'tax_rule'); 
    381     $objFormParam->addParam('メモ', 'note', MTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); 
    382     $objFormParam->addParam('削除用項番', 'delete_no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    383  
    384     // DB読込用 
    385     $objFormParam->addParam('小計', 'subtotal'); 
    386     $objFormParam->addParam('合計', 'total'); 
    387     $objFormParam->addParam('支払い合計', 'payment_total'); 
    388     $objFormParam->addParam('加算ポイント', 'add_point'); 
    389     $objFormParam->addParam('お誕生日ポイント', 'birth_point', null, 'n', array(), 0); 
    390     $objFormParam->addParam('消費税合計', 'tax'); 
    391     $objFormParam->addParam('最終保持ポイント', 'total_point'); 
    392     $objFormParam->addParam('会員ID', 'customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    393     $objFormParam->addParam('会員ID', 'edit_customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    394     $objFormParam->addParam('現在のポイント', 'customer_point'); 
    395     $objFormParam->addParam('受注前ポイント', 'point'); 
    396     $objFormParam->addParam('注文番号', 'order_id'); 
    397     $objFormParam->addParam('受注日', 'create_date'); 
    398     $objFormParam->addParam('発送日', 'commit_date'); 
    399     $objFormParam->addParam('備考', 'message'); 
    400     $objFormParam->addParam('入金日', 'payment_date'); 
    401     $objFormParam->addParam('端末種別', 'device_type_id'); 
    402     $objFormParam->addParam('税率', 'order_tax_rate'); 
    403     $objFormParam->addParam('課税規則', 'order_tax_rule'); 
    404  
    405     // 複数情報 
    406     $objFormParam->addParam('配送数', 'shipping_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    407     $objFormParam->addParam('配送ID', 'shipping_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 0); 
    408     $objFormParam->addParam('お名前(姓)', 'shipping_name01', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    409     $objFormParam->addParam('お名前(名)', 'shipping_name02', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    410     $objFormParam->addParam('お名前(フリガナ・姓)', 'shipping_kana01', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    411     $objFormParam->addParam('お名前(フリガナ・名)', 'shipping_kana02', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    412     $objFormParam->addParam('郵便番号1', 'shipping_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
    413     $objFormParam->addParam('郵便番号2', 'shipping_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
    414     $objFormParam->addParam('都道府県', 'shipping_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    415     $objFormParam->addParam('住所1', 'shipping_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    416     $objFormParam->addParam('住所2', 'shipping_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    417     $objFormParam->addParam('電話番号1', 'shipping_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    418     $objFormParam->addParam('電話番号2', 'shipping_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    419     $objFormParam->addParam('電話番号3', 'shipping_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    420     $objFormParam->addParam('FAX番号1', 'shipping_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    421     $objFormParam->addParam('FAX番号2', 'shipping_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    422     $objFormParam->addParam('FAX番号3', 'shipping_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    423     $objFormParam->addParam('お届け時間ID', 'time_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    424     $objFormParam->addParam('お届け日(年)', 'shipping_date_year', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    425     $objFormParam->addParam('お届け日(月)', 'shipping_date_month', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    426     $objFormParam->addParam('お届け日(日)', 'shipping_date_day', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    427     $objFormParam->addParam('お届け日', 'shipping_date', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    428     $objFormParam->addParam('配送商品数量', 'shipping_product_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    429  
    430     $objFormParam->addParam('商品規格ID', 'shipment_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    431     $objFormParam->addParam('商品コード', 'shipment_product_code'); 
    432     $objFormParam->addParam('商品名', 'shipment_product_name'); 
    433     $objFormParam->addParam('規格名1', 'shipment_classcategory_name1'); 
    434     $objFormParam->addParam('規格名2', 'shipment_classcategory_name2'); 
    435     $objFormParam->addParam('単価', 'shipment_price', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    436     $objFormParam->addParam('数量', 'shipment_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    437  
    438     $objFormParam->addParam('商品項番', 'no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    439     $objFormParam->addParam('追加商品規格ID', 'add_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    440     $objFormParam->addParam('修正商品規格ID', 'edit_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    441     $objFormParam->addParam('対象届け先ID', 'select_shipping_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    442     $objFormParam->addParam('アンカーキー', 'anchor_key', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    443 } 
    444  
    445 /** 
    446  * 複数配送用フォームの初期化を行う. 
    447  * 
    448  * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    449  * @return void 
    450  */ 
    451 function lfInitMultipleParam(&$objFormParam) 
    452 { 
    453     $objFormParam->addParam('商品規格ID', 'multiple_product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    454     $objFormParam->addParam('商品コード', 'multiple_product_code', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    455     $objFormParam->addParam('商品名', 'multiple_product_name', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    456     $objFormParam->addParam('規格1', 'multiple_classcategory_name1', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    457     $objFormParam->addParam('規格2', 'multiple_classcategory_name2', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    458     $objFormParam->addParam('単価', 'multiple_price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    459     $objFormParam->addParam('数量', 'multiple_quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    460     $objFormParam->addParam('お届け先', 'multiple_shipping_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    461 } 
    462  
    463 /** 
    464  * 複数配送入力フォームで入力された値を SC_FormParam へ設定する. 
    465  * 
    466  * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    467  * @return void 
    468  */ 
    469 function setMultipleItemTo(&$objFormParam) 
    470 { 
    471     $arrMultipleKey = array('multiple_shipping_id', 
    472             'multiple_product_class_id', 
    473             'multiple_product_name', 
    474             'multiple_product_code', 
    475             'multiple_classcategory_name1', 
    476             'multiple_classcategory_name2', 
    477             'multiple_price', 
    478             'multiple_quantity'); 
    479     $arrMultipleParams = $objFormParam->getSwapArray($arrMultipleKey); 
    480  
    481     /* 
    482      * 複数配送フォームの入力値を shipping_id ごとにマージ 
    483      * 
    484      * $arrShipmentItem[お届け先ID][商品規格ID]['shipment_(key)'] = 値 
    485      */ 
    486     $arrShipmentItem = array(); 
    487     foreach ($arrMultipleParams as $arrMultiple) { 
    488         $shipping_id = $arrMultiple['multiple_shipping_id']; 
    489         $product_class_id = $arrMultiple['multiple_product_class_id']; 
    490         foreach ($arrMultiple as $key => $val) { 
    491             if ($key == 'multiple_quantity') { 
    492                 $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] += $val; 
    493             } else { 
    494                 $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] = $val; 
    495             } 
    496         } 
    497     } 
    498  
    499     /* 
    500      * フォームのお届け先ごとの配列を生成 
    501      * 
    502      * $arrShipmentForm['(key)'][$shipping_id][$item_index] = 値 
    503      * $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 
    504      */ 
    505     $arrShipmentForm = array(); 
    506     $arrProductQuantity = array(); 
    507     $arrShippingIds = $objFormParam->getValue('shipping_id'); 
    508     foreach ($arrShippingIds as $shipping_id) { 
    509         $item_index = 0; 
    510         foreach ($arrShipmentItem[$shipping_id] as $product_class_id => $shipment_item) { 
    511             foreach ($shipment_item as $key => $val) { 
    512                 $arrShipmentForm[$key][$shipping_id][$item_index] = $val; 
    513             } 
    514             // 受注商品の数量を設定 
    515             $arrQuantity[$product_class_id] += $shipment_item['shipment_quantity']; 
    516             $item_index++; 
    517         } 
    518         // お届け先ごとの配送商品数量を設定 
    519         $arrProductQuantity[$shipping_id] = count($arrShipmentItem[$shipping_id]); 
    520     } 
    521  
    522     $objFormParam->setParam($arrShipmentForm); 
    523     $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 
    524  
    525     // 受注商品の数量を変更 
    526     $arrDest = array(); 
    527     foreach ($objFormParam->getValue('product_class_id') as $n => $order_product_class_id) { 
    528         $arrDest['quantity'][$n] = 0; 
    529     } 
    530     foreach ($arrQuantity as $product_class_id => $quantity) { 
     266 
     267    } 
     268 
     269    /** 
     270     * デストラクタ. 
     271     * 
     272     * @return void 
     273     */ 
     274    function destroy() { 
     275        parent::destroy(); 
     276    } 
     277 
     278    /** 
     279     * パラメーター情報の初期化を行う. 
     280     * 
     281     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     282     * @return void 
     283     */ 
     284    function lfInitParam(&$objFormParam) { 
     285        // 検索条件のパラメーターを初期化 
     286        parent::lfInitParam($objFormParam); 
     287 
     288        // お客様情報 
     289        $objFormParam->addParam('注文者 お名前(姓)', 'order_name01', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     290        $objFormParam->addParam('注文者 お名前(名)', 'order_name02', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     291        $objFormParam->addParam('注文者 お名前(フリガナ・姓)', 'order_kana01', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     292        $objFormParam->addParam('注文者 お名前(フリガナ・名)', 'order_kana02', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     293        $objFormParam->addParam('メールアドレス', 'order_email', null, 'KVCa', array('NO_SPTAB', 'EMAIL_CHECK', 'EMAIL_CHAR_CHECK')); 
     294        $objFormParam->addParam('郵便番号1', 'order_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
     295        $objFormParam->addParam('郵便番号2', 'order_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
     296        $objFormParam->addParam('都道府県', 'order_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     297        $objFormParam->addParam('住所1', 'order_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     298        $objFormParam->addParam('住所2', 'order_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     299        $objFormParam->addParam('電話番号1', 'order_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     300        $objFormParam->addParam('電話番号2', 'order_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     301        $objFormParam->addParam('電話番号3', 'order_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     302        $objFormParam->addParam('FAX番号1', 'order_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     303        $objFormParam->addParam('FAX番号2', 'order_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     304        $objFormParam->addParam('FAX番号3', 'order_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     305 
     306        // 受注商品情報 
     307        $objFormParam->addParam('値引き', 'discount', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     308        $objFormParam->addParam('送料', 'deliv_fee', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     309        $objFormParam->addParam('手数料', 'charge', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     310 
     311        // ポイント機能ON時のみ 
     312        if (USE_POINT !== false) { 
     313            $objFormParam->addParam('利用ポイント', 'use_point', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     314        } 
     315 
     316        $objFormParam->addParam('配送業者', 'deliv_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     317        $objFormParam->addParam('お支払い方法', 'payment_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     318        $objFormParam->addParam('対応状況', 'status', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     319        $objFormParam->addParam('お支払方法名称', 'payment_method'); 
     320 
     321        // 受注詳細情報 
     322        $objFormParam->addParam('商品種別ID', 'product_type_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     323        $objFormParam->addParam('単価', 'price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     324        $objFormParam->addParam('数量', 'quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     325        $objFormParam->addParam('商品ID', 'product_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     326        $objFormParam->addParam('商品規格ID', 'product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     327        $objFormParam->addParam('ポイント付与率', 'point_rate'); 
     328        $objFormParam->addParam('商品コード', 'product_code'); 
     329        $objFormParam->addParam('商品名', 'product_name'); 
     330        $objFormParam->addParam('規格名1', 'classcategory_name1'); 
     331        $objFormParam->addParam('規格名2', 'classcategory_name2'); 
     332        $objFormParam->addParam('メモ', 'note', MTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); 
     333        $objFormParam->addParam('削除用項番', 'delete_no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     334 
     335        // DB読込用 
     336        $objFormParam->addParam('小計', 'subtotal'); 
     337        $objFormParam->addParam('合計', 'total'); 
     338        $objFormParam->addParam('支払い合計', 'payment_total'); 
     339        $objFormParam->addParam('加算ポイント', 'add_point'); 
     340        $objFormParam->addParam('お誕生日ポイント', 'birth_point', null, 'n', array(), 0); 
     341        $objFormParam->addParam('消費税合計', 'tax'); 
     342        $objFormParam->addParam('最終保持ポイント', 'total_point'); 
     343        $objFormParam->addParam('会員ID', 'customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     344        $objFormParam->addParam('会員ID', 'edit_customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     345        $objFormParam->addParam('現在のポイント', 'customer_point'); 
     346        $objFormParam->addParam('受注前ポイント', 'point'); 
     347        $objFormParam->addParam('注文番号', 'order_id'); 
     348        $objFormParam->addParam('受注日', 'create_date'); 
     349        $objFormParam->addParam('発送日', 'commit_date'); 
     350        $objFormParam->addParam('備考', 'message'); 
     351        $objFormParam->addParam('入金日', 'payment_date'); 
     352        $objFormParam->addParam('端末種別', 'device_type_id'); 
     353 
     354        // 複数情報 
     355        $objFormParam->addParam('配送数', 'shipping_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     356        $objFormParam->addParam('配送ID', 'shipping_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 0); 
     357        $objFormParam->addParam('お名前(姓)', 'shipping_name01', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     358        $objFormParam->addParam('お名前(名)', 'shipping_name02', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     359        $objFormParam->addParam('お名前(フリガナ・姓)', 'shipping_kana01', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     360        $objFormParam->addParam('お名前(フリガナ・名)', 'shipping_kana02', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     361        $objFormParam->addParam('郵便番号1', 'shipping_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
     362        $objFormParam->addParam('郵便番号2', 'shipping_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
     363        $objFormParam->addParam('都道府県', 'shipping_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     364        $objFormParam->addParam('住所1', 'shipping_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     365        $objFormParam->addParam('住所2', 'shipping_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     366        $objFormParam->addParam('電話番号1', 'shipping_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     367        $objFormParam->addParam('電話番号2', 'shipping_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     368        $objFormParam->addParam('電話番号3', 'shipping_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     369        $objFormParam->addParam('FAX番号1', 'shipping_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     370        $objFormParam->addParam('FAX番号2', 'shipping_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     371        $objFormParam->addParam('FAX番号3', 'shipping_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     372        $objFormParam->addParam('お届け時間ID', 'time_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     373        $objFormParam->addParam('お届け日(年)', 'shipping_date_year', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     374        $objFormParam->addParam('お届け日(月)', 'shipping_date_month', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     375        $objFormParam->addParam('お届け日(日)', 'shipping_date_day', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     376        $objFormParam->addParam('お届け日', 'shipping_date', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     377        $objFormParam->addParam('配送商品数量', 'shipping_product_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     378 
     379        $objFormParam->addParam('商品規格ID', 'shipment_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     380        $objFormParam->addParam('商品コード', 'shipment_product_code'); 
     381        $objFormParam->addParam('商品名', 'shipment_product_name'); 
     382        $objFormParam->addParam('規格名1', 'shipment_classcategory_name1'); 
     383        $objFormParam->addParam('規格名2', 'shipment_classcategory_name2'); 
     384        $objFormParam->addParam('単価', 'shipment_price', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     385        $objFormParam->addParam('数量', 'shipment_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     386 
     387        $objFormParam->addParam('商品項番', 'no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     388        $objFormParam->addParam('追加商品規格ID', 'add_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     389        $objFormParam->addParam('修正商品規格ID', 'edit_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     390        $objFormParam->addParam('アンカーキー', 'anchor_key', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     391    } 
     392 
     393    /** 
     394     * 複数配送用フォームの初期化を行う. 
     395     * 
     396     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     397     * @return void 
     398     */ 
     399    function lfInitMultipleParam(&$objFormParam) { 
     400        $objFormParam->addParam('商品規格ID', 'multiple_product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     401        $objFormParam->addParam('商品コード', 'multiple_product_code', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     402        $objFormParam->addParam('商品名', 'multiple_product_name', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     403        $objFormParam->addParam('規格1', 'multiple_classcategory_name1', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     404        $objFormParam->addParam('規格2', 'multiple_classcategory_name2', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     405        $objFormParam->addParam('単価', 'multiple_price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     406        $objFormParam->addParam('数量', 'multiple_quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     407        $objFormParam->addParam('お届け先', 'multiple_shipping_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     408    } 
     409 
     410    /** 
     411     * 複数配送入力フォームで入力された値を SC_FormParam へ設定する. 
     412     * 
     413     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     414     * @return void 
     415     */ 
     416    function setMultipleItemTo(&$objFormParam) { 
     417        $arrMultipleKey = array('multiple_shipping_id', 
     418                                'multiple_product_class_id', 
     419                                'multiple_product_name', 
     420                                'multiple_product_code', 
     421                                'multiple_classcategory_name1', 
     422                                'multiple_classcategory_name2', 
     423                                'multiple_price', 
     424                                'multiple_quantity'); 
     425        $arrMultipleParams = $objFormParam->getSwapArray($arrMultipleKey); 
     426 
     427        /* 
     428         * 複数配送フォームの入力値を shipping_id ごとにマージ 
     429         * 
     430         * $arrShipmentItem[お届け先ID][商品規格ID]['shipment_(key)'] = 値 
     431         */ 
     432        $arrShipmentItem = array(); 
     433        foreach ($arrMultipleParams as $arrMultiple) { 
     434            $shipping_id = $arrMultiple['multiple_shipping_id']; 
     435            $product_class_id = $arrMultiple['multiple_product_class_id']; 
     436            foreach ($arrMultiple as $key => $val) { 
     437                if ($key == 'multiple_quantity') { 
     438                    $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] += $val; 
     439                } else { 
     440                    $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] = $val; 
     441                } 
     442            } 
     443        } 
     444 
     445        /* 
     446         * フォームのお届け先ごとの配列を生成 
     447         * 
     448         * $arrShipmentForm['(key)'][$shipping_id][$item_index] = 値 
     449         * $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 
     450         */ 
     451        $arrShipmentForm = array(); 
     452        $arrProductQuantity = array(); 
     453        $arrShippingIds = $objFormParam->getValue('shipping_id'); 
     454        foreach ($arrShippingIds as $shipping_id) { 
     455            $item_index = 0; 
     456            foreach ($arrShipmentItem[$shipping_id] as $product_class_id => $shipment_item) { 
     457                foreach ($shipment_item as $key => $val) { 
     458                    $arrShipmentForm[$key][$shipping_id][$item_index] = $val; 
     459                } 
     460                // 受注商品の数量を設定 
     461                $arrQuantity[$product_class_id] += $shipment_item['shipment_quantity']; 
     462                $item_index++; 
     463            } 
     464            // お届け先ごとの配送商品数量を設定 
     465            $arrProductQuantity[$shipping_id] = count($arrShipmentItem[$shipping_id]); 
     466        } 
     467 
     468        $objFormParam->setParam($arrShipmentForm); 
     469        $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 
     470 
     471        // 受注商品の数量を変更 
     472        $arrDest = array(); 
    531473        foreach ($objFormParam->getValue('product_class_id') as $n => $order_product_class_id) { 
    532             if ($product_class_id == $order_product_class_id) { 
    533                 $arrDest['quantity'][$n] = $quantity; 
    534             } 
    535         } 
    536     } 
    537     $objFormParam->setParam($arrDest); 
    538 } 
    539  
    540 /** 
    541  * 受注データを取得して, SC_FormParam へ設定する. 
    542  * 
    543  * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    544  * @param integer $order_id 取得元の受注ID 
    545  * @return void 
    546  */ 
    547 function setOrderToFormParam(&$objFormParam, $order_id) 
    548 { 
    549     $objPurchase = new SC_Helper_Purchase_Ex(); 
    550  
    551     // 受注詳細を設定 
    552     $arrOrderDetail = $objPurchase->getOrderDetail($order_id, false); 
    553     $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrOrderDetail)); 
    554  
    555     $arrShippingsTmp = $objPurchase->getShippings($order_id); 
    556     $arrShippings = array(); 
    557     foreach ($arrShippingsTmp as $row) { 
    558         // お届け日の処理 
    559         if (!SC_Utils_Ex::isBlank($row['shipping_date'])) { 
    560             $ts = strtotime($row['shipping_date']); 
    561             $row['shipping_date_year'] = date('Y', $ts); 
    562             $row['shipping_date_month'] = date('n', $ts); 
    563             $row['shipping_date_day'] = date('j', $ts); 
    564         } 
    565         $arrShippings[$row['shipping_id']] = $row; 
    566     } 
    567     $objFormParam->setValue('shipping_quantity', count($arrShippings)); 
    568     $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrShippings)); 
    569  
    570     /* 
    571      * 配送商品を設定 
    572      * 
    573      * $arrShipmentItem['shipment_(key)'][$shipping_id][$item_index] = 値 
    574      * $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 
    575      */ 
    576     $arrProductQuantity = array(); 
    577     $arrShipmentItem = array(); 
    578     foreach ($arrShippings as $shipping_id => $arrShipping) { 
    579         $arrProductQuantity[$shipping_id] = count($arrShipping['shipment_item']); 
    580         foreach ($arrShipping['shipment_item'] as $item_index => $arrItem) { 
    581             foreach ($arrItem as $item_key => $item_val) { 
    582                 $arrShipmentItem['shipment_' . $item_key][$shipping_id][$item_index] = $item_val; 
    583             } 
    584         } 
    585     } 
    586     $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 
    587     $objFormParam->setParam($arrShipmentItem); 
    588  
    589     /* 
    590      * 受注情報を設定 
    591      * $arrOrderDetail と項目が重複しており, $arrOrderDetail は連想配列の値 
    592      * が渡ってくるため, $arrOrder で上書きする. 
    593      */ 
    594     $arrOrder = $objPurchase->getOrder($order_id); 
    595     $objFormParam->setParam($arrOrder); 
    596  
    597     // ポイントを設定 
    598     list($db_point, $rollback_point) = SC_Helper_DB_Ex::sfGetRollbackPoint( 
     474            $arrDest['quantity'][$n] = 0; 
     475        } 
     476        foreach ($arrQuantity as $product_class_id => $quantity) { 
     477            foreach ($objFormParam->getValue('product_class_id') as $n => $order_product_class_id) { 
     478                if ($product_class_id == $order_product_class_id) { 
     479                    $arrDest['quantity'][$n] = $quantity; 
     480                } 
     481            } 
     482        } 
     483        $objFormParam->setParam($arrDest); 
     484    } 
     485 
     486    /** 
     487     * 受注データを取得して, SC_FormParam へ設定する. 
     488     * 
     489     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     490     * @param integer $order_id 取得元の受注ID 
     491     * @return void 
     492     */ 
     493    function setOrderToFormParam(&$objFormParam, $order_id) { 
     494        $objPurchase = new SC_Helper_Purchase_Ex(); 
     495 
     496        // 受注詳細を設定 
     497        $arrOrderDetail = $objPurchase->getOrderDetail($order_id, false); 
     498        $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrOrderDetail)); 
     499 
     500        $arrShippingsTmp = $objPurchase->getShippings($order_id); 
     501        $arrShippings = array(); 
     502        foreach ($arrShippingsTmp as $row) { 
     503            // お届け日の処理 
     504            if (!SC_Utils_Ex::isBlank($row['shipping_date'])) { 
     505                $ts = strtotime($row['shipping_date']); 
     506                $row['shipping_date_year'] = date('Y', $ts); 
     507                $row['shipping_date_month'] = date('n', $ts); 
     508                $row['shipping_date_day'] = date('j', $ts); 
     509            } 
     510            $arrShippings[$row['shipping_id']] = $row; 
     511        } 
     512        $objFormParam->setValue('shipping_quantity', count($arrShippings)); 
     513        $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrShippings)); 
     514 
     515        /* 
     516         * 配送商品を設定 
     517         * 
     518         * $arrShipmentItem['shipment_(key)'][$shipping_id][$item_index] = 値 
     519         * $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 
     520         */ 
     521        $arrProductQuantity = array(); 
     522        $arrShipmentItem = array(); 
     523        foreach ($arrShippings as $shipping_id => $arrShipping) { 
     524            $arrProductQuantity[$shipping_id] = count($arrShipping['shipment_item']); 
     525            foreach ($arrShipping['shipment_item'] as $item_index => $arrItem) { 
     526                foreach ($arrItem as $item_key => $item_val) { 
     527                    $arrShipmentItem['shipment_' . $item_key][$shipping_id][$item_index] = $item_val; 
     528                } 
     529            } 
     530        } 
     531        $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 
     532        $objFormParam->setParam($arrShipmentItem); 
     533 
     534        /* 
     535         * 受注情報を設定 
     536         * $arrOrderDetail と項目が重複しており, $arrOrderDetail は連想配列の値 
     537         * が渡ってくるため, $arrOrder で上書きする. 
     538         */ 
     539        $arrOrder = $objPurchase->getOrder($order_id); 
     540        $objFormParam->setParam($arrOrder); 
     541 
     542        // ポイントを設定 
     543        list($db_point, $rollback_point) = SC_Helper_DB_Ex::sfGetRollbackPoint( 
    599544            $order_id, $arrOrder['use_point'], $arrOrder['add_point'], $arrOrder['status'] 
    600             ); 
    601     $objFormParam->setValue('total_point', $db_point); 
    602     $objFormParam->setValue('point', $rollback_point); 
    603  
    604     if (!SC_Utils_Ex::isBlank($objFormParam->getValue('customer_id'))) { 
    605         $arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($objFormParam->getValue('customer_id')); 
    606         $objFormParam->setValue('customer_point', $arrCustomer['point']); 
    607     } 
    608 } 
    609  
    610 /** 
    611  * 入力内容のチェックを行う. 
    612  * 
    613  * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    614  * @return array エラーメッセージの配列 
    615  */ 
    616 function lfCheckError(&$objFormParam) 
    617 { 
    618     $objProduct = new SC_Product_Ex(); 
    619  
    620     $arrErr = $objFormParam->checkError(); 
    621  
    622     if (!SC_Utils_Ex::isBlank($objErr->arrErr)) { 
     545        ); 
     546        $objFormParam->setValue('total_point', $db_point); 
     547        $objFormParam->setValue('point', $rollback_point); 
     548 
     549        if (!SC_Utils_Ex::isBlank($objFormParam->getValue('customer_id'))) { 
     550            $arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($objFormParam->getValue('customer_id')); 
     551            $objFormParam->setValue('customer_point', $arrCustomer['point']); 
     552        } 
     553    } 
     554 
     555    /** 
     556     * 入力内容のチェックを行う. 
     557     * 
     558     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     559     * @return array エラーメッセージの配列 
     560     */ 
     561    function lfCheckError(&$objFormParam) { 
     562        $objProduct = new SC_Product_Ex(); 
     563 
     564        $arrErr = $objFormParam->checkError(); 
     565 
     566        if (!SC_Utils_Ex::isBlank($objErr->arrErr)) { 
     567            return $arrErr; 
     568        } 
     569 
     570        $arrValues = $objFormParam->getHashArray(); 
     571 
     572        // 商品の種類数 
     573        $max = count($arrValues['quantity']); 
     574        $subtotal = 0; 
     575        $totalpoint = 0; 
     576        $totaltax = 0; 
     577        for ($i = 0; $i < $max; $i++) { 
     578            // 小計の計算 
     579            $subtotal += SC_Helper_DB_Ex::sfCalcIncTax($arrValues['price'][$i]) * $arrValues['quantity'][$i]; 
     580            // 小計の計算 
     581            $totaltax += SC_Helper_DB_Ex::sfTax($arrValues['price'][$i]) * $arrValues['quantity'][$i]; 
     582            // 加算ポイントの計算 
     583            $totalpoint += SC_Utils_Ex::sfPrePoint($arrValues['price'][$i], $arrValues['point_rate'][$i]) * $arrValues['quantity'][$i]; 
     584 
     585            // 在庫数のチェック 
     586            $arrProduct = $objProduct->getDetailAndProductsClass($arrValues['product_class_id'][$i]); 
     587 
     588            // 編集前の値と比較するため受注詳細を取得 
     589            $objPurchase = new SC_Helper_Purchase_Ex(); 
     590            $arrOrderDetail = SC_Utils_Ex::sfSwapArray($objPurchase->getOrderDetail($objFormParam->getValue('order_id'), false)); 
     591 
     592            if ($arrProduct['stock_unlimited'] != '1' 
     593                && $arrProduct['stock'] < $arrValues['quantity'][$i] - $arrOrderDetail['quantity'][$i]) { 
     594                $class_name1 = $arrValues['classcategory_name1'][$i]; 
     595                $class_name1 = SC_Utils_Ex::isBlank($class_name1) ? 'なし' : $class_name1; 
     596                $class_name2 = $arrValues['classcategory_name2'][$i]; 
     597                $class_name2 = SC_Utils_Ex::isBlank($class_name2) ? 'なし' : $class_name2; 
     598                $arrErr['quantity'][$i] .= $arrValues['product_name'][$i] 
     599                    . '/(' . $class_name1 . ')/(' . $class_name2 . ') の在庫が不足しています。 設定できる数量は「' 
     600                    . ($arrOrderDetail['quantity'][$i] + $arrProduct['stock']) . '」までです。<br />'; 
     601            } 
     602        } 
     603 
     604        // 消費税 
     605        $arrValues['tax'] = $totaltax; 
     606        // 小計 
     607        $arrValues['subtotal'] = $subtotal; 
     608        // 合計 
     609        $arrValues['total'] = $subtotal - $arrValues['discount'] + $arrValues['deliv_fee'] + $arrValues['charge']; 
     610        // お支払い合計 
     611        $arrValues['payment_total'] = $arrValues['total'] - ($arrValues['use_point'] * POINT_VALUE); 
     612 
     613        // 加算ポイント 
     614        $arrValues['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($totalpoint, $arrValues['use_point']); 
     615 
     616        // 最終保持ポイント 
     617        $arrValues['total_point'] = $objFormParam->getValue('point') - $arrValues['use_point']; 
     618 
     619        if ($arrValues['total'] < 0) { 
     620            $arrErr['total'] = '合計額がマイナス表示にならないように調整して下さい。<br />'; 
     621        } 
     622 
     623        if ($arrValues['payment_total'] < 0) { 
     624            $arrErr['payment_total'] = 'お支払い合計額がマイナス表示にならないように調整して下さい。<br />'; 
     625        } 
     626 
     627        if ($arrValues['total_point'] < 0) { 
     628            $arrErr['use_point'] = '最終保持ポイントがマイナス表示にならないように調整して下さい。<br />'; 
     629        } 
     630 
     631        $objFormParam->setParam($arrValues); 
    623632        return $arrErr; 
    624633    } 
    625  
    626     $arrValues = $objFormParam->getHashArray(); 
    627  
    628     // 商品の種類数 
    629     $max = count($arrValues['quantity']); 
    630     $subtotal = 0; 
    631     $totalpoint = 0; 
    632     $totaltax = 0; 
    633     for ($i = 0; $i < $max; $i++) { 
    634         // 小計の計算 
    635         $subtotal += SC_Helper_DB_Ex::sfCalcIncTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i]; 
    636         // 小計の計算 
    637         $totaltax += SC_Utils_Ex::sfTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i]; 
    638         // 加算ポイントの計算 
    639         $totalpoint += SC_Utils_Ex::sfPrePoint($arrValues['price'][$i], $arrValues['point_rate'][$i]) * $arrValues['quantity'][$i]; 
    640  
    641         // 在庫数のチェック 
    642         $arrProduct = $objProduct->getDetailAndProductsClass($arrValues['product_class_id'][$i]); 
    643  
    644         // 編集前の値と比較するため受注詳細を取得 
    645         $objPurchase = new SC_Helper_Purchase_Ex(); 
    646         $arrOrderDetail = SC_Utils_Ex::sfSwapArray($objPurchase->getOrderDetail($objFormParam->getValue('order_id'), false)); 
    647  
    648         if ($arrProduct['stock_unlimited'] != '1' 
    649                 && $arrProduct['stock'] < $arrValues['quantity'][$i] - $arrOrderDetail['quantity'][$i]) { 
    650             $class_name1 = $arrValues['classcategory_name1'][$i]; 
    651             $class_name1 = SC_Utils_Ex::isBlank($class_name1) ? 'なし' : $class_name1; 
    652             $class_name2 = $arrValues['classcategory_name2'][$i]; 
    653             $class_name2 = SC_Utils_Ex::isBlank($class_name2) ? 'なし' : $class_name2; 
    654             $arrErr['quantity'][$i] .= $arrValues['product_name'][$i] 
    655                 . '/(' . $class_name1 . ')/(' . $class_name2 . ') の在庫が不足しています。 設定できる数量は「' 
    656                 . ($arrOrderDetail['quantity'][$i] + $arrProduct['stock']) . '」までです。<br />'; 
    657         } 
    658     } 
    659  
    660     // 消費税 
    661     $arrValues['tax'] = $totaltax; 
    662     // 小計 
    663     $arrValues['subtotal'] = $subtotal; 
    664     // 合計 
    665     $arrValues['total'] = $subtotal - $arrValues['discount'] + $arrValues['deliv_fee'] + $arrValues['charge']; 
    666     // お支払い合計 
    667     $arrValues['payment_total'] = $arrValues['total'] - ($arrValues['use_point'] * POINT_VALUE); 
    668  
    669     // 加算ポイント 
    670     $arrValues['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($totalpoint, $arrValues['use_point']) + $arrValues['birth_point']; 
    671  
    672     // 最終保持ポイント 
    673     $arrValues['total_point'] = $objFormParam->getValue('point') - $arrValues['use_point']; 
    674  
    675     if ($arrValues['total'] < 0) { 
    676         $arrErr['total'] = '合計額がマイナス表示にならないように調整して下さい。<br />'; 
    677     } 
    678  
    679     if ($arrValues['payment_total'] < 0) { 
    680         $arrErr['payment_total'] = 'お支払い合計額がマイナス表示にならないように調整して下さい。<br />'; 
    681     } 
    682  
    683     if ($arrValues['total_point'] < 0) { 
    684         $arrErr['use_point'] = '最終保持ポイントがマイナス表示にならないように調整して下さい。<br />'; 
    685     } 
    686  
    687     $objFormParam->setParam($arrValues); 
    688     return $arrErr; 
    689 } 
    690634 
    691635    /** 
     
    701645     * エラー発生時は負数を返す。 
    702646     */ 
    703     function doRegister($order_id, &$objPurchase, &$objFormParam, &$message, &$arrValuesBefore) 
    704     { 
     647    function doRegister($order_id, &$objPurchase, &$objFormParam, &$message, &$arrValuesBefore) { 
    705648 
    706649        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     
    729672                'classcategory_name1', 
    730673                'classcategory_name2', 
    731                 'tax_rate', 
    732                 'tax_rule' 
    733674        )); 
    734675 
     
    781722        $arrAllShipmentItem = $objFormParam->getSwapArray($this->arrShipmentItemKeys); 
    782723 
    783         $arrDelivTime = SC_Helper_Delivery_Ex::getDelivTime($objFormParam->getValue('deliv_id')); 
    784         //商品単価を複数配送にも適応 
     724        $arrDelivTime = $objPurchase->getDelivTime($objFormParam->getValue('deliv_id')); 
     725 
    785726        $arrShippingValues = array(); 
    786         $arrIsNotQuantityUp = array(); 
    787727        foreach ($arrAllShipping as $shipping_index => $arrShipping) { 
    788728            $shipping_id = $arrShipping['shipping_id']; 
     
    794734                                              $arrShipping['shipping_date_day']); 
    795735 
    796             //商品単価を複数配送にも反映する 
    797             foreach ($arrDetail as $product_detail) { 
    798                 foreach ($arrAllShipmentItem[$shipping_index]['shipment_product_class_id'] as $relation_index => $shipment_product_class_id) { 
    799                     if($product_detail['product_class_id'] == $shipment_product_class_id){ 
    800                         $arrAllShipmentItem[$shipping_index]['shipment_price'][$relation_index] = $product_detail['price']; 
    801                     } 
    802                 } 
    803             } 
    804736            // 配送業者IDを取得 
    805737            $arrShippingValues[$shipping_index]['deliv_id'] = $objFormParam->getValue('deliv_id'); 
     
    823755            } 
    824756        } 
    825  
    826757        $objPurchase->registerShipping($order_id, $arrShippingValues, false); 
    827758        $objQuery->commit(); 
     
    837768     * @return void 
    838769     */ 
    839     function doRegisterProduct(&$objFormParam) 
    840     { 
     770    function doRegisterProduct(&$objFormParam) { 
    841771        $product_class_id = $objFormParam->getValue('add_product_class_id'); 
    842772        if (SC_Utils_Ex::isBlank($product_class_id)) { 
    843773            $product_class_id = $objFormParam->getValue('edit_product_class_id'); 
    844774            $changed_no = $objFormParam->getValue('no'); 
    845             $this->shipmentEditProduct($objFormParam, $product_class_id, $changed_no); 
    846         }else{ 
    847             $this->shipmentAddProduct($objFormParam, $product_class_id); 
     775        } 
     776        // FXIME バリデーションを通さず $objFormParam の値で DB 問い合わせしている。(管理機能ため、さほど問題は無いと思うものの…) 
     777 
     778        // 商品規格IDが指定されていない場合、例外エラーを発生 
     779        if (strlen($product_class_id) === 0) { 
     780            trigger_error('商品規格指定なし', E_USER_ERROR); 
     781        } 
     782 
     783        // 選択済みの商品であれば数量を1増やす 
     784        $exists = false; 
     785        $arrExistsProductClassIds = $objFormParam->getValue('product_class_id'); 
     786        foreach ($arrExistsProductClassIds as $key => $value) { 
     787            $exists_product_class_id = $arrExistsProductClassIds[$key]; 
     788            if ($exists_product_class_id == $product_class_id) { 
     789                $exists = true; 
     790                $exists_no = $key; 
     791                $arrExistsQuantity = $objFormParam->getValue('quantity'); 
     792                $arrExistsQuantity[$key]++; 
     793                $objFormParam->setValue('quantity', $arrExistsQuantity); 
     794            } 
     795        } 
     796 
     797        // 新しく商品を追加した場合はフォームに登録 
     798        // 商品を変更した場合は、該当行を変更 
     799        if (!$exists) { 
     800            $objProduct = new SC_Product_Ex(); 
     801            $arrProduct = $objProduct->getDetailAndProductsClass($product_class_id); 
     802 
     803            // 一致する商品規格がない場合、例外エラーを発生 
     804            if (empty($arrProduct)) { 
     805                trigger_error('商品規格一致なし', E_USER_ERROR); 
     806            } 
     807 
     808            $arrProduct['quantity'] = 1; 
     809            $arrProduct['price'] = $arrProduct['price02']; 
     810            $arrProduct['product_name'] = $arrProduct['name']; 
     811 
     812            $arrUpdateKeys = array( 
     813                'product_id', 'product_class_id', 'product_type_id', 'point_rate', 
     814                'product_code', 'product_name', 'classcategory_name1', 'classcategory_name2', 
     815                'quantity', 'price', 
     816            ); 
     817            foreach ($arrUpdateKeys as $key) { 
     818                $arrValues = $objFormParam->getValue($key); 
     819                // FIXME getValueで文字列が返る場合があるので配列であるかをチェック 
     820                if (!is_array($arrValues)) { 
     821                    $arrValues = array(); 
     822                } 
     823 
     824                if (isset($changed_no)) { 
     825                    $arrValues[$changed_no] = $arrProduct[$key]; 
     826                } else { 
     827                    $added_no = 0; 
     828                    if (is_array($arrExistsProductClassIds)) { 
     829                        $added_no = count($arrExistsProductClassIds); 
     830                    } 
     831                    $arrValues[$added_no] = $arrProduct[$key]; 
     832                } 
     833                $objFormParam->setValue($key, $arrValues); 
     834            } 
     835        } elseif (isset($changed_no) && $exists_no != $changed_no) { 
     836            // 変更したが、選択済みの商品だった場合は、変更対象行を削除。 
     837            $this->doDeleteProduct($changed_no, $objFormParam); 
    848838        } 
    849839    } 
     
    856846     * @return void 
    857847     */ 
    858     function doDeleteProduct($delete_no, &$objFormParam) 
    859     { 
    860  
    861         $select_shipping_id    = $objFormParam->getValue('select_shipping_id'); 
    862  
    863         //変更前のproduct_class_idが他の届け先にも存在するか 
    864         $arrPreShipmentProductClassIds = $objFormParam->getValue('shipment_product_class_id'); 
    865         $arrPreProductClassIds         = $objFormParam->getValue('product_class_id'); 
    866         $delete_product_class_id       = $arrPreShipmentProductClassIds[$select_shipping_id][$delete_no]; 
    867  
    868         //配送先データ削除 
    869         $arrNewShipments = $this->deleteShipment($objFormParam, $this->arrShipmentItemKeys , $select_shipping_id, $delete_no); 
    870         $objFormParam->setParam($arrNewShipments); 
    871  
    872         $is_product_delete = true; 
    873         foreach ($arrNewShipments['shipment_product_class_id'] as $shipping_id => $arrShipmentProductClassIds) { 
    874             foreach ($arrShipmentProductClassIds as $relation_index => $shipment_product_class_id) { 
    875                 if(in_array($delete_product_class_id, $arrShipmentProductClassIds)){ 
    876                     $is_product_delete = false; 
    877                     break; 
    878                 } 
    879             } 
    880         } 
    881  
    882         //商品情報から削除 
    883         if($is_product_delete){ 
    884             $this->checkDeleteProducts($objFormParam, $arrPreProductClassIds, $delete_product_class_id, $this->arrProductKeys); 
     848    function doDeleteProduct($delete_no, &$objFormParam) { 
     849        $arrDeleteKeys = array( 
     850            'product_id', 'product_class_id', 'product_type_id', 'point_rate', 
     851            'product_code', 'product_name', 'classcategory_name1', 'classcategory_name2', 
     852            'quantity', 'price', 
     853        ); 
     854        foreach ($arrDeleteKeys as $key) { 
     855            $arrNewValues = array(); 
     856            $arrValues = $objFormParam->getValue($key); 
     857            foreach ($arrValues as $index => $val) { 
     858                if ($index != $delete_no) { 
     859                    $arrNewValues[] = $val; 
     860                } 
     861            } 
     862            $objFormParam->setValue($key, $arrNewValues); 
    885863        } 
    886864    } 
     
    892870     * @return void 
    893871     */ 
    894     function addShipping(&$objFormParam) 
    895     { 
     872    function addShipping(&$objFormParam) { 
    896873        $objFormParam->setValue('shipping_quantity', 
    897874                                $objFormParam->getValue('shipping_quantity') + 1); 
     
    908885     * @return void 
    909886     */ 
    910     function setCustomerTo($customer_id, &$objFormParam) 
    911     { 
     887    function setCustomerTo($customer_id, &$objFormParam) { 
    912888        $arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($customer_id); 
    913889        foreach ($arrCustomer as $key => $val) { 
     
    916892        $objFormParam->setValue('customer_id', $customer_id); 
    917893        $objFormParam->setValue('customer_point', $arrCustomer['point']); 
    918  
    919         return $arrCustomer['birth']; 
    920894    } 
    921895 
     
    926900     * @return アンカーキーの文字列 
    927901     */ 
    928     function getAnchorKey(&$objFormParam) 
    929     { 
     902    function getAnchorKey(&$objFormParam) { 
    930903        $ancor_key = $objFormParam->getValue('anchor_key'); 
    931904        if (!SC_Utils_Ex::isBlank($ancor_key)) { 
     
    934907        return ''; 
    935908    } 
    936  
    937     /** 
    938      * 商品を追加 
    939      * 
    940      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    941      * @param integer $add_product_class_id 追加商品規格ID 
    942      * @return void 
    943      */ 
    944     function shipmentAddProduct(&$objFormParam, $add_product_class_id) 
    945     { 
    946  
    947         //複数配送に商品情報追加 
    948         $select_shipping_id = $objFormParam->getValue('select_shipping_id'); 
    949  
    950         //届け先に選択済みの商品がある場合 
    951         $arrShipmentProducts = $this->getShipmentProducts($objFormParam); 
    952  
    953         if(in_array($add_product_class_id, $arrShipmentProducts['shipment_product_class_id'][$select_shipping_id])){ 
    954             foreach ($arrShipmentProducts['shipment_product_class_id'][$select_shipping_id] as $relation_index => $shipment_product_class_id) { 
    955                 if($shipment_product_class_id == $add_product_class_id){ 
    956                     $arrShipmentProducts['shipment_quantity'][$select_shipping_id][$relation_index]++; 
    957                     break; 
    958                 } 
    959             } 
    960         }else{ 
    961  
    962             //届け先に選択商品がない場合 
    963             $objProduct = new SC_Product_Ex(); 
    964             $arrAddProductInfo = $objProduct->getDetailAndProductsClass($add_product_class_id); 
    965  
    966             $arrShipmentProducts['shipment_product_class_id'][$select_shipping_id][] = $add_product_class_id; 
    967             $arrShipmentProducts['shipment_product_code'][$select_shipping_id][]     = $arrAddProductInfo['product_code']; 
    968             $arrShipmentProducts['shipment_product_name'][$select_shipping_id][]     = $arrAddProductInfo['name']; 
    969             $arrShipmentProducts['shipment_price'][$select_shipping_id][]            = $arrAddProductInfo['price02']; 
    970             $arrShipmentProducts['shipment_quantity'][$select_shipping_id][]         = 1; 
    971  
    972             //受注商品情報に追加 
    973             $arrPreProductClassIds = $objFormParam->getValue('product_class_id'); 
    974             $arrProducts = $this->checkInsertOrderProducts($objFormParam, $arrPreProductClassIds, $add_product_class_id, $arrAddProductInfo); 
    975             $objFormParam->setParam($arrProducts); 
    976         } 
    977         $objFormParam->setParam($arrShipmentProducts); 
    978     } 
    979  
    980     /** 
    981      * 商品を変更 
    982      * 
    983      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    984      * @param integer $add_product_class_id 変更商品規格ID 
    985      * @param integer $change_no 変更対象 
    986      * @return void 
    987      */ 
    988     function shipmentEditProduct(&$objFormParam, $edit_product_class_id, $change_no) 
    989     { 
    990         $arrPreProductClassIds = $objFormParam->getValue('product_class_id'); 
    991         $select_shipping_id    = $objFormParam->getValue('select_shipping_id'); 
    992  
    993         $arrShipmentProducts = $this->getShipmentProducts($objFormParam); 
    994  
    995         //既にあるデータは1つだけ数量を1増やす 
    996         $pre_shipment_product_class_id = $arrShipmentProducts['shipment_product_class_id'][$select_shipping_id][$change_no]; 
    997         if($pre_shipment_product_class_id == $edit_product_class_id) { 
    998             $arrShipmentProducts['shipment_quantity'][$select_shipping_id][$change_no] ++; 
    999         }elseif(in_array($edit_product_class_id, $arrShipmentProducts['shipment_product_class_id'][$select_shipping_id])){ 
    1000             //配送先データ削除 
    1001             $arrShipmentProducts = $this->deleteShipment($objFormParam, $this->arrShipmentItemKeys , $select_shipping_id, $change_no); 
    1002             foreach ($arrShipmentProducts['shipment_product_class_id'][$select_shipping_id] as $relation_index => $shipment_product_class_id) { 
    1003                 if($shipment_product_class_id == $edit_product_class_id){ 
    1004                     $arrShipmentProducts['shipment_quantity'][$select_shipping_id][$relation_index] ++; 
    1005                     break; 
    1006                 } 
    1007             } 
    1008         }else{ 
    1009             $objProduct = new SC_Product_Ex(); 
    1010             $arrAddProductInfo = $objProduct->getDetailAndProductsClass($edit_product_class_id); 
    1011  
    1012             //上書き 
    1013             $this->changeShipmentProducts($arrShipmentProducts, $arrAddProductInfo, $select_shipping_id, $change_no); 
    1014             //受注商品情報に追加 
    1015             $arrProducts = $this->checkInsertOrderProducts($objFormParam, $arrPreProductClassIds, $edit_product_class_id, $arrAddProductInfo); 
    1016             $objFormParam->setParam($arrProducts); 
    1017         } 
    1018         $objFormParam->setParam($arrShipmentProducts); 
    1019  
    1020         //更新のみの場合、全配列を持っていないので、新しい配列を取得 
    1021         $arrNewShipmentProducts = $this->getShipmentProducts($objFormParam); 
    1022         $is_product_delete = true; 
    1023         //変更前のproduct_class_idが他の届け先にも存在するか 
    1024         foreach ($arrNewShipmentProducts['shipment_product_class_id'] as $shipping_id => $arrShipmentProductClassIds) { 
    1025             if(in_array($pre_shipment_product_class_id, $arrShipmentProductClassIds)){ 
    1026                 $is_product_delete = false; 
    1027                 break; 
    1028             } 
    1029         } 
    1030  
    1031         //商品情報から削除 
    1032         if($is_product_delete){ 
    1033             $this->checkDeleteProducts($objFormParam, $arrPreProductClassIds, $pre_shipment_product_class_id, $this->arrProductKeys); 
    1034         } 
    1035     } 
    1036  
    1037     /** 
    1038      * 複数配送のパラメータを取り出す  
    1039      * 
    1040      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    1041      * @return array 配送データ 
    1042      */ 
    1043     function getShipmentProducts(&$objFormParam) 
    1044     { 
    1045         $arrShipmentProducts['shipment_product_class_id']    = $objFormParam->getValue('shipment_product_class_id'); 
    1046         $arrShipmentProducts['shipment_product_code']        = $objFormParam->getValue('shipment_product_code'); 
    1047         $arrShipmentProducts['shipment_product_name']        = $objFormParam->getValue('shipment_product_name'); 
    1048         $arrShipmentProducts['shipment_classcategory_name1'] = $objFormParam->getValue('shipment_classcategory_name1'); 
    1049         $arrShipmentProducts['shipment_classcategory_name2'] = $objFormParam->getValue('shipment_classcategory_name2'); 
    1050         $arrShipmentProducts['shipment_price']               = $objFormParam->getValue('shipment_price'); 
    1051         $arrShipmentProducts['shipment_quantity']            = $objFormParam->getValue('shipment_quantity'); 
    1052  
    1053         return $arrShipmentProducts; 
    1054     } 
    1055  
    1056     /** 
    1057      * 変更対象のデータを上書きする 
    1058      * 
    1059      * @param array   $arrShipmentProducts  変更対象配列 
    1060      * @param array   $arrProductInfo       上書きデータ 
    1061      * @param integer $shipping_id          配送先ID 
    1062      * @param array   $no                   変更対象 
    1063      * @return void 
    1064      */ 
    1065     function changeShipmentProducts(&$arrShipmentProducts, $arrProductInfo, $shipping_id, $no) 
    1066     { 
    1067         $arrShipmentProducts['shipment_product_class_id'][$shipping_id][$no]    = $arrProductInfo['product_class_id']; 
    1068         $arrShipmentProducts['shipment_product_code'][$shipping_id][$no]        = $arrProductInfo['product_code']; 
    1069         $arrShipmentProducts['shipment_product_name'][$shipping_id][$no]        = $arrProductInfo['name']; 
    1070         $arrShipmentProducts['shipment_classcategory_name1'][$shipping_id][$no] = $arrProductInfo['classcategory_name1']; 
    1071         $arrShipmentProducts['shipment_classcategory_name2'][$shipping_id][$no] = $arrProductInfo['classcategory_name2']; 
    1072         $arrShipmentProducts['shipment_price'][$shipping_id][$no]               = $arrProductInfo['price02']; 
    1073         $arrShipmentProducts['shipment_quantity'][$shipping_id][$no]            = 1; 
    1074     } 
    1075  
    1076     /** 
    1077      * 商品側の総量計算&セット 
    1078      * 
    1079      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    1080      * @return void 
    1081      */ 
    1082     function setProductsQuantity(&$objFormParam) 
    1083     { 
    1084         $arrShipmentsItems = $objFormParam->getSwapArray(array('shipment_product_class_id','shipment_quantity')); 
    1085         foreach ($arrShipmentsItems as $arritems) { 
    1086             foreach ($arritems['shipment_product_class_id'] as $relation_index => $shipment_product_class_id) { 
    1087                 $arrUpdateQuantity[$shipment_product_class_id] += $arritems['shipment_quantity'][$relation_index]; 
    1088             } 
    1089         } 
    1090  
    1091         $arrProductsClass = $objFormParam->getValue('product_class_id'); 
    1092         $arrProductsQuantity = $objFormParam->getValue('quantity'); 
    1093         foreach ($arrProductsClass as $relation_key => $product_class_id) { 
    1094             $arrQuantity['quantity'][$relation_key] = $arrUpdateQuantity[$product_class_id]; 
    1095         } 
    1096         $objFormParam->setParam($arrQuantity); 
    1097     } 
    1098  
    1099     /** 
    1100      * 削除対象の確認、削除をする 
    1101      * 
    1102      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    1103      * @param array   $arrProductClassIds      削除対象配列の商品規格ID 
    1104      * @param integer $delete_product_class_id 削除商品規格ID 
    1105      * @param array   $arrDeleteKeys            削除項目 
    1106      * @return void 
    1107      */ 
    1108     function checkDeleteProducts(&$objFormParam, $arrProductClassIds, $delete_product_class_id, $arrDeleteKeys) 
    1109     { 
    1110         foreach ($arrProductClassIds as $relation_index => $product_class_id) { 
    1111             //product_class_idの重複はないので、1つ削除したら完了 
    1112             if($product_class_id == $delete_product_class_id){ 
    1113                 foreach ($arrDeleteKeys as $delete_key) { 
    1114                     $arrProducts = $objFormParam->getValue($delete_key); 
    1115                     foreach ($arrProducts as $index => $product_info) { 
    1116                         if($index != $relation_index){ 
    1117                             $arrUpdateParams[$delete_key][] = $product_info; 
    1118                         } 
    1119                     } 
    1120                     $objFormParam->setParam($arrUpdateParams); 
    1121                 } 
    1122                 break; 
    1123             } 
    1124         } 
    1125     } 
    1126  
    1127     /** 
    1128      * 配送先商品の削除の削除 
    1129      * 
    1130      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    1131      * @param array   $arrShipmentDeleteKeys   削除項目 
    1132      * @param integer $delete_shipping_id     削除配送ID 
    1133      * @param array   $delete_no               削除対象 
    1134      * @return void 
    1135      */ 
    1136     function deleteShipment(&$objFormParam, $arrShipmentDeletKeys, $delete_shipping_id, $delete_no) 
    1137     { 
    1138             foreach ($arrShipmentDeletKeys as $delete_key) { 
    1139                 $arrShipments = $objFormParam->getValue($delete_key); 
    1140                 foreach ($arrShipments as $shipp_id => $arrKeyData){ 
    1141                     foreach ($arrKeyData as $relation_index => $shipment_info) { 
    1142                         if($relation_index != $delete_no || $shipp_id != $delete_shipping_id){ 
    1143                             $arrUpdateParams[$delete_key][$shipp_id][] = $shipment_info; 
    1144                         } 
    1145                     } 
    1146                 } 
    1147             } 
    1148             //$objFormParam->setParam($arrUpdateParams); 
    1149             return $arrUpdateParams; 
    1150         } 
    1151  
    1152  
    1153     /** 
    1154      * 受注商品一覧側に商品を追加 
    1155      * 
    1156      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    1157      * @param array   $arrProductClassIds      対象配列の商品規格ID 
    1158      * @param integer $indert_product_class_id 追加商品規格ID 
    1159      * @param array   $arrAddProductInfo        追加データ 
    1160      * @return array  $arrAddProducts           更新データ 
    1161      */ 
    1162     function checkInsertOrderProducts(&$objFormParam, $arrProductClassIds, $insert_product_class_id, $arrAddProductInfo) 
    1163     { 
    1164         if(!in_array($insert_product_class_id, $arrProductClassIds)){ 
    1165             $arrAddProductInfo['product_name'] = ($arrAddProductInfo['product_name'])? $arrAddProductInfo['product_name']:$arrAddProductInfo['name']; 
    1166             $arrAddProductInfo['price']        = ($arrAddProductInfo['price'])? $arrAddProductInfo['price']:$arrAddProductInfo['price02']; 
    1167             $arrAddProductInfo['quantity']     = 1; 
    1168             $arrAddProductInfo['tax_rate']     = ($objFormParam->getValue('order_tax_rate') == '')? $this->arrInfo['tax']     :$objFormParam->getValue('order_tax_rate'); 
    1169             $arrAddProductInfo['tax_rule']     = ($objFormParam->getValue('order_tax_rule') == '')? $this->arrInfo['tax_rule']:$objFormParam->getValue('order_tax_rule'); 
    1170             foreach ($this->arrProductKeys as $insert_key) { 
    1171                 $arrAddProducts[$insert_key]   = $objFormParam->getValue($insert_key); 
    1172                 $arrAddProducts[$insert_key][] = $arrAddProductInfo[$insert_key]; 
    1173             } 
    1174             return $arrAddProducts; 
    1175         }else{ 
    1176             //受注商品の数量は、複数配送側の集計で出しているので、重複しても数量を増やさない。 
    1177             return null; 
    1178         } 
    1179     } 
    1180909} 
Note: See TracChangeset for help on using the changeset viewer.