EC-CUBE で B2B
構築を相談する

プラグイン一覧 / 配送方法管理

配送方法管理プラグイン

会員グループごとに、購入手続きで選べる配送方法を出し分けます。卸売の取引先にだけ専用便を出す、といった使い方ができます。

会員グループ管理プラグインのアドオンです。先にそちらを入れてください。

取引先アカウント管理は必須ではありません。入れている場合だけ機能が増えます。

何のためのプラグインか

配送方法は、誰にでも同じものが並びます。そのままだと次のことができません。

このプラグインは配送方法に「利用できる会員グループ」を持たせます。購入手続きの 配送方法の欄が、ログインしている人によって変わります。

割り当てが無い配送方法は、これまでどおり全員が選べます。 既存の設定に手を入れずに、 限定の配送方法だけを足していけます。

選べるかどうかの決まり方

配送方法の割り当て 会員 非会員(ゲスト購入)
グループを割り当てていない 選べる 選べる
割り当てたグループのどれかに属している 選べる —
割り当てたグループのどれにも属していない 選べない —
グループを割り当てている — 選べない

要点は3つです。

例

配送方法 割り当てたグループ
宅配便 (なし)
卸売便 卸売

一般の会員は宅配便だけ、卸売の会員は宅配便と卸売便、非会員は宅配便だけになります。

画面

配送方法に会員グループを割り当てる

配送方法の編集画面に「利用可能な会員グループ」が増えます。何も選ばなければ制限なしです。 設定するのは配送方法の側だけです。

利用可能な会員グループ

購入手続きでの見え方

その会員が選べる配送方法だけが並びます。テンプレートの編集は要りません。

購入手続きの配送方法

会員グループの側からは絞れません

支払い方法管理には「このグループが使える支払い方法」が ありますが、配送方法にはありません。向きが1つしかないのは、手抜きではなく事故を 避けるためです。

配送方法は販売種別ごとに1つに紐づいていて、購入手続きに出るのはカートの商品の販売種別に 合うものだけです。そこへ会員グループ側の許可リストを重ねると、扱う販売種別ごとに 最低1つ許可し続けないと、その会員は買えなくなります。 販売種別や配送方法を増やした ときに黙って壊れます。

支払い方法は販売種別で分かれていないので、同じ問題が起きません。だから向きが2つあります。

会員グループを絞りたいときは、使わせたい配送方法の「利用可能な会員グループ」でその グループを選んでください。

表示を絞るだけでは守れません

絞り込みは画面と購入フローの2段階です。画面に出ていない配送方法を直接送信しても、 購入フローで選べるものの先頭へ差し替わるため、受注には残りません。

割り当てだけで足りないとき

割り当ては会員の属性しか見ません。「北海道・沖縄の届け先には自社便を出さない」 「点数の多いお届け先にはメール便を出さない」は届け先や荷物の中身で決まるので、 割り当てでは書けません。このときは判定を足します。

class OwnFleetAreaLimit implements DeliveryPermissionInterface
{
    public function isAllowed(Delivery $Delivery, ?Customer $Customer, ?Shipping $Shipping): bool
    {
        // 自社便以外と、お届け先が分からない経路には関与しない
        if (3 !== $Delivery->getId() || null === $Shipping?->getPref()) {
            return true;
        }

        // 1: 北海道 / 47: 沖縄県
        return !in_array((int) $Shipping->getPref()->getId(), [1, 47], true);
    }
}

お届け先ごとに判定するので、複数配送では北海道の届け先からだけ自社便が消えます。 足した判定はすべて呼ばれ、1つでも「出さない」と答えたら選べません。 購入手続きの 選択肢と購入フローの検査は同じ判定を通るので、画面に出ていない配送方法を直接送信しても 通りません。

絞る方向にだけ働きます。 true を返しても、割り当てで落ちた配送方法は戻りません。 緩められると「チャーター便は特定の会社だけ」という設定を拡張で骨抜きにでき、設定した店が 気づけないためです。

絞りすぎるとその会員は買えなくなります。 選べる配送方法が 0 本になると購入フローが エラーにするので、購入手続きから先へ進めません。意図した制限でも書き間違いでも見え方は 同じです。条件は「この配送方法を出さない」と狭く書き、扱う販売種別ごとに受け皿になる 配送方法を1つ残してください。入れたら、条件に当たる会員で購入手続きを1周して確かめます。

外したときの挙動

配送方法・会員グループのどちらを消しても、割り当ての行は自動で消えます。 受注済みのデータには影響しません。 受注は配送方法を直接参照していて、 このプラグインの割り当てを経由しないためです。

会員グループが削除できなくなったら

他のプラグインを入れたときにスキーマが再構築され、外部キーの設定が既定に戻ることが あります。この状態だと、割り当て済みの会員グループを削除できません。

このプラグインを無効化して、もう一度有効化してください。 有効化のときに外部キーを 張り直します。doctrine:schema:update では直りません。

できないこと

項目 内容
全部に割り当てると詰みます すべての配送方法にグループを割り当て、そのどれにも属さない会員がいると、購入手続きでエラーになります。受け皿になる配送方法を1つ残してください
出し分けられるのは配送方法だけ 配送料や配送日時をグループごとに変えることはできません
非会員に個別の許可は出せません グループを割り当てた配送方法は非会員から必ず見えなくなります。「これだけは非会員にも許す」という指定はできません
複数グループは OR だけ 「すべてのグループに属している場合だけ許可」はできません
会員グループ側からは指定できません 「このグループはこの配送方法だけ」は用意していません。理由は上の節に書いてあります
判定を足しても緩められません 差し替え口は絞る方向だけです。「この会員だけ例外的に許す」は割り当ての側(配送方法編集の「利用可能な会員グループ」)で設定してください
管理画面からの受注登録・編集には効きません 判定が効くのは購入手続きと購入フローだけです。運営者が意図して選ぶ場面なので止めていません

動作要件

項目 内容
EC-CUBE 4.4 系
PHP 8.2 / 8.3
必須プラグイン 会員グループ管理(ec-cube/customergroup44)が有効であること

取引先アカウント管理を入れている場合、担当者は取引先の 会員グループを引き継ぐので、会社で決めた配送方法が担当者全員に効きます。

差し替えられるところ

主要な処理はインターフェースとして切ってあります。実装を差し替えれば動きが変わります。 自社の商習慣に合わない部分があれば、まず差し替えで済むかを確かめてください。

AI に書かせられます。このプラグインには CLAUDE.md と docs/extension-samples.md が 同梱されていて、差し替え口ごとにそのまま使えるサンプルが載っています。 やりたいことを日本語で伝えれば、AI コーディングツールが実装を書きます (くわしく)。

インターフェースできること
DeliveryPermissionInterface届け先や荷物の中身で配送方法を絞る(北海道・沖縄には自社便を出さない、点数の多い届け先にはメール便を出さない、など)

入手する

オーナーズストアで購入

買い切りです。月額はかかりません。予定価格 税抜 50,000 円。

予定価格です。オーナーズストアでの販売開始時に変わる場合があります。

販売ページの準備ができ次第、ここに載せます。

導入を任せる

サーバーの用意から EC-CUBE の設置、プラグインの導入と設定まで請け負います。 商習慣に合わせた作り足しもご相談ください。

この条件で回るか、確かめてから決めてください

締め日、支払サイト、請求書の様式、会計ソフトへの受け渡し。合うかどうかは商習慣によって変わります。やりたいことを書いて送ってください。