Skip to content

iDempiere 時間タイプの使い方|取引先管理 操作マニュアル・技術仕様

This content is not available in your language yet.

📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。

時間タイプ(Time Type)は、記録した作業時間を分類するための小さなマスタです。経費報告の明細(S_TimeExpenseLine)に付与することで、「設計」「実装」「移動」「待機」といった切り口で工数を集計・分析できるようになります。

📌 ポイント: 時間タイプはアクティビティ(C_Activity)とは別軸の分類です。アクティビティが会計上の活動区分(ABC 会計)なのに対し、時間タイプは工数レポート用の区分として並行して使えます。両方を設定しておくと、会計軸と工数軸の双方から分析できます。

  • 作業時間の分類区分を定義する(例: 設計、実装、テスト、移動、待機)
  • 経費報告の明細に時間タイプを付与し、工数を分類して記録する
  • 時間タイプ別の工数集計・レポートの切り口を作る
  • 説明・コメントで、どの作業をどの区分に入れるかの運用ルールを明記する
  • 使わなくなった区分は無効化して、新規入力から除外する

単一タブのシンプルなマスタです。

タブ名テーブル項目数役割
時間タイプS_TimeType6項目時間タイプの定義(名称・説明・コメント)

💡 ヒント: 項目が少ないため設定はすぐ終わりますが、分類の粒度設計が運用の質を決めます。集計したい単位を先に決めてから登録してください。

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)。

  1. ツールバーの「新規」ボタンをクリックします
  2. 以下を入力します
    • 名称(Name: 時間タイプ名 — 必須、最大60文字
    • 説明(Description: 短い補足説明(最大255文字)
    • コメント(Help: 入力者向けの運用ルール(最大2,000文字)
  3. 保存」をクリックします

該当の時間タイプを開き、「有効」チェックを外して保存します。既存の経費明細に付与済みの時間タイプはそのまま残り、新規入力の選択肢からのみ除外されます。

⚠️ 注意: 時間タイプを削除すると、参照している経費明細がある場合は外部キー制約でエラーになります。運用停止は削除ではなく無効化で行ってください。

項目名必須説明
クライアント必須選択テナント(既定 @#AD_Client_ID@
組織必須選択組織(既定 @#AD_Org_ID@
名称必須文字列(60)時間タイプ名
説明-文字列(255)短い補足説明
コメント-テキスト(2000)入力者向けのヒント・運用ルール
有効必須チェックレコードが有効か(既定 Y)

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

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["顧客請求 / 従業員精算"]

時間タイプ S_TimeType 経費報告の明細 S_TimeExpenseLine 経費報告 S_TimeExpense 時間単位レポートか 工数のみ記録 (金額は 0) 実費経費として計上 時間タイプ別の工数集計 顧客請求 / 従業員精算 IsTimeReport = Y IsTimeReport = N

名称説明想定用途
設計要件定義・設計作業プロジェクト工数の内訳把握
実装開発・製造作業生産性指標の算出
テスト検証・品質確認作業品質コストの可視化
移動顧客先への移動時間請求対象外時間の切り分け
待機待機・手待ち時間稼働率分析

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 型でもありません。

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

<> +getS_TimeType_ID() int +setName(String) void +getName() String +setDescription(String) void +setHelp(String) void +getKeyNamePair() KeyNamePair <> <> > PO X_S_TimeType ..

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/X_S_TimeType.java(インターフェース: I_S_TimeType.java

📌 ポイント: M クラスが存在しないテーブルは、独自ロジックを持たせる余地がそのまま残っているとも言えます。バリデーションを足す場合は、コアに M クラスを新設するのではなく、後述の Model Validator を OSGi プラグインとして追加する方式が安全です。

テーブル属性: 削除可能 = Y、大量データ = N、アクセスレベル = 3、ビュー = N

カラム名必須説明備考
S_TimeType_IDIDPK時間タイプID主キー
AD_Client_IDTableDirectYクライアント既定 @#AD_Client_ID@
AD_Org_IDTableDirectY組織既定 @#AD_Org_ID@
NameString(60)Y名称更新可
DescriptionString(255)N説明更新可
HelpText(2000)Nコメント更新可
IsActiveYesNoY有効既定 Y
Created / CreatedByDate+Time / SearchY作成日時・作成者既定 SYSDATE
Updated / UpdatedByDate+Time / SearchY更新日時・更新者既定 SYSDATE
S_TimeType_UUUUID(36)NUUID
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"

classifies time accounting activity service product

S_TimeType にはコア実装されたビジネスロジックがありません。生成クラス X_S_TimeType は以下のみを提供します。

  • 各カラムの getter / setter
  • getKeyNamePair()(ID と名称のペア取得。参照フィールドの表示に使用)
  • NameIsIdentifier 相当の表示名として利用されます

参照先である MTimeExpenseLine 側にも、時間タイプに関する固有の検証・計算は実装されていません。時間タイプは純粋な分類コードとして機能します。

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

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

S_TimeType に AD_Column 登録の Callout はありません。

時間タイプの必須化や命名規則の強制は 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 型ではない
}
}

時間タイプ別の工数集計は、標準のレポートビューアや Print Format で S_TimeExpenseLine を集計軸に取ることで実現できます。より高度な分析が必要な場合は、S_TimeExpenseLine を対象にしたビューを作成し、AD にテーブル・ウィンドウとして登録する方法があります。

このウィンドウに紐付く標準プロセスはありません(単純なマスタ登録画面です)。


時間タイプは小さなマスタですが、工数分析の切り口を決める重要な設計要素です。 入力必須化や独自の集計ビュー追加も、OSGi プラグインでコアを触らずに実現できます。

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

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