だ。ログ。

開発とかスノボとかやきうとか。

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);
        }

というわけでクエリビルダ―のパラメータとして除外ステータスをコメントアウトさせると、購入処理中のデータ自体も表示される事が確認された。
ただしこれだと受注日が入っていない「仮オーダー」状態の物も全て出てしまうので実用的ではない。
細かく設定が必要となってしまうが、プルダウンから購入処理中を選べないようにする。と言う処理を入れて対処した。

しかしこの仕様は不親切だなあ。。