EC-CUBE2.13で軽減税率に伴うバグ発生
各商品毎の税率設定して、税率10%にしているはずなのに、商品詳細(一覧も?)で8%になる。
(またはその逆もある?)
対処法としては色々あったが、以下のやり方がBESTだと思う。以下の方法がシンプルで簡単だと思う。
※もちろん簡単なだけに、完全ではありませんが、今回のバグの原因である規格毎の税率を使わなければ、通常通り動作すると思います。
******************************************************
■データベースのSQLでUPDATE dtb_tax_rule SET product_class_id = 0;
入力して「実行」
■/data/class/helper/SC_Helper_TaxRule.php内の2箇所変更 ※2020年4月15日追加参考
******************************************************
【参考サイト】
https://github.com/EC-CUBE/eccube-2_13/pull/301真面目に直すには以下の方があっているようだが、商品規格で税率が変わるなんてあり得ない(税率変えるなら別商品)ので上記がベストと判断
https://github.com/EC-CUBE/eccube-2_13/pull/298#issuecomment-522394809
上記、参考サイトの方法が完全なものだと思う。
【2020年4月14日 追記】SQL実行だけだと、商品が追加されたり、現状商品を10%にするなど行うとエラーがでると判明しました。参考サイトで、完全に解消するやり方が書いてますが、もう少しシンプルな方法で解決できないか検討中。
【2020年4月15日 追記】
■以下ファイル、2箇所変更でDBのdtb_tax_ruleデータが常にproduct_class_id = 0;になる。
/data/class/helper/SC_Helper_TaxRule.php
【296行目追加】
$arrValues['product_class_id'] = 0; // 個別税率バグ用追加
【293行目】
$arrValues['product_class_id'] = $product_class_id;
↓
//$arrValues['product_class_id'] = $product_class_id; // 個別税率バグ用削除
【追加後】
$arrCheck = $objQuery->getRow('*', 'dtb_tax_rule', $where, $arrVal);
$tax_rule_id = $arrCheck['tax_rule_id'];
}
$arrValues['product_class_id'] = 0; // 個別税率バグ用追加
if ($tax_rule_id == NULL) {
// 税情報を新規
// INSERTの実行
$arrValues['tax_rule_id'] = $objQuery->nextVal('dtb_tax_rule_tax_rule_id');
$arrValues['country_id'] = $country_id;
$arrValues['pref_id'] = $pref_id;
$arrValues['product_id'] = $product_id;
//$arrValues['product_class_id'] = $product_class_id; // 個別税率バグ用削除
$arrValues['create_date'] = 'CURRENT_TIMESTAMP';
$objQuery->insert($table, $arrValues);
} else {
// 税情報を更新
$where = 'tax_rule_id = ?';
$objQuery->update($table, $arrValues, $where, array($tax_rule_id));
}
RELATED
-
2023年12月13日
-
2023年8月24日
-
2023年8月1日
-
2021年8月25日
コメントを残す