バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > /shopping/ ご注文手続き画面の伝票で新しい割引項目を追加表示したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
be-s
投稿日時: 2020/11/20 14:49
対応状況: 解決済
一人前
登録日: 2016/2/2
居住地: São Paulo
投稿: 115
/shopping/ ご注文手続き画面の伝票で新しい割引項目を追加表示したい
[EC-CUBE] 4.0.4
[レンタルサーバ] AWS
[OS] Linux
[PHP] 7.3.14
[データベース] MySQL 5.7.28
[WEBサーバ] Apache/2.4.25
[ブラウザ] Chrome
[現象]

まとめ売りのロジックをおかじさんの下記URLを参考に作成したのですが
https://qiita.com/okazy/items/47eb40bb15a413980870

「ご注文手続き画面」で「割引」というカテゴライズで伝票で表示されるため
「まとめ売り値引き」として伝票に「割引」とは別にに表示させたいのです。
どのようにおこなえばえばよろしいでしょうか?

/src/Eccube/Entity/Master/OrderItemType.php

mtb_order_item_typeに
「まとめ売り値引き」を追加したのですが

ご注文手続き画面で表示されませんでした。





下記まとめ売りの関数です。




/**
     * まとめ売り割引計算処理
     *
     * @param ItemInterface $item           カート内の商品情報
     * @return int $discountSubTotalPrice   まとめ売り小計値引き額
     */
    function BandleSaleDiscountCalc($item){
        $discountSubTotalPrice     = 0;                         //まとめ売り小計値引額
        //まとめ売り個数と割引率パターン
        $arrayMultiDiscount        =
        [
            107=>[//まとめ売り対象品番
                50=>[1,40],//まとめ売り個数=>[割引率]
                30=>[1,30],//まとめ売り個数=>[割引種類(1=定率割引2=定額割引),割引率or割引金額]
                10=>[1,20],
                8=>[2,7200],
                6=>[2,5400],
                4=>[2,3600],
                2=>[2,1800]
            ],
            108=>[
                50=>[1,40],
                30=>[1,30],
                10=>[1,20],
                8=>[2,7200],
                6=>[2,5400],
                4=>[2,3600],
                2=>[2,1800]
            ],
            106=>[
                50=>[1,40],
                30=>[1,30],
                10=>[1,20],
                8=>[2,7200],
                6=>[2,5400],
                4=>[2,3600],
                2=>[2,1800]
            ]
        ];

        $productClass           = $item->getProductClass();
        if($productClass){
            $product            = $productClass->getProduct();      //商品情報
            $productId          = $product->getId();                //商品ID
            $productSaleType    = $productClass->getSaleType();     //販売種別(※今後販売種別で処理分けする場合用)
            $productQuantity    = intVal($item->getQuantity());     //対象商品の注文個数
            $productPrice       = $item->getPrice();                //対象商品の単価(税抜)
            
            //まとめ売り個数と割引率パターンを回して対象の商品IDがカートに入っているか確認
            foreach ($arrayMultiDiscount as $targetProductId => $arrayDiscountPattern) {
                if($productId == $targetProductId){
                    foreach($arrayDiscountPattern as $key => $arrayValue){
                        //まとめ売り個数と割引率を変数に入れる
                        $discountQuantityLimit  = $key;             //割引条件の個数
                        $discountType           = $arrayValue[0];   //割引種類(1=定率割引2=定額割引)
                        $discountValue          = $arrayValue[1];   //定率割引の時は割引率or定額割引の時は割引金額
                        //対象の商品がまとめ売りの個数に当てはまれば割引金額の計算をおこなう
                        if($productQuantity >= $discountQuantityLimit){
                            if($discountType == 1){//1の場合、定率割引の処理
                                $discountSubTotalPrice += intVal((intVal($productPrice*1.1)*$discountValue)/100)*$productQuantity;
                            }else{//1以外の場合、定額割引の処理
                                $discountSubTotalPrice += intVal($discountValue);
                            }
                            break;
                        }
                    }
                }
            }
        }
        return  $discountSubTotalPrice;
    }
468
投稿日時: 2020/11/20 16:57
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: /shopping/ ご注文手続き画面の伝票で新しい割引項目を追加表示したい
ご注文手続きのページですがtwig側は
mtb_order_item_typeを参照して動的に項目が増える仕様になっていないと思います。

デフォルトの場合、
/src/Eccube/Resource/template/default/Shopping/index.twig 386~438行の間に
「まとめ売り値引き」を表示する記述を追記する必要があると思います。


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

be-s
投稿日時: 2020/12/11 12:40
対応状況: −−−
一人前
登録日: 2016/2/2
居住地: São Paulo
投稿: 115
Re: /shopping/ ご注文手続き画面の伝票で新しい割引項目を追加表示したい
468さん
ありがとうございます。

/src/Eccube/Resource/template/default/Shopping/index.twi
参考にし下記コードを入れて思うような処理ができました。




{# まとめ売り用の処理名と表示用フラグの変数作成 #}
{% set checkProcessor = 'Customize\\Service\\PurchaseFlow\\Processor\\BandleSaleDiscountProcessor' %}
{% set BandleSaleDiscountFlg = 0 %}

{# まとめ売りの割引情報が入っていれば表示用フラグを立てる #}
{% for price in Order.OrderItems.toArray %}
    {% if price.processor_name is same as( checkProcessor ) and price.price < 0 %}
        {% set BandleSaleDiscountFlg = 1 %}
    {% endif %}
{% endfor %}





Twigの表示したい所に

{% if Order.taxable_discount < 0 %}


                        {% if BandleSaleDiscountFlg == 1 %}
                        {# まとめ売り表示用フラグが立っていればまとめ売り金額を表示 #}
                        <dl class="ec-totalBox__spec">
                            <dt>まとめ売り値引き額</dt>
                            <dd>{{ Order.taxable_discount|price }}</dd>
                        </dl>
                        {% else %}
                        <dl class="ec-totalBox__spec">
                            <dt>{{ 'common.discount'|trans }}</dt>
                            <dd>{{ Order.taxable_discount|price }}</dd>
                        </dl>
                        {% endif %}

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


 



ログイン


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

統計情報

総メンバー数は88,287名です
総投稿数は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.