Skip to content

iDempiere 立替経費及び作業時間報告の使い方|取引先管理 操作マニュアル・技術仕様

This content is not available in your language yet.

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

立替経費及び作業時間報告は、従業員(または外注先)がプロジェクト等に費やした作業時間と立替経費を記録する伝票です。完了した報告の明細は、顧客への再請求(受注・売上請求書)と従業員への立替金精算(仕入請求書)の両方の起点になります。

📌 ポイント: 取引先には「従業員」フラグが有効で、住所と担当者(連絡先)が登録済みの取引先を指定する必要があります。価格表は経費の仕入側(精算額)の初期値を決める「購買価格表」の位置づけです。

立替経費及び作業時間報告でできること

Section titled “立替経費及び作業時間報告でできること”
  • 従業員ごとの経費明細(金額・通貨・日付)の記録
  • 作業時間の記録(時間単位レポート)と請求可否の区分
  • 外貨経費の自動換算(価格表通貨への換算金額算出)
  • 承認金額の自動集計(明細合計をヘッダに反映)
  • プロジェクト・フェーズ・タスク・アクティビティへの紐付け
  • リソースアサインとの連動(数量の同期)
  • 伝票処理(完了・取消・クローズ)による確定管理
タブ名テーブル項目数役割
立替経費及び作業時間報告S_TimeExpense約13項目ヘッダ(従業員・報告日付・価格表・倉庫・伝票状態)
報告明細S_TimeExpenseLine約28項目経費・作業時間の明細(品目・数量・金額・プロジェクト等)
graph TD
    A["🚀 メニューから開く<br/>取引先管理 > サービス > 立替経費及び作業時間報告"] --> B["➕ ヘッダを入力<br/>(従業員・報告日付・価格表・倉庫)"]
    B --> C["📋 報告明細タブへ移動"]
    C --> D{明細の種類}
    D -->|立替経費| E["💰 品目(経費タイプ)・<br/>経費金額・通貨を入力"]
    D -->|作業時間| F["⏱ 時間単位レポートをチェック<br/>数量(時間)を入力"]
    E --> G{顧客に再請求する?}
    F --> G
    G -->|する| H["✅ 請求済みフラグ+取引先(顧客)<br/>+プロジェクト等を設定"]
    G -->|しない| I["💾 明細を保存"]
    H --> I
    I --> J["⚙️ ヘッダに戻り伝票処理から<br/>「完了」を実行"]
    J --> K["🔗 経費精算伝票(再請求)・<br/>経費(未払い)(従業員精算)へ"]

メニューから開く 取引先管理 > サービス > 立替経費及び作業時間報告 ヘッダを入力 (従業員・報告日付・価格表・倉庫) 報告明細タブへ移動 品目(経費タイプ)・ 経費金額・通貨を入力 ⏱ 時間単位レポートをチェック 数量(時間)を入力 請求済みフラグ+取引先(顧客) +プロジェクト等を設定 明細を保存 ヘッダに戻り伝票処理から 「完了」を実行 経費精算伝票(再請求)・ 経費(未払い)(従業員精算)へ 明細の種類 顧客に再請求する? 立替経費 作業時間 する しない

⚠️ 注意: 明細で「請求済み」(顧客再請求)をチェックした場合は、明細の取引先(請求先顧客)が必須です。未設定のまま完了しようとすると「Invoiced, but no Business Partner」エラーになります。

メニューから「取引先管理 > サービス > 立替経費及び作業時間報告」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. ヘッダ情報を入力:
    • 伝票番号: 自動採番(変更可)
    • 取引先: 経費を立て替えた従業員(住所・担当者登録済みであること)
    • 報告日付: 経費報告の基準日(デフォルトはログイン日付)
    • 価格表: 精算額の初期値を決める購買価格表
    • 倉庫: 在庫品目を顧客請求した場合の在庫補正に使用
  3. 保存」をクリック
  4. 報告明細」タブで明細を登録:
    • 作業日付: 経費発生日・作業日(デフォルトは報告日付)
    • 品目: 経費タイプに対応する経費品目、または作業のサービス品目
    • 数量・経費金額・通貨: 立替額(外貨も入力可能)
    • 時間単位レポート: 経費を伴わない作業時間のみの記録の場合にチェック
    • 請求済み: 顧客に再請求する場合にチェックし、取引先(顧客)を設定
    • プロジェクト/フェーズ/タスク: 原価集計先(任意)

ヘッダの「経費プロセス」(DocAction)ボタンから実行します。

アクション説明
完了(Complete)会計期間・明細有無・請求先設定を検証し、承認金額を確定して伝票を完了
取消(Void)伝票を無効化(内部的にはクローズと同じ処理)
クローズ(Close)伝票を閉じ、以後の変更を禁止

完了時に承認されていない場合は自動で承認(Implicit Approval)されます。完了後は明細の追加ができません。

項目リファレンス(主要項目)

Section titled “項目リファレンス(主要項目)”

ヘッダ(立替経費及び作業時間報告タブ)

Section titled “ヘッダ(立替経費及び作業時間報告タブ)”
項目名必須説明
伝票番号必須文字列(30)伝票の連番
取引先必須検索従業員(住所・担当者必須)
報告日付必須日付報告の基準日(会計期間チェックに使用)
価格表必須選択精算額の初期値となる購買価格表
倉庫必須選択在庫補正に使用する倉庫
承認金額自動金額明細の換算金額×数量の合計(自動集計)
伝票状態自動リストドラフト→完了→クローズ
項目名必須説明
明細番号必須整数自動採番(既存最大+10)
作業日付必須日付経費発生日(デフォルト: 報告日付)
時間単位レポート必須チェック作業時間のみの記録(金額は0に強制)
請求済み必須チェック顧客への再請求対象
品目-検索経費品目・サービス品目
数量-数量デフォルト1
経費金額 / 通貨-金額立替額(外貨可)
換算金額自動金額価格表通貨への換算額
請求額-価格再請求単価(0なら顧客の販売価格表を適用)
取引先条件付検索再請求先顧客(請求済み=Y のとき必須)
プロジェクト等-選択プロジェクト/フェーズ/タスク/アクティビティ/営業活動

全項目一覧はリファレンス参照(正しくは 画面リファレンス: 立替経費及び作業時間報告

Q. 完了時に「PeriodClosed」エラーになります

Section titled “Q. 完了時に「PeriodClosed」エラーになります”

報告日付の会計期間が、仕入請求書(AP Invoice)の伝票基本タイプに対して開いていません。prepareIt() は報告日付を APInvoice 基準で期間チェックします。カレンダー期間の該当月を開いてから再実行してください。

Q. 明細を入れたのに完了できません(NoLines)

Section titled “Q. 明細を入れたのに完了できません(NoLines)”

明細が1件も保存されていない伝票は完了できません。また「請求済み」チェック済みで明細の取引先が空の行があると「Invoiced, but no Business Partner」で完了が拒否されます。

Q. 外貨で立て替えた経費はどう換算されますか?

Section titled “Q. 外貨で立て替えた経費はどう換算されますか?”

明細保存時に、経費金額が明細通貨から価格表通貨へ MConversionRate.convert()(作業日付時点のレート)で自動換算され、「換算金額」にセットされます。同一通貨なら経費金額がそのまま入ります。

Q. 時間単位レポートにすると金額が消えるのはなぜですか?

Section titled “Q. 時間単位レポートにすると金額が消えるのはなぜですか?”

仕様です。「時間単位レポート」チェック時は、保存時に経費金額・換算金額・明細金額が 0 に強制されます(作業時間のみを記録するため)。

Q. 完了後の報告はどう請求・精算につながりますか?

Section titled “Q. 完了後の報告はどう請求・精算につながりますか?”

顧客への再請求は経費精算伝票、従業員への立替金精算は経費(未払い)で未処理明細を確認したうえで処理します。

graph TD
    A[経費タイプ登録] --> B[立替経費及び作業時間報告]
    B -->|完了| C{明細の区分}
    C -->|請求済み=Y| D[経費精算伝票<br/>顧客へ再請求]
    C -->|経費あり| E[経費(未払い)<br/>従業員へ精算]
    D --> F[受注伝票 → 売上請求書]
    E --> G[仕入請求書 → 支払]

明細の区分 完了 請求済み=Y 経費あり 経費タイプ登録 立替経費及び作業時間報告 経費精算伝票 顧客へ再請求 経費(未払い) 従業員へ精算 受注伝票 → 売上請求書 仕入請求書 → 支払

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

立替経費及び作業時間報告は Document 型ウィンドウ(AD_Window_ID: 235)で、ヘッダ S_TimeExpense・明細 S_TimeExpenseLine に格納されます。MTimeExpense クラス(613行)が DocAction を実装し伝票処理を担い、MTimeExpenseLine クラス(360行)が換算・ヘッダ集計・リソースアサイン同期を担います。

classDiagram
    class MTimeExpense {
        +getLines(boolean) MTimeExpenseLine[]
        +processIt(String) boolean
        +prepareIt() String
        +completeIt() String
        +voidIt() boolean
        +closeIt() boolean
        +createPDF() File
    }
    class MTimeExpenseLine {
        +getParent() MTimeExpense
        +getApprovalAmt() BigDecimal
        +getLaborCost(MAcctSchema) BigDecimal
        #beforeSave(boolean) boolean
        #afterSave(boolean, boolean) boolean
        #afterDelete(boolean) boolean
    }
    class DocAction {
        <<interface>>
    }
    class X_S_TimeExpense {
        <<generated>>
    }
    MTimeExpense --|> X_S_TimeExpense
    MTimeExpense ..|> DocAction
    MTimeExpense --> MTimeExpenseLine : has many
    MTimeExpenseLine --> MResourceAssignment : sync/delete

+getLines(boolean) MTimeExpenseLine[] +processIt(String) boolean +prepareIt() String +completeIt() String +voidIt() boolean +closeIt() boolean +createPDF() File +getParent() MTimeExpense +getApprovalAmt() BigDecimal +getLaborCost(MAcctSchema) BigDecimal #beforeSave(boolean) boolean #afterSave(boolean, boolean) boolean #afterDelete(boolean) boolean <> <> > X_S_TimeExpense MTimeExpense ..

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MTimeExpense.java / MTimeExpenseLine.java

カラム名必須説明備考
S_TimeExpense_IDIDPK経費報告ID主キー
DocumentNoString(30)Y伝票番号
C_BPartner_IDSearchY従業員(取引先)
DateReportDateY報告日付default @#Date@
M_PriceList_IDTableDirectY価格表換算先通貨を決定
M_Warehouse_IDTableDirectY倉庫
ApprovalAmtAmountN承認金額明細から自動集計
DocStatusList(2)Y伝票状態default DR
DocActionButton(2)Y伝票アクションdefault CO
IsApproved / ProcessedYesNoY承認/処理済み
カラム名必須説明備考
S_TimeExpenseLine_IDIDPK明細ID
S_TimeExpense_IDSearchYヘッダFK
LineIntegerY明細番号default @SQL=SELECT NVL(MAX(Line),0)+10 ...
DateExpenseDateY作業日付default @DateExpense@;@DateReport@
IsTimeReportYesNoY時間単位レポートY なら金額を0に強制
IsInvoicedYesNoY再請求対象
M_Product_IDSearchN品目callout CalloutTimeExpense.product
S_ResourceAssignment_IDAssignmentNリソースアサインcallout CalloutAssignment.product
QtyQuantityN数量default 1、callout CalloutTimeExpense.amount
ExpenseAmtAmountN経費金額callout CalloutTimeExpense.amount
C_Currency_IDTableDirectN通貨default @$C_Currency_ID@、callout 同上
ConvertedAmtAmountN換算金額beforeSave で自動計算
LineNetAmtAmountN明細金額ExpenseAmt × Qty
InvoicePrice / PriceInvoicedCosts+PricesN請求単価/請求済価格0 なら既定価格
QtyReimbursed / PriceReimbursedQuantity/PriceN精算数量/精算価格経費(未払い)で設定
C_Project_ID ほかTableDirectNプロジェクト/フェーズ/タスク/アクティビティ/営業活動
  1. 報告日付の会計期間チェック(APInvoice 伝票基本タイプで MPeriod.isOpen)→ 閉鎖なら @PeriodClosed@
  2. 明細 0 件なら @NoLines@ で Invalid
  3. 全明細の getApprovalAmt() を合算し ApprovalAmt にセット
  4. IsInvoiced=Y かつ明細取引先未設定の行があれば Invalid(“Invoiced, but no Business Partner”)

未承認なら approveIt() を暗黙実行(Implicit Approval)→ Processed=YDocAction=Close をセットして完了。仕訳(Posting)を伴う会計 Facts はこの伝票自体では生成せず、後続の請求書で計上されます。voidIt() は内部的に closeIt() を呼ぶだけで、反対仕訳は発生しません。

  • 通貨換算: 明細通貨 ≠ 価格表通貨のとき MConversionRate.convert()(作業日付基準)で ConvertedAmt を算出
  • 明細金額: LineNetAmt = ExpenseAmt × Qty
  • 時間単位レポート: IsTimeReport=Y なら金額3項目を 0 に強制
  • ヘッダ集計: afterSave/afterDelete のたびに UPDATE S_TimeExpense SET ApprovalAmt = (SELECT SUM(Qty*ConvertedAmt) ...) を直接実行
  • リソースアサイン同期: アサイン変更時は旧 S_ResourceAssignment レコードを削除し、新アサインに数量・説明を同期。明細削除時もアサインを削除
  • 親完了チェック: ヘッダが処理済みの伝票へは新規明細を追加不可(ParentComplete エラー)
カラムCallout動作
M_Product_IDorg.compiere.model.CalloutTimeExpense.product品目選択時に単価等を補完
Qty / ExpenseAmt / C_Currency_IDorg.compiere.model.CalloutTimeExpense.amount金額関連の再計算
S_ResourceAssignment_IDorg.compiere.model.CalloutAssignment.productアサインから品目を補完

Callout 実装は org.adempiere.base.callout プラグインにあります。

伝票検証は docValidate()TIMING_BEFORE_PREPARE / TIMING_BEFORE_COMPLETE 等で拡張できます(prepareIt()/completeIt()ModelValidationEngine.fireDocValidate を呼び出します):

@Override
public String docValidate(PO po, int timing) {
if (po instanceof MTimeExpense && timing == TIMING_BEFORE_COMPLETE) {
MTimeExpense te = (MTimeExpense) po;
// 例: 承認金額の上限チェック
if (te.getApprovalAmt().compareTo(new BigDecimal("100000")) > 0
&& !te.isApproved())
return "10万円超の経費報告は事前承認が必要です";
}
return null;
}

この伝票の後続処理(顧客への受注作成・従業員への仕入請求作成)は、経費精算伝票経費(未払い)ウィンドウ経由で行います。


経費報告の承認フロー強化(金額別承認・上長承認)や、外部経費精算システムとの連携は Model Validator と REST API で安全に実現できます。

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

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