プラグイン一覧 / 取引先品番管理
取引先品番管理プラグイン
取引先が使っている品番を自社の型番に対応づけ、相手の品番のまま探して発注できるようにします。品番表は CSV でまとめて取り込めます。
単体で動きます。他のプラグインは要りません。
取引先アカウント管理・型番一括発注は必須ではありません。入れている場合だけ機能が増えます。
何のためのプラグインか
卸売では、得意先が自社の品番を振っています。 発注書も在庫表も相手の品番で 書かれているので、EC-CUBE の型番だけが並ぶ画面は取引先から見て読めません。結局、 品番の対応表を紙かエクセルで持ち、注文のたびに人が突き合わせることになります。
このプラグインは、取引先ごとに「相手の品番 ↔ 自社の規格」の対応表を持たせて、 相手の品番のまま探して発注できるようにします。

商品ページに、その取引先の品番が規格ごとに並びます。
主な機能
| 機能 | 内容 |
|---|---|
| 貴社品番の対応表 | 取引先ごとに「相手の品番 ↔ 自社の規格」を持ちます |
| 画面に出す | 商品詳細・商品一覧・カート・注文履歴に貴社品番を並べます |
| 貴社品番で検索 | 検索欄に相手の品番を入れると、自社の型番へ読み替えて探します |
| 貴社品番で発注 | 型番一括発注に貼った品番を読み替えます |
| CSV 一括登録 | 取引先から送られてきた品番表をそのまま取り込みます |
| 取引先による登録 | 取引先がマイページから自分で登録します。既定は無効 |
| 受注CSV・配送CSV | 受注時点の貴社品番を出せます。既定は出力しない |
| 会社で引き継ぐ | 取引先アカウント管理があれば、会社の対応表を担当者も使えます |
取引先ごとに同じ品番があってかまいません。 得意先ごとに品番を振っているので、 たまたま同じ文字列になります。読み替えはログインしている会員の会社の中だけで 行います。
画面
対応表を管理する
管理画面の顧客管理 → 取引先品番。品番だけでも絞り込めます。取引先から 「この品番は何だったか」と聞かれる場面で、相手の会社が分からなくても引けます。

会員と商品は、登録したあと変えられません。 付け替えられると、直したつもりで 別の取引先の対応を書き換えることになります。変えたいときは消して入れ直してください。
CSV でまとめて入れる
顧客管理 → 取引先品番CSV登録。列はこの順です。

| 列 | 中身 |
|---|---|
| 会員IDまたはメールアドレス | どちらでも構いません。数字だけなら会員ID、それ以外はメールアドレスとして読みます |
| 自社型番 | 商品規格の型番 |
| 貴社品番 | 取引先が使っている品番。空にした行は、その対応を削除します |
| 貴社商品名 | 任意。空でも構いません |
ヘッダー行の文字は見ません。列は並びで読みます。
すでにある組は上書きします。 取引先は品番表をまるごと送り直してくるので、毎回 消してから入れ直す必要はありません。
1行でも読めなければ何も入れません。 途中まで入った表は、店から見て「入ったのか 入っていないのか分からない」状態になります。エラーは行番号ごとに出ます(最大20件)。
取引先に自分で登録させる
顧客管理 → 取引先品番設定で有効にすると、取引先のマイページに「貴社品番」が 出ます。商品ページからも登録できます。

商品を選ぶと、その商品の規格が並びます。空にすればその規格の登録は消えます。
既定は無効です。 入れただけで取引先の画面が増えるのは驚きになります。誰に 登録させるかは店が決めることなので、こちらでは決めません。
自社の型番は打たせません。 取引先は店の型番を知りません。商品を選んでもらい、 その商品の規格に品番を付ける形にしています。選べるのはその取引先が開ける商品 だけなので、見えない商品に品番を貼ることもできません。
どちらからでも直せます。 店が取り込んだ品番を取引先が直すことも、取引先が 入れた品番を店が直すこともできます。止めると、間違いに気づいた側が直せません。 最後に入れたのがどちらかは管理画面の一覧に出ます。
品番で探せます
検索欄に貴社品番を入れると、自社の型番へ読み替えてから本体の商品検索に 渡します。会員グループの公開範囲も、他のプラグインが足した検索条件も、そのまま 効きます。

商品一覧には先頭の1つと「ほか」を出します。規格ぜんぶを並べると商品名が押し出されます。
| 入れたもの | どうなるか |
|---|---|
| 対応表にある品番 | 自社の型番へ読み替えて探します |
| 読み替えられない語 | そのまま残します。 商品名で探す人の邪魔はしません |
| 未ログイン | 何もしません |
検索欄の表示は入力したままです。 読み替えているのは組み立て済みのクエリに 束縛された値だけで、入力そのものには触れていません。取引先は自分が打った品番を 見たまま結果を読みます。
管理画面の商品検索には効きません。 本体が別のキーで引いているためです。
型番が1件に絞れないと登録できません
EC-CUBE の商品規格の型番に一意制約はありません。同じ型番を複数の規格に付けられます。
複数該当したときに先頭を採ることはしません。 採ると、対応表が黙って違う商品を 指します。気づくのは取引先に違うものが届いたときです。CSV も個別登録も、 「その型番の規格が複数あります」として止めます。
販売しない規格(規格を組み替えたときに残る古い行)は数えません。
会社で引き継ぎます
取引先アカウント管理が入っていると、対応表は取引先の 根の会員に付きます。担当者のメールアドレスで CSV を書いても、会社の対応表として 入ります。
会社で決めた品番が、発注する人によって変わりません。 担当者が増えても、品番表を 配り直す必要はありません。
持ち主は保存したときの会社で固定します。 都度たどると、担当者が別の会社へ移った ときに対応表が付いて行ってしまいます。
取引先アカウント管理が入っていなければ、対応表は会員個人のものになります。
事業部ごとに表を分ける
会社で1つにまとめると困る取引先があります。事業部ごとに違う品番体系を使っていると、 全部が親会社の1つの表に混ざり、同じ品番が別の商品を指して取り込めません。 持ち主をどの会員にするかは決め直せます。
// 既定(根の会員へ寄せる)より先に呼ばれればよい
#[AsTaggedItem(priority: 100)]
class DivisionCodeOwner implements CodeOwnerResolverInterface
{
/** 事業部として扱う会員の id。会員グループや独自の項目で見分けても構いません */
private const DIVISIONS = [1001, 1002, 1003];
public function ownerOf(Customer $Customer): ?Customer
{
// 決めないときは null。既定(取引先の根の会員)に回ります
return in_array($Customer->getId(), self::DIVISIONS, true) ? $Customer : null;
}
}
担当者で発注する取引先なら、親を辿って最初に見つけた事業部で止める書き方になります。 priority の高いものから呼び、最初に会員を返した実装が持ち主です。
入口は1か所です。 画面の表示・検索の読み替え・管理画面の登録・CSV の取り込み・ マイページの登録・受注時の写しは全部ここを通るので、「CSV では事業部、画面では会社」と いう分かれ方はしません。足した判定は全部に同時に効きます。
分け方を変えても、登録済みの行は付け替わりません。 対応表は持ち主の会員 id で 持っています。運用の途中で変えるなら CSV を入れ直してください。古い持ち主の行は残り、 誰からも引かれない行になります。
持ち主にできるのは会員です。 会員グループや文字列では分けられないので、事業部にあたる 会員を作ることになります。
型番一括発注に貼った品番も読み替えます
型番一括発注を入れていると、貼り付けた貴社品番をそのまま 自社の型番へ読み替えます。取引先は自社の発注書をそのまま貼れます。
読み替え口(ProductCodeTranslatorInterface)は複数並べられます。旧型番の対応表や
JAN からの読み替えを別の実装として足せば、このプラグインと並べて使えます。
受注CSV・配送CSV に出せます
受注時点の貴社品番と貴社商品名を、受注CSV と配送CSV の明細の項目として出せます。
既定は「出力しない」です。 既存の CSV に列が勝手に増えると、取り込む側が 壊れます。出すときは設定 → CSV出力項目設定で「出力する」側へ移してください。
出るのは受注した時点の品番です。あとから取引先が品番を振り直しても、済んだ受注の CSV は変わりません。変わると、先月出した CSV と今日出す CSV が食い違います。
| 出す先 | 値 |
|---|---|
| 商品ページ・カート・注文履歴 | いまの対応表 |
| 受注CSV・配送CSV | 受注時点の写し |
振り直した直後は、画面と CSV で違う値が出ます。これは意図した違いです。 画面は 取引先が今日読める値であってほしく、CSV は過去のぶんが動かないでほしいからです。
知っておいてほしい仕様
| 項目 | 内容 |
|---|---|
| 注文履歴の品番は「いまの対応表」で出ます | 注文したときの品番は画面には持っていません。対応表を組み替えると、過去の注文の表示も変わります。「あのときの品番」で引きたいときは受注CSVか注文請書・発注書側で残してください |
| 入れる前の受注には出ません | 写しを取り始めたのは入れてからです。過去の受注は空のままです |
| 管理画面からの受注登録では写しが入りません | 受注確定の流れでだけ埋めます |
| 無効化すると CSV の項目は消えます | 無効な間は中身が出せないためです。入れ直すと「出力しない」側から作り直すので、並べ替えはやり直しになります |
| 1つの規格に持てる品番は1つ | 2つあると、画面にどちらを出すか決められません |
| 会員でない購入では何もしません | 読み替えはログインしている会員の会社の中だけで行います |
動作要件
| 項目 | 内容 |
|---|---|
| EC-CUBE | 4.4 系 |
| PHP | 8.2 / 8.3 |
| データベース | MySQL 8 / PostgreSQL 13 以上 |
| 依存プラグイン | なし |
取引先アカウント管理と型番一括発注は 必須ではありません。入れていれば自動で連携します。
差し替えられるところ
主要な処理はインターフェースとして切ってあります。実装を差し替えれば動きが変わります。 自社の商習慣に合わない部分があれば、まず差し替えで済むかを確かめてください。
AI に書かせられます。このプラグインには CLAUDE.md と docs/extension-samples.md が 同梱されていて、差し替え口ごとにそのまま使えるサンプルが載っています。 やりたいことを日本語で伝えれば、AI コーディングツールが実装を書きます (くわしく)。
| インターフェース | できること |
|---|---|
CodeOwnerResolverInterface | 品番の持ち主をどの会員にするかを決める(事業部ごとに別の品番体系を使う取引先で、表を事業部で分ける) |
入手する
オーナーズストアで購入
買い切りです。月額はかかりません。予定価格 税抜 50,000 円。
予定価格です。オーナーズストアでの販売開始時に変わる場合があります。
この条件で回るか、確かめてから決めてください
締め日、支払サイト、請求書の様式、会計ソフトへの受け渡し。合うかどうかは商習慣によって変わります。やりたいことを書いて送ってください。