バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 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

 



ログイン


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

統計情報

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