【EC-CUBE】で税込と税別の値段を同時に表示する。

※(2013.03.13追記)基本的に2.11.5を想定して書いてましたが、2.12.1にバージョンアップしたテストのときに2.12.1についても一部追加。2.13以降はまだテストしてませんが、もし変更があったりテストすることがあれば後日追記します。

税込と税別の値段を同時に表示させる。
最初はテンプレートで
税別

<!--{$arrProduct.price01_min|number_format}-->

税込

<!--{$arrProduct.price01_min|sfCalcIncTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->

というふうに変更するだけでよいと簡単に思っていました。

そう。規格のことを忘れていました。

詳細ページでは、規格を変更するとこの値段の部分が変更されます。

product.jsで制御しているようだったのですが、ここで扱っているのが「税込」の値段のみです。

最初は
product.jsの

$price02_dynamic.text(classcat2['price02']).show();

という部分で

$price02_dynamic.text("税込価格"+classcat2['price02']+"円(税別価格:").show();

なんて、一気に書いてしまって、税別も税込も同時に表示入れ替えをしようと思っていたのですが、
税別の価格を取ってこれていないことに気づきます。表示部分と同じ計算をさせたほうがよいので、javascript上で1.05で割るなんて恐ろしいことしたくないし。と、考えていて……。

このclasscat2[‘price02’]は、商品詳細ページのheader部分に埋め込まれている

<![CDATA[
    classCategories =

以下のデータを読み込んでいるようです。

このデータはどこで作られているかというと
data/class/SC_Product.php の L232あたり
function setProductsClassByProductIds
以下。

ここに
2.11.5まで

// 価格 税抜価格を表示させるために追加 start
$classCats2['price011']
   = strlen($productsClass['price01'])
   ? number_format($productsClass['price01'])
   : '';

$classCats2['price021']
   = strlen($productsClass['price02'])
   ? number_format($productsClass['price02'])
   : '';
//end

2.12.1以降(追記:2014.03.13)

//  税抜価格を表示させるために追加 start
 $arrClassCats2['price011']
       = strlen($arrProductsClass['price01'])
        ? number_format($arrProductsClass['price01'])
       : '';

$arrClassCats2['price021']
       = strlen($arrProductsClass['price02'])
       ? number_format($arrProductsClass['price02'])
       : '';
 //end

を追加します。

そして、product.js(html>jsの中の)を

// 販売価格
    var $price02_default = $form.find('[id^=price02_default]');
    var $price02_dynamic = $form.find('[id^=price02_dynamic]');
    var $price021_default = $form.find('[id^=price021_default]');//add 税抜
    var $price021_dynamic = $form.find('[id^=price021_dynamic]');//add 税抜
    if (classcat2
        && typeof classcat2['price02'] != 'undefined'
        && String(classcat2['price02']).length >= 1) {

        $price02_dynamic.text(classcat2['price02']).show();
        $price021_dynamic.text(classcat2['price021']).show();//add 税抜
        $price02_default.hide();
        $price021_default.hide();//add 税抜(2013.03.13追記。addを入れるの忘れてた)
    } else {
        $price02_dynamic.hide();
        $price02_default.show();
        $price021_dynamic.hide();//add 税抜
        $price021_default.show();//add 税抜
    }

という風に各種追加。とりあえず、販売価格だけ書いてますが、通常価格も必要なら同じように改造を・・・。

テンプレートの方を

<!--★販売価格★-->
        価格:
        <!--{strip}-->
         <strong>
            <span id="price021_default"><!--{$arrProduct.price02_min|number_format}--></span><span id="price021_dynamic"></span>円</strong>
            (税込価格:<span id="price02_default"><!--{$arrProduct.price02_min|sfCalcIncTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}--></span><span id="price02_dynamic"></span>円)
        <!--{/strip}-->

としました。


1件のコメント

  1. 現在のShopはOSNのサーバーでNSO3を使用しています。ショップが古くなったので更新するに当たり無償でEccubeを使い見てくれの良い物にしたいと考えています。Accessで会社の全ての運営用のシステムは作っていますが、PHPは全くの素人です。Htmlすらまったくの素人です。現在は税込を単価としていますが、税抜表示が認められたので新しいショップは税抜単価にします。貴方のサイトをそのまま使いEccubeの変更をしてみたいと思います。

    税抜をベースとするので、次の変更をしたいと思います。
    ①「現在のカゴの中」の小計と合計の間に「消費税」欄を入れ、合計は税込価格とします。
    ②「ご入力内容の確認」の「小計」を「商品代計」とし、「手数料」の次に「小計」とし、次に「消費税」欄を挿入し、「合計」とします。

    上記の変更をするのに、どのような式の変更・追加が必要かを、貴方の「【EC-CUBE】で税込と税別の値段を同時に表示する。Posted on 6月 26, 2012 in: Tips(EC2)|Jump To Comments」と同様に詳細を教えていただけると大変助かります。よろしくお願いします。

  2. すみません。しばらく放置状態で、コメントに気づきませんでした。
    もう解決されたでしょうか?

  3. はじめまして。
    私も税込みと税別の両方表示したくて調べており、ここへ辿り着きました。
    バージョンは2.13で、上記のように「product.js」というファイルがjs以下にないようです・・・
    カスタム方法が異なるのかもしれないと思いコメントさせて頂きました。
    お力添えをお願い致します。

  4. >Lun様

    あまりこちらのことをチェックしてなかったので、遅くなって申し訳ありません。
    「var $price02_default = $form.find(‘[id^=price02_default]’);」
    で全体検索したところ、2.13からは、jsファイルを使わずに、直接テンプレートにjavascriptが書かれているようです。
    検証せずで申し訳ありませんが、テンプレートの方をご覧になってみてください(^^)

Leave a Comment.