バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 受注一覧の並び替えを受注日でも行えるようにしたい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
dikkbsw
投稿日時: 2023/2/1 17:17
対応状況: −−−
半人前
登録日: 2016/10/7
居住地:
投稿: 13
受注一覧の並び替えを受注日でも行えるようにしたい
[EC-CUBE] 4.1.2-p1
[レンタルサーバ] Xserver
[PHP] 7.4.33

------------

管理画面の受注一覧で、受注日(dtb_order.order_date)をキーにして並び替えを行いたいです。

src\Eccube\Repository\OrderRepository の COLUMNS にキーを追加すれば実装できそうなのですが、srcフォルダの中の記述を変更したくありません。

なにか別口で追加することができますか?
無ければ、OrderRepository を app フォルダに持って来て、OrderController の呼び出しを変更する方法しかないでしょうか?

参考
https://github.com/EC-CUBE/ec-cube/pull/5038
yuh
投稿日時: 2023/2/1 18:10
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 受注一覧の並び替えを受注日でも行えるようにしたい
https://doc4.ec-cube.net/customize_repository
ここを参考にしてみてください


----------------


http://ec-lab.net/

dikkbsw
投稿日時: 2023/2/1 18:33
対応状況: −−−
半人前
登録日: 2016/10/7
居住地:
投稿: 13
Re: 受注一覧の並び替えを受注日でも行えるようにしたい
yuhさん

ありがとうございます。

提供頂いたURLも試しているのですが、OrderRepositoryのCOLUMNSにキーを追加しないと、リポジトリのカスタマイズ の前に OrderRepository でエラーが発生してしまうんですよね・・・


エラー箇所:OrderRepository::372
$qb->orderBy(self::COLUMNS[$searchData['sortkey']], $sortOrder);


post値
admin_search_order[sortkey]: order_date
admin_search_order[sorttype]: a
mcontact
投稿日時: 2023/2/1 20:56
対応状況: −−−
登録日: 2022/1/22
居住地:
投稿: 1343
Re: 受注一覧の並び替えを受注日でも行えるようにしたい
EC-CUBEのログは確認できますか?
どのようなエラーが出ますでしょうか?
var/log/prod/site-yyyy-mm-dd.log に「システムエラーが発生しました」といった行がありましたらご提示ください。


----------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EC-CUBEインテグレートパートナー【ゴールド】ランク
M&I Works
URL: https://miworks.biz/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

dikkbsw
投稿日時: 2023/2/2 8:44
対応状況: −−−
半人前
登録日: 2016/10/7
居住地:
投稿: 13
Re: 受注一覧の並び替えを受注日でも行えるようにしたい
mcontactさん

検証環境なので、.envファイルで

APP_ENV=dev
APP_DEBUG=1

にして開発をしています。

エラーの出力は

HTTP 500 Internal Server Error
Notice: Undefined index: order_date

です。

試しに下記のカスタマイズを作ってみたのですが、上記のエラーが先に発生してしまい、システムが機能しませんでした。
※POST値を無くすと動作します。

namespace Customize\Repository;

use Eccube\Doctrine\Query\OrderByClause;
use Eccube\Doctrine\Query\OrderByCustomizer;
use Eccube\Repository\QueryKey;

class AdminOrderSearchOrderByCustomizer extends OrderByCustomizer
{
    protected function createStatements($params, $queryKey)
    {
        return [new OrderByClause('o.order_date', 'desc')];
    }

    public function getQueryKey()
    {
        return QueryKey::ORDER_SEARCH_ADMIN;
    }
}


mcontact
投稿日時: 2023/2/2 11:25
対応状況: −−−
登録日: 2022/1/22
居住地:
投稿: 1343
Re: 受注一覧の並び替えを受注日でも行えるようにしたい
> > admin_search_order[sortkey]: order_date
> return [new OrderByClause('o.order_date', 'desc')];

単純にPOSTで送る値が合っていない様に思います。
受注データの検索SQL文に対して、POSTで指定するSQL文で記載されている結果カラム名とあっていない事が原因かと思います。


----------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EC-CUBEインテグレートパートナー【ゴールド】ランク
M&I Works
URL: https://miworks.biz/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

dikkbsw
投稿日時: 2023/2/2 11:47
対応状況: −−−
半人前
登録日: 2016/10/7
居住地:
投稿: 13
Re: 受注一覧の並び替えを受注日でも行えるようにしたい
mcontact さん

書き込みが分離していて分かり難いと思うので、まとめますね。


まず対象のページは、管理画面の受注一覧です。

受注一覧の並び順を受注申込み日時に変更したいので、他のソートと同様にサーバーへ「order_date」をPOSTします。

post値
admin_search_order[sortkey]: order_date
admin_search_order[sorttype]: a



するとエラーが起ます。
その際に起きるエラーは下記です。

HTTP 500 Internal Server Error
Notice: Undefined index: order_date



エラーが起きている箇所は下記です。

エラー箇所:src\Eccube\Repository\OrderRepository:372
$qb->orderBy(self::COLUMNS[$searchData['sortkey']], $sortOrder);



エラーから見る限り、配列のキー「order_date」が存在しないことが原因だと考えられます。


対象となる配列は下記です。

src\Eccube\Repository\OrderRepository:13
public const COLUMNS = [
        'order' => 'o.name01'
        ,'orderer'=> 'o.id'
        ,'shipping_id'=> 's.id'
        ,'purchase_product' => 'oi.product_name'
        ,'quantity' => 'oi.quantity'
        ,'payment_method' => 'o.payment_method'
        ,'order_status' => 'o.OrderStatus'
        ,'purchase_price' => 'o.total'
        ,'shipping_status' => 's.shipping_date'
        ,'tracking_number' => 's.tracking_number'
        ,'delivery'  => 's.name01'
 ];



上記のCOLUMNSを

public const COLUMNS = [
        'order' => 'o.name01'
        ,'orderer'=> 'o.id'
        ,'shipping_id'=> 's.id'
        ,'purchase_product' => 'oi.product_name'
        ,'quantity' => 'oi.quantity'
        ,'payment_method' => 'o.payment_method'
        ,'order_status' => 'o.OrderStatus'
        ,'purchase_price' => 'o.total'
        ,'shipping_status' => 's.shipping_date'
        ,'tracking_number' => 's.tracking_number'
        ,'delivery'  => 's.name01'

        ,'order_date' => 'o.order_date'// 追記
 ];


にしたいのですが、どうしたら良いでしょうか?

src\Eccube\Repository\OrderRepository を直接触らずに追加する方法が知りたいです。
mcontact
投稿日時: 2023/2/2 14:47
対応状況: −−−
登録日: 2022/1/22
居住地:
投稿: 1343
Re: 受注一覧の並び替えを受注日でも行えるようにしたい
> src\Eccube\Repository\OrderRepository を直接触らずに追加する方法が知りたいです。

srcフォルダ内をいじらずにでしたら、yuhさんが記載されたURLに記載されています。
https://doc4.ec-cube.net/customize_repository


----------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EC-CUBEインテグレートパートナー【ゴールド】ランク
M&I Works
URL: https://miworks.biz/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

dikkbsw
投稿日時: 2023/2/2 15:05
対応状況: −−−
半人前
登録日: 2016/10/7
居住地:
投稿: 13
Re: 受注一覧の並び替えを受注日でも行えるようにしたい
mcontact さん

私の使い方の認識が間違っていたらご指摘頂きたいのですが、
https://doc4.ec-cube.net/customize_repository
に載っているもので、

QueryKey::ORDER_SEARCH_ADMIN

を使ってカスタマイズすると思うのですが、

src\Eccube\Repository\OrderRepository を見ると


        if (isset($searchData['sortkey']) && !empty($searchData['sortkey'])) {
            $sortOrder = (isset($searchData['sorttype']) && $searchData['sorttype'] == 'a') ? 'ASC' : 'DESC';

            $qb->orderBy(self::COLUMNS[$searchData['sortkey']], $sortOrder); ← エラーが発生する
            $qb->addOrderBy('o.update_date', 'DESC');
            $qb->addOrderBy('o.id', 'DESC');
        } else {
            $qb->orderBy('o.update_date', 'DESC');
            $qb->addorderBy('o.id', 'DESC');
        }

        return $this->queries->customize(QueryKey::ORDER_SEARCH_ADMIN, $qb, $searchData);


となるので、カスタマイズより先にエラーが発生してしまうのです。
コレ以外のやり方があるということでしょうか?
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は90,022名です
総投稿数は110,282件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1677
8
red
1570
9
mcontact
1343
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.