質問 > フロント機能 > Processor改造時のRepositoryの使用方法につきまして[規格によらず在庫を増減させる] |
フロント機能
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
takax3 |
投稿日時: 2021/3/21 18:44
対応状況: 解決済
|
新米 登録日: 2021/3/21 居住地: 投稿: 3 |
Processor改造時のRepositoryの使用方法につきまして[規格によらず在庫を増減させる] EC-CUBE 4.0.5です。初心者です。
商品に対して規格[包装あり, 包装無し]を設定した際、包装アリ購入時にも包装無し購入時にも両方の在庫が減少するよう改造を行いたく、StockReduceProcessor.phpのeachProductOrderItems関数を以下のように改造したのですが、いざ購入処理を行うとエラーが出てしまいます。 __constructにて$this->productRepository = $this->services['Eccube\\Repository\\ProductRepository'];などを行ってみたのですが、どうにもエラーを解消することができません。 もしよろしければ、productRepositoryを使用する方法、もしくはproductRepositoryを使用せずにstockを増減させる方法についてご教授願えないでしょうか。 よろしくお願いいたします。 private function eachProductOrderItems(ItemHolderInterface $itemHolder, callable $callback) { // Order以外の場合は何もしない if (!$itemHolder instanceof Order) { return; } foreach ($itemHolder->getProductOrderItems() as $item) { // 在庫が無制限かチェックし、制限ありなら在庫数をチェック if (!$item->getProductClass()->isStockUnlimited()) { // 在庫チェックあり /* @var ProductStock $productStock */ $productStock = $item->getProductClass()->getProductStock(); if ($productStock->getProductClassId() === null) { // 在庫に対してロックを実行 $this->entityManager->lock($productStock, LockMode::PESSIMISTIC_WRITE); $this->entityManager->refresh($productStock); $productStock->setProductClassId($item->getProductClass()->getId()); } $ProductClass = $item->getProductClass(); $stock = $callback($productStock->getStock(), $item->getQuantity()); if ($stock < 0) { throw new ShoppingException(trans('purchase_flow.over_stock', ['%name%' => $ProductClass->formattedProductName()])); } $productStock->setStock($stock); $ProductClass->setStock($stock); $ProductId = $ProductClass->getProduct()->getId(); $Product = $this->productRepository->find($ProductId); $ProductClasses = $Product->getProductClasses(); foreach($ProductClasses as $ProductClass) { $productStock = $ProductClass->getProductStock(); $productStock->setStock($stock); $ProductClass->setStock($stock); } } } } |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
» Processor改造時のRepositoryの使用方法につきまして[規格によらず在庫を増減させる] | takax3 | 2021/3/21 18:44 |
Re: Processor改造時のRepositoryの使用方法につきまして | takax3 | 2021/3/21 18:46 |
Re: Processor改造時のRepositoryの使用方法につきまして | umebius | 2021/3/24 0:01 |
Re: Processor改造時のRepositoryの使用方法につきまして | takax3 | 2021/3/24 16:23 |