iDempiere 配送プロセッサの使い方|在庫管理 操作マニュアル・技術仕様
📖 在庫管理の全体像: 在庫管理の業務フロー全体図 も合わせてご覧ください。
配送プロセッサは、配送業者のオンラインサービス(送り状発行・料金照会・追跡)に接続するための認証情報を保持するマスタです。接続先ホストや実装クラスは 配送設定 側に定義し、本ウィンドウでは「どの配送設定を、どのアカウントで使うか」だけを登録します。
📌 ポイント: 接続先の URL・ポート・実装クラスは本ウィンドウには存在しません。それらは配送設定(
M_ShippingProcessorCfg)が持ち、配送プロセッサはそれを参照してアカウント情報を上乗せする構造です。
同一の配送業者に対して複数の契約アカウントを持つ場合は、配送設定1件に対して配送プロセッサを複数登録します。
配送プロセッサでできること
Section titled “配送プロセッサでできること”- 配送設定(接続先定義)とアカウント情報の紐付け
- 配送業者オンラインサービスのユーザーIDの登録
- 接続キー(Connection Key)と接続パスワードの登録
- 有効/無効の切り替えによる接続の停止
- 組織単位での配送アカウント使い分け
配送プロセッサは単一タブのシンプルなマスタです。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| Shipping Processor | M_ShippingProcessor | 8項目 | 配送設定への参照と接続アカウント情報 |
💡 ヒント: 先に「配送設定(Shipping Configuration)」を登録しておかないと、本ウィンドウの「Shipping Processor」フィールドで選択できるレコードがありません。設定順序に注意してください。
基本操作手順
Section titled “基本操作手順”graph TD
A["⚙️ 先に配送設定を登録<br/>(ホスト・ポート・実装クラス)"] --> B["📂 メニューから<br/>配送プロセッサを開く"]
B --> C["➕ 新規<br/>名称を入力"]
C --> D["🔗 Shipping Processor で<br/>対象の配送設定を選択"]
D --> E["🔑 ユーザーID・接続キー・<br/>接続パスワードを入力"]
E --> F["💾 保存"]
F --> G["🚚 配送業者マスタから<br/>オンライン処理で利用"]
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”メニューから「在庫管理 > 品目マスタ管理 > Shipping Processor(配送プロセッサ)」を開きます。
- ツールバーの「新規」ボタンをクリック
- 以下を入力:
- 名称: 配送プロセッサの識別名(必須・60桁)
- Shipping Processor: 参照する配送設定(必須)
- ユーザーID: 配送業者から発行されたアカウント番号/ユーザーID(必須・60桁)
- Connection Key: 接続キー(任意・60桁)
- Connection Password: 接続パスワード(必須・60桁)
- 「保存」をクリック
⚠️ 注意: 接続パスワードは
M_ShippingProcessor.ConnectionPasswordに文字列カラムとして保持されます。運用ルール上、配送プロセッサウィンドウへのアクセス権は必要最小限のロールに限定することを推奨します。
項目リファレンス
Section titled “項目リファレンス”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| クライアント | 必須 | 選択 | テナント |
| 組織 | 必須 | 選択 | 組織 |
| Shipping Processor | 必須 | 選択 | 参照する配送設定(M_ShippingProcessorCfg) |
| 名称 | 必須 | 文字列 | 配送プロセッサ名(60桁) |
| 有効 | 必須 | チェック | アクティブ(初期値 Y) |
| ユーザーID | 必須 | 文字列 | 配送業者のユーザーID/アカウント番号(60桁) |
| Connection Key | - | 文字列 | 接続キー(60桁) |
| Connection Password | 必須 | 文字列 | 接続パスワード(60桁) |
配送関連マスタの構成
Section titled “配送関連マスタの構成”graph TD
A["配送設定<br/>M_ShippingProcessorCfg<br/>ホスト・ポート・実装クラス"] --> B["配送プロセッサ<br/>M_ShippingProcessor<br/>ユーザーID・接続キー・パスワード"]
A --> C["配送業者設定<br/>M_ShipperCfg<br/>サービスコード・追跡URL"]
C --> D["荷姿 / ラベル種別 / 集荷方法<br/>M_ShipperPackagingCfg ほか"]
B --> E["オンライン配送処理<br/>IShipmentProcessor"]
C --> E
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 「Shipping Processor」フィールドで何も選択できません。
Section titled “Q. 「Shipping Processor」フィールドで何も選択できません。”配送設定(M_ShippingProcessorCfg)が1件も登録されていないためです。先に 配送設定 ウィンドウで接続先を登録してください。
Q. ホストアドレスやポートはどこで設定しますか?
Section titled “Q. ホストアドレスやポートはどこで設定しますか?”配送プロセッサではなく配送設定側で設定します。配送プロセッサから getHostAddress() などを呼ぶと、内部で参照先の配送設定を読み込んで値を返す実装になっています。
Q. 同じ配送業者で複数のアカウントを使い分けられますか?
Section titled “Q. 同じ配送業者で複数のアカウントを使い分けられますか?”はい。配送設定1件に対して配送プロセッサを複数登録し、組織や用途に応じて使い分けられます。使用しないアカウントは「有効」チェックを外してください。
Q. 実装クラスは何を指定すればよいですか?
Section titled “Q. 実装クラスは何を指定すればよいですか?”配送業者ごとのオンライン連携クラス(IShipmentProcessor の実装)を配送設定の「Shipping Processor Class」に指定します。標準では業者固有の実装は同梱されないため、利用する配送業者に合わせたプラグインの開発または導入が必要です。
- 配送設定(Shipping Configuration)の使い方
- 配送業者設定(Shipper Configuration)の使い方
- 配送業者(Shipper)の使い方
- 画面リファレンス: Shipping Processor
🛠 技術仕様(開発者向け)
配送プロセッサはマスタデータ型のウィンドウ(AD_Window_ID: 200024)で、M_ShippingProcessor テーブル(AccessLevel = 3 = Client + Organization、削除可能)に格納されます。MShippingProcessor クラス(139行)は X_M_ShippingProcessor を継承する薄いラッパーで、接続情報のゲッターをすべて参照先の MShippingProcessorCfg に委譲します。Document 型ではありません。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MShippingProcessor {
+getShippingProcessorClass() String
+getHostAddress() String
+getHostPort() int
+getProxyAddress() String
+getProxyPort() int
+getProxyLogon() String
+getProxyPassword() String
+getServicePath() String
}
class MShippingProcessorCfg {
<<config>>
}
class X_M_ShippingProcessor {
<<generated>>
}
class PO {
<<abstract>>
}
class IShipmentProcessor {
<<interface>>
+processShipment(...) boolean
+rateInquiry(...) boolean
+voidShipment(...) boolean
}
MShippingProcessor --|> X_M_ShippingProcessor
X_M_ShippingProcessor --|> PO
MShippingProcessor --> MShippingProcessorCfg : delegates to
MShippingProcessor ..> IShipmentProcessor : credentials for
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MShippingProcessor.java(139行)
関連DBテーブル
Section titled “関連DBテーブル”M_ShippingProcessor(配送プロセッサ)
Section titled “M_ShippingProcessor(配送プロセッサ)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| M_ShippingProcessor_ID | ID | PK | 配送プロセッサID | 主キー |
| AD_Client_ID | Table Direct | Y | テナント | 既定 @#AD_Client_ID@ |
| AD_Org_ID | Table Direct | Y | 組織 | 既定 @#AD_Org_ID@ |
| M_ShippingProcessorCfg_ID | Table Direct(10) | Y | 配送設定FK | 接続先定義への参照 |
| Name | String(60) | Y | 名称 | |
| UserID | String(60) | Y | ユーザーID | 配送業者アカウント |
| ConnectionKey | String(60) | N | 接続キー | |
| ConnectionPassword | String(60) | Y | 接続パスワード | |
| IsActive | Yes-No | Y | 有効 | 既定 Y |
| M_ShippingProcessor_UU | UUID(36) | N | UUID |
erDiagram
M_ShippingProcessorCfg ||--o{ M_ShippingProcessor : "credentials"
M_ShippingProcessorCfg ||--o{ M_ShipperCfg : "shippers"
M_ShipperCfg ||--o{ M_ShipperPackagingCfg : "packaging"
M_ShipperCfg ||--o{ M_ShipperLabelsCfg : "labels"
M_ShipperCfg ||--o{ M_ShipperPickupTypesCfg : "pickup types"
ビジネスロジック
Section titled “ビジネスロジック”MShippingProcessor には beforeSave() / afterSave() のオーバーライドはありません。クラスの実体は接続情報の委譲ゲッター群です。
public String getHostAddress(){ MShippingProcessorCfg cfg = new MShippingProcessorCfg(getCtx(), getM_ShippingProcessorCfg_ID(), get_TrxName()); return cfg.getHostAddress();}getShippingProcessorClass() / getHostAddress() / getHostPort() / getProxyAddress() / getProxyPort() / getProxyLogon() / getProxyPassword() / getServicePath() の8メソッドがすべてこの形式です。
⚠️ 注意: 各ゲッターは呼び出しのたびに
new MShippingProcessorCfg(...)を実行し、DB から設定を読み込みます。キャッシュは行われないため、ループ内で連続呼び出しすると設定テーブルへのクエリが繰り返し発行されます。まとめて使う場合は一度ローカル変数に退避してください。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”IShipmentProcessor の実装(推奨)
Section titled “IShipmentProcessor の実装(推奨)”配送業者のオンライン連携は org.adempiere.model.IShipmentProcessor を実装して追加します。
public interface IShipmentProcessor { boolean processShipment(Properties ctx, MShippingTransaction st, String trxName); boolean rateInquiry(Properties ctx, MShippingTransaction st, boolean isPriviledgedRate, String trxName); boolean voidShipment(Properties ctx, MShippingTransaction st, String trxName);}| メソッド | 用途 |
|---|---|
processShipment | オンラインでの出荷登録・送り状発行 |
rateInquiry | 配送料金の照会 |
voidShipment | 登録済み出荷の取り消し |
実装クラスは IShipmentProcessorFactory(org.adempiere.base)を通じて OSGi サービスとして登録し、配送設定の「Shipping Processor Class」に完全修飾クラス名を指定します。
OSGi Model Validator
Section titled “OSGi Model Validator”public class CustomShippingProcessorValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { if (po instanceof MShippingProcessor && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) { MShippingProcessor sp = (MShippingProcessor) po; // 例: 本番の配送設定には検証済みアカウントのみ許可する if (sp.getUserID() != null && sp.getUserID().startsWith("TEST")) { throw new AdempiereException("テスト用アカウントは本番環境で登録できません"); } } return null; }}Callout
Section titled “Callout”M_ShippingProcessor の各カラムには標準の Callout は設定されていません(AD メタデータ上 Callout 列は空)。
関連プロセス
Section titled “関連プロセス”本ウィンドウ固有の実行プロセスはありません。オンライン処理は出荷伝票側から IShipmentProcessor 実装を経由して呼び出されます。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”国内配送業者(ヤマト運輸・佐川急便・日本郵便など)のオンライン API 連携は、IShipmentProcessor を実装した OSGi プラグインとして追加できます。
送り状発行・料金照会・追跡番号取り込みまで、コア改変なしで組み込み可能です。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。