ec-cube2
ec-cube2 copied to clipboard
SC_Helper_TaxRule の処理で国別、県別税率の処理の不整合
キャッシュの確認の後にログインしているかどうかを判定しているため、TaxRuleの取得が一部不足している。
public static function getTaxRule($product_id = 0, $product_class_id = 0, $pref_id = 0, $country_id = 0)
{
// 複数回呼出があるのでキャッシュ化
static $data_c = array();
// 初期化
$product_id = $product_id > 0 ? $product_id : 0;
$product_class_id = $product_class_id > 0 ? $product_class_id : 0;
$pref_id = $pref_id > 0 ? $pref_id : 0;
$country_id = $country_id > 0 ? $country_id : 0;
// 一覧画面の速度向上のため商品単位税率設定がOFFの時はキャッシュキーを丸めてしまう
if (OPTION_PRODUCT_TAX_RULE == 1) {
$cache_key = "$product_id,$product_class_id,$pref_id,$country_id";
} else {
$cache_key = "$pref_id,$country_id";
}
if (empty($data_c[$cache_key])) {
// ログイン済み会員で国と地域指定が無い場合は、会員情報をデフォルトで利用。管理画面では利用しない
if (!(defined('ADMIN_FUNCTION') && ADMIN_FUNCTION == true)) {
$objCustomer = new SC_Customer_Ex();
if ($objCustomer->isLoginSuccess(true)) {
if ($country_id == 0) {
$country_id = $objCustomer->getValue('country_id');
}
if ($pref_id == 0) {
$pref_id = $objCustomer->getValue('pref');
}
}
}
国別、県別税率は現状利用していないが不具合のあるコードなので備忘録として残しておきます