バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2019/4/16 17:22
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
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の機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2019/4/15 20:14
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
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/15 18:14
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
既存の注文に商品を追加したい
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の機能やデザインのカスタマイズ承ります。

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


 



ログイン


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

統計情報

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