- Timestamp:
- 2013/07/20 16:19:43 (13 years ago)
- Location:
- branches/version-2_13-dev/data/class/helper
- Files:
-
- 3 edited
-
SC_Helper_Customer.php (modified) (5 diffs)
-
SC_Helper_Purchase.php (modified) (3 diffs)
-
SC_Helper_TaxRule.php (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_13-dev/data/class/helper/SC_Helper_Customer.php
r22883 r22976 97 97 98 98 //デフォルト国IDを追加 99 $arrData['country_id'] = DEFAULT_COUNTRY_ID; 99 if (FORM_COUNTRY_ENABLE == false) { 100 $arrData['country_id'] = DEFAULT_COUNTRY_ID; 101 } 100 102 101 103 //-- 編集登録実行 … … 375 377 376 378 /** 377 * 会員共通 378 * 379 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 379 * 会員/顧客共通 380 * 381 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 382 * @param string $prefix キー名にprefixを付ける場合に指定 380 383 * @access public 381 384 * @return void 382 385 */ 383 function sfCustomerCommonParam(&$objFormParam) 384 { 385 $objFormParam->addParam('お名前(姓)', 'name01', STEXT_LEN, 'aKV', array('EXIST_CHECK', 'NO_SPTAB', 'SPTAB_CHECK' ,'MAX_LENGTH_CHECK')); 386 $objFormParam->addParam('お名前(名)', 'name02', STEXT_LEN, 'aKV', array('EXIST_CHECK', 'NO_SPTAB', 'SPTAB_CHECK' , 'MAX_LENGTH_CHECK')); 387 $objFormParam->addParam('お名前(フリガナ・姓)', 'kana01', STEXT_LEN, 'CKV', array('EXIST_CHECK', 'NO_SPTAB', 'SPTAB_CHECK' ,'MAX_LENGTH_CHECK', 'KANA_CHECK')); 388 $objFormParam->addParam('お名前(フリガナ・名)', 'kana02', STEXT_LEN, 'CKV', array('EXIST_CHECK', 'NO_SPTAB', 'SPTAB_CHECK' ,'MAX_LENGTH_CHECK', 'KANA_CHECK')); 389 $objFormParam->addParam('郵便番号1', 'zip01', ZIP01_LEN, 'n', array('EXIST_CHECK', 'SPTAB_CHECK' ,'NUM_CHECK', 'NUM_COUNT_CHECK')); 390 $objFormParam->addParam('郵便番号2', 'zip02', ZIP02_LEN, 'n', array('EXIST_CHECK', 'SPTAB_CHECK' ,'NUM_CHECK', 'NUM_COUNT_CHECK')); 391 $objFormParam->addParam('都道府県', 'pref', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK')); 392 $objFormParam->addParam('住所1', 'addr01', MTEXT_LEN, 'aKV', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 393 $objFormParam->addParam('住所2', 'addr02', MTEXT_LEN, 'aKV', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 394 $objFormParam->addParam('お電話番号1', 'tel01', TEL_ITEM_LEN, 'n', array('EXIST_CHECK', 'SPTAB_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 395 $objFormParam->addParam('お電話番号2', 'tel02', TEL_ITEM_LEN, 'n', array('EXIST_CHECK', 'SPTAB_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 396 $objFormParam->addParam('お電話番号3', 'tel03', TEL_ITEM_LEN, 'n', array('EXIST_CHECK', 'SPTAB_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 397 $objFormParam->addParam('FAX番号1', 'fax01', TEL_ITEM_LEN, 'n', array('SPTAB_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 398 $objFormParam->addParam('FAX番号2', 'fax02', TEL_ITEM_LEN, 'n', array('SPTAB_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 399 $objFormParam->addParam('FAX番号3', 'fax03', TEL_ITEM_LEN, 'n', array('SPTAB_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 386 function sfCustomerCommonParam(&$objFormParam, $prefix = '') 387 { 388 $objFormParam->addParam('お名前(姓)', $prefix . 'name01', STEXT_LEN, 'aKV', array('EXIST_CHECK', 'NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 389 $objFormParam->addParam('お名前(名)', $prefix . 'name02', STEXT_LEN, 'aKV', array('EXIST_CHECK', 'NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 390 if (FORM_COUNTRY_ENABLE === false) { 391 $objFormParam->addParam('お名前(フリガナ・姓)', $prefix . 'kana01', STEXT_LEN, 'CKV', array('EXIST_CHECK', 'NO_SPTAB', 'SPTAB_CHECK' ,'MAX_LENGTH_CHECK', 'KANA_CHECK')); 392 $objFormParam->addParam('お名前(フリガナ・名)', $prefix . 'kana02', STEXT_LEN, 'CKV', array('EXIST_CHECK', 'NO_SPTAB', 'SPTAB_CHECK' ,'MAX_LENGTH_CHECK', 'KANA_CHECK')); 393 $objFormParam->addParam('郵便番号1', $prefix . 'zip01', ZIP01_LEN, 'n', array('EXIST_CHECK', 'SPTAB_CHECK' ,'NUM_CHECK', 'NUM_COUNT_CHECK')); 394 $objFormParam->addParam('郵便番号2', $prefix . 'zip02', ZIP02_LEN, 'n', array('EXIST_CHECK', 'SPTAB_CHECK' ,'NUM_CHECK', 'NUM_COUNT_CHECK')); 395 $objFormParam->addParam('国', $prefix . 'country_id', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK')); 396 $objFormParam->addParam('都道府県', $prefix . 'pref', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK')); 397 } else { 398 $objFormParam->addParam('お名前(フリガナ・姓)', $prefix . 'kana01', STEXT_LEN, 'CKV', array('NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'KANA_CHECK')); 399 $objFormParam->addParam('お名前(フリガナ・名)', $prefix . 'kana02', STEXT_LEN, 'CKV', array('NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'KANA_CHECK')); 400 $objFormParam->addParam('郵便番号1', $prefix . 'zip01', ZIP01_LEN, 'n', array('SPTAB_CHECK', 'NUM_CHECK', 'NUM_COUNT_CHECK')); 401 $objFormParam->addParam('郵便番号2', $prefix . 'zip02', ZIP02_LEN, 'n', array('SPTAB_CHECK', 'NUM_CHECK', 'NUM_COUNT_CHECK')); 402 $objFormParam->addParam('国', $prefix . 'country_id', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK')); 403 $objFormParam->addParam('Zipcode', $prefix . 'zipcode', STEXT_LEN, 'n', array('NO_SPTAB', 'SPTAB_CHECK', 'GRAPH_CHECK', 'MAX_LENGTH_CHECK')); 404 $objFormParam->addParam('都道府県', $prefix . 'pref', INT_LEN, 'n', array('NUM_CHECK')); 405 } 406 $objFormParam->addParam('住所1', $prefix . 'addr01', MTEXT_LEN, 'aKV', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 407 $objFormParam->addParam('住所2', $prefix . 'addr02', MTEXT_LEN, 'aKV', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 408 $objFormParam->addParam('お電話番号1', $prefix . 'tel01', TEL_ITEM_LEN, 'n', array('EXIST_CHECK', 'SPTAB_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 409 $objFormParam->addParam('お電話番号2', $prefix . 'tel02', TEL_ITEM_LEN, 'n', array('EXIST_CHECK', 'SPTAB_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 410 $objFormParam->addParam('お電話番号3', $prefix . 'tel03', TEL_ITEM_LEN, 'n', array('EXIST_CHECK', 'SPTAB_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 411 $objFormParam->addParam('FAX番号1', $prefix . 'fax01', TEL_ITEM_LEN, 'n', array('SPTAB_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 412 $objFormParam->addParam('FAX番号2', $prefix . 'fax02', TEL_ITEM_LEN, 'n', array('SPTAB_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 413 $objFormParam->addParam('FAX番号3', $prefix . 'fax03', TEL_ITEM_LEN, 'n', array('SPTAB_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 400 414 } 401 415 … … 406 420 * @param boolean $isAdmin true:管理者画面 false:会員向け 407 421 * @param boolean $is_mypage マイページの場合 true 422 * @param string $prefix キー名にprefixを付ける場合に指定 408 423 * @return void 409 424 */ 410 function sfCustomerRegisterParam(&$objFormParam, $isAdmin = false, $is_mypage = false) 411 { 412 $objFormParam->addParam('パスワード', 'password', PASSWORD_MAX_LEN, 'a', array('EXIST_CHECK', 'SPTAB_CHECK', 'GRAPH_CHECK')); 413 $objFormParam->addParam('パスワード確認用の質問の答え', 'reminder_answer', STEXT_LEN, 'aKV', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 414 $objFormParam->addParam('パスワード確認用の質問', 'reminder', STEXT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 415 $objFormParam->addParam('性別', 'sex', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 416 $objFormParam->addParam('職業', 'job', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 425 function sfCustomerRegisterParam(&$objFormParam, $isAdmin = false, $is_mypage = false, $prefix = '') 426 { 427 $objFormParam->addParam('パスワード', $prefix . 'password', PASSWORD_MAX_LEN, '', array('EXIST_CHECK', 'SPTAB_CHECK', 'ALNUM_CHECK')); 428 $objFormParam->addParam('パスワード確認用の質問の答え', $prefix . 'reminder_answer', STEXT_LEN, '', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); 429 $objFormParam->addParam('パスワード確認用の質問', $prefix . 'reminder', STEXT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 430 $objFormParam->addParam('性別', $prefix . 'sex', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 431 $objFormParam->addParam('職業', $prefix . 'job', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 432 // XXX: year,month,dayはprefix付けないのが今のところ共通 417 433 $objFormParam->addParam('年', 'year', 4, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false); 418 434 $objFormParam->addParam('月', 'month', 2, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false); 419 435 $objFormParam->addParam('日', 'day', 2, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'), '', false); 420 $objFormParam->addParam('メールマガジン', 'mailmaga_flg', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 436 437 $objFormParam->addParam('メールマガジン', $prefix . 'mailmaga_flg', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 421 438 422 439 if (SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE) { 423 $objFormParam->addParam('メールアドレス', 'email', null, 'a', array('NO_SPTAB', 'EXIST_CHECK', 'EMAIL_CHECK', 'SPTAB_CHECK' ,'EMAIL_CHAR_CHECK'));424 $objFormParam->addParam('パスワード(確認)', 'password02', PASSWORD_MAX_LEN, 'a', array('EXIST_CHECK', 'SPTAB_CHECK' ,'GRAPH_CHECK'), '', false);440 $objFormParam->addParam('メールアドレス', $prefix . 'email', null, 'a', array('NO_SPTAB', 'EXIST_CHECK', 'EMAIL_CHECK', 'SPTAB_CHECK' ,'EMAIL_CHAR_CHECK')); 441 $objFormParam->addParam('パスワード(確認)', $prefix . 'password02', PASSWORD_MAX_LEN, '', array('EXIST_CHECK', 'SPTAB_CHECK' ,'ALNUM_CHECK'), '', false); 425 442 if (!$isAdmin) { 426 $objFormParam->addParam('メールアドレス(確認)', 'email02', null, 'a', array('NO_SPTAB', 'EXIST_CHECK', 'EMAIL_CHECK','SPTAB_CHECK' , 'EMAIL_CHAR_CHECK'), '', false);443 $objFormParam->addParam('メールアドレス(確認)', $prefix . 'email02', null, 'a', array('NO_SPTAB', 'EXIST_CHECK', 'EMAIL_CHECK','SPTAB_CHECK' , 'EMAIL_CHAR_CHECK'), '', false); 427 444 } 428 445 } else { 429 446 if (!$is_mypage) { 430 $objFormParam->addParam('メールアドレス', 'email', null, 'a', array('EXIST_CHECK', 'EMAIL_CHECK', 'NO_SPTAB' ,'EMAIL_CHAR_CHECK', 'MOBILE_EMAIL_CHECK'));447 $objFormParam->addParam('メールアドレス', $prefix . 'email', null, 'a', array('EXIST_CHECK', 'EMAIL_CHECK', 'NO_SPTAB' ,'EMAIL_CHAR_CHECK', 'MOBILE_EMAIL_CHECK')); 431 448 } 432 449 } … … 494 511 * 495 512 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 496 * @access private 513 * @param string $prefix キー名にprefixを付ける場合に指定 514 * @access public 497 515 * @return array エラー情報の配列 498 516 */ 499 function sfCustomerCommonErrorCheck(&$objFormParam )517 function sfCustomerCommonErrorCheck(&$objFormParam, $prefix = '') 500 518 { 501 519 $objFormParam->convParam(); 502 $objFormParam->toLower( 'email');503 $objFormParam->toLower( 'email02');520 $objFormParam->toLower($prefix . 'email'); 521 $objFormParam->toLower($prefix . 'email02'); 504 522 $arrParams = $objFormParam->getHashArray(); 505 523 … … 508 526 $objErr->arrErr = $objFormParam->checkError(); 509 527 510 $objErr->doFunc(array(' お電話番号', 'tel01', 'tel02','tel03'),array('TEL_CHECK'));511 $objErr->doFunc(array('FAX番号', 'fax01', 'fax02','fax03') ,array('TEL_CHECK'));512 $objErr->doFunc(array('郵便番号', 'zip01','zip02'), array('ALL_EXIST_CHECK'));528 $objErr->doFunc(array('電話番号', $prefix . 'tel01', $prefix . 'tel02', $prefix . 'tel03'),array('TEL_CHECK')); 529 $objErr->doFunc(array('FAX番号', $prefix . 'fax01', $prefix . 'fax02', $prefix . 'fax03') ,array('TEL_CHECK')); 530 $objErr->doFunc(array('郵便番号', $prefix . 'zip01', $prefix . 'zip02'), array('ALL_EXIST_CHECK')); 513 531 514 532 return $objErr; -
branches/version-2_13-dev/data/class/helper/SC_Helper_Purchase.php
r22857 r22976 34 34 class SC_Helper_Purchase 35 35 { 36 36 37 var $arrShippingKey = array( 37 38 'name01', 'name02', 'kana01', 'kana02', 38 'sex', 'zip01', 'zip02', 'country_id', 'pref', 'addr01', 'addr02',39 'sex', 'zip01', 'zip02', 'country_id', 'zipcode', 'pref', 'addr01', 'addr02', 39 40 'tel01', 'tel02', 'tel03', 'fax01', 'fax02', 'fax03', 40 41 ); … … 771 772 772 773 // 詳細情報を取得 773 $cartItems = $objCartSession->getCartList($cartKey );774 $cartItems = $objCartSession->getCartList($cartKey, $orderParams['order_pref'], $orderParams['order_country_id']); 774 775 775 776 // 詳細情報を生成 … … 789 790 $arrDetail[$i]['price'] = $item['price']; 790 791 $arrDetail[$i]['quantity'] = $item['quantity']; 791 $arrDetail[$i]['tax_rate'] = $orderParams['order_tax_rate']; 792 $arrDetail[$i]['tax_rule'] = $orderParams['order_tax_rule']; 792 $arrDetail[$i]['tax_rate'] = $item['tax_rate']; 793 $arrDetail[$i]['tax_rule'] = $item['tax_rule']; 794 $arrDetail[$i]['tax_adjuts'] = $item['tax_adjust']; 793 795 794 796 // 在庫の減少処理 -
branches/version-2_13-dev/data/class/helper/SC_Helper_TaxRule.php
r22927 r22976 129 129 $pref_id = $pref_id > 0 ? $pref_id : 0; 130 130 $country_id = $country_id > 0 ? $country_id : 0; 131 132 $objCustomer = new SC_Customer_Ex(); 133 if ($objCustomer->isLoginSuccess(true)) { 134 if ($country_id == 0) { 135 $objCustomer->getValue('country_id'); 131 // ログイン済み会員で国と地域指定が無い場合は、会員情報をデフォルトで利用。管理画面では利用しない 132 if (!(defined('ADMIN_FUNCTION') && ADMIN_FUNCTION == true)) { 133 $objCustomer = new SC_Customer_Ex(); 134 if ($objCustomer->isLoginSuccess(true)) { 135 if ($country_id == 0) { 136 $country_id = $objCustomer->getValue('country_id'); 137 } 138 if ($pref_id == 0) { 139 $pref_id = $objCustomer->getValue('pref'); 140 } 136 141 } 137 if ($pref_id == 0) { 138 $objCustomer->getValue('pref'); 139 } 140 } 141 142 // リクエストの配列化 143 $arrRequest = array('product_id' => $product_id, 144 'product_class_id' => $product_class_id, 145 'pref_id' => $pref_id, 146 'country_id' => $country_id); 147 148 // 地域設定を優先するが、システムパラメーターなどに設定を持っていくか 149 // 後に書いてあるほど優先される、詳細後述MEMO参照 150 $arrPriorityKeys = array('product_id', 'product_class_id', 'pref_id', 'country_id'); // TODO: パラメーター設定に持っていく 151 $cache_key = "$product_id,$product_class_id,$pref_id,$country_id"; 142 } 143 144 // 一覧画面の速度向上のため商品単位税率設定がOFFの時はキャッシュキーを丸めてしまう 145 if (OPTION_PRODUCT_TAX_RULE == 1) { 146 $cache_key = "$product_id,$product_class_id,$pref_id,$country_id"; 147 } else { 148 $cache_key = "$pref_id,$country_id"; 149 } 152 150 153 151 // 複数回呼出があるのでキャッシュ化 … … 156 154 if (empty($data_c[$cache_key])) { 157 155 $arrRet = array(); 156 // リクエストの配列化 157 $arrRequest = array('product_id' => $product_id, 158 'product_class_id' => $product_class_id, 159 'pref_id' => $pref_id, 160 'country_id' => $country_id); 161 162 // 地域設定を優先するが、システムパラメーターなどに設定を持っていくか 163 // 後に書いてあるほど優先される、詳細後述MEMO参照 164 $arrPriorityKeys = explode(',', TAX_RULE_PRIORITY); 158 165 159 166 // 条件に基づいて税の設定情報を取得 160 167 $objQuery =& SC_Query_Ex::getSingletonInstance(); 161 168 $table = 'dtb_tax_rule'; 162 $cols = '* , CASE WHEN apply_date IS NULL THEN 1 ELSE 0 END as nullorder';169 $cols = '*'; 163 170 $where = '((product_id = 0 OR product_id = ?)' 164 171 . ' OR (product_class_id = 0 OR product_class_id = ?))' 165 172 . ' AND (pref_id = 0 OR pref_id = ?)' 166 173 . ' AND (country_id = 0 OR country_id = ?)' 167 . ' AND (apply_date < CURRENT_TIMESTAMP OR apply_date IS NULL)'174 . ' AND apply_date < CURRENT_TIMESTAMP' 168 175 . ' AND del_flg = 0'; 169 176 170 177 $arrVal = array($product_id, $product_class_id, $pref_id, $country_id); 171 $order = ' nullorder ASC,apply_date DESC';178 $order = 'apply_date DESC'; 172 179 $objQuery->setOrder($order); 173 180 $arrData = $objQuery->select($cols, $table, $where, $arrVal); … … 176 183 // キーの優先度により、利用する税設定を判断する 177 184 // 優先度が同等の場合、適用日付で判断する 178 179 // XXXX: ビット演算で優先順位を判断という雑な事してます。すいません180 185 foreach ($arrData as $data_key => $data) { 181 186 $res = 0; … … 197 202 } 198 203 } 204 // XXXX: 互換性のためtax_ruleにもcalc_ruleを設定 205 $arrRet['tax_rule'] = $arrRet['calc_rule']; 199 206 $data_c[$cache_key] = $arrRet; 200 207 } 201 208 209 GC_Utils_Ex::gfDebugLog('tax_key=' . $cache_key . ' result_tax=' . print_r($data_c[$cache_key],true)); 202 210 return $data_c[$cache_key]; 203 211 } … … 217 225 { 218 226 // 基本設定を取得 219 $arrRet = SC_Helper_taxRule_Ex::getTaxRule(); 227 $arrRet = SC_Helper_TaxRule_Ex::getTaxRule($product_id, $product_class_id); 228 220 229 // 基本設定の消費税率と一緒であれば設定しない 221 230 if( $arrRet['tax_rate'] != $tax_rate ) { 222 231 // 課税規則は基本設定のものを使用 223 232 $calc_rule = $arrRet['calc_rule']; 233 // 日付は登録時点を設定 234 $apply_date = date('Y/m/d H:i:s'); 224 235 // 税情報を設定 225 236 SC_Helper_TaxRule_Ex::setTaxRule($calc_rule, $tax_rate, $apply_date, $tax_rule_id=NULL, $tax_adjust=0, $product_id, $product_class_id, $pref_id, $country_id); … … 280 291 } 281 292 $table = 'dtb_tax_rule'; 282 // 適用日時順に更新293 // 適用日時順に更新 283 294 $objQuery->setOrder('apply_date DESC'); 284 295 $arrRet = $objQuery->select($col, $table, $where);
Note: See TracChangeset
for help on using the changeset viewer.
