バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 既存の注文に商品を追加したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2019/4/15 18:14
対応状況: 解決済
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 748
既存の注文に商品を追加したい
EC-CUBE 4.0.2

注文者がフロントページで、既存の注文情報に商品を追加できる機能を追加したいと思っています。

もし共通化されているサービス等の処理があれば教えてほしいです。

共通処理がなければ、小計や送料の計算を自力でしないといけないなと思っています。


ちなみに、管理画面の受注詳細で商品を追加する処理を参考にしようとしたのですが、処理の流れが追えませんでした。

受注詳細で「登録」ボタンを押した時は、次のような処理の流れになると思います。

app/template/admin/Order/edit.twig
 ↓
src/Eccube/Controller/Admin/Order/EditController.php
 index()
  case 'register'
 ↓
src/Eccube/Controller/Admin/Order/EditController.php
 index()
  default
 ↓
app/template/admin/Order/edit.twig

「商品を追加」ボタンを押した時はDBに保存していないようです。
「計算結果を更新」ボタンを押した時はどのソースが呼ばれているかわかりませんでした。

受注詳細で既存の受注に商品を追加する処理はどこに記載されているのでしょうか?


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2019/4/15 20:14
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 748
Re: 既存の注文に商品を追加したい
src/Eccube/Service/OrderHelper.php の createOrderItemsFromCartItems() を参考に、OrderItem の保存処理を作成することはできました。

あとは OrderItem に TaxRate を保存する方法を教えていただきたいです。
よろしくお願いします。

app/Customize/Controller/ProductController.php
            $ProductClass = $this->entityManager->getRepository(ProductClass::class)->find($addCartData['product_class_id']);
            $ProductItemType = $this->entityManager->getRepository(OrderItemType::class)->find(OrderItemType::PRODUCT);

            $OrderItem = new OrderItem();
            $OrderItem
                ->setProduct($Product)
                ->setProductClass($ProductClass)
                ->setProductName($Product->getName())
                ->setProductCode($ProductClass->getCode())
                ->setPrice($ProductClass->getPrice02())
                ->setQuantity($addCartData['quantity'])
                ->setOrderItemType($ProductItemType)
                ->setOrder($TargetOrder);

            $ClassCategory1 = $ProductClass->getClassCategory1();
            if (!is_null($ClassCategory1)) {
                $OrderItem->setClasscategoryName1($ClassCategory1->getName());
                $OrderItem->setClassName1($ClassCategory1->getClassName()->getName());
            }
            $ClassCategory2 = $ProductClass->getClassCategory2();
            if (!is_null($ClassCategory2)) {
                $OrderItem->setClasscategoryName2($ClassCategory2->getName());
                $OrderItem->setClassName2($ClassCategory2->getClassName()->getName());
            }

            $TargetOrder->addOrderItem($OrderItem);

            $this->entityManager->persist($OrderItem);
            $this->entityManager->persist($TargetOrder);
            $this->entityManager->flush();


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2019/4/16 17:22
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 748
Re: 既存の注文に商品を追加したい
TaxProcessor や PointHelper を参考に独自で受注商品に税率を設定することができました。
TaxProcessor がどこからも呼ばれていないことを考えるともっとスマートなやり方があるような気はしますが。。

src/Eccube/Controller/ProductController.php
            // 税区分, 税表示区分を設定する,
            $TaxInclude = $this->entityManager->find(TaxDisplayType::class, TaxDisplayType::INCLUDED);
            $TaxRule = $this->taxRuleRepository->getByRule($Product, $ProductClass);

            // $TaxRuleを取得出来ない場合は基本税率設定を使用.
            if (null === $TaxRule) {
                $TaxRule = $this->taxRuleRepository->getByRule();
            }

            // 税込表示の場合は, priceが税込金額のため割り戻す.
            if ($TaxInclude->getId() == TaxDisplayType::INCLUDED) {
                $tax = $this->taxRuleService->calcTaxIncluded(
                    $OrderItem->getPrice(), $TaxRule->getTaxRate(), $TaxRule->getRoundingType()->getId(),
                    $TaxRule->getTaxAdjust());
            } else {
                $tax = $this->taxRuleService->calcTax(
                    $OrderItem->getPrice(), $TaxRule->getTaxRate(), $TaxRule->getRoundingType()->getId(),
                    $TaxRule->getTaxAdjust());
            }

            $OrderItem
                ->setTaxType($this->entityManager->find(TaxType::class, TaxType::TAXATION))
                ->setTaxDisplayType($TaxInclude)
                ->setTax($tax)
                ->setTaxRate($TaxRule->getTaxRate())
                ->setRoundingType($TaxRule->getRoundingType())
                ->setTaxRuleId($TaxRule->getId());


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

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


 



ログイン


ec-cube.co

統計情報

総メンバー数は46,474名です
総投稿数は92,301件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1904
4
468
1791
5
yuh
1594
6
red
1313
7
umebius
1296
8
fukap
907
9
tsuji
840
10
shutta
835
11 ramrun 789
12
tao_s
758
13
h_tanaka
748
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.