iDempiere シリアルNo管理の使い方|在庫管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 在庫管理の全体像: 在庫管理の業務フロー全体図 も合わせてご覧ください。
シリアルNo管理は、品目のシリアル番号を自動採番するためのルール(接頭辞・開始番号・増加数・接尾辞)を定義するマスタです。属性セット(M_AttributeSet)の「シリアルNo管理」として参照され、シリアル番号管理対象の品目に対して連番のシリアルNoを自動生成します。
📌 ポイント: シリアルNo管理は単体では機能しません。属性セット(M_AttributeSet)の
M_SerNoCtl_IDに紐付け、その属性セットを品目マスタに設定することで、入出荷時のシリアルNo自動採番が有効になります。
シリアルNo管理でできること
Section titled “シリアルNo管理でできること”- シリアル番号の自動採番ルール定義(開始番号・増加数)
- 接頭辞・接尾辞による番号フォーマットの指定(例:
SN-100-A) - 次に採番される番号(次の番号)の管理
- 除外タブによる、特定テーブル・取引方向(販売/購買)でのシリアルNo採番の抑止
シリアルNo管理はシンプルな2タブ構成です。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| シリアルNo管理 | M_SerNoCtl | 約10項目 | 採番ルール本体(開始番号・増加数・接頭辞・接尾辞) |
| 除外 | M_SerNoCtlExclude | 約6項目 | シリアルNo作成を除外するテーブル・取引方向の指定 |
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>在庫管理 > 品目属性管理 > シリアルNo管理"] --> B["➕ 新規で名称を入力"]
B --> C["🔢 開始番号・増加数・次の番号を設定<br/>(デフォルト: 100 / 1 / 100)"]
C --> D["🏷️ 必要に応じて接頭辞・接尾辞を設定"]
D --> E["💾 保存"]
E --> F["🔗 属性セットのシリアルNo管理に設定<br/>(シリアルNoフラグ ON)"]
F --> G["📦 品目マスタに属性セットを設定<br/>→ 入出荷時に自動採番"]
アクセス方法
Section titled “アクセス方法”メニューから「在庫管理 > 品目属性管理 > シリアルNo管理」を開きます。
- ツールバーの「新規」ボタンをクリック
- 基本情報を入力:
- 名称: 採番ルールの名称(例:
製品シリアル採番) - 開始番号: 採番の起点となる番号(デフォルト:
100) - 増加数: 採番ごとに加算する数(デフォルト:
1) - 次の番号: 次に採番される番号(デフォルト:
100。運用中はシステムが自動更新) - 接頭辞 / 接尾辞: 番号の前後に付ける文字列(任意。例: 接頭辞
SN-)
- 名称: 採番ルールの名称(例:
- 「保存」をクリック
採番結果は「接頭辞 + 次の番号 + 接尾辞」の形式になります(例: 接頭辞 SN-、次の番号 100、接尾辞 -A → SN-100-A)。
特定の画面(テーブル)・取引方向ではシリアルNoの新規作成をさせたくない場合に使用します。
- 「除外」タブに移動
- テーブル: シリアルNo作成を除外するテーブルを選択
- 販売(ON) / 購買(OFF): 除外を適用する取引方向を指定
- 「保存」をクリック
⚠️ 注意: 除外設定の情報はキャッシュされます。設定を反映させるには再ログインまたはキャッシュリセットが必要です(リファレンスページの記載どおり)。
項目リファレンス
Section titled “項目リファレンス”シリアルNo管理タブ
Section titled “シリアルNo管理タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 名称 | 必須 | 文字列 | 採番ルールの名称 |
| 説明 | - | 文字列 | 補足説明 |
| 開始番号 | 必須 | 整数 | 採番の起点(デフォルト 100) |
| 増加数 | 必須 | 整数 | 採番ごとの加算値(デフォルト 1) |
| 次の番号 | 必須 | 整数 | 次に使用される番号(デフォルト 100) |
| 接頭辞 | - | 文字列 | 番号の前に付ける文字列(最大10文字) |
| 接尾辞 | - | 文字列 | 番号の後に付ける文字列(最大10文字) |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 複数ユーザーが同時に入荷処理をしても番号は重複しませんか?
Section titled “Q. 複数ユーザーが同時に入荷処理をしても番号は重複しませんか?”重複しません。採番処理(MSerNoCtl.createSerNo())は「次の番号」カラムに対する楽観的ロックを使用しており、競合が発生した場合は 500ms 待機して最大3回リトライします。3回とも失敗した場合のみエラーになります。
Q. 除外タブを設定したのにシリアルNo作成ボタンが消えません
Section titled “Q. 除外タブを設定したのにシリアルNo作成ボタンが消えません”除外情報はキャッシュされるため、即時には反映されません。再ログインするか、キャッシュリセットを実行してください。
Q. 「開始番号」と「次の番号」の違いは何ですか?
Section titled “Q. 「開始番号」と「次の番号」の違いは何ですか?”「開始番号」は採番ルールの起点を記録する項目、「次の番号」が実際に次回採番で使用される値です。採番のたびに「次の番号」に増加数が加算されて更新されます。採番を任意の番号から再開したい場合は「次の番号」を変更します。
- 品目マスタ(Product)の使い方 — 属性セット経由でシリアルNo管理を適用
- 属性(Attribute)の使い方
- 画面リファレンス: シリアルNo管理
🛠 技術仕様(開発者向け)
シリアルNo管理はマスタデータ型のウィンドウ(AD_Window_ID: 259)で、M_SerNoCtl テーブル(採番ルール)と M_SerNoCtlExclude テーブル(除外定義)で構成されます。モデルクラスは MSerNoCtl(153行)と MSerNoCtlExclude(95行)です。Document 型ではなく、DocAction/DocStatus はありません。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MSerNoCtl {
+createSerNo() String
}
class MSerNoCtlExclude {
+MSerNoCtlExclude(ctx, id, trxName)
}
class X_M_SerNoCtl {
<<generated>>
}
class X_M_SerNoCtlExclude {
<<generated>>
}
class PO {
<<abstract>>
}
MSerNoCtl --|> X_M_SerNoCtl
MSerNoCtlExclude --|> X_M_SerNoCtlExclude
X_M_SerNoCtl --|> PO
X_M_SerNoCtlExclude --|> PO
MSerNoCtl <-- MSerNoCtlExclude : M_SerNoCtl_ID
MSerNoCtl <-- MAttributeSet : M_SerNoCtl_ID
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MSerNoCtl.java / MSerNoCtlExclude.java
関連DBテーブル
Section titled “関連DBテーブル”M_SerNoCtl(シリアルNo管理)
Section titled “M_SerNoCtl(シリアルNo管理)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| M_SerNoCtl_ID | ID | PK | シリアルNo管理ID | 主キー |
| AD_Client_ID | TableDirect | Y | クライアント | |
| AD_Org_ID | TableDirect | Y | 組織 | |
| Name | String(60) | Y | 名称 | 識別子 |
| Description | String(255) | N | 説明 | |
| StartNo | Integer | Y | 開始番号 | デフォルト 100 |
| IncrementNo | Integer | Y | 増加数 | デフォルト 1 |
| CurrentNext | Integer | Y | 次の番号 | デフォルト 100 |
| Prefix | String(10) | N | 接頭辞 | |
| Suffix | String(10) | N | 接尾辞 |
M_SerNoCtlExclude(除外)
Section titled “M_SerNoCtlExclude(除外)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| M_SerNoCtlExclude_ID | ID | PK | 除外ID | 主キー |
| M_SerNoCtl_ID | TableDirect | Y | シリアルNo管理FK | 親リンク |
| AD_Table_ID | TableDirect | Y | 対象テーブル | 除外するテーブル |
| IsSOTrx | YesNo | Y | 販売取引フラグ | 販売=Y / 購買=N |
テーブル属性: M_SerNoCtl はアクセスレベル 3(Client+Org)、M_SerNoCtlExclude は 2(Client)。いずれも削除可能・ビューではありません。
ビジネスロジック
Section titled “ビジネスロジック”createSerNo()(採番処理)
Section titled “createSerNo()(採番処理)”MSerNoCtl.createSerNo() の処理(ソース根拠):
CurrentNextカラムを楽観的ロック対象に設定(set_OptimisticLockingColumns+set_UseOptimisticLocking(true))- 最大3回のリトライループ。各試行でレコードを再ロードし、トランザクション中なら Savepoint を作成
Prefix + CurrentNext + Suffixを連結してシリアルNo文字列を生成CurrentNextにIncrementNoを加算してsaveEx()(ここで楽観的ロック競合を検出)- 競合時は Savepoint までロールバックし 500ms 待機して再試行。3回目の失敗で例外を送出
MSerNoCtlExclude はコンストラクタとコピーコンストラクタのみで、独自のビジネスロジックは持ちません(除外判定は参照側でキャッシュされます)。
拡張ポイント
Section titled “拡張ポイント”- Model Validator:
M_SerNoCtlの保存前後に独自制約(例: 接頭辞の命名規則チェック)を追加できます。コア改変は不要です。 - Callout: gw_column.tsv 上、本テーブルに標準の Callout は定義されていません。
- 採番フォーマット自体を大きく変えたい場合は、
createSerNo()を呼び出す側のロジックを OSGi プラグインで差し替える設計を検討してください。
関連プロセス
Section titled “関連プロセス”リファレンスページ・メニュー上、このウィンドウ固有の関連プロセスはありません。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”シリアル番号の採番ルールは、Model Validator や OSGi プラグインでコア改変なしに拡張できます。ロット・シリアル追跡の導入設計もお任せください。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。