iDempiere 商品出荷の使い方|販売管理 操作マニュアル・技術仕様
📖 販売管理の全体像: 販売管理の全体図 も合わせてご覧ください。
商品出荷(Commodity Shipment)は、国際出荷の通関に必要な情報を品目単位で登録するマスタです。HS コード(Harmonized Code)と原産国、必要に応じて輸出ライセンス番号を保持し、運送会社との出荷連携で通関書類を作成する際の情報源になります。
📌 ポイント: この画面は「出荷伝票」ではなく、品目ごとの通関属性を1件ずつ登録するマスタです。国際出荷を行う品目について、あらかじめ HS コードと原産国を登録しておく運用になります。
商品出荷でできること
Section titled “商品出荷でできること”- 品目ごとの HS コード(Harmonized Code)の登録
- 原産国(Country Of Manufacture)の指定
- 輸出ライセンス番号(Export License Number)の記録
- 通関上の商品説明の登録
- 使わなくなった通関情報の無効化
商品出荷は単一タブ構成のシンプルなマスタです。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| Commodity Shipment | M_CommodityShipment | 約8項目 | 品目ごとの通関属性 |
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>販売管理 > 出荷納品管理 > Commodity Shipment"] --> B["➕ 新規で登録"]
B --> C["📦 品目を選択"]
C --> D["🔢 Harmonized Code(HSコード)を入力"]
D --> E["🌏 Country Of Manufacture(原産国)を選択"]
E --> F{輸出許可が必要?}
F -->|必要| G["📄 Export License Number を入力"]
F -->|不要| H["📝 説明を入力(任意)"]
G --> H
H --> I["💾 保存"]
I --> J["🚚 国際出荷時の通関情報として利用"]
アクセス方法
Section titled “アクセス方法”メニューから「販売管理 > 出荷納品管理 > Commodity Shipment」を開きます。
- ツールバーの「新規」ボタンをクリック
- 必須項目を入力:
- Harmonized Code: HS コード(30文字まで)。国際的に統一された商品分類コードです
- Country Of Manufacture: 原産国(製造国)
- 必要に応じて追加入力:
- 品目: 対象の品目(
M_Product) - Export License Number: 輸出ライセンス番号(30文字まで)
- 説明: 通関上の商品説明(255文字まで)
- 品目: 対象の品目(
- 「保存」をクリック
⚠️ 注意: 「品目」(
M_Product_ID)はテーブル定義上は必須ではありません。ただし品目を指定しない通関情報は用途が限定されるため、実務では必ず品目を選択して登録してください。
運用のポイント
Section titled “運用のポイント”| 項目 | 実務上の考え方 |
|---|---|
| Harmonized Code | 輸出入統計品目番号(HS コード)。品目分類ごとに税関で定められた番号を使用します |
| Country Of Manufacture | 製造国。原産地規則の判定や特恵関税の適用可否に影響します |
| Export License Number | 輸出許可・承認が必要な貨物の場合に記録します |
| 説明 | インボイスに記載する商品説明として、税関が理解できる具体的な記述を推奨します |
💡 ヒント: HS コードは各国の税関で解釈が分かれることがあります。品目マスタの登録時にあわせて通関情報も整備し、変更履歴を残しておくと、後日の照会や監査で役立ちます。
項目リファレンス
Section titled “項目リファレンス”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| クライアント | 必須 | 選択 | テナント(既定値は現在のクライアント) |
| 組織 | 必須 | 選択 | 組織(既定値は現在の組織) |
| 品目 | - | 検索 | 対象の品目(M_Product) |
| Harmonized Code | 必須 | 文字列(30) | HS コード(統一商品分類コード) |
| Country Of Manufacture | 必須 | 選択 | 原産国(C_Country への参照) |
| Export License Number | - | 文字列(30) | 輸出ライセンス番号 |
| 説明 | - | 文字列(255) | 通関上の商品説明 |
| 有効 | 必須 | チェック | レコードが有効か。既定値 Y |
全項目は 画面リファレンス: 商品出荷 を参照してください。
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 「商品出荷」という名前ですが、出荷伝票ではないのですか?
Section titled “Q. 「商品出荷」という名前ですが、出荷伝票ではないのですか?”出荷伝票ではありません。テーブル M_CommodityShipment は品目ごとの通関属性(HS コード・原産国・輸出ライセンス番号)を保持するマスタで、伝票としての状態(DocStatus)や処理ボタン(DocAction)を持ちません。実際の出荷処理は 出荷伝票 と 出荷パッケージ で行います。
Q. 1つの品目に複数の商品出荷レコードを登録できますか?
Section titled “Q. 1つの品目に複数の商品出荷レコードを登録できますか?”テーブル定義上は品目に対するユニーク制約が確認できないため、複数レコードの登録自体は可能と考えられます(要確認)。ただし、どのレコードが使われるかが曖昧になるため、品目に対して1件を維持し、内容を更新する運用を推奨します。
Q. 原産国はどこから選択しますか?
Section titled “Q. 原産国はどこから選択しますか?”CountryOfManufacture_ID は国マスタ(C_Country)を参照する Table 型の項目です。システム管理の国・地域マスタに登録されている国から選択します。
Q. 出荷伝票に自動で反映されますか?
Section titled “Q. 出荷伝票に自動で反映されますか?”M_CommodityShipment は運送会社連携(Shipping Processor)が通関情報を必要とする際に参照されるマスタです。出荷伝票のヘッダーに自動で転記される標準機能はありません。連携時に必要となる情報を事前に整備しておく、という位置づけになります。
Q. 使わなくなった通関情報を削除できますか?
Section titled “Q. 使わなくなった通関情報を削除できますか?”M_CommodityShipment は削除可能なテーブルです。ただし過去の出荷実績との整合を保つため、削除ではなく「有効」チェックを外して無効化することを推奨します。
🛠 技術仕様(開発者向け)
商品出荷は M_CommodityShipment(アクセスレベル 3 = Client+Org、削除可、高ボリュームではない)に格納されるマスタです。専用のビジネスロジッククラス(MCommodityShipment)は存在せず、自動生成クラス X_M_CommodityShipment(241行)とインタフェース I_M_CommodityShipment のみが提供されます。beforeSave / afterSave などのカスタムロジックはコア側に実装されていません。
Document 型ではなく、DocStatus / DocAction / Processed のいずれも持ちません。純粋な参照マスタです。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class X_M_CommodityShipment {
<<generated>>
+setHarmonizedCode(String)
+getHarmonizedCode() String
+setCountryOfManufacture_ID(int)
+getCountryOfManufacture_ID() int
+setExportLicenseNum(String)
+getExportLicenseNum() String
+setM_Product_ID(int)
+getM_Product() I_M_Product
}
class I_M_CommodityShipment {
<<interface>>
}
class PO {
<<abstract>>
}
class MProduct {
+getM_Product_ID() int
}
X_M_CommodityShipment --|> PO
X_M_CommodityShipment ..|> I_M_CommodityShipment
X_M_CommodityShipment --> MProduct : references
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/X_M_CommodityShipment.java(241行、生成クラス)/ I_M_CommodityShipment.java
関連DBテーブル
Section titled “関連DBテーブル”M_CommodityShipment(商品出荷/通関情報)
Section titled “M_CommodityShipment(商品出荷/通関情報)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| M_CommodityShipment_ID | ID | PK | 商品出荷ID | 主キー |
| M_CommodityShipment_UU | UUID(36) | N | UUID | |
| AD_Client_ID | TableDirect | Y | クライアント | 既定値 @#AD_Client_ID@ |
| AD_Org_ID | TableDirect | Y | 組織 | 既定値 @#AD_Org_ID@ |
| M_Product_ID | Search | N | 品目 | M_Product への参照 |
| HarmonizedCode | String(30) | Y | HS コード | 必須 |
| CountryOfManufacture_ID | Table(10) | Y | 原産国 | C_Country への参照。必須 |
| ExportLicenseNum | String(30) | N | 輸出ライセンス番号 | |
| Description | String(255) | N | 説明 | |
| IsActive | YesNo | Y | 有効 | 既定値 Y |
📌 ポイント: 必須制約は
HarmonizedCodeとCountryOfManufacture_IDの2つだけです。品目(M_Product_ID)は必須ではないため、品目を紐付けないレコードも DB 上は作成できてしまいます。運用ルールまたは Model Validator での制御を推奨します。
erDiagram
M_CommodityShipment }o--o| M_Product : "commodity info for"
M_CommodityShipment }o--|| C_Country : "country of manufacture"
M_Product ||--o{ M_InOutLine : "shipped"
M_InOutLine ||--o{ M_PackageLine : "packed"
M_PackageLine }o--|| M_Package : "package"
ビジネスロジック
Section titled “ビジネスロジック”- モデルクラスのカスタムロジックなし:
M_CommodityShipmentには M クラスが存在せず、X_M_CommodityShipmentがPOを直接継承します。保存時の追加検証(HS コードの書式チェック等)は標準では行われません。 - Callout なし: このテーブルの列に標準の Callout は設定されていません。品目を選択しても説明や原産国が自動転記されることはありません。
- 参照関係:
getM_Product()により品目を、CountryOfManufacture_IDにより国マスタを参照します。いずれも読み取り用のアクセサのみが生成されています。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”品目の必須化や HS コードの書式チェックは Model Validator で追加できます。
public class CustomCommodityShipmentValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { if (po instanceof X_M_CommodityShipment) { X_M_CommodityShipment cs = (X_M_CommodityShipment) po; if (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE) { // 例: 品目を必須にする if (cs.getM_Product_ID() <= 0) { throw new AdempiereException("品目を選択してください"); } // 例: HSコードの書式チェック(数字とピリオドのみ) String hs = cs.getHarmonizedCode(); if (hs != null && !hs.matches("[0-9.]+")) { throw new AdempiereException("Harmonized Code は数字とピリオドで入力してください"); } // 例: 品目ごとに1件だけ許可する if (type == TYPE_BEFORE_NEW) { int cnt = new Query(cs.getCtx(), "M_CommodityShipment", "M_Product_ID=? AND IsActive='Y'", cs.get_TrxName()) .setParameters(cs.getM_Product_ID()) .count(); if (cnt > 0) { throw new AdempiereException("この品目の通関情報は既に登録されています"); } } } } return null; }}Callout の追加
Section titled “Callout の追加”品目選択時に品目マスタの説明を通関説明へ転記する、といった補助動作は独自 Callout で追加できます。AD_Column の Callout 欄に登録してください(このテーブルには標準の Callout がないため、既存記述との競合を気にする必要はありません)。
通関書類との連携
Section titled “通関書類との連携”通関情報を運送会社連携や帳票へ引き渡す場合は、出荷パッケージ の MPackage.processOnline() が生成する MShippingTransaction の実装側で参照する構成になります。出荷処理業者の実装を OSGi サービスとして追加する際に、品目から M_CommodityShipment を引く処理を組み込みます。
関連プロセス
Section titled “関連プロセス”このウィンドウには標準の関連プロセス(ボタン起動のプロセス)は定義されていません。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”輸出入業務では、HS コードの管理やインボイス・パッキングリストの様式が企業ごとに異なります。Model Validator と帳票のカスタマイズで、コア改変なしに通関実務へ適合させられます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。