Ticket #1730 (closed バグ指摘: 修正済)
税率変更に対応できない
Reported by: | Seasoft | Owned by: | AMUAMU |
---|---|---|---|
Priority: | 高 | Milestone: | EC-CUBE2.13.0 |
Component: | フロント | Version: | 2.12.0 α |
Keywords: | Cc: | habu | |
修正済み: | yes |
Description (last modified by habu) (diff)
dtb_order_detail.price
商品は外税対応を維持するとしても、受注は税込で扱う方が妥当に感じている。
報告者のコメント
受注情報に税率を持たせるような冗長な拡張はやめてね・・・
関連スレッド
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=2428&forum=1&post_id=54709
2012/12/28追記
消費税率変更時の対応ですが、 そろそろ標準で対策しておいた方が良い時期にきていますね。
報告者のSeasoft様が方針を書いてくださっていますが、受注データを税込で扱う様にするのは大きな変更になるので、2.12系としては、受注に税率を持たせる方向で、とりあえず対策を行なっておいた方が良いかと思っています。
ある程度できている修正コードがありますので、アップデート用のスクリプトを作成した後、もう少し確認して、コミットしようと思います。
詳細を以下に記載します。
■現状の不具合
SHOPマスターで消費税率を変更した後に・・・
- マイページ>購入履歴や、管理画面から過去の受注を閲覧したり、帳票出力や、メール送信をすると、商品の税込み価格や、商品毎の小計欄に、現在の税率で再計算された金額が表示されてしまう。
- 受注管理画面で過去の受注を更新すると、現在の税率で再計算されたデータが登録されてしまう。
■修正方針
2.12系の動作を大きく変更する事無く、上記の不具合を修正する。
■修正方法
・dtb_order、dtb_order_temp、dtb_order_detailに、tax_rateと、tax_ruleを追加する。(必須項目にはしない)
※dtb_orderにカラム追加するのは、受注管理画面で過去の受注に商品を追加した場合に、受注時の税率で追加できるようにするため。
※dtb_order_detailにカラム追加するのは、軽減税率などが盛り込まれた場合に対応しやすくするため。
・dtb_order_detailに、tax_rateと、tax_ruleの値が入っている場合、SC_Helper_DB_Ex::sfCalcIncTaxや、SC_Utils_Ex::sfTaxの第2、第3引数に、それらの値を渡す様にする。 (つまり、商品の税込み価格計算部分で、受注時の税率&課税規則を利用する様にする)
■対応状況
r22197 にて、対応しました。
■2.12.2からのアップデート方法
ファイルの差分だけでなく、DBのカラム追加を含むため、データベース変更用のアップデーターを作成しました。
(このチケットに添付しています)
添付ファイルを解凍してできた「update_2122to2123」を、htmlディレクトリ配下にディレクトリごと配置し、/update_2122to2123/にアクセスすると、データベースのアップデートを行なう事ができます。
(インストール用のスクリプトと同様の使い勝手です)
データベースのアップデートの内容は、以下の通りです。
- dtb_order、dtb_order_temp、dtb_order_detail に、消費税率と、課税規則のカラムを追加します。
- 上記3テーブルの既存データで、消費税率も課税規則もセットされていないものについて、SHOPマスタで設定されている消費税率と課税規則をセットします。(アップデート後、一括updateした件数を表示します)
※アップデーターを利用した後は、必ずディレクトリごと削除してください。
仮に2度以上アップデート操作を行なっても、影響は無い作りにしてはいますが、
install.phpと同様、tempディレクトリ内にログファイルを出力するようにしているためです。
Attachments
Change History
comment:2 Changed 11 years ago by habu
- Owner changed from somebody to habu
- Description modified (diff)
comment:6 Changed 11 years ago by kim
- Milestone changed from EC-CUBE2.12.3 to EC-CUBE2.12.4
habu様、アップデーターのご提供ありがとうございます。 本体ソースへの搭載自体は、申し訳ありませんが、現時点では見送らせていただきますので、 ひとまずマイルストーンを変更させていただきます。
comment:9 Changed 11 years ago by AMUAMU
- Owner changed from habu to AMUAMU
- Status changed from new to assigned
comment:10 Changed 11 years ago by h_yoshimoto
- Status changed from assigned to closed
- Resolution set to 修正済
#2323 に引き継ぎ。 本チケットはクローズします。
comment:11 Changed 10 years ago by habu
管理画面から新規受注登録をする際に、税率と課税規則がセットされない不具合がありましたので、報告いたします。
以下の方法で修正可能です。
対象ファイル: data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php 対象箇所: LC_Page_Admin_Order_Edit::doRegister関数内にて、 $objPurchase->registerOrderが呼び出される直前に以下のコードを追加します。
// 新規受注登録の場合は、現在の税率・課税規則を使用 if (SC_Utils_Ex::isBlank($order_id)) { $arrValues['order_tax_rate'] = $this->arrInfo['tax']; $arrValues['order_tax_rule'] = $this->arrInfo['tax_rule']; }
(Unified diff)
Index: LC_Page_Admin_Order_Edit.php =================================================================== --- LC_Page_Admin_Order_Edit.php (対応前) +++ LC_Page_Admin_Order_Edit.php (対応後) @@ -686,6 +686,12 @@ $arrValuesBefore['payment_id'] = NULL; } + // 新規受注登録の場合は、現在の税率・課税規則を使用 + if (SC_Utils_Ex::isBlank($order_id)) { + $arrValues['order_tax_rate'] = $this->arrInfo['tax']; + $arrValues['order_tax_rule'] = $this->arrInfo['tax_rule']; + } + // 受注テーブルの更新 $order_id = $objPurchase->registerOrder($order_id, $arrValues);