iDempiere 時間タイプの使い方|取引先管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。
時間タイプ(Time Type)は、記録した作業時間を分類するための小さなマスタです。経費報告の明細(S_TimeExpenseLine)に付与することで、「設計」「実装」「移動」「待機」といった切り口で工数を集計・分析できるようになります。
📌 ポイント: 時間タイプはアクティビティ(
C_Activity)とは別軸の分類です。アクティビティが会計上の活動区分(ABC 会計)なのに対し、時間タイプは工数レポート用の区分として並行して使えます。両方を設定しておくと、会計軸と工数軸の双方から分析できます。
時間タイプでできること
Section titled “時間タイプでできること”- 作業時間の分類区分を定義する(例: 設計、実装、テスト、移動、待機)
- 経費報告の明細に時間タイプを付与し、工数を分類して記録する
- 時間タイプ別の工数集計・レポートの切り口を作る
- 説明・コメントで、どの作業をどの区分に入れるかの運用ルールを明記する
- 使わなくなった区分は無効化して、新規入力から除外する
単一タブのシンプルなマスタです。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 時間タイプ | S_TimeType | 6項目 | 時間タイプの定義(名称・説明・コメント) |
💡 ヒント: 項目が少ないため設定はすぐ終わりますが、分類の粒度設計が運用の質を決めます。集計したい単位を先に決めてから登録してください。
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>取引先管理 > サービス > 時間タイプ"] --> B["➕ 新規で作成"]
B --> C["✏️ 名称を入力<br/>(例: 設計・実装・移動)"]
C --> D["📝 説明・コメントで<br/>運用ルールを明記"]
D --> E["💾 保存"]
E --> F["📋 経費報告の明細で<br/>時間タイプとして選択可能に"]
F --> G["📊 時間タイプ別の<br/>工数集計・レポート"]
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”メニューから「取引先管理 > サービス > 時間タイプ」を開きます(AD_Window_ID: 272)。
新規登録の手順
Section titled “新規登録の手順”- ツールバーの「新規」ボタンをクリックします
- 以下を入力します
- 名称(
Name): 時間タイプ名 — 必須、最大60文字 - 説明(
Description): 短い補足説明(最大255文字) - コメント(
Help): 入力者向けの運用ルール(最大2,000文字)
- 名称(
- 「保存」をクリックします
使用を停止する場合
Section titled “使用を停止する場合”該当の時間タイプを開き、「有効」チェックを外して保存します。既存の経費明細に付与済みの時間タイプはそのまま残り、新規入力の選択肢からのみ除外されます。
⚠️ 注意: 時間タイプを削除すると、参照している経費明細がある場合は外部キー制約でエラーになります。運用停止は削除ではなく無効化で行ってください。
項目リファレンス
Section titled “項目リファレンス”時間タイプタブ
Section titled “時間タイプタブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| クライアント | 必須 | 選択 | テナント(既定 @#AD_Client_ID@) |
| 組織 | 必須 | 選択 | 組織(既定 @#AD_Org_ID@) |
| 名称 | 必須 | 文字列(60) | 時間タイプ名 |
| 説明 | - | 文字列(255) | 短い補足説明 |
| コメント | - | テキスト(2000) | 入力者向けのヒント・運用ルール |
| 有効 | 必須 | チェック | レコードが有効か(既定 Y) |
業務フロー上の位置づけ
Section titled “業務フロー上の位置づけ”graph TD
A["時間タイプ<br/>S_TimeType"] --> B["経費報告の明細<br/>S_TimeExpenseLine"]
C["経費報告<br/>S_TimeExpense"] --> B
B --> D{"時間単位レポートか"}
D -->|IsTimeReport = Y| E["工数のみ記録<br/>(金額は 0)"]
D -->|IsTimeReport = N| F["実費経費として計上"]
E --> G["時間タイプ別の工数集計"]
F --> H["顧客請求 / 従業員精算"]
| 名称 | 説明 | 想定用途 |
|---|---|---|
| 設計 | 要件定義・設計作業 | プロジェクト工数の内訳把握 |
| 実装 | 開発・製造作業 | 生産性指標の算出 |
| テスト | 検証・品質確認作業 | 品質コストの可視化 |
| 移動 | 顧客先への移動時間 | 請求対象外時間の切り分け |
| 待機 | 待機・手待ち時間 | 稼働率分析 |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 時間タイプとアクティビティ(C_Activity)はどう使い分けますか?
Section titled “Q. 時間タイプとアクティビティ(C_Activity)はどう使い分けますか?”アクティビティは会計上の活動区分(ABC 会計の配賦先)で、時間タイプは工数レポート用の並行した分類軸です。経費明細(S_TimeExpenseLine)は両方のカラムを持っているため、同時に付与して 2 軸で分析できます。
Q. 時間タイプは必須項目ですか?
Section titled “Q. 時間タイプは必須項目ですか?”いいえ。経費明細の S_TimeType_ID は必須ではありません(IsMandatory=N)。ただし工数集計を行う運用では、入力漏れを防ぐために Model Validator で必須化するケースがあります。
Q. 時間タイプごとに単価を設定できますか?
Section titled “Q. 時間タイプごとに単価を設定できますか?”S_TimeType テーブルには単価に相当するカラムがありません(名称・説明・コメントのみ)。単価は品目(M_Product_ID)や価格表側で管理します。時間タイプ別の課金単価が必要な場合は、時間タイプに対応するサービス品目を用意して価格表で単価を設定する運用が一般的です。
Q. 「コメント」欄はどこに表示されますか?
Section titled “Q. 「コメント」欄はどこに表示されますか?”Help カラムに格納され、フィールドのヘルプ・ヒントとして参照されます。入力者向けの運用ルール(どの作業をこの区分に入れるか)を書いておくと、分類のブレを防げます。
Q. 時間タイプを組織ごとに分けられますか?
Section titled “Q. 時間タイプを組織ごとに分けられますか?”S_TimeType はアクセスレベル 3(クライアント+組織)のテーブルで、AD_Org_ID を持ちます。組織を指定すればその組織専用の時間タイプになり、組織 *(全社)にすればテナント全体で共有されます。
🛠 技術仕様(開発者向け)
時間タイプはマスタデータ型のウィンドウ(AD_Window_ID: 272)で、S_TimeType テーブル(アクセスレベル 3、削除可能)に格納されます。専用のビジネスロジッククラス(M クラス)は存在せず、AD から自動生成された X_S_TimeType クラス(199行)のみで扱われます。つまり beforeSave() / afterSave() によるカスタムロジックはコアには実装されていません。Document 型でもありません。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class X_S_TimeType {
<<generated>>
+getS_TimeType_ID() int
+setName(String) void
+getName() String
+setDescription(String) void
+setHelp(String) void
+getKeyNamePair() KeyNamePair
}
class PO {
<<abstract>>
}
class I_S_TimeType {
<<interface>>
}
X_S_TimeType --|> PO
X_S_TimeType ..|> I_S_TimeType
X_S_TimeExpenseLine --> X_S_TimeType : references
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/X_S_TimeType.java(インターフェース: I_S_TimeType.java)
📌 ポイント: M クラスが存在しないテーブルは、独自ロジックを持たせる余地がそのまま残っているとも言えます。バリデーションを足す場合は、コアに M クラスを新設するのではなく、後述の Model Validator を OSGi プラグインとして追加する方式が安全です。
関連DBテーブル
Section titled “関連DBテーブル”S_TimeType(時間タイプ)
Section titled “S_TimeType(時間タイプ)”テーブル属性: 削除可能 = Y、大量データ = N、アクセスレベル = 3、ビュー = N
| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| S_TimeType_ID | ID | PK | 時間タイプID | 主キー |
| AD_Client_ID | TableDirect | Y | クライアント | 既定 @#AD_Client_ID@ |
| AD_Org_ID | TableDirect | Y | 組織 | 既定 @#AD_Org_ID@ |
| Name | String(60) | Y | 名称 | 更新可 |
| Description | String(255) | N | 説明 | 更新可 |
| Help | Text(2000) | N | コメント | 更新可 |
| IsActive | YesNo | Y | 有効 | 既定 Y |
| Created / CreatedBy | Date+Time / Search | Y | 作成日時・作成者 | 既定 SYSDATE |
| Updated / UpdatedBy | Date+Time / Search | Y | 更新日時・更新者 | 既定 SYSDATE |
| S_TimeType_UU | UUID(36) | N | UUID |
erDiagram
S_TimeType ||--o{ S_TimeExpenseLine : "classifies time"
S_TimeExpense ||--o{ S_TimeExpenseLine : "lines"
S_TimeExpenseLine }o--o| C_Activity : "accounting activity"
S_TimeExpenseLine }o--o| C_Project : "project"
S_TimeExpenseLine }o--o| M_Product : "service product"
ビジネスロジック
Section titled “ビジネスロジック”S_TimeType にはコア実装されたビジネスロジックがありません。生成クラス X_S_TimeType は以下のみを提供します。
- 各カラムの getter / setter
getKeyNamePair()(ID と名称のペア取得。参照フィールドの表示に使用)NameはIsIdentifier相当の表示名として利用されます
参照先である MTimeExpenseLine 側にも、時間タイプに関する固有の検証・計算は実装されていません。時間タイプは純粋な分類コードとして機能します。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”Callout
Section titled “Callout”S_TimeType に AD_Column 登録の Callout はありません。
OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”時間タイプの必須化や命名規則の強制は Model Validator で追加します。
public class CustomTimeTypeValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { // 例1: 経費明細で工数レポートの場合は時間タイプを必須にする if (po instanceof MTimeExpenseLine && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) { MTimeExpenseLine line = (MTimeExpenseLine) po; if (line.isTimeReport() && line.getS_TimeType_ID() == 0) { throw new AdempiereException("工数レポートには時間タイプを指定してください"); } } // 例2: 時間タイプ名の重複チェック if (po instanceof X_S_TimeType && type == TYPE_BEFORE_NEW) { // Query で同名レコードの存在確認を行う } return null; }
@Override public String docValidate(PO po, int timing) { return null; // S_TimeType は Document 型ではない }}レポート・分析での活用
Section titled “レポート・分析での活用”時間タイプ別の工数集計は、標準のレポートビューアや Print Format で S_TimeExpenseLine を集計軸に取ることで実現できます。より高度な分析が必要な場合は、S_TimeExpenseLine を対象にしたビューを作成し、AD にテーブル・ウィンドウとして登録する方法があります。
関連プロセス
Section titled “関連プロセス”このウィンドウに紐付く標準プロセスはありません(単純なマスタ登録画面です)。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”時間タイプは小さなマスタですが、工数分析の切り口を決める重要な設計要素です。 入力必須化や独自の集計ビュー追加も、OSGi プラグインでコアを触らずに実現できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。