コンテンツにスキップ

iDempiere 出荷伝票(Shipment)|操作マニュアル・技術仕様

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

出荷伝票は、得意先への商品出荷を記録する伝票です。出荷伝票の完成時に倉庫の在庫が減少し、受注伝票の引当が解除されます。

出荷伝票を起票するには、あらかじめ受注伝票が完成されている必要があります。出荷伝票は倉庫単位で作成され、ピッキングや出荷の確認を「入出荷確認伝票」に記録することもできます。

  • 受注伝票に基づく出荷の記録
  • 在庫の自動引落し(完成時)
  • 出荷確認(ピッキング・パッキング・出荷)の管理
  • パッケージ情報・トラッキング番号の記録
  • 部分出荷(受注数量の一部だけ出荷)への対応
  • 直送(Drop Shipment)の管理

🖥️ インタラクティブ画面レイアウト: AD メタデータから自動生成した 出荷納品伝票の全タブ・全フィールド レイアウト(HTML版) で、実際の画面配置をご確認いただけます。

graph TD
    subgraph "出荷納品伝票ウィンドウ(Window ID: 169)"
        T1["🚚 出荷納品伝票<br/>M_InOut<br/>60項目"]
        T2["📦 出荷納品伝票明細<br/>M_InOutLine<br/>29項目"]
        T3["✅ 確認<br/>M_InOutLineConfirm<br/>11項目"]
        T4["🏷️ 属性<br/>M_InOutLineMA<br/>7項目"]
        T5["📫 パッケージ<br/>M_Package<br/>70項目"]
        T6["📋 MPSライン<br/>M_PackageMPS<br/>17項目"]
        T7["📦 パッケージ明細<br/>M_PackageLine<br/>8項目"]
    end
    T1 --> T2
    T2 --> T3
    T2 --> T4
    T1 --> T5
    T5 --> T6
    T6 --> T7

出荷納品伝票ウィンドウ(Window ID: 169) 出荷納品伝票 M_InOut 60項目 出荷納品伝票明細 M_InOutLine 29項目 確認 M_InOutLineConfirm 11項目 属性 M_InOutLineMA 7項目 パッケージ M_Package 70項目 MPSライン M_PackageMPS 17項目 パッケージ明細 M_PackageLine 8項目

タブ名テーブル役割主な入力項目
出荷納品伝票M_InOutヘッダー情報(得意先・倉庫・日付等)受注伝票、取引先、倉庫、移動日付
出荷納品伝票明細M_InOutLine品目・数量の明細行品目、移動数量、ロケーター
入出荷確認伝票明細M_InOutLineConfirmピッキング・出荷確認の明細確認数量、差異数量
パッケージM_Package出荷パッケージ情報トラッキング番号、重量
graph TD
    S1["① 出荷伝票作成<br/>受注から一括生成 or 手動"] --> S2["② ヘッダー入力<br/>受注伝票・倉庫・日付"]
    S2 --> S3["③ 保存"]
    S3 --> S4["④ 明細タブへ<br/>品目・移動数量・ロケーター"]
    S4 --> S5["⑤ 明細保存"]
    S5 --> S6{全行入力?}
    S6 -->|No| S4
    S6 -->|Yes| S7["⑥ ヘッダーに戻る"]
    S7 --> S8["⑦ 完了処理<br/>伝票アクション → 完了"]
    S8 --> S9["✅ 在庫引落・受注更新"]

① 出荷伝票作成 受注から一括生成 or 手動 ② ヘッダー入力 受注伝票・倉庫・日付 ③ 保存 ④ 明細タブへ 品目・移動数量・ロケーター ⑤ 明細保存 ⑥ ヘッダーに戻る ⑦ 完了処理 伝票アクション → 完了 在庫引落・受注更新 全行入力?

メニューから「販売管理 > 出荷納品管理 > 出荷納品伝票(標準)」を開きます。

通常は個別に出荷伝票を作成するのではなく、受注伝票から一括生成します。

  1. メニュー「販売管理 > 出荷納品管理 > 出荷納品伝票作成」を開く
  2. 対象の倉庫、取引先、受注日等の条件を指定
  3. OK」をクリックして出荷伝票を自動生成
  1. ツールバーの「新規」ボタンをクリック
  2. ヘッダー情報を入力:
    • 伝票タイプ: 出荷伝票を選択
    • 受注伝票: 対象の受注伝票を選択(取引先等が自動セット)
    • 移動日付: 出荷日を入力
    • 倉庫: 出荷元倉庫を確認
  3. 保存」をクリック
  4. 出荷納品伝票明細」タブに移動
  5. 明細行を入力:
    • 品目: 出荷する品目を選択
    • 移動数量: 出荷数量を入力
    • ロケーター: 倉庫内のロケーション(在庫保管場所)
  6. 明細行ごとに「保存」をクリック

📐 画面レイアウト: ヘッダータブのフィールド配置は 画面構成 セクションのレイアウト図を参照してください。

  1. 出荷納品伝票」タブ(ヘッダー)に戻る
  2. 伝票アクション」ボタンをクリック
  3. アクション「完了(Complete)」を選択
  4. OK」をクリック

完了処理により以下が自動実行されます:

  • 在庫の引落し(倉庫から出荷数量分を減算)
  • 受注伝票の引当数量の減算
  • 受注伝票の出荷済数量の更新

⚠️ 注意: 完了後の出荷伝票は直接修正できません。取り消す場合は「無効」処理を実行してください。なお、既に請求書が発行済みの場合は、先に請求書の処理(無効化)が必要です。

📌 ポイント: 出荷伝票の完了により在庫が減少しますが、売上の計上は行われません。売上・売掛金を計上するには、別途「売上請求書」の完了が必要です。

出荷納品伝票タブ(ヘッダー)

Section titled “出荷納品伝票タブ(ヘッダー)”
項目名必須説明
伝票タイプ-選択出荷納品伝票、返品受入伝票 等
受注伝票-検索紐づく受注伝票(選択すると得意先等が自動セット)
移動日付-日付出荷日(在庫移動の日付)
転記日付-日付会計上の転記日付
取引先-検索出荷先の得意先
取引先住所-選択出荷先住所
倉庫-選択出荷元の倉庫
出荷ルール-リスト完全出荷、部分出荷、在庫確認後 等
配送方法-リストピックアップ、配送 等
運送会社-選択配送業者
トラックNo-文字列配送追跡番号
運送料-金額運賃
項目名必須説明
品目-検索出荷する品目
移動数量必須数量出荷数量
ロケーター必須選択倉庫内の保管場所
属性セットインスタンス-選択ロット番号・シリアル番号等
受注伝票明細-検索紐づく受注伝票の明細行
説明-テキスト備考

はい。受注数量の一部だけを出荷伝票に記載して完了できます。残りは次回の出荷伝票で処理します。受注伝票は全数量が出荷されるまで「完了」状態のまま残ります。

完了済みの出荷伝票に対して「無効」処理を実行すると、在庫が戻り、受注伝票の出荷済数量も元に戻ります。既に請求書が発行されている場合は、先に請求書の処理が必要です。

Q. 在庫が足りない場合はどうなりますか?

Section titled “Q. 在庫が足りない場合はどうなりますか?”

出荷ルールの設定により動作が異なります:

  • 完全: 全数量の在庫がないと出荷不可
  • 在庫確認後: 在庫がある分だけ出荷可能
  • 強制: 在庫がなくても出荷可能(マイナス在庫)

💡 ヒント: ロット・シリアル番号で在庫を管理している場合は、明細タブの「属性セットインスタンス」で対象ロットを指定してください。指定しないと出荷完了時にエラーになることがあります。

graph TD
    A[受注伝票] -->|出荷生成| B[出荷伝票]
    B -->|確認| C[入出荷確認]
    B -->|請求| D[売上請求書]
    B -->|在庫更新| E[在庫台帳]

出荷生成 確認 請求 在庫更新 受注伝票 出荷伝票 入出荷確認 売上請求書 在庫台帳


iDempiereの出荷管理は、在庫引当・ピッキング確認・パッケージ管理まで対応した本格的な物流管理機能を提供します。

As-Link株式会社では、iDempiereの導入支援・カスタマイズ開発を承っております。

OSS ERP導入サービスの詳細はこちら


🛠 技術仕様(開発者向け)

出荷伝票は Document 型の伝票で、M_InOut テーブルに格納されます。販売出荷(MovementType=C-)と購買入荷(MovementType=V+)の両方で共用されます。MInOut クラス(3,644行)が中核ビジネスロジックを担い、DocAction および IDocsPostProcess インターフェースを実装しています。

classDiagram
    class MInOut {
        +prepareIt() String
        +completeIt() String
        +voidIt() boolean
        +closeIt() boolean
        +reverseCorrectIt() boolean
        +createConfirmation() MInOutConfirm
    }
    class X_M_InOut {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    class DocAction {
        <<interface>>
    }
    class IDocsPostProcess {
        <<interface>>
    }
    MInOut --|> X_M_InOut
    X_M_InOut --|> PO
    MInOut ..|> DocAction
    MInOut ..|> IDocsPostProcess
    MInOut --> MInOutLine : has many
    MInOut --> MInOutConfirm : has many

+prepareIt() String +completeIt() String +voidIt() boolean +closeIt() boolean +reverseCorrectIt() boolean +createConfirmation() MInOutConfirm <> <> <> > X_M_InOut X_M_InOut -- > DocAction MInOut ..

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MInOut.java

出荷・入荷の両方で使用。MovementTypeIsSOTrx カラムで区別。

⚠️ 注意: M_InOut テーブルは出荷(IsSOTrx=Y, MovementType=C-)と入荷(IsSOTrx=N, MovementType=V+)で共用されています。カスタムバリデーターでは inout.isSOTrx() による分岐を必ず行い、販売・購買それぞれの処理に絞り込んでください。

カラム名必須説明備考
M_InOut_IDIDPK出荷/入荷ID主キー
AD_Client_IDTableDirectYクライアント
AD_Org_IDTableDirectY組織
IsSOTrxYesNoY販売取引フラグY=出荷, N=入荷
DocumentNoStringY伝票番号
C_DocType_IDTableDirectY伝票タイプ
DocStatusListY伝票状態DR/IP/CO/CL/VO/RE
DocActionButtonY伝票アクション
MovementTypeListY移動タイプC-=出荷, V+=入荷
MovementDateDateY移動日付
DateAcctDateY転記日付
C_BPartner_IDSearchY取引先
C_BPartner_Location_IDTableDirectY取引先住所
M_Warehouse_IDTableDirectY倉庫
C_Order_IDSearchN受注伝票受注からの出荷時に設定
DeliveryRuleListY出荷ルールF/C/A/M/L/O
FreightCostRuleListY運賃ルール
C_Invoice_IDSearchN請求書
ProcessedYesNoY処理済み
PostedButtonY転記
カラム名必須説明
M_InOutLine_IDIDPK明細ID
M_InOut_IDSearchYヘッダーFK
LineIntegerY行番号
M_Product_IDSearchN品目
M_Locator_IDTableDirectYロケーター
MovementQtyQuantityY移動数量
QtyEnteredQuantityY入力数量
C_OrderLine_IDSearchN受注明細FK
M_AttributeSetInstance_IDPAttributeN属性セットインスタンス
erDiagram
    M_InOut ||--o{ M_InOutLine : "has"
    M_InOut ||--o{ M_InOutConfirm : "has"
    M_InOut }o--|| C_BPartner : "references"
    M_InOut }o--|| M_Warehouse : "references"
    M_InOut }o--|| C_DocType : "references"
    M_InOut }o--o| C_Order : "references"
    M_InOutLine }o--|| M_Locator : "stored at"
    M_InOutLine }o--o| M_Product : "references"
    M_InOutLine }o--o| C_OrderLine : "references"
    M_InOut ||--o{ C_Invoice : "generates"
    M_InOut ||--o{ M_PackageMPS : "packages"

stored at

  1. ModelValidator.TIMING_BEFORE_PREPARE イベント発火
  2. 会計期間のオープンチェック
  3. 明細行の存在チェック(0行は不可)
  4. 各明細行の品目・ロケーター妥当性チェック
  5. 出荷確認(Confirmation)の生成
  6. ModelValidator.TIMING_AFTER_PREPARE イベント発火
  1. ModelValidator.TIMING_BEFORE_COMPLETE イベント発火
  2. 出荷確認の完了チェック
  3. 在庫の引落/増加MStorageOnHand の更新)
  4. 受注の出荷済数量(QtyDelivered)更新
  5. 受注引当数量(QtyReserved)の解放
  6. 請求書の自動生成(請求ルールに応じて)
  7. パッケージ管理の更新
  8. ModelValidator.TIMING_AFTER_COMPLETE イベント発火

📌 ポイント: completeIt() 内の在庫引落(ステップ3)は MStorageOnHand テーブルを直接更新します。在庫関連のカスタムロジックは TIMING_AFTER_COMPLETE タイミングで追加することで、コアの在庫更新処理が完了した後の確実な状態で動作させることができます。

stateDiagram-v2
    [*] --> Drafted : 新規作成
    Drafted --> InProgress : prepareIt()
    InProgress --> Completed : completeIt()
    Completed --> Closed : closeIt()
    Completed --> Voided : voidIt()
    Completed --> Reversed : reverseCorrectIt()
    Drafted --> Voided : voidIt()

*

  1. 出荷済みの場合は在庫を戻す(逆仕訳)
  2. 受注の出荷済数量・引当数量をリセット
  3. 各明細行の数量を0にセット
Calloutクラスメソッドトリガーフィールド処理内容
CalloutInOutorderC_Order_ID受注情報の自動セット(取引先、倉庫等)
CalloutInOutdocTypeC_DocType_ID伝票タイプに応じた初期値セット
CalloutInOutbpartnerC_BPartner_ID取引先住所の自動セット
CalloutInOutwarehouseM_Warehouse_ID倉庫変更時のロケーター更新
CalloutInOutproductM_Product_ID品目情報の自動セット(UOM等)
CalloutInOutqtyMovementQty数量変更時の単位変換
CalloutInOutasiM_AttributeSetInstance_ID属性セットの処理

Calloutソース: org.adempiere.base.callout/src/org/compiere/model/CalloutInOut.java

💡 ヒント: IColumnCallout を実装した OSGi プラグインで追加 Callout を登録可能です。品目選択時(M_Product_ID)にロット管理や賞味期限チェックを追加する場合は、CalloutInOut.product に連鎖させるより独立した Callout として実装するほうが保守性が高くなります。

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

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

出荷伝票に独自バリデーションや後処理を追加する最も安全な方法:

public class CustomShipmentValidator implements ModelValidator {
@Override
public String docValidate(PO po, int timing) {
if (po instanceof MInOut) {
MInOut inout = (MInOut) po;
if (inout.isSOTrx() && timing == TIMING_BEFORE_COMPLETE) {
// 例: ピッキング確認チェック
MInOutConfirm[] confirms = inout.getConfirmations(false);
for (MInOutConfirm confirm : confirms) {
if (!confirm.isProcessed()) {
return "出荷確認が未完了です";
}
}
}
}
return null;
}
}

IColumnCallout インターフェースを実装し、品目選択時のロット管理やシリアル番号チェックを追加可能。

🔧 カスタマイズ: voidIt() をカスタマイズする場合は Fragment よりも Model Validator の TIMING_BEFORE_VOID / TIMING_AFTER_VOID タイミングを活用してください。コアの在庫戻しロジックは変更せずに、独自の補正処理(外部WMS連携など)を安全に追加できます。

出荷伝票に紐づくバッチ処理(一括出荷、ピッキングリスト出力等)を SvrProcess で実装。

プロセス名説明
伝票アクション (DocAction)伝票の完了・無効・取消等
受注から出荷伝票生成受注伝票から出荷伝票を一括生成
出荷確認ピッキング・出荷の確認処理

iDempiereの出荷伝票は Model Validator や Callout で安全にカスタマイズできます。 在庫引落ロジックやピッキング確認フローをコア改変なしで拡張可能です。

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

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