Skip to content

iDempiere 保管場所タイプの使い方|在庫管理 操作マニュアル・技術仕様

This content is not available in your language yet.

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

保管場所タイプは、倉庫内の保管場所(ロケーター)を用途で分類し、補充・予約・出荷それぞれに使ってよいかどうかを制御するマスタです。「検査待ちエリアの在庫は受注引当に使わせない」「不良品置場は出荷対象外にする」といった運用を、保管場所ごとにフラグで表現できます。

📌 ポイント: 補充可能・予約可能・運送可能の3フラグはいずれも**初期値が Y(有効)**です。制限をかけたいタイプでは意識的にチェックを外す必要があります。

  • 保管場所の用途分類(良品倉庫・検査待ち・不良品置場・返品保留など)の定義
  • 補充可能フラグによる補充計算対象からの除外
  • 予約可能フラグによる受注引当対象からの除外
  • 運送可能フラグによる出荷対象からの除外
  • コメント欄による運用ルールの記述
  • 有効/無効の切り替えによるタイプの廃止

保管場所タイプは単一タブのシンプルなマスタです。

タブ名テーブル項目数役割
保管場所タイプM_LocatorType9項目タイプ名と3つの用途フラグ

💡 ヒント: 保管場所タイプ自体は保管場所を持ちません。定義したタイプは、倉庫ウィンドウの保管場所タブから各保管場所に割り当てて使用します。

graph TD
    A["📂 メニューから<br/>保管場所タイプを開く"] --> B["➕ 新規<br/>名称を入力"]
    B --> C["📝 説明・コメントで<br/>運用ルールを記述"]
    C --> D{"用途の制限"}
    D -->|"補充対象外"| E["☐ 補充可能のチェックを外す"]
    D -->|"引当対象外"| F["☐ 予約可能のチェックを外す"]
    D -->|"出荷対象外"| G["☐ 運送可能のチェックを外す"]
    D -->|"制限なし"| H["☑ 3つとも有効のまま"]
    E --> I["💾 保存"]
    F --> I
    G --> I
    H --> I
    I --> J["🏬 倉庫ウィンドウの保管場所に<br/>タイプを割り当て"]

メニューから 保管場所タイプを開く 新規 名称を入力 説明・コメントで 運用ルールを記述 用途の制限 補充対象外 補充可能のチェックを外す 引当対象外 予約可能のチェックを外す 出荷対象外 運送可能のチェックを外す 制限なし 3つとも有効のまま 保存 倉庫ウィンドウの保管場所に タイプを割り当て

アクセス方法(メニューパス)

Section titled “アクセス方法(メニューパス)”

メニューから「在庫管理 > 品目マスタ管理 > 保管場所タイプ」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. 以下を入力:
    • 名称: 保管場所タイプ名(必須・60桁。例: 検査待ち
    • 説明: 概要(任意・255桁)
    • コメント: 運用上の注意点(任意・2000桁)
  3. 用途フラグを設定(いずれも初期値はチェック ON):
    • 補充可能: 補充計算の対象に含める場合はチェックのまま
    • 予約可能: 受注引当・予約の対象に含める場合はチェックのまま
    • 運送可能: 出荷の対象に含める場合はチェックのまま
  4. 保存」をクリック
  5. 倉庫・保管場所 ウィンドウを開き、各保管場所に作成したタイプを割り当てます

⚠️ 注意: 3つのフラグはいずれも既定値が Y です。新規作成した保管場所タイプは、何もしなければ「補充も予約も出荷も可能」な通常タイプとして動作します。制限用のタイプを作る場合は保存前にチェックを外してください。

項目名必須説明
クライアント必須選択テナント
組織必須選択組織
名称必須文字列保管場所タイプ名(60桁)
説明-文字列概要(255桁)
コメント-テキスト運用ルール等の補足(2000桁)
補充可能必須チェック補充計算の対象にするか(初期値 Y)
予約可能必須チェック引当・予約の対象にするか(初期値 Y)
運送可能必須チェック出荷の対象にするか(初期値 Y)
有効必須チェックアクティブ(初期値 Y)

全項目一覧はリファレンスを参照

保管場所タイプ補充可能予約可能運送可能想定用途
標準通常の良品保管エリア
検査待ち---受入検査中で引当も出荷もさせない
不良品置場---廃棄・返品待ちの在庫
出荷準備-引当・出荷はできるが補充計算の対象外
補充専用バッファ--補充元としてのみ使用する

📌 ポイント: 上表は3フラグの組み合わせから構成できる運用例です。実際にどのタイプを用意するかは倉庫オペレーションに合わせて設計してください。

graph TD
    A["保管場所タイプ<br/>M_LocatorType"] --> B["保管場所(ロケーター)<br/>M_Locator"]
    B --> C["倉庫<br/>M_Warehouse"]
    B --> D["在庫数量<br/>M_StorageOnHand"]
    D --> E["受注引当・予約"]
    D --> F["出荷"]
    D --> G["補充計算"]
    A -.>|"予約可能フラグ"| E
    A -.>|"運送可能フラグ"| F
    A -.>|"補充可能フラグ"| G

保管場所タイプ M_LocatorType 保管場所(ロケーター) M_Locator 倉庫 M_Warehouse 在庫数量 M_StorageOnHand 受注引当・予約 出荷 補充計算 予約可能フラグ 運送可能フラグ 補充可能フラグ E A -.> F A -.>

Q. 保管場所タイプは必須ですか?

Section titled “Q. 保管場所タイプは必須ですか?”

保管場所(M_Locator)側で保管場所タイプの指定は必須ではありません。指定しない場合は用途制限のない通常の保管場所として扱われます。制限が必要なエリアだけタイプを作成して割り当てる運用で問題ありません。

Q. 「予約可能」のチェックを外すと何が起きますか?

Section titled “Q. 「予約可能」のチェックを外すと何が起きますか?”

その保管場所タイプが割り当てられた保管場所の在庫は、受注引当・予約の対象から除外されます。検査待ちや品質保留の在庫を誤って受注に引き当てないようにする用途で使います。

Q. すでに割り当て済みのタイプのフラグを変更したらどうなりますか?

Section titled “Q. すでに割り当て済みのタイプのフラグを変更したらどうなりますか?”

以後の補充計算・引当・出荷の判定に即座に反映されます。既に成立済みの引当や出荷済み伝票が遡って取り消されることはありません。フラグ変更は在庫オペレーションへの影響が大きいため、変更前に対象保管場所と在庫残を確認してください。

Q. 保管場所タイプを削除できますか?

Section titled “Q. 保管場所タイプを削除できますか?”

テーブル定義上は削除可能ですが、保管場所から参照されているタイプは削除できません。使わなくなったタイプは「有効」チェックを外して無効化してください。

Q. 名称以外に一意コード(検索キー)はありますか?

Section titled “Q. 名称以外に一意コード(検索キー)はありますか?”

M_LocatorType には検索キー(Value)カラムがありません。識別は名称で行うため、名称の重複を避ける命名ルールを決めておくことを推奨します。

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

保管場所タイプはマスタデータ型のウィンドウ(AD_Window_ID: 200074)で、M_LocatorType テーブル(AccessLevel = 3 = Client + Organization、削除可能)に格納されます。MLocatorType クラス(171行)は ImmutablePOSupport を実装し、MLocatorType.get(M_LocatorType_ID) によるキャッシュ経由の参照をサポートします。Document 型ではなく、beforeSave() / afterSave() のオーバーライドもありません。

classDiagram
    class MLocatorType {
        +get(int)$ MLocatorType
        +get(Properties, int)$ MLocatorType
        +toString() String
        +markImmutable() MLocatorType
    }
    class X_M_LocatorType {
        <<generated>>
        +isAvailableForReplenishment() boolean
        +isAvailableForReservation() boolean
        +isAvailableForShipping() boolean
    }
    class PO {
        <<abstract>>
    }
    class ImmutablePOSupport {
        <<interface>>
    }
    MLocatorType --|> X_M_LocatorType
    X_M_LocatorType --|> PO
    MLocatorType ..|> ImmutablePOSupport
    MLocator --> MLocatorType : typed by

+get(int)$ MLocatorType +get(Properties, int)$ MLocatorType +toString() String +markImmutable() MLocatorType <> +isAvailableForReplenishment() boolean +isAvailableForReservation() boolean +isAvailableForShipping() boolean <> <> > X_M_LocatorType X_M_LocatorType --

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MLocatorType.java(171行)

カラム名必須説明備考
M_LocatorType_IDIDPK保管場所タイプID主キー・更新不可
AD_Client_IDTable DirectYテナント既定 @#AD_Client_ID@・更新不可
AD_Org_IDTable DirectY組織既定 @#AD_Org_ID@・更新不可
NameString(60)Y名称
DescriptionString(255)N説明
HelpText(2000)Nコメント
IsAvailableForReplenishmentYes-NoY補充可能既定 Y
IsAvailableForReservationYes-NoY予約可能既定 Y
IsAvailableForShippingYes-NoY運送可能既定 Y
IsActiveYes-NoY有効既定 Y
M_LocatorType_UUUUID(36)NUUID

📌 ポイント: M_LocatorType には Value(検索キー)カラムが存在しません。マスタ系テーブルとしては珍しい構成で、識別子は Name のみです。外部システム連携でコードによるマッピングが必要な場合は、AD で Value 列を追加するか、Description に規約を持たせる設計が必要です。

erDiagram
    M_LocatorType ||--o{ M_Locator : "types"
    M_Locator }o--|| M_Warehouse : "belongs to"
    M_Locator ||--o{ M_StorageOnHand : "stock"
    M_Locator ||--o{ M_InOutLine : "in/out"
    M_Locator ||--o{ M_MovementLine : "moved"

belongs to in/out

MLocatorType はキャッシュ付きの参照とコピーコンストラクタ群のみを提供する軽量クラスです。用途フラグの評価ロジックはこのクラス側ではなく、在庫の引当・補充・出荷を行う各処理側が isAvailableForReservation() / isAvailableForReplenishment() / isAvailableForShipping() を参照して判定します。

メソッド用途
get(int M_LocatorType_ID)静的キャッシュ経由で取得(推奨)
get(Properties ctx, int M_LocatorType_ID)コンテキスト指定で取得
markImmutable()読み取り専用インスタンス化
toString()デバッグ用の文字列表現

💡 ヒント: 保管場所ごとの判定は在庫処理のループ内で頻繁に発生します。new MLocatorType(...) ではなく MLocatorType.get() を使ってキャッシュを効かせてください。

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

Section titled “拡張ポイント(カスタマイズ箇所)”
public class CustomLocatorTypeValidator implements ModelValidator {
@Override
public int modelChange(PO po, int type) throws Exception {
if (po instanceof MLocatorType
&& (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) {
MLocatorType lt = (MLocatorType) po;
// 例: 名称の重複を禁止する(Value カラムが無いため名称で一意性を担保)
int cnt = new Query(lt.getCtx(), MLocatorType.Table_Name,
"UPPER(Name)=UPPER(?) AND M_LocatorType_ID<>?", lt.get_TrxName())
.setClient_ID()
.setParameters(lt.getName(), lt.get_ID())
.count();
if (cnt > 0) {
throw new AdempiereException("同名の保管場所タイプが既に存在します");
}
}
return null;
}
}

保管場所タイプのフラグでは表現できない制御(例: 特定品目カテゴリのみ保管可能)を追加したい場合は、M_Locator に対する Model Validator、または M_InOutLine / M_MovementLineTYPE_BEFORE_NEW で保管場所タイプを参照した検証を実装します。

if (po instanceof MInOutLine && type == TYPE_BEFORE_NEW) {
MInOutLine line = (MInOutLine) po;
MLocator loc = MLocator.get(line.getCtx(), line.getM_Locator_ID());
if (loc.getM_LocatorType_ID() > 0) {
MLocatorType lt = MLocatorType.get(loc.getM_LocatorType_ID());
if (!lt.isAvailableForShipping()) {
throw new AdempiereException("この保管場所からは出荷できません: " + lt.getName());
}
}
}

M_LocatorType の各カラムには標準の Callout は設定されていません(AD メタデータ上 Callout 列は空)。

本ウィンドウ固有の実行プロセスはありません。定義した保管場所タイプは倉庫ウィンドウの保管場所タブから割り当てて使用します。


保管場所タイプの3フラグだけでは表現しきれない在庫の用途制御(品質保留・危険物区分・温度帯管理など)も、 Model Validator と AD の列追加により、コア改変なしで実装できます。

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

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