バージョン選択

フォーラム

メニュー

オンライン状況

56 人のユーザが現在オンラインです。 (50 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 56
もっと...

サイト内検索

質問 > 管理機能 > 税率計算について

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ina666rr
投稿日時: 2017/9/20 12:07
対応状況: 確認中
新米
登録日: 2016/6/16
居住地:
投稿: 1
税率計算について

[EC-CUBE] EC-CUBE 3.0.14、新規インストール
[レンタルサーバ] AWS EC2 RDS
[OS] Linux ip-172-31-25-58 4.9.38-16.35.amzn1.x86_64 #1 SMP Sat Aug 5 01:39:35 UTC 2017 x86_64
[PHP] PHP5.6.31 (Core, date, ereg, libxml, openssl, pcre, zlib, filter, hash, Reflection, SPL, session, standard, apache2handler, bz2, calendar, ctype, curl, dom, mbstring, fileinfo, ftp, gd, gettext, iconv, exif, mysqlnd, PDO, Phar, posix, shmop, SimpleXML, sockets, sqlite3, sysvmsg, sysvsem, sysvshm, tokenizer, xml, xmlwriter, xsl, zip, mysql, mysqli, pdo_mysql, pdo_sqlite, wddx, xmlreader, json, mhash)
[データベース] MySQL 5.7.16
[WEBサーバ] Apache/2.4.27 (Amazon) OpenSSL/1.0.1k-fips PHP/5.6.31
[ブラウザ] Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36 OPR/47.0.2631.80

[導入プラグインの有無]

2.0.1 Coupon
1.0.2 GoogleAnalyticsSimpleSetup
1.0.0 MailTemplateEdit
1.0.0 OrderPdf
1.0.4 ProductClassDetail
1.0.4 ProductEditCsv
1.4.1 ProductOption
1.0.0 ProductPriority
1.0.1 RelatedProduct
1.1 Shiro8AccordionCategory3
1 Shiro8AdminOrderButton3
1 Shiro8AdminOrderColor3
1.1 Shiro8AdminOrderList3
1.1.1 SimpleCoupon
1.1.0 SiteMap
1.1.1 MdlPaygent
1.0.0 TaxRuleProblem

[カスタマイズの有無] 無


[現象]

管理画面側の、税の計算方法に問題があるのでしょうか?
それとも、こちらの設定がなにか問題があるのか・・・

 個別税率設定 商品別税率機能 無効
 共通税率設定 税率一覧 8% 四捨五入 2017/01/01 16:19 ~

2666円の商品を購入すると、税率一覧 8% 四捨五入 なので、
カートと決済は2879円となります。こちらは、問題ありません。

しかし、購入処理後、管理画面で更新すると、再計算されて、2880円になってしまいます。




※下記の情報がありましたが、上記には当てはまらないかと。

7. 税率設定の不具合について
http://doc.ec-cube.net/quickstart_update#4-%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3
EC-CUBE3.0.12からEC-CUBE3.0.13までのバージョンで、税率設定の課税規則に「切り捨て」「切り上げ」を設定されていた方は、
共通税率設定により必ず「四捨五入」または「切り上げ」されるという不具合が発生しています。
こちらの不具合はEC-CUBE3.0.14で修正されています。


もし、なにか手掛かりの情報がございましたら共有いただけますと助かります。


elleman
投稿日時: 2017/11/20 22:41
対応状況: −−−
新米
登録日: 2017/1/8
居住地:
投稿: 7
Re: 税率計算について
こちらの問題、その後どうでしょうか??
3.0.14の環境(3.0.11からのアップデート)で同じ現象がでて困っています。


    /**
     * 課税規則に応じて端数処理を行う
     *
     * @param  float|integer $value    端数処理を行う数値
     * @param  integer       $calcRule 課税規則
     * @return double        端数処理後の数値
     */
    public function roundByCalcRule($value, $calcRule)
    {
        switch ($calcRule) {
            // 四捨五入
            case \Eccube\Entity\Master\Taxrule::ROUND:
                $ret = round($value);
                break;
            // 切り捨て
            case \Eccube\Entity\Master\Taxrule::FLOOR:
                $ret = floor($value);
                break;
            // 切り上げ
            case \Eccube\Entity\Master\Taxrule::CEIL:
                $ret = ceil($value);
                break;
            // デフォルト:切り上げ
            default:
                $ret = ceil($value);
                break;
        }

        return $ret;
    }


処理を追っていくと、この関数で$calcRuleにnullが入っている場合があり、
その場合はdefaultのceilが適用されるので価格に差ができます。

- - - 追記1 - - -

注文時はdtb_order_detailのtax_ruleに適当な数字が入っていますが、
管理画面の注文情報編集画面で「受注情報を登録」ボタンを押して更新すると、
tax_ruleがnullになりますね。


- - - 追記2 - - -


    /**
     * フォームからの入直内容に基づいて、受注情報の再計算を行う
     *
     * @param $app
     * @param $Order
     */
    protected function calculate($app, \Eccube\Entity\Order $Order)
    {
        $taxtotal = 0;
        $subtotal = 0;

        // 受注明細データの税・小計を再計算
        /** @var $OrderDetails \Eccube\Entity\OrderDetail[] */
        $OrderDetails = $Order->getOrderDetails();
        foreach ($OrderDetails as $OrderDetail) {
            // 税
            $tax = $app['eccube.service.tax_rule']
                ->calcTax($OrderDetail->getPrice(), $OrderDetail->getTaxRate(), $OrderDetail->getTaxRule());
            $OrderDetail->setPriceIncTax($OrderDetail->getPrice() + $tax);

            $taxtotal += $tax * $OrderDetail->getQuantity();

            // 小計
            $subtotal += $OrderDetail->getTotalPrice();
        }



更新処理の中で、どうやら/src/Eccube/Controller/Admin/Order/EditController.phpの line 671 で$Order->getOrderDetails()しているのですが、$OrderDetail->getTaxRule()で取れるのが null のようです。

なぜnullになるのかがこれ以上デバッグをすすめることができなくてわかりませんでした。

どなたかご教授いただけないでしょうか??
elleman
投稿日時: 2017/11/20 23:27
対応状況: −−−
新米
登録日: 2017/1/8
居住地:
投稿: 7
Re: 税率計算について
また、

   /**
     * 課税規則に応じて端数処理を行う
     *
     * @param  float|integer $value    端数処理を行う数値
     * @param  integer       $calcRule 課税規則
     * @return double        端数処理後の数値
     */
    public function roundByCalcRule($value, $calcRule)
    {
        switch ($calcRule) {
            // 四捨五入
            case \Eccube\Entity\Master\Taxrule::ROUND:
                $ret = round($value);
                break;
            // 切り捨て
            case \Eccube\Entity\Master\Taxrule::FLOOR:
                $ret = floor($value);
                break;
            // 切り上げ
            case \Eccube\Entity\Master\Taxrule::CEIL:
                $ret = ceil($value);
                break;
            // デフォルト:切り上げ
            default:
                $ret = ceil($value);
                break;
        }

        return $ret;
    }


このdefaultケースはどういった場合に適用されるのでしょうか??
468
投稿日時: 2017/11/21 19:28
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 税率計算について
デフォルトの3.0.14で、消費税の設定を四捨五入にして、
2666円の商品を登録し、フロントでの購入→管理画面の受注管理で更新処理を実行してみましたが、
特に金額が切り上げられる現象は起こりませんでした。

また、$OrderDetail->getTaxRule()についても、NULLではなく、1が取得できました。

データベースのdtb_order_detailテーブルの該当レコードのtax_ruleはNULLが入っているのでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

elleman
投稿日時: 2017/11/22 1:01
対応状況: −−−
新米
登録日: 2017/1/8
居住地:
投稿: 7
Re: 税率計算について
引用:
データベースのdtb_order_detailテーブルの該当レコードのtax_ruleはNULLが入っているのでしょうか?


管理画面で更新前( = 注文後 )は、 2 がはいっており、
更新後は null がはいっています。



私のほうでも3.0.14を別の環境にインストールして試したところ問題ありませんでした。
問題のある環境でプラグインをひとつずつ無効にしていくと
ある管理画面の項目を触るプラグインのみ有効の状態で再現しました。

開発元へ問い合わせてみます。

お騒がせして申し訳ありませんでした。。。
468
投稿日時: 2017/11/22 9:47
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 税率計算について
問題の切り分けが出来たという事で、とりあえず、よかったです。
もし、差し支えなれば、解決した後(プラグインの配布元による修正後)にでも原因を教えていただけたらと思います。
よろしくお願いします。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

elleman
投稿日時: 2017/11/23 17:31
対応状況: −−−
新米
登録日: 2017/1/8
居住地:
投稿: 7
Re: 税率計算について
原因なんですが、

該当プラグインのテンプレートイベント(Admin/Order/edit.twig)でtwigを追記する処理があったのですが、
「追記」ではなく「置換」していたため、注文編集画面のhtmlにtax_ruleのinputタグ(hidden)が出力されていませんでした。

この状態で更新ボタンをクリックすると
/src/Eccube/Controller/Admin/Order/EditController.php の indexアクションの
引数の$request内のtax_ruleは 空 となり、その結果DBにはnullがセットされておりました。


        if(preg_match('/\{\{\sform_widget\(orderDetailForm\.tax_rule\)\s\}\}/',$source, $result)){
            $search = $result[0];
            $replace = '{{ form_widget(orderDetailForm.serial) }}';
            $source = str_replace($search, $replace, $source);
        }


上記のコードの3行目は下記ように修正されました。

$replace = $search . '{{ form_widget(orderDetailForm.serial) }}';



端数処理の方法にプラグインが絡んでくることはないと思っていましたので、
「プラグインを無効にする」という考えがなかなか出てきませんでした。

468さんには3.0.14環境でお試し頂きましてお手数をおかけしました。
本当にありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,288名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.