バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 関数内数値計算の四捨五入/切り捨てについて

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Ringo
投稿日時: 2019/4/4 12:41
対応状況: −−−
常連
登録日: 2018/8/10
居住地:
投稿: 70
Re: 関数内数値計算の四捨五入/切り捨てについて
eccube-3.0.17/src/Eccube/Entity/Order.php

    /**
     * Calculate tax of total.
     *
     * @return integer
     */
    public function calculateTotalTax()
    {
        $tax = 0;
        foreach ($this->getOrderDetails() as $OrderDetail) {
            $tax += ($OrderDetail->getPriceIncTax() - $OrderDetail->getPrice()) * $OrderDetail->getQuantity();
        }

        // 強制演算 【※】
        $tax = floor($this->calculateSubTotal() * 0.08);
        
        return $tax;
    }


Eccube/Resource/template/default/Mypage/history.twig

                    <dl id="summary_box__subtotal">
                        <dt>小計</dt>
                        <dd>{{ Order.subtotal|price }}</dd>
                    </dl>
                    <!-- 追加 -->
                    <dl id="summary_box__tax">
                        <dt>消費税</dt>
                        <dd class="text-primary">{{ Order.tax|price }}</dd>
                    </dl>
                    <!-- ここまで -->


で、↓な感じになりました。


小計    ¥ 6,549

消費税  ¥ 523

手数料   ¥ 0

送料    ¥ 1,000

合計    ¥ 8,072税込


【※】>※これは、ひとえに、小生がPHPの関数間参照を習得出来ていないのが原因なのは分かってはいるのですが。。。

「[// 強制演算」に、下記を適用出来れば「カート内」は、完了かと。
eccube-3.0.17/src/Eccube/Service/TaxRuleService.php

    /**
     * 税金額を計算する
     *
     * @param  int    $price     計算対象の金額
     * @param  int    $taxRate   税率(%単位)
     * @param  int    $calcRule  端数処理
     * @param  int    $taxAdjust 調整額
     * @return double 税金額
     */
    public function calcTax($price, $taxRate, $calcRule, $taxAdjust = 0)
    {
        $tax = $price * $taxRate / 100;
        $roundTax = $this->roundByCalcRule($tax, $calcRule);

        return $roundTax + $taxAdjust;
    }

    /**
     * 課税規則に応じて端数処理を行う
     *
     * @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;
    }

« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
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.