バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 端数切り捨て時の、3800円の税抜き価格

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
GonGon
投稿日時: 2008/10/29 10:34
対応状況: −−−
常連
登録日: 2008/7/10
居住地: 東京都
投稿: 64
端数切り捨て時の、3800円の税抜き価格
消費税5% 端数切り捨て の設定の場合、税込み3800円の税抜き価格を3619にすると3799円となり、3620とすると3801円となってしまいます。

http://www.ec-cube.net/product/function.php
を見ると消費税計算方法設定で、切り捨て端数の桁数を変更できるようなのですが、見あたりません。

非常に初歩的な問題で、申し訳ないのですがご存じの方がいらしたらご教示下さい。

EC-CUBEバージョン 2.3.0
PHPバージョン PHP 5.1.6
DBバージョン MySQL 5.0.45
DDR
投稿日時: 2008/11/10 19:58
対応状況: −−−
仙人
登録日: 2008/6/21
居住地: 大阪
投稿: 307
Re: 端数切り捨て時の、3800円の税抜き価格
私も 1円単位の端数を0円にしたいです

消費税を5%でかける部分を
ROUNDDOWN(価格*1.05,-1)のような計算が出来れば良いのですが

方法は見つかりましたでしょうか?

もし設定が可能でしたら教えてもらえたら幸いです
ramrun
投稿日時: 2008/11/11 22:25
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 端数切り捨て時の、3800円の税抜き価格
きちんとみていませんが、税金の計算はdata/class/util/SC_Utils.phpで行っているようです。

/* 税金計算 */
function sfTax($price, $tax, $tax_rule) {
    $real_tax = $tax / 100;
    $ret = $price * $real_tax;
    switch($tax_rule) {
    // 四捨五入
    case 1:
        $ret = round($ret);
        break;
    // 切り捨て
    case 2:
        $ret = floor($ret);
        break;
    // 切り上げ
    case 3:
        $ret = ceil($ret);
        break;
    // デフォルト:切り上げ
    default:
        $ret = ceil($ret);
        break;
    }
    return $ret;
}

/* 税金付与 */
function sfPreTax($price, $tax, $tax_rule) {
    $real_tax = $tax / 100;
    $ret = $price * (1 + $real_tax);

    switch($tax_rule) {
    // 四捨五入
    case 1:
        $ret = round($ret);
        break;
    // 切り捨て
    case 2:
        $ret = floor($ret);
        break;
    // 切り上げ
    case 3:
        $ret = ceil($ret);
        break;
    // デフォルト:切り上げ
    default:
        $ret = ceil($ret);
        break;
    }
    return $ret;
}

// 桁数を指定して四捨五入
function sfRound($value, $pow = 0){
    $adjust = pow(10 ,$pow-1);

    // 整数且つ0出なければ桁数指定を行う
    if(SC_Utils::sfIsInt($adjust) and $pow > 1){
        $ret = (round($value * $adjust)/$adjust);
    }

    $ret = round($ret);

    return $ret;
}


このあたりを思う結果になるように修正するしかないかと。
実際に修正するならdata/class_extends/util_extends/SC_Utils_Ex.phpのほうかな。

桁指定四捨五入のsfRoudはどこにも使われていないみたい。
DDR
投稿日時: 2008/11/12 17:08
対応状況: −−−
仙人
登録日: 2008/6/21
居住地: 大阪
投稿: 307
Re: 端数切り捨て時の、3800円の税抜き価格
ramrun様へ

SC_Utils.phpの変更のみで出来ました

私の場合は
四捨五入のROUNDに変更を加えただけの
桁数を指定するだけで

管理画面や注文も、商品一覧、商品詳細も全て
1円単位が0円に切り捨て出来ました

ありがとうございました!
GonGon
投稿日時: 2008/11/17 3:18
対応状況: −−−
常連
登録日: 2008/7/10
居住地: 東京都
投稿: 64
Re: 端数切り捨て時の、3800円の税抜き価格
ramrun さん
DDR さん

返信が遅くなりまして、申し訳ございません。
私も、data/class/util/SC_Utils.phpを下記のように変更することで、下一桁1円を0円にする事が出来ました。(切り捨てではなく、四捨五入に変更しました)

// 四捨五入
case 1:
$ret = round($ret,1);
break;

本当に、ありがとうございました。
naganaga
投稿日時: 2010/9/9 14:22
対応状況: −−−
半人前
登録日: 2009/3/12
居住地:
投稿: 18
Re: 端数切り捨て時の、3800円の税抜き価格
上記の方法で税込み価格の下1桁の1円を0円に変更したのですが、カート画面で商品の個数を2個にすると、価格の合計が2個を足した価格ではなく、1円安い金額が表示されるようになりました。また、他の商品と複数個同時購入の場合にも、1円多く表示されたり、1円少なく表示されたりしているようです。

SC_Utils.phpを分かる範囲で変更してみましたが、表示は改善されませんでしたので、見当違いの事をやっていると思われます。

よろしければ、解決方法をご教授ください。
使用しているEC-CUBEのバージョンは2.3.4です。
AMUAMU
投稿日時: 2010/9/9 18:29
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 端数切り捨て時の、3800円の税抜き価格
$ret = (int) round($ret,1);

試していませんが、たぶんfloatの桁上がりだと思うので、上記のようにintに明示的に変換することで抑制できませんか?


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

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


 



ログイン


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

統計情報

総メンバー数は89,608名です
総投稿数は110,128件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1656
8
red
1570
9
mcontact
1319
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.