EC-CUBEの受注ステータスを「購入処理中」にすると受注管理から消える
EC-CUBE3.014にて確認した事象として、一度受注したデータを管理画面にて編集しオーダーを「購入処理中」に編集し、受注マスターに戻った際に対象の受注が消える。
もう大分EC-CUBEを触っていなかったので、これが仕様かどうかは分からないが、現状のデフォルトのEC-CUBEの受注ステータスID:8「購入処理中」にプルダウンを変更しデータを確定すると消える。
これが現状のEC-CUBEの仕様らしい。
システム屋の目線で見れば、それが仕様だからそうなんだろう。位で済むのだが、運用しているシステムなんて知らないよ。って言う人からすれば
じゃあ何のために購入処理中が選べちゃうのさ!と言われるし、実際に言われたワケで。
問題となる部分は以下
/src/Eccube/Repository/OrderRepository.php 303行目から
if (!$filterStatus) { // 購入処理中は検索対象から除外 $OrderStatuses = $this->getEntityManager() ->getRepository('Eccube\Entity\Master\OrderStatus') ->findNotContainsBy(array('id' => $this->app['config']['order_processing'])); $qb->andWhere($qb->expr()->in('o.OrderStatus', ':status')) ->setParameter('status', $OrderStatuses); }
「購入処理中は検索対象から除外」とソースコードにしっかりと記載されている。
導入前にこのステータスは他の決済で利用するモノで手動で使うとオーダー消えちゃうんですよ~的にクライアントに説明して使わない。とする事も一つの手だが、目で見える物だから使いたい。と言われる事は安易に想像出来る。
if (!$filterStatus) { // 購入処理中は検索対象から除外 $OrderStatuses = $this->getEntityManager() ->getRepository('Eccube\Entity\Master\OrderStatus') ->findNotContainsBy(array('id' => $this->app['config']['order_processing'])); //$qb->andWhere($qb->expr()->in('o.OrderStatus', ':status')) // ->setParameter('status', $OrderStatuses); }
というわけでクエリビルダ―のパラメータとして除外ステータスをコメントアウトさせると、購入処理中のデータ自体も表示される事が確認された。
ただしこれだと受注日が入っていない「仮オーダー」状態の物も全て出てしまうので実用的ではない。
細かく設定が必要となってしまうが、プルダウンから購入処理中を選べないようにする。と言う処理を入れて対処した。
しかしこの仕様は不親切だなあ。。