Changeset 22490


Ignore:
Timestamp:
2013/01/31 22:55:07 (8 years ago)
Author:
undertree
Message:

#1709 受注管理>受注登録 誕生月ポイントを無効にしてしまう

Location:
branches/version-2_12-dev/data
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/Smarty/templates/admin/order/edit.tpl

    r22248 r22490  
    392392                <th colspan="5" class="column right">お誕生日ポイント</th> 
    393393                <td class="right"> 
     394                    <!--{assign var=key value="birth_point"}--> 
     395                    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->"/> 
    394396                    <!--{$arrForm.birth_point.value|number_format}--> 
    395397                    pt 
  • branches/version-2_12-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php

    r22283 r22490  
    228228                $objFormParam->setParam($_POST); 
    229229                $objFormParam->convParam(); 
    230                 $this->setCustomerTo($objFormParam->getValue('edit_customer_id'), 
     230                $customer_birth = $this->setCustomerTo($objFormParam->getValue('edit_customer_id'), 
    231231                                     $objFormParam); 
     232                // 加算ポイントの計算 
     233                if (USE_POINT === true && $this->tpl_mode == 'add'){ 
     234                    $birth_point = 0; 
     235                    if ($customer_birth){ 
     236                        $arrRet = preg_split('|[- :/]|', $customer_birth); 
     237                        $birth_date = intval($arrRet[1]); 
     238                        $now_date   = intval(date('m')); 
     239                        // 誕生日月であった場合 
     240                        if ($birth_date == $now_date) { 
     241                            $birth_point = BIRTH_MONTH_POINT; 
     242                        } 
     243                    } 
     244                    $objFormParam->setValue("birth_point",$birth_point); 
     245                } 
    232246                $this->arrErr = $this->lfCheckError($objFormParam); 
    233247                break; 
    234248 
    235             // 複数配送設定表示 
     249                // 複数配送設定表示 
    236250            case 'multiple': 
    237251                $objFormParam->setParam($_POST); 
     
    240254                break; 
    241255 
    242             // 複数配送設定を反映 
     256                // 複数配送設定を反映 
    243257            case 'multiple_set_to': 
    244258                $this->lfInitMultipleParam($objFormParam); 
     
    248262                break; 
    249263 
    250             // お届け先の追加 
     264                // お届け先の追加 
    251265            case 'append_shipping': 
    252266                $objFormParam->setParam($_POST); 
     
    268282    } 
    269283 
    270     /** 
    271      * デストラクタ. 
    272      * 
    273      * @return void 
    274      */ 
    275     function destroy() { 
    276         parent::destroy(); 
    277     } 
    278  
    279     /** 
    280      * パラメーター情報の初期化を行う. 
    281      * 
    282      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    283      * @return void 
    284      */ 
    285     function lfInitParam(&$objFormParam) { 
    286         // 検索条件のパラメーターを初期化 
    287         parent::lfInitParam($objFormParam); 
    288  
    289         // お客様情報 
    290         $objFormParam->addParam('注文者 お名前(姓)', 'order_name01', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    291         $objFormParam->addParam('注文者 お名前(名)', 'order_name02', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    292         $objFormParam->addParam('注文者 お名前(フリガナ・姓)', 'order_kana01', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    293         $objFormParam->addParam('注文者 お名前(フリガナ・名)', 'order_kana02', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    294         $objFormParam->addParam('メールアドレス', 'order_email', null, 'KVCa', array('NO_SPTAB', 'EMAIL_CHECK', 'EMAIL_CHAR_CHECK')); 
    295         $objFormParam->addParam('郵便番号1', 'order_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
    296         $objFormParam->addParam('郵便番号2', 'order_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
    297         $objFormParam->addParam('都道府県', 'order_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    298         $objFormParam->addParam('住所1', 'order_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    299         $objFormParam->addParam('住所2', 'order_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    300         $objFormParam->addParam('電話番号1', 'order_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    301         $objFormParam->addParam('電話番号2', 'order_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    302         $objFormParam->addParam('電話番号3', 'order_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    303         $objFormParam->addParam('FAX番号1', 'order_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    304         $objFormParam->addParam('FAX番号2', 'order_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    305         $objFormParam->addParam('FAX番号3', 'order_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    306  
    307         // 受注商品情報 
    308         $objFormParam->addParam('値引き', 'discount', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    309         $objFormParam->addParam('送料', 'deliv_fee', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    310         $objFormParam->addParam('手数料', 'charge', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    311  
    312         // ポイント機能ON時のみ 
    313         if (USE_POINT !== false) { 
    314             $objFormParam->addParam('利用ポイント', 'use_point', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    315         } 
    316  
    317         $objFormParam->addParam('配送業者', 'deliv_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    318         $objFormParam->addParam('お支払い方法', 'payment_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    319         $objFormParam->addParam('対応状況', 'status', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    320         $objFormParam->addParam('お支払方法名称', 'payment_method'); 
    321  
    322         // 受注詳細情報 
    323         $objFormParam->addParam('商品種別ID', 'product_type_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    324         $objFormParam->addParam('単価', 'price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    325         $objFormParam->addParam('数量', 'quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    326         $objFormParam->addParam('商品ID', 'product_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    327         $objFormParam->addParam('商品規格ID', 'product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    328         $objFormParam->addParam('ポイント付与率', 'point_rate'); 
    329         $objFormParam->addParam('商品コード', 'product_code'); 
    330         $objFormParam->addParam('商品名', 'product_name'); 
    331         $objFormParam->addParam('規格名1', 'classcategory_name1'); 
    332         $objFormParam->addParam('規格名2', 'classcategory_name2'); 
    333         $objFormParam->addParam('税率', 'tax_rate'); 
    334         $objFormParam->addParam('課税規則', 'tax_rule'); 
    335         $objFormParam->addParam('メモ', 'note', MTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); 
    336         $objFormParam->addParam('削除用項番', 'delete_no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    337  
    338         // DB読込用 
    339         $objFormParam->addParam('小計', 'subtotal'); 
    340         $objFormParam->addParam('合計', 'total'); 
    341         $objFormParam->addParam('支払い合計', 'payment_total'); 
    342         $objFormParam->addParam('加算ポイント', 'add_point'); 
    343         $objFormParam->addParam('お誕生日ポイント', 'birth_point', null, 'n', array(), 0); 
    344         $objFormParam->addParam('消費税合計', 'tax'); 
    345         $objFormParam->addParam('最終保持ポイント', 'total_point'); 
    346         $objFormParam->addParam('会員ID', 'customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    347         $objFormParam->addParam('会員ID', 'edit_customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    348         $objFormParam->addParam('現在のポイント', 'customer_point'); 
    349         $objFormParam->addParam('受注前ポイント', 'point'); 
    350         $objFormParam->addParam('注文番号', 'order_id'); 
    351         $objFormParam->addParam('受注日', 'create_date'); 
    352         $objFormParam->addParam('発送日', 'commit_date'); 
    353         $objFormParam->addParam('備考', 'message'); 
    354         $objFormParam->addParam('入金日', 'payment_date'); 
    355         $objFormParam->addParam('端末種別', 'device_type_id'); 
    356         $objFormParam->addParam('税率', 'order_tax_rate'); 
    357         $objFormParam->addParam('課税規則', 'order_tax_rule'); 
    358  
    359         // 複数情報 
    360         $objFormParam->addParam('配送数', 'shipping_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    361         $objFormParam->addParam('配送ID', 'shipping_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 0); 
    362         $objFormParam->addParam('お名前(姓)', 'shipping_name01', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    363         $objFormParam->addParam('お名前(名)', 'shipping_name02', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    364         $objFormParam->addParam('お名前(フリガナ・姓)', 'shipping_kana01', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    365         $objFormParam->addParam('お名前(フリガナ・名)', 'shipping_kana02', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    366         $objFormParam->addParam('郵便番号1', 'shipping_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
    367         $objFormParam->addParam('郵便番号2', 'shipping_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
    368         $objFormParam->addParam('都道府県', 'shipping_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    369         $objFormParam->addParam('住所1', 'shipping_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    370         $objFormParam->addParam('住所2', 'shipping_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    371         $objFormParam->addParam('電話番号1', 'shipping_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    372         $objFormParam->addParam('電話番号2', 'shipping_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    373         $objFormParam->addParam('電話番号3', 'shipping_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    374         $objFormParam->addParam('FAX番号1', 'shipping_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    375         $objFormParam->addParam('FAX番号2', 'shipping_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    376         $objFormParam->addParam('FAX番号3', 'shipping_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
    377         $objFormParam->addParam('お届け時間ID', 'time_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    378         $objFormParam->addParam('お届け日(年)', 'shipping_date_year', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    379         $objFormParam->addParam('お届け日(月)', 'shipping_date_month', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    380         $objFormParam->addParam('お届け日(日)', 'shipping_date_day', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    381         $objFormParam->addParam('お届け日', 'shipping_date', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    382         $objFormParam->addParam('配送商品数量', 'shipping_product_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    383  
    384         $objFormParam->addParam('商品規格ID', 'shipment_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    385         $objFormParam->addParam('商品コード', 'shipment_product_code'); 
    386         $objFormParam->addParam('商品名', 'shipment_product_name'); 
    387         $objFormParam->addParam('規格名1', 'shipment_classcategory_name1'); 
    388         $objFormParam->addParam('規格名2', 'shipment_classcategory_name2'); 
    389         $objFormParam->addParam('単価', 'shipment_price', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    390         $objFormParam->addParam('数量', 'shipment_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
    391  
    392         $objFormParam->addParam('商品項番', 'no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    393         $objFormParam->addParam('追加商品規格ID', 'add_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    394         $objFormParam->addParam('修正商品規格ID', 'edit_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    395         $objFormParam->addParam('アンカーキー', 'anchor_key', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
    396     } 
    397  
    398     /** 
    399      * 複数配送用フォームの初期化を行う. 
    400      * 
    401      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    402      * @return void 
    403      */ 
    404     function lfInitMultipleParam(&$objFormParam) { 
    405         $objFormParam->addParam('商品規格ID', 'multiple_product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    406         $objFormParam->addParam('商品コード', 'multiple_product_code', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    407         $objFormParam->addParam('商品名', 'multiple_product_name', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    408         $objFormParam->addParam('規格1', 'multiple_classcategory_name1', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    409         $objFormParam->addParam('規格2', 'multiple_classcategory_name2', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    410         $objFormParam->addParam('単価', 'multiple_price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    411         $objFormParam->addParam('数量', 'multiple_quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
    412         $objFormParam->addParam('お届け先', 'multiple_shipping_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
    413     } 
    414  
    415     /** 
    416      * 複数配送入力フォームで入力された値を SC_FormParam へ設定する. 
    417      * 
    418      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    419      * @return void 
    420      */ 
    421     function setMultipleItemTo(&$objFormParam) { 
    422         $arrMultipleKey = array('multiple_shipping_id', 
    423                                 'multiple_product_class_id', 
    424                                 'multiple_product_name', 
    425                                 'multiple_product_code', 
    426                                 'multiple_classcategory_name1', 
    427                                 'multiple_classcategory_name2', 
    428                                 'multiple_price', 
    429                                 'multiple_quantity'); 
    430         $arrMultipleParams = $objFormParam->getSwapArray($arrMultipleKey); 
    431  
    432         /* 
    433          * 複数配送フォームの入力値を shipping_id ごとにマージ 
    434          * 
    435          * $arrShipmentItem[お届け先ID][商品規格ID]['shipment_(key)'] = 値 
    436          */ 
    437         $arrShipmentItem = array(); 
    438         foreach ($arrMultipleParams as $arrMultiple) { 
    439             $shipping_id = $arrMultiple['multiple_shipping_id']; 
    440             $product_class_id = $arrMultiple['multiple_product_class_id']; 
    441             foreach ($arrMultiple as $key => $val) { 
    442                 if ($key == 'multiple_quantity') { 
    443                     $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] += $val; 
    444                 } else { 
    445                     $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] = $val; 
    446                 } 
    447             } 
    448         } 
    449  
    450         /* 
    451          * フォームのお届け先ごとの配列を生成 
    452          * 
    453          * $arrShipmentForm['(key)'][$shipping_id][$item_index] = 値 
    454          * $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 
    455          */ 
    456         $arrShipmentForm = array(); 
    457         $arrProductQuantity = array(); 
    458         $arrShippingIds = $objFormParam->getValue('shipping_id'); 
    459         foreach ($arrShippingIds as $shipping_id) { 
    460             $item_index = 0; 
    461             foreach ($arrShipmentItem[$shipping_id] as $product_class_id => $shipment_item) { 
    462                 foreach ($shipment_item as $key => $val) { 
    463                     $arrShipmentForm[$key][$shipping_id][$item_index] = $val; 
    464                 } 
    465                 // 受注商品の数量を設定 
    466                 $arrQuantity[$product_class_id] += $shipment_item['shipment_quantity']; 
    467                 $item_index++; 
    468             } 
    469             // お届け先ごとの配送商品数量を設定 
    470             $arrProductQuantity[$shipping_id] = count($arrShipmentItem[$shipping_id]); 
    471         } 
    472  
    473         $objFormParam->setParam($arrShipmentForm); 
    474         $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 
    475  
    476         // 受注商品の数量を変更 
    477         $arrDest = array(); 
     284/** 
     285 * デストラクタ. 
     286 * 
     287 * @return void 
     288 */ 
     289function destroy() { 
     290    parent::destroy(); 
     291} 
     292 
     293/** 
     294 * パラメーター情報の初期化を行う. 
     295 * 
     296 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     297 * @return void 
     298 */ 
     299function lfInitParam(&$objFormParam) { 
     300    // 検索条件のパラメーターを初期化 
     301    parent::lfInitParam($objFormParam); 
     302 
     303    // お客様情報 
     304    $objFormParam->addParam('注文者 お名前(姓)', 'order_name01', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     305    $objFormParam->addParam('注文者 お名前(名)', 'order_name02', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     306    $objFormParam->addParam('注文者 お名前(フリガナ・姓)', 'order_kana01', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     307    $objFormParam->addParam('注文者 お名前(フリガナ・名)', 'order_kana02', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     308    $objFormParam->addParam('メールアドレス', 'order_email', null, 'KVCa', array('NO_SPTAB', 'EMAIL_CHECK', 'EMAIL_CHAR_CHECK')); 
     309    $objFormParam->addParam('郵便番号1', 'order_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
     310    $objFormParam->addParam('郵便番号2', 'order_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
     311    $objFormParam->addParam('都道府県', 'order_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     312    $objFormParam->addParam('住所1', 'order_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     313    $objFormParam->addParam('住所2', 'order_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     314    $objFormParam->addParam('電話番号1', 'order_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     315    $objFormParam->addParam('電話番号2', 'order_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     316    $objFormParam->addParam('電話番号3', 'order_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     317    $objFormParam->addParam('FAX番号1', 'order_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     318    $objFormParam->addParam('FAX番号2', 'order_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     319    $objFormParam->addParam('FAX番号3', 'order_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     320 
     321    // 受注商品情報 
     322    $objFormParam->addParam('値引き', 'discount', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     323    $objFormParam->addParam('送料', 'deliv_fee', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     324    $objFormParam->addParam('手数料', 'charge', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     325 
     326    // ポイント機能ON時のみ 
     327    if (USE_POINT !== false) { 
     328        $objFormParam->addParam('利用ポイント', 'use_point', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     329    } 
     330 
     331    $objFormParam->addParam('配送業者', 'deliv_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     332    $objFormParam->addParam('お支払い方法', 'payment_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     333    $objFormParam->addParam('対応状況', 'status', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     334    $objFormParam->addParam('お支払方法名称', 'payment_method'); 
     335 
     336    // 受注詳細情報 
     337    $objFormParam->addParam('商品種別ID', 'product_type_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     338    $objFormParam->addParam('単価', 'price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     339    $objFormParam->addParam('数量', 'quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     340    $objFormParam->addParam('商品ID', 'product_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     341    $objFormParam->addParam('商品規格ID', 'product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     342    $objFormParam->addParam('ポイント付与率', 'point_rate'); 
     343    $objFormParam->addParam('商品コード', 'product_code'); 
     344    $objFormParam->addParam('商品名', 'product_name'); 
     345    $objFormParam->addParam('規格名1', 'classcategory_name1'); 
     346    $objFormParam->addParam('規格名2', 'classcategory_name2'); 
     347    $objFormParam->addParam('税率', 'tax_rate'); 
     348    $objFormParam->addParam('課税規則', 'tax_rule'); 
     349    $objFormParam->addParam('メモ', 'note', MTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); 
     350    $objFormParam->addParam('削除用項番', 'delete_no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     351 
     352    // DB読込用 
     353    $objFormParam->addParam('小計', 'subtotal'); 
     354    $objFormParam->addParam('合計', 'total'); 
     355    $objFormParam->addParam('支払い合計', 'payment_total'); 
     356    $objFormParam->addParam('加算ポイント', 'add_point'); 
     357    $objFormParam->addParam('お誕生日ポイント', 'birth_point', null, 'n', array(), 0); 
     358    $objFormParam->addParam('消費税合計', 'tax'); 
     359    $objFormParam->addParam('最終保持ポイント', 'total_point'); 
     360    $objFormParam->addParam('会員ID', 'customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     361    $objFormParam->addParam('会員ID', 'edit_customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     362    $objFormParam->addParam('現在のポイント', 'customer_point'); 
     363    $objFormParam->addParam('受注前ポイント', 'point'); 
     364    $objFormParam->addParam('注文番号', 'order_id'); 
     365    $objFormParam->addParam('受注日', 'create_date'); 
     366    $objFormParam->addParam('発送日', 'commit_date'); 
     367    $objFormParam->addParam('備考', 'message'); 
     368    $objFormParam->addParam('入金日', 'payment_date'); 
     369    $objFormParam->addParam('端末種別', 'device_type_id'); 
     370    $objFormParam->addParam('税率', 'order_tax_rate'); 
     371    $objFormParam->addParam('課税規則', 'order_tax_rule'); 
     372 
     373    // 複数情報 
     374    $objFormParam->addParam('配送数', 'shipping_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     375    $objFormParam->addParam('配送ID', 'shipping_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 0); 
     376    $objFormParam->addParam('お名前(姓)', 'shipping_name01', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     377    $objFormParam->addParam('お名前(名)', 'shipping_name02', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     378    $objFormParam->addParam('お名前(フリガナ・姓)', 'shipping_kana01', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     379    $objFormParam->addParam('お名前(フリガナ・名)', 'shipping_kana02', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     380    $objFormParam->addParam('郵便番号1', 'shipping_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
     381    $objFormParam->addParam('郵便番号2', 'shipping_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); 
     382    $objFormParam->addParam('都道府県', 'shipping_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     383    $objFormParam->addParam('住所1', 'shipping_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     384    $objFormParam->addParam('住所2', 'shipping_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     385    $objFormParam->addParam('電話番号1', 'shipping_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     386    $objFormParam->addParam('電話番号2', 'shipping_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     387    $objFormParam->addParam('電話番号3', 'shipping_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     388    $objFormParam->addParam('FAX番号1', 'shipping_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     389    $objFormParam->addParam('FAX番号2', 'shipping_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     390    $objFormParam->addParam('FAX番号3', 'shipping_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); 
     391    $objFormParam->addParam('お届け時間ID', 'time_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     392    $objFormParam->addParam('お届け日(年)', 'shipping_date_year', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     393    $objFormParam->addParam('お届け日(月)', 'shipping_date_month', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     394    $objFormParam->addParam('お届け日(日)', 'shipping_date_day', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     395    $objFormParam->addParam('お届け日', 'shipping_date', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     396    $objFormParam->addParam('配送商品数量', 'shipping_product_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     397 
     398    $objFormParam->addParam('商品規格ID', 'shipment_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     399    $objFormParam->addParam('商品コード', 'shipment_product_code'); 
     400    $objFormParam->addParam('商品名', 'shipment_product_name'); 
     401    $objFormParam->addParam('規格名1', 'shipment_classcategory_name1'); 
     402    $objFormParam->addParam('規格名2', 'shipment_classcategory_name2'); 
     403    $objFormParam->addParam('単価', 'shipment_price', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     404    $objFormParam->addParam('数量', 'shipment_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); 
     405 
     406    $objFormParam->addParam('商品項番', 'no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     407    $objFormParam->addParam('追加商品規格ID', 'add_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     408    $objFormParam->addParam('修正商品規格ID', 'edit_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     409    $objFormParam->addParam('アンカーキー', 'anchor_key', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 
     410} 
     411 
     412/** 
     413 * 複数配送用フォームの初期化を行う. 
     414 * 
     415 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     416 * @return void 
     417 */ 
     418function lfInitMultipleParam(&$objFormParam) { 
     419    $objFormParam->addParam('商品規格ID', 'multiple_product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     420    $objFormParam->addParam('商品コード', 'multiple_product_code', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     421    $objFormParam->addParam('商品名', 'multiple_product_name', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     422    $objFormParam->addParam('規格1', 'multiple_classcategory_name1', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     423    $objFormParam->addParam('規格2', 'multiple_classcategory_name2', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     424    $objFormParam->addParam('単価', 'multiple_price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     425    $objFormParam->addParam('数量', 'multiple_quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); 
     426    $objFormParam->addParam('お届け先', 'multiple_shipping_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); 
     427} 
     428 
     429/** 
     430 * 複数配送入力フォームで入力された値を SC_FormParam へ設定する. 
     431 * 
     432 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     433 * @return void 
     434 */ 
     435function setMultipleItemTo(&$objFormParam) { 
     436    $arrMultipleKey = array('multiple_shipping_id', 
     437            'multiple_product_class_id', 
     438            'multiple_product_name', 
     439            'multiple_product_code', 
     440            'multiple_classcategory_name1', 
     441            'multiple_classcategory_name2', 
     442            'multiple_price', 
     443            'multiple_quantity'); 
     444    $arrMultipleParams = $objFormParam->getSwapArray($arrMultipleKey); 
     445 
     446    /* 
     447     * 複数配送フォームの入力値を shipping_id ごとにマージ 
     448     * 
     449     * $arrShipmentItem[お届け先ID][商品規格ID]['shipment_(key)'] = 値 
     450     */ 
     451    $arrShipmentItem = array(); 
     452    foreach ($arrMultipleParams as $arrMultiple) { 
     453        $shipping_id = $arrMultiple['multiple_shipping_id']; 
     454        $product_class_id = $arrMultiple['multiple_product_class_id']; 
     455        foreach ($arrMultiple as $key => $val) { 
     456            if ($key == 'multiple_quantity') { 
     457                $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] += $val; 
     458            } else { 
     459                $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] = $val; 
     460            } 
     461        } 
     462    } 
     463 
     464    /* 
     465     * フォームのお届け先ごとの配列を生成 
     466     * 
     467     * $arrShipmentForm['(key)'][$shipping_id][$item_index] = 値 
     468     * $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 
     469     */ 
     470    $arrShipmentForm = array(); 
     471    $arrProductQuantity = array(); 
     472    $arrShippingIds = $objFormParam->getValue('shipping_id'); 
     473    foreach ($arrShippingIds as $shipping_id) { 
     474        $item_index = 0; 
     475        foreach ($arrShipmentItem[$shipping_id] as $product_class_id => $shipment_item) { 
     476            foreach ($shipment_item as $key => $val) { 
     477                $arrShipmentForm[$key][$shipping_id][$item_index] = $val; 
     478            } 
     479            // 受注商品の数量を設定 
     480            $arrQuantity[$product_class_id] += $shipment_item['shipment_quantity']; 
     481            $item_index++; 
     482        } 
     483        // お届け先ごとの配送商品数量を設定 
     484        $arrProductQuantity[$shipping_id] = count($arrShipmentItem[$shipping_id]); 
     485    } 
     486 
     487    $objFormParam->setParam($arrShipmentForm); 
     488    $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 
     489 
     490    // 受注商品の数量を変更 
     491    $arrDest = array(); 
     492    foreach ($objFormParam->getValue('product_class_id') as $n => $order_product_class_id) { 
     493        $arrDest['quantity'][$n] = 0; 
     494    } 
     495    foreach ($arrQuantity as $product_class_id => $quantity) { 
    478496        foreach ($objFormParam->getValue('product_class_id') as $n => $order_product_class_id) { 
    479             $arrDest['quantity'][$n] = 0; 
    480         } 
    481         foreach ($arrQuantity as $product_class_id => $quantity) { 
    482             foreach ($objFormParam->getValue('product_class_id') as $n => $order_product_class_id) { 
    483                 if ($product_class_id == $order_product_class_id) { 
    484                     $arrDest['quantity'][$n] = $quantity; 
    485                 } 
    486             } 
    487         } 
    488         $objFormParam->setParam($arrDest); 
    489     } 
    490  
    491     /** 
    492      * 受注データを取得して, SC_FormParam へ設定する. 
    493      * 
    494      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    495      * @param integer $order_id 取得元の受注ID 
    496      * @return void 
    497      */ 
    498     function setOrderToFormParam(&$objFormParam, $order_id) { 
     497            if ($product_class_id == $order_product_class_id) { 
     498                $arrDest['quantity'][$n] = $quantity; 
     499            } 
     500        } 
     501    } 
     502    $objFormParam->setParam($arrDest); 
     503} 
     504 
     505/** 
     506 * 受注データを取得して, SC_FormParam へ設定する. 
     507 * 
     508 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     509 * @param integer $order_id 取得元の受注ID 
     510 * @return void 
     511 */ 
     512function setOrderToFormParam(&$objFormParam, $order_id) { 
     513    $objPurchase = new SC_Helper_Purchase_Ex(); 
     514 
     515    // 受注詳細を設定 
     516    $arrOrderDetail = $objPurchase->getOrderDetail($order_id, false); 
     517    $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrOrderDetail)); 
     518 
     519    $arrShippingsTmp = $objPurchase->getShippings($order_id); 
     520    $arrShippings = array(); 
     521    foreach ($arrShippingsTmp as $row) { 
     522        // お届け日の処理 
     523        if (!SC_Utils_Ex::isBlank($row['shipping_date'])) { 
     524            $ts = strtotime($row['shipping_date']); 
     525            $row['shipping_date_year'] = date('Y', $ts); 
     526            $row['shipping_date_month'] = date('n', $ts); 
     527            $row['shipping_date_day'] = date('j', $ts); 
     528        } 
     529        $arrShippings[$row['shipping_id']] = $row; 
     530    } 
     531    $objFormParam->setValue('shipping_quantity', count($arrShippings)); 
     532    $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrShippings)); 
     533 
     534    /* 
     535     * 配送商品を設定 
     536     * 
     537     * $arrShipmentItem['shipment_(key)'][$shipping_id][$item_index] = 値 
     538     * $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 
     539     */ 
     540    $arrProductQuantity = array(); 
     541    $arrShipmentItem = array(); 
     542    foreach ($arrShippings as $shipping_id => $arrShipping) { 
     543        $arrProductQuantity[$shipping_id] = count($arrShipping['shipment_item']); 
     544        foreach ($arrShipping['shipment_item'] as $item_index => $arrItem) { 
     545            foreach ($arrItem as $item_key => $item_val) { 
     546                $arrShipmentItem['shipment_' . $item_key][$shipping_id][$item_index] = $item_val; 
     547            } 
     548        } 
     549    } 
     550    $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 
     551    $objFormParam->setParam($arrShipmentItem); 
     552 
     553    /* 
     554     * 受注情報を設定 
     555     * $arrOrderDetail と項目が重複しており, $arrOrderDetail は連想配列の値 
     556     * が渡ってくるため, $arrOrder で上書きする. 
     557     */ 
     558    $arrOrder = $objPurchase->getOrder($order_id); 
     559    $objFormParam->setParam($arrOrder); 
     560 
     561    // ポイントを設定 
     562    list($db_point, $rollback_point) = SC_Helper_DB_Ex::sfGetRollbackPoint( 
     563            $order_id, $arrOrder['use_point'], $arrOrder['add_point'], $arrOrder['status'] 
     564            ); 
     565    $objFormParam->setValue('total_point', $db_point); 
     566    $objFormParam->setValue('point', $rollback_point); 
     567 
     568    if (!SC_Utils_Ex::isBlank($objFormParam->getValue('customer_id'))) { 
     569        $arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($objFormParam->getValue('customer_id')); 
     570        $objFormParam->setValue('customer_point', $arrCustomer['point']); 
     571    } 
     572} 
     573 
     574/** 
     575 * 入力内容のチェックを行う. 
     576 * 
     577 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     578 * @return array エラーメッセージの配列 
     579 */ 
     580function lfCheckError(&$objFormParam) { 
     581    $objProduct = new SC_Product_Ex(); 
     582 
     583    $arrErr = $objFormParam->checkError(); 
     584 
     585    if (!SC_Utils_Ex::isBlank($objErr->arrErr)) { 
     586        return $arrErr; 
     587    } 
     588 
     589    $arrValues = $objFormParam->getHashArray(); 
     590 
     591    // 商品の種類数 
     592    $max = count($arrValues['quantity']); 
     593    $subtotal = 0; 
     594    $totalpoint = 0; 
     595    $totaltax = 0; 
     596    for ($i = 0; $i < $max; $i++) { 
     597        // 小計の計算 
     598        $subtotal += SC_Helper_DB_Ex::sfCalcIncTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i]; 
     599        // 小計の計算 
     600        $totaltax += SC_Utils_Ex::sfTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i]; 
     601        // 加算ポイントの計算 
     602        $totalpoint += SC_Utils_Ex::sfPrePoint($arrValues['price'][$i], $arrValues['point_rate'][$i]) * $arrValues['quantity'][$i]; 
     603 
     604        // 在庫数のチェック 
     605        $arrProduct = $objProduct->getDetailAndProductsClass($arrValues['product_class_id'][$i]); 
     606 
     607        // 編集前の値と比較するため受注詳細を取得 
    499608        $objPurchase = new SC_Helper_Purchase_Ex(); 
    500  
    501         // 受注詳細を設定 
    502         $arrOrderDetail = $objPurchase->getOrderDetail($order_id, false); 
    503         $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrOrderDetail)); 
    504  
    505         $arrShippingsTmp = $objPurchase->getShippings($order_id); 
    506         $arrShippings = array(); 
    507         foreach ($arrShippingsTmp as $row) { 
    508             // お届け日の処理 
    509             if (!SC_Utils_Ex::isBlank($row['shipping_date'])) { 
    510                 $ts = strtotime($row['shipping_date']); 
    511                 $row['shipping_date_year'] = date('Y', $ts); 
    512                 $row['shipping_date_month'] = date('n', $ts); 
    513                 $row['shipping_date_day'] = date('j', $ts); 
    514             } 
    515             $arrShippings[$row['shipping_id']] = $row; 
    516         } 
    517         $objFormParam->setValue('shipping_quantity', count($arrShippings)); 
    518         $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrShippings)); 
    519  
    520         /* 
    521          * 配送商品を設定 
    522          * 
    523          * $arrShipmentItem['shipment_(key)'][$shipping_id][$item_index] = 値 
    524          * $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 
    525          */ 
    526         $arrProductQuantity = array(); 
    527         $arrShipmentItem = array(); 
    528         foreach ($arrShippings as $shipping_id => $arrShipping) { 
    529             $arrProductQuantity[$shipping_id] = count($arrShipping['shipment_item']); 
    530             foreach ($arrShipping['shipment_item'] as $item_index => $arrItem) { 
    531                 foreach ($arrItem as $item_key => $item_val) { 
    532                     $arrShipmentItem['shipment_' . $item_key][$shipping_id][$item_index] = $item_val; 
    533                 } 
    534             } 
    535         } 
    536         $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 
    537         $objFormParam->setParam($arrShipmentItem); 
    538  
    539         /* 
    540          * 受注情報を設定 
    541          * $arrOrderDetail と項目が重複しており, $arrOrderDetail は連想配列の値 
    542          * が渡ってくるため, $arrOrder で上書きする. 
    543          */ 
    544         $arrOrder = $objPurchase->getOrder($order_id); 
    545         $objFormParam->setParam($arrOrder); 
    546  
    547         // ポイントを設定 
    548         list($db_point, $rollback_point) = SC_Helper_DB_Ex::sfGetRollbackPoint( 
    549             $order_id, $arrOrder['use_point'], $arrOrder['add_point'], $arrOrder['status'] 
    550         ); 
    551         $objFormParam->setValue('total_point', $db_point); 
    552         $objFormParam->setValue('point', $rollback_point); 
    553  
    554         if (!SC_Utils_Ex::isBlank($objFormParam->getValue('customer_id'))) { 
    555             $arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($objFormParam->getValue('customer_id')); 
    556             $objFormParam->setValue('customer_point', $arrCustomer['point']); 
    557         } 
    558     } 
    559  
    560     /** 
    561      * 入力内容のチェックを行う. 
    562      * 
    563      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    564      * @return array エラーメッセージの配列 
    565      */ 
    566     function lfCheckError(&$objFormParam) { 
    567         $objProduct = new SC_Product_Ex(); 
    568  
    569         $arrErr = $objFormParam->checkError(); 
    570  
    571         if (!SC_Utils_Ex::isBlank($objErr->arrErr)) { 
    572             return $arrErr; 
    573         } 
    574  
    575         $arrValues = $objFormParam->getHashArray(); 
    576  
    577         // 商品の種類数 
    578         $max = count($arrValues['quantity']); 
    579         $subtotal = 0; 
    580         $totalpoint = 0; 
    581         $totaltax = 0; 
    582         for ($i = 0; $i < $max; $i++) { 
    583             // 小計の計算 
    584             $subtotal += SC_Helper_DB_Ex::sfCalcIncTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i]; 
    585             // 小計の計算 
    586             $totaltax += SC_Utils_Ex::sfTax($arrValues['price'][$i], $arrValues['tax_rate'][$i], $arrValues['tax_rule'][$i]) * $arrValues['quantity'][$i]; 
    587             // 加算ポイントの計算 
    588             $totalpoint += SC_Utils_Ex::sfPrePoint($arrValues['price'][$i], $arrValues['point_rate'][$i]) * $arrValues['quantity'][$i]; 
    589  
    590             // 在庫数のチェック 
    591             $arrProduct = $objProduct->getDetailAndProductsClass($arrValues['product_class_id'][$i]); 
    592  
    593             // 編集前の値と比較するため受注詳細を取得 
    594             $objPurchase = new SC_Helper_Purchase_Ex(); 
    595             $arrOrderDetail = SC_Utils_Ex::sfSwapArray($objPurchase->getOrderDetail($objFormParam->getValue('order_id'), false)); 
    596  
    597             if ($arrProduct['stock_unlimited'] != '1' 
     609        $arrOrderDetail = SC_Utils_Ex::sfSwapArray($objPurchase->getOrderDetail($objFormParam->getValue('order_id'), false)); 
     610 
     611        if ($arrProduct['stock_unlimited'] != '1' 
    598612                && $arrProduct['stock'] < $arrValues['quantity'][$i] - $arrOrderDetail['quantity'][$i]) { 
    599                 $class_name1 = $arrValues['classcategory_name1'][$i]; 
    600                 $class_name1 = SC_Utils_Ex::isBlank($class_name1) ? 'なし' : $class_name1; 
    601                 $class_name2 = $arrValues['classcategory_name2'][$i]; 
    602                 $class_name2 = SC_Utils_Ex::isBlank($class_name2) ? 'なし' : $class_name2; 
    603                 $arrErr['quantity'][$i] .= $arrValues['product_name'][$i] 
    604                     . '/(' . $class_name1 . ')/(' . $class_name2 . ') の在庫が不足しています。 設定できる数量は「' 
    605                     . ($arrOrderDetail['quantity'][$i] + $arrProduct['stock']) . '」までです。<br />'; 
    606             } 
    607         } 
    608  
    609         // 消費税 
    610         $arrValues['tax'] = $totaltax; 
    611         // 小計 
    612         $arrValues['subtotal'] = $subtotal; 
    613         // 合計 
    614         $arrValues['total'] = $subtotal - $arrValues['discount'] + $arrValues['deliv_fee'] + $arrValues['charge']; 
    615         // お支払い合計 
    616         $arrValues['payment_total'] = $arrValues['total'] - ($arrValues['use_point'] * POINT_VALUE); 
    617  
    618         // 加算ポイント 
    619         $arrValues['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($totalpoint, $arrValues['use_point']); 
    620  
    621         // 最終保持ポイント 
    622         $arrValues['total_point'] = $objFormParam->getValue('point') - $arrValues['use_point']; 
    623  
    624         if ($arrValues['total'] < 0) { 
    625             $arrErr['total'] = '合計額がマイナス表示にならないように調整して下さい。<br />'; 
    626         } 
    627  
    628         if ($arrValues['payment_total'] < 0) { 
    629             $arrErr['payment_total'] = 'お支払い合計額がマイナス表示にならないように調整して下さい。<br />'; 
    630         } 
    631  
    632         if ($arrValues['total_point'] < 0) { 
    633             $arrErr['use_point'] = '最終保持ポイントがマイナス表示にならないように調整して下さい。<br />'; 
    634         } 
    635  
    636         $objFormParam->setParam($arrValues); 
    637         return $arrErr; 
    638     } 
     613            $class_name1 = $arrValues['classcategory_name1'][$i]; 
     614            $class_name1 = SC_Utils_Ex::isBlank($class_name1) ? 'なし' : $class_name1; 
     615            $class_name2 = $arrValues['classcategory_name2'][$i]; 
     616            $class_name2 = SC_Utils_Ex::isBlank($class_name2) ? 'なし' : $class_name2; 
     617            $arrErr['quantity'][$i] .= $arrValues['product_name'][$i] 
     618                . '/(' . $class_name1 . ')/(' . $class_name2 . ') の在庫が不足しています。 設定できる数量は「' 
     619                . ($arrOrderDetail['quantity'][$i] + $arrProduct['stock']) . '」までです。<br />'; 
     620        } 
     621    } 
     622 
     623    // 消費税 
     624    $arrValues['tax'] = $totaltax; 
     625    // 小計 
     626    $arrValues['subtotal'] = $subtotal; 
     627    // 合計 
     628    $arrValues['total'] = $subtotal - $arrValues['discount'] + $arrValues['deliv_fee'] + $arrValues['charge']; 
     629    // お支払い合計 
     630    $arrValues['payment_total'] = $arrValues['total'] - ($arrValues['use_point'] * POINT_VALUE); 
     631 
     632    // 加算ポイント 
     633    $arrValues['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($totalpoint, $arrValues['use_point']) + $arrValues['birth_point']; 
     634 
     635    // 最終保持ポイント 
     636    $arrValues['total_point'] = $objFormParam->getValue('point') - $arrValues['use_point']; 
     637 
     638    if ($arrValues['total'] < 0) { 
     639        $arrErr['total'] = '合計額がマイナス表示にならないように調整して下さい。<br />'; 
     640    } 
     641 
     642    if ($arrValues['payment_total'] < 0) { 
     643        $arrErr['payment_total'] = 'お支払い合計額がマイナス表示にならないように調整して下さい。<br />'; 
     644    } 
     645 
     646    if ($arrValues['total_point'] < 0) { 
     647        $arrErr['use_point'] = '最終保持ポイントがマイナス表示にならないように調整して下さい。<br />'; 
     648    } 
     649 
     650    $objFormParam->setParam($arrValues); 
     651    return $arrErr; 
     652} 
    639653 
    640654    /** 
     
    918932        $objFormParam->setValue('customer_id', $customer_id); 
    919933        $objFormParam->setValue('customer_point', $arrCustomer['point']); 
     934 
     935        return $arrCustomer['birth']; 
    920936    } 
    921937 
Note: See TracChangeset for help on using the changeset viewer.