iDempiere 役職の使い方|取引先管理 操作マニュアル・技術仕様
📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。
役職は、社内(従業員)または社外のポジションを定義するマスタです。役職そのものの定義に加えて、「誰がいつからいつまでその役職に就いているか」という割当と、「その役職にどの報酬が対応するか」という報酬の紐付けを、同じウィンドウの子タブで管理します。
📌 ポイント: 割当タブ・報酬タブはいずれも有効開始日・有効終了日を持ちます。役職者の交代や報酬改定は既存レコードの上書きではなく、期間を区切った新しいレコードの追加で表現するのが正しい運用です。
役職でできること
Section titled “役職でできること”- 社内・社外のポジション(役職)の定義
- 業種カテゴリによる役職の分類
- 従業員(ユーザー)への役職の割当と有効期間の管理
- 役職と報酬(給与・賃金)の紐付けと有効期間の管理
- 従業員向け役職かどうかの区別(従業員フラグ)
- 説明・コメントによる職務内容の記録
役職は3タブ構成です。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 役職 | C_Job | 8項目 | 役職の基本情報(名称・業種カテゴリ・従業員フラグ) |
| 割当 | C_JobAssignment | 8項目 | 従業員(ユーザー)への割当と有効期間 |
| 報酬 | C_JobRemuneration | 8項目 | 役職に対応する報酬と有効期間 |
graph TD
subgraph "役職(Window ID: 351)"
T1["🏷 役職<br/>C_Job<br/>8項目"]
T2[" └ 割当<br/> C_JobAssignment<br/> 8項目"]
T3[" └ 報酬<br/> C_JobRemuneration<br/> 8項目"]
end
T1 --> T2
T1 --> T3
💡 ヒント: 役職を登録する前に「業種カテゴリ」を作成しておいてください。役職タブの業種カテゴリは必須項目です。
基本操作手順
Section titled “基本操作手順”graph TD
A["🗂 業種カテゴリを先に登録"] --> B["🚀 メニューから開く<br/>取引先管理 > 取引先管理セットアップ > 役職"]
B --> C["➕ 新規で役職を作成<br/>(名称・業種カテゴリは必須)"]
C --> D{社内の役職?}
D -->|はい| E["👤 従業員にチェック"]
D -->|いいえ(社外)| F["👥 従業員のチェックを外す"]
E --> G["💾 保存"]
F --> G
G --> H["📋 割当タブで<br/>ユーザーと有効開始日を登録"]
H --> I{報酬を紐付ける?}
I -->|はい| J["💴 報酬タブで<br/>報酬と有効開始日を登録"]
I -->|いいえ| K["✅ 登録完了"]
J --> K
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”メニューから「取引先管理 > 取引先管理セットアップ > 役職」を開きます(AD_Window_ID: 351)。
新規登録(役職)
Section titled “新規登録(役職)”- ツールバーの「新規」ボタンをクリック
- 基本情報を入力:
- 名称(必須): 役職名(例:
営業部長、経理担当) - 業種カテゴリ(必須): 事前に登録した分類を選択
- 説明: 短い説明(255文字まで)
- コメント: 職務内容など(2,000文字まで)
- 従業員: 社内の従業員向け役職の場合はチェック(既定値はY)
- 名称(必須): 役職名(例:
- 「保存」をクリック
従業員への割当
Section titled “従業員への割当”- 役職を選択した状態で「割当」タブへ移動
- 「新規」で割当を登録:
- ユーザー(必須): 割り当てる従業員/連絡先
- 有効開始日(必須): 就任日(この日を含む)
- 有効終了日: 退任日(この日を含む)。継続中は空欄
- 説明: 補足(兼務・異動理由など)
- 「保存」をクリック
報酬の紐付け
Section titled “報酬の紐付け”- 「報酬」タブへ移動
- 「新規」で報酬を登録:
- 報酬(必須): 賃金・給与のマスタから選択
- 有効開始日(必須): 適用開始日
- 有効終了日: 適用終了日。継続中は空欄
- 説明: 改定理由など
- 「保存」をクリック
⚠️ 注意: 有効期間の重複チェックは標準では行われません。同じユーザー・同じ役職の期間が重なっていても保存できてしまうため、報酬計算に影響する場合は Model Validator による重複チェックの追加を検討してください。
項目リファレンス
Section titled “項目リファレンス”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| クライアント | 必須 | 選択 | テナント(既定値は自動セット) |
| 組織 | 必須 | 選択 | 組織(既定値は自動セット) |
| 名称 | 必須 | 文字列(60) | 役職名。識別子として使用 |
| 説明 | - | 文字列(255) | 短い説明 |
| コメント | - | テキスト(2000) | 職務内容などのヒント |
| 従業員 | 必須 | チェック | 従業員向け役職か(既定値 Y) |
| 業種カテゴリ | 必須 | 選択 | 役職の分類 |
| 有効 | 必須 | チェック | 有効フラグ(既定値 Y) |
| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 役職 | 必須 | 選択 | 親役職(自動セット) |
| ユーザー | 必須 | 検索 | 割り当てるユーザー/連絡先 |
| 有効開始日 | 必須 | 日時 | 開始日(この日を含む) |
| 有効終了日 | - | 日時 | 終了日(この日を含む) |
| 説明 | - | 文字列(255) | 補足 |
| 有効 | 必須 | チェック | 有効フラグ |
| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 役職 | 必須 | 選択 | 親役職(自動セット) |
| 報酬 | 必須 | 選択 | 賃金・給与のマスタ |
| 有効開始日 | 必須 | 日時 | 適用開始日 |
| 有効終了日 | - | 日時 | 適用終了日 |
| 説明 | - | 文字列(255) | 改定理由など |
| 有効 | 必須 | チェック | 有効フラグ |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 業種カテゴリを選ばずに保存できますか?
Section titled “Q. 業種カテゴリを選ばずに保存できますか?”できません。C_Job.C_JobCategory_ID は IsMandatory=Y の必須カラムです。役職を登録する前に「業種カテゴリ」ウィンドウでカテゴリを作成してください。
Q. 「従業員」チェックの意味は何ですか?
Section titled “Q. 「従業員」チェックの意味は何ですか?”IsEmployee は「この取引先が従業員かどうか」を示す標準カラムで、役職テーブルでは既定値が Y です。社外の役職(取引先側の担当ポジションなど)を定義する場合はチェックを外します。標準ではこのフラグによる自動処理は行われないため、業務上の区分・絞り込み用の属性として扱ってください。
Q. 役職者が交代したらどう登録しますか?
Section titled “Q. 役職者が交代したらどう登録しますか?”割当タブの既存レコードを書き換えるのではなく、前任者の行に有効終了日を入れ、後任者の行を有効開始日付きで新規追加します。これにより在任履歴が残り、過去時点の体制を復元できます。
Q. 報酬タブの「報酬」はどこで登録しますか?
Section titled “Q. 報酬タブの「報酬」はどこで登録しますか?”C_Remuneration(報酬)マスタで管理される賃金・給与の定義を参照します。給与計算業務と組み合わせて使う項目です。給与処理については給与計算処理を参照してください。
Q. 役職を削除できますか?
Section titled “Q. 役職を削除できますか?”C_Job は削除可能(IsDeleteable=Y)ですが、割当・報酬の子レコードや他テーブルからの参照がある場合は外部キー制約により削除できません。運用中の役職は「有効」チェックを外して無効化してください。
🛠 技術仕様(開発者向け)
役職は3階層(親1・子2)のマスタウィンドウで、C_Job(親)、C_JobAssignment・C_JobRemuneration(子)で構成されます。いずれのテーブルにも専用の M クラスは存在せず、生成クラス X_C_Job / X_C_JobAssignment / X_C_JobRemuneration とインターフェース I_C_* のみが提供されます。ソースコード上、これらのテーブルを参照するコアのビジネスロジッククラスは確認できませんでした(生成クラス以外の参照なし)。したがって beforeSave() 等のカスタムバリデーションは標準では存在せず、制約は AD 定義とDB制約に依存します。
| テーブル | アクセスレベル | 削除可 | 大量データ | ビュー |
|---|---|---|---|---|
| C_Job | 2(クライアントのみ) | Y | N | N |
| C_JobAssignment | 2(クライアントのみ) | Y | N | N |
| C_JobRemuneration | 2(クライアントのみ) | Y | N | N |
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class X_C_Job {
<<generated>>
+getName() String
+isEmployee() boolean
+getC_JobCategory_ID() int
}
class X_C_JobAssignment {
<<generated>>
+getAD_User_ID() int
+getValidFrom() Timestamp
+getValidTo() Timestamp
}
class X_C_JobRemuneration {
<<generated>>
+getC_Remuneration_ID() int
+getValidFrom() Timestamp
}
class X_C_JobCategory {
<<generated>>
}
class PO {
<<abstract>>
}
X_C_Job --|> PO
X_C_JobAssignment --|> PO
X_C_JobRemuneration --|> PO
X_C_JobCategory --|> PO
X_C_Job --> X_C_JobCategory : category
X_C_Job --> X_C_JobAssignment : has many
X_C_Job --> X_C_JobRemuneration : has many
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/X_C_Job.java ほか
関連DBテーブル
Section titled “関連DBテーブル”C_Job(役職)
Section titled “C_Job(役職)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_Job_ID | ID | PK | 役職ID | 主キー |
| AD_Client_ID | Table Direct | Y | テナント | 既定値 @#AD_Client_ID@ |
| AD_Org_ID | Table Direct | Y | 組織 | 既定値 @#AD_Org_ID@ |
| Name | String(60) | Y | 名称 | 識別子(IsIdentifier=Y) |
| Description | String(255) | N | 説明 | |
| Help | Text(2000) | N | コメント/ヒント | |
| C_JobCategory_ID | Table Direct | Y | 業種カテゴリ | 必須 |
| IsEmployee | Yes-No | Y | 従業員 | 既定値 Y |
| IsActive | Yes-No | Y | 有効 | 既定値 Y |
| C_Job_UU | UUID | N | UUID |
C_JobAssignment(役職割当)
Section titled “C_JobAssignment(役職割当)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_JobAssignment_ID | ID | PK | 割当ID | 主キー |
| C_Job_ID | Table Direct | Y | 役職FK | IsParent=Y、識別子 |
| AD_User_ID | Search | Y | ユーザーFK | IsParent=Y、識別子 |
| ValidFrom | Date+Time | Y | 有効開始日 | 当日を含む |
| ValidTo | Date+Time | N | 有効終了日 | 当日を含む |
| Description | String(255) | N | 説明 | |
| IsActive | Yes-No | Y | 有効 | 既定値 Y |
C_JobRemuneration(役職報酬)
Section titled “C_JobRemuneration(役職報酬)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_JobRemuneration_ID | ID | PK | 役職報酬ID | 主キー |
| C_Job_ID | Table Direct | Y | 役職FK | IsParent=Y、識別子 |
| C_Remuneration_ID | Table Direct | Y | 報酬FK | IsParent=Y、識別子 |
| ValidFrom | Date+Time | Y | 有効開始日 | |
| ValidTo | Date+Time | N | 有効終了日 | |
| Description | String(255) | N | 説明 | |
| IsActive | Yes-No | Y | 有効 | 既定値 Y |
erDiagram
C_JobCategory ||--o{ C_Job : "classifies"
C_Job ||--o{ C_JobAssignment : "assignments"
C_Job ||--o{ C_JobRemuneration : "remunerations"
C_JobAssignment }o--|| AD_User : "employee"
C_JobRemuneration }o--|| C_Remuneration : "wage or salary"
ビジネスロジック
Section titled “ビジネスロジック”M クラスが存在しないため、モデル層のカスタムロジック(beforeSave / afterSave / DocAction)はありません。実装上の要点は以下のとおりです。
- 親子キーの構成:
C_JobAssignmentはC_Job_IDとAD_User_IDの両方がIsParent=YかつIsIdentifier=Yです。C_JobRemunerationもC_Job_IDとC_Remuneration_IDが同様の構成で、いずれも連関テーブルとして設計されています。 - 有効期間:
ValidFromは必須、ValidToは任意です。期間の重複チェックはコア側に実装されていません。 - アクセスレベル: 3テーブルとも
AccessLevel=2(クライアントのみ)で、システムレベル(AD_Client_ID=0)のデータは持てません。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”期間重複の防止は Model Validator で実装します。M クラスがないため、テーブル名で判定します。
public class CustomJobAssignmentValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { if (I_C_JobAssignment.Table_Name.equals(po.get_TableName()) && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) { Timestamp from = (Timestamp) po.get_Value("ValidFrom"); Timestamp to = (Timestamp) po.get_Value("ValidTo"); // 例: 開始日と終了日の前後関係チェック if (from != null && to != null && to.before(from)) { throw new AdempiereException("有効終了日は有効開始日以降にしてください"); } // 期間重複チェックは Query で同一 C_Job_ID / AD_User_ID を検索して実装 } return null; }}Callout
Section titled “Callout”C_Job / C_JobAssignment / C_JobRemuneration のカラムには標準 Callout が設定されていません。ユーザー選択時に所属組織を自動セットするなどの連動が必要な場合は、独自 Callout を OSGi サービスとして登録します。
独自 M クラスの追加
Section titled “独自 M クラスの追加”期間判定(getCurrentAssignment() など)を業務ロジックとして持たせたい場合は、X_C_Job を継承した独自 M クラスをプラグイン側で定義し、IModelFactory で登録する方法が有効です。コアの生成クラスを直接変更する必要はありません。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”役職と割当は、人事・給与・承認フローの基礎データになります。期間重複チェックや現任者の自動判定、承認者の役職ベース解決などは、独自 M クラスと Model Validator で安全に追加できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。