コンテンツにスキップ

iDempiere 商品出荷の使い方|販売管理 操作マニュアル・技術仕様

📖 販売管理の全体像: 販売管理の全体図 も合わせてご覧ください。

商品出荷(Commodity Shipment)は、国際出荷の通関に必要な情報を品目単位で登録するマスタです。HS コード(Harmonized Code)と原産国、必要に応じて輸出ライセンス番号を保持し、運送会社との出荷連携で通関書類を作成する際の情報源になります。

📌 ポイント: この画面は「出荷伝票」ではなく、品目ごとの通関属性を1件ずつ登録するマスタです。国際出荷を行う品目について、あらかじめ HS コードと原産国を登録しておく運用になります。

  • 品目ごとの HS コード(Harmonized Code)の登録
  • 原産国(Country Of Manufacture)の指定
  • 輸出ライセンス番号(Export License Number)の記録
  • 通関上の商品説明の登録
  • 使わなくなった通関情報の無効化

商品出荷は単一タブ構成のシンプルなマスタです。

タブ名テーブル項目数役割
Commodity ShipmentM_CommodityShipment約8項目品目ごとの通関属性
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["🚚 国際出荷時の通関情報として利用"]

メニューから開く 販売管理 > 出荷納品管理 > Commodity Shipment 新規で登録 品目を選択 Harmonized Code(HSコード)を入力 Country Of Manufacture(原産国)を選択 Export License Number を入力 説明を入力(任意) 保存 国際出荷時の通関情報として利用 輸出許可が必要? 必要 不要

メニューから「販売管理 > 出荷納品管理 > Commodity Shipment」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. 必須項目を入力:
    • Harmonized Code: HS コード(30文字まで)。国際的に統一された商品分類コードです
    • Country Of Manufacture: 原産国(製造国)
  3. 必要に応じて追加入力:
    • 品目: 対象の品目(M_Product
    • Export License Number: 輸出ライセンス番号(30文字まで)
    • 説明: 通関上の商品説明(255文字まで)
  4. 保存」をクリック

⚠️ 注意: 「品目」(M_Product_ID)はテーブル定義上は必須ではありません。ただし品目を指定しない通関情報は用途が限定されるため、実務では必ず品目を選択して登録してください。

項目実務上の考え方
Harmonized Code輸出入統計品目番号(HS コード)。品目分類ごとに税関で定められた番号を使用します
Country Of Manufacture製造国。原産地規則の判定や特恵関税の適用可否に影響します
Export License Number輸出許可・承認が必要な貨物の場合に記録します
説明インボイスに記載する商品説明として、税関が理解できる具体的な記述を推奨します

💡 ヒント: HS コードは各国の税関で解釈が分かれることがあります。品目マスタの登録時にあわせて通関情報も整備し、変更履歴を残しておくと、後日の照会や監査で役立ちます。

項目名必須説明
クライアント必須選択テナント(既定値は現在のクライアント)
組織必須選択組織(既定値は現在の組織)
品目-検索対象の品目(M_Product
Harmonized Code必須文字列(30)HS コード(統一商品分類コード)
Country Of Manufacture必須選択原産国(C_Country への参照)
Export License Number-文字列(30)輸出ライセンス番号
説明-文字列(255)通関上の商品説明
有効必須チェックレコードが有効か。既定値 Y

全項目は 画面リファレンス: 商品出荷 を参照してください。

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 のいずれも持ちません。純粋な参照マスタです。

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

<> +setHarmonizedCode(String) +getHarmonizedCode() String +setCountryOfManufacture_ID(int) +getCountryOfManufacture_ID() int +setExportLicenseNum(String) +getExportLicenseNum() String +setM_Product_ID(int) +getM_Product() I_M_Product <> <> +getM_Product_ID() int > PO X_M_CommodityShipment ..

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/X_M_CommodityShipment.java(241行、生成クラス)/ I_M_CommodityShipment.java

M_CommodityShipment(商品出荷/通関情報)

Section titled “M_CommodityShipment(商品出荷/通関情報)”
カラム名必須説明備考
M_CommodityShipment_IDIDPK商品出荷ID主キー
M_CommodityShipment_UUUUID(36)NUUID
AD_Client_IDTableDirectYクライアント既定値 @#AD_Client_ID@
AD_Org_IDTableDirectY組織既定値 @#AD_Org_ID@
M_Product_IDSearchN品目M_Product への参照
HarmonizedCodeString(30)YHS コード必須
CountryOfManufacture_IDTable(10)Y原産国C_Country への参照。必須
ExportLicenseNumString(30)N輸出ライセンス番号
DescriptionString(255)N説明
IsActiveYesNoY有効既定値 Y

📌 ポイント: 必須制約は HarmonizedCodeCountryOfManufacture_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"

commodity info for country of manufacture

  • モデルクラスのカスタムロジックなし: M_CommodityShipment には M クラスが存在せず、X_M_CommodityShipmentPO を直接継承します。保存時の追加検証(HS コードの書式チェック等)は標準では行われません。
  • Callout なし: このテーブルの列に標準の Callout は設定されていません。品目を選択しても説明や原産国が自動転記されることはありません。
  • 参照関係: getM_Product() により品目を、CountryOfManufacture_ID により国マスタを参照します。いずれも読み取り用のアクセサのみが生成されています。

拡張ポイント(カスタマイズ箇所)

Section titled “拡張ポイント(カスタマイズ箇所)”

品目の必須化や 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 で追加できます。AD_Column の Callout 欄に登録してください(このテーブルには標準の Callout がないため、既存記述との競合を気にする必要はありません)。

通関情報を運送会社連携や帳票へ引き渡す場合は、出荷パッケージMPackage.processOnline() が生成する MShippingTransaction の実装側で参照する構成になります。出荷処理業者の実装を OSGi サービスとして追加する際に、品目から M_CommodityShipment を引く処理を組み込みます。

このウィンドウには標準の関連プロセス(ボタン起動のプロセス)は定義されていません。


輸出入業務では、HS コードの管理やインボイス・パッキングリストの様式が企業ごとに異なります。Model Validator と帳票のカスタマイズで、コア改変なしに通関実務へ適合させられます。

As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。

OSS ERP導入・カスタマイズサービスの詳細はこちら