コンテンツにスキップ

iDempiere 仕入請求書の使い方|購買管理 操作マニュアル・技術仕様

仕入請求書は、仕入先からの請求を記録し買掛金(債務)を計上する伝票です。売上請求書と同じ C_Invoice テーブルを使用しますが、伝票タイプ(IsSOTrx=N)で購買側として区別されます。仕入請求書の完成時に仕入と買掛金の会計仕訳が自動生成されます。

  • 仕入先からの請求の記録
  • 買掛金(債務)の計上
  • 発注伝票・入荷伝票からの自動生成
  • 仕入・買掛金の会計仕訳の自動生成
  • 仕入諸掛(Landed Cost)の配賦
  • 発注-入荷-請求の3方マッチング
  • 支払消込との連携

🖥️ インタラクティブ画面レイアウト: AD メタデータから自動生成した 仕入請求伝票の全タブ・全フィールド レイアウト(HTML版) で、実際の画面配置をご確認いただけます。

📖 購買管理の全体像: 購買管理の業務フロー全体図 も合わせてご覧ください。

graph TD
    subgraph "仕入請求書ウィンドウ (Window ID: 183)"
        T1["📋 仕入請求伝票<br/>C_Invoice<br/>49項目"]
        T2["📦 仕入請求伝票明細<br/>C_InvoiceLine<br/>35項目"]
        T3["🔗 仕入諸掛按分基準<br/>C_LandedCost<br/>11項目"]
        T4["🔗 仕入諸掛配賦<br/>C_LandedCostAllocation<br/>9項目"]
        T5["🔗 発注照合<br/>M_MatchPO<br/>10項目"]
        T6["🔗 請求照合<br/>M_MatchInv<br/>10項目"]
        T7["📋 税額計算<br/>C_InvoiceTax<br/>8項目"]
        T8["📋 支払スケジュール<br/>C_InvoicePaySchedule<br/>11項目"]
        T9["📋 消込伝票明細<br/>C_AllocationLine<br/>10項目"]
    end
    T1 --> T2
    T2 --> T3
    T2 --> T4
    T2 --> T5
    T2 --> T6
    T1 --> T7
    T1 --> T8
    T1 --> T9

仕入請求書ウィンドウ (Window ID: 183) 仕入請求伝票 C_Invoice 49項目 仕入請求伝票明細 C_InvoiceLine 35項目 仕入諸掛按分基準 C_LandedCost 11項目 仕入諸掛配賦 C_LandedCostAllocation 9項目 発注照合 M_MatchPO 10項目 請求照合 M_MatchInv 10項目 税額計算 C_InvoiceTax 8項目 支払スケジュール C_InvoicePaySchedule 11項目 消込伝票明細 C_AllocationLine 10項目

タブ名テーブル役割
仕入請求伝票C_Invoiceヘッダー情報(仕入先・日付・金額等)
仕入請求伝票明細C_InvoiceLine品目・数量・単価の明細行
仕入諸掛按分基準C_LandedCost仕入諸掛の配賦ルール
仕入諸掛配賦C_LandedCostAllocation諸掛の配賦先明細
発注照合M_MatchPO発注との照合状況
請求照合M_MatchInv入荷との照合状況
税額計算C_InvoiceTax税額の自動計算結果
支払スケジュールC_InvoicePaySchedule分割払いのスケジュール
消込伝票明細C_AllocationLine支払消込の状況

📌 ポイント: 仕入請求伝票明細タブの下に「仕入諸掛按分基準」「仕入諸掛配賦」「発注照合」「請求照合」の4つの子タブがあります。ヘッダータブ直下には「税額計算」「支払スケジュール」「消込伝票明細」が配置され、支払消込の状況をヘッダーレベルで管理します。

graph TD
    A["🚀 開始"] --> B["新規ボタンをクリック"]
    B --> C["ヘッダー情報を入力<br/>(伝票タイプ・請求日付・仕入先・価格表・支払条件)"]
    C --> D["保存"]
    D --> E{"明細の入力方法"}
    E -->|自動取込(推奨)| F["「Create lines from」ボタンで<br/>入荷伝票または発注伝票から<br/>明細を取り込み"]
    E -->|手動入力| G["仕入請求伝票明細タブで<br/>品目・数量・単価を入力"]
    F --> H["仕入先の請求書と<br/>金額を照合・修正"]
    G --> H
    H --> I{"仕入諸掛あり?"}
    I -->|あり| J["諸掛の明細行を追加<br/>(料金として登録)"]
    J --> K["仕入諸掛按分基準タブで<br/>配賦ルールを設定"]
    K --> L["伝票アクションボタンで<br/>「完了」を実行"]
    I -->|なし| L
    L --> M["✅ 仕入請求書 完了"]
    M --> N["仕入・買掛金の<br/>会計仕訳が自動生成"]
    M --> O["発注・入荷との<br/>照合レコードが自動作成"]
    M --> P["支払処理へ"]

開始 新規ボタンをクリック ヘッダー情報を入力 (伝票タイプ・請求日付・仕入先・価格表・支払条件) 保存 明細の入力方法 「Create lines from」ボタンで 入荷伝票または発注伝票から 明細を取り込み 仕入請求伝票明細タブで 品目・数量・単価を入力 仕入先の請求書と 金額を照合・修正 仕入諸掛あり? 諸掛の明細行を追加 (料金として登録) 仕入諸掛按分基準タブで 配賦ルールを設定 伝票アクションボタンで 「完了」を実行 仕入請求書 完了 仕入・買掛金の 会計仕訳が自動生成 発注・入荷との 照合レコードが自動作成 支払処理へ 自動取込(推奨) 手動入力 あり なし

💡 ヒント: 「Create lines from」で入荷伝票を指定すると、入荷済みの品目と数量が自動で展開されます。仕入先の請求書と照合して単価が異なる場合は手動修正してください。単価差異は完了時に「価格差異勘定」へ自動計上されます。

メニューから「購買管理 > 仕入請求伝票(標準)」を開きます。

📌 ポイント: 仕入請求書(Vendor Invoice)は売上請求書(Customer Invoice)と同じ C_Invoice テーブルを共有しています。IsSOTrx = 'N' フラグで購買側として区別されます。

入荷・発注からの作成(推奨)

Section titled “入荷・発注からの作成(推奨)”
  1. 新規」ボタンをクリック
  2. ヘッダー情報を入力:
    • 伝票タイプ: 「仕入請求伝票」を選択
    • 請求日付: 仕入先の請求日を入力
    • 取引先(仕入先): 仕入先を選択
    • 価格表: 購買用価格表を選択
    • 支払条件: 仕入先との支払条件
  3. 保存」をクリック
  4. Create lines from」ボタンで入荷伝票または発注伝票から明細を取り込み
  5. 金額を仕入先の請求書と照合・修正
  6. 伝票アクション」ボタンで「完了」を実行

完了処理により:

  • 仕入・買掛金の会計仕訳が生成
  • 発注/入荷との照合レコードが自動作成

⚠️ 注意: 仕入請求書を完了すると買掛金(債務)が計上されます。支払条件の設定が正しいことを完了前に必ず確認してください。誤った支払条件で完了した場合、支払スケジュールの修正が必要になります。

運賃・保険料等の仕入諸掛を品目原価に配賦する場合:

  1. 仕入請求伝票明細に諸掛の明細行を追加(料金として登録)
  2. 仕入諸掛按分基準」タブで配賦ルールを設定(数量按分、金額按分 等)
  3. 伝票完了時に諸掛が品目原価に自動配賦

📌 ポイント: 仕入諸掛(Landed Cost)は運賃・保険料・関税等を品目の原価に含める機能です。配賦方法には「数量按分」「金額按分」「重量按分」等があります。配賦先の入荷伝票明細を「仕入諸掛按分基準」タブで指定します。

仕入請求伝票タブ(ヘッダー)

Section titled “仕入請求伝票タブ(ヘッダー)”
項目名説明
伝票タイプ選択仕入請求伝票、仕入貸方伝票 等
請求日付日付仕入先の請求日
転記日付日付会計上の転記日付
取引先検索仕入先
価格表選択購買用価格表
支払条件選択仕入先との支払条件
支払方法リスト支払方法
項目名説明
品目検索仕入品目
数量数量仕入数量
単価金額仕入単価
税率選択適用する税率
行合計金額数量 x 単価

Q. 仕入請求書を入荷なしで作成できますか?

Section titled “Q. 仕入請求書を入荷なしで作成できますか?”

はい。サービス品目や前払い等、入荷を伴わない仕入では、仕入請求書のみを作成できます。

Q. 仕入先からの貸方メモ(値引・返品)はどう処理しますか?

Section titled “Q. 仕入先からの貸方メモ(値引・返品)はどう処理しますか?”

伝票タイプ「仕入貸方伝票」で作成します。完了時に買掛金が減額されます。

Q. マッチングで差異が出た場合は?

Section titled “Q. マッチングで差異が出た場合は?”

「発注照合」「請求照合」タブで差異を確認できます。価格差異は会計上「価格差異勘定」に自動計上されます。

⚠️ 注意: 価格差異が大きい場合は、発注単価と仕入先の請求単価を再確認してください。単価誤入力のまま完了すると、後から修正するために仕入貸方伝票(Credit Memo)の作成が必要になります。

graph TD
    A[発注伝票] -->|請求| B[仕入請求書]
    C[入荷伝票] -->|マッチング| B
    B -->|会計仕訳| D[総勘定元帳]
    B -->|消込| E[支払]
    B -->|諸掛配賦| F[品目原価]

請求 マッチング 会計仕訳 消込 諸掛配賦 発注伝票 仕入請求書 入荷伝票 総勘定元帳 支払 品目原価


As-Link株式会社では、iDempiereの導入支援・カスタマイズ開発を承っております。

OSS ERP導入サービスの詳細はこちら


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

仕入請求書は Document 型の伝票で、C_Invoice テーブルに IsSOTrx=N として格納されます。売上請求書と同じ MInvoice クラス(3,662行)を共有し、購買固有のロジック(買掛金転記、入荷マッチング、ランデッドコスト配賦、価格差異計上)が IsSOTrx フラグで分岐制御されます。

classDiagram
    class MInvoice {
        +prepareIt() String
        +completeIt() String
        +voidIt() boolean
        +closeIt() boolean
        +reverseCorrectIt() boolean
        +calculateTaxTotal() boolean
    }
    class X_C_Invoice {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    class DocAction {
        <<interface>>
    }
    class IDocsPostProcess {
        <<interface>>
    }
    MInvoice --|> X_C_Invoice
    X_C_Invoice --|> PO
    MInvoice ..|> DocAction
    MInvoice ..|> IDocsPostProcess
    MInvoice --> MInvoiceLine : has many
    MInvoice --> MInvoiceTax : has many

+prepareIt() String +completeIt() String +voidIt() boolean +closeIt() boolean +reverseCorrectIt() boolean +calculateTaxTotal() boolean <> <> <> > X_C_Invoice X_C_Invoice -- > DocAction MInvoice ..

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

C_Invoice(仕入請求書ヘッダー、IsSOTrx=N)

Section titled “C_Invoice(仕入請求書ヘッダー、IsSOTrx=N)”

売上請求書と同一テーブルを使用。IsSOTrx=N で仕入として動作。

⚠️ 注意: 仕入請求書は売上請求書と同じ C_Invoice テーブル・MInvoice クラスを共有します。completeIt() 内のランデッドコスト配賦・価格差異計上・M_MatchInv 生成は購買側(IsSOTrx=N)のみで実行されます。これらの処理をカスタマイズする場合は、IsSOTrx による分岐に細心の注意を払ってください。

カラム名必須説明備考
C_Invoice_IDIDPK請求書ID主キー
IsSOTrxYesNoY販売取引フラグN=仕入
DocumentNoStringY伝票番号
C_DocType_IDTableDirectY伝票タイプAPI(仕入請求書)
C_DocTypeTarget_IDTableY対象伝票タイプ
DocStatusListY伝票状態DR/IP/CO/CL/VO/RE
C_BPartner_IDSearchY仕入先
DateInvoicedDateY請求日付
DateAcctDateY転記日付
M_PriceList_IDTableDirectY購買価格表
C_Currency_IDTableDirectY通貨
C_PaymentTerm_IDTableDirectY支払条件
TotalLinesAmountY明細行合計
GrandTotalAmountY総合計
C_Order_IDSearchN発注伝票
IsPaidYesNoY支払済み
ProcessedYesNoY処理済み
PostedButtonY転記
カラム名必須説明
C_InvoiceLine_IDIDPK明細ID
C_Invoice_IDSearchYヘッダーFK
LineIntegerY行番号
M_Product_IDSearchN品目
QtyInvoicedQuantityY請求数量
PriceActualAmountY実単価
LineNetAmtAmountY行合計
C_Tax_IDTableDirectY税率
C_OrderLine_IDSearchN発注明細FK
M_InOutLine_IDSearchN入荷明細FK
erDiagram
    C_Invoice ||--o{ C_InvoiceLine : "has"
    C_Invoice ||--o{ C_InvoiceTax : "has"
    C_Invoice }o--|| C_BPartner : "vendor"
    C_Invoice }o--o| C_Order : "from PO"
    C_InvoiceLine }o--o| C_OrderLine : "from PO line"
    C_InvoiceLine }o--o| M_InOutLine : "from receipt line"
    C_InvoiceLine ||--o{ M_MatchInv : "receipt matching"
    C_InvoiceLine ||--o{ M_MatchPO : "PO matching"
    C_Invoice ||--o{ C_LandedCostAllocation : "landed cost"
    C_Invoice ||--o{ Fact_Acct : "AP posting"

from PO from PO line from receipt line receipt matching PO matching landed cost AP posting

  1. ModelValidator.TIMING_BEFORE_COMPLETE イベント発火
  2. 税金の最終計算
  3. 入荷マッチングM_MatchInv レコードの自動生成)
  4. 発注マッチングM_MatchPO レコードの更新)
  5. 買掛金(AP)の会計転記準備
  6. 発注の請求済数量(QtyInvoiced)更新
  7. ランデッドコスト配賦C_LandedCostAllocation の生成)
  8. 価格差異の計上(発注単価と請求単価の差異)
  9. 取引先の買掛残高更新
  10. ModelValidator.TIMING_AFTER_COMPLETE イベント発火
stateDiagram-v2
    [*] --> Drafted : 新規作成
    Drafted --> InProgress : prepareIt()
    InProgress --> Completed : completeIt()
    Completed --> Closed : closeIt()
    Completed --> Voided : voidIt()
    Completed --> Reversed : reverseCorrectIt()

*

📌 ポイント: 価格差異の計上先勘定(Purchase Price Variance)は M_Product_Category_Acct または C_AcctSchema_Default で定義されます。差異が意図せず計上されている場合は M_CostDetail テーブルと Fact_Acct テーブルを C_InvoiceLine_ID で横断検索すると原因を特定しやすいです。

発注単価と仕入請求単価に差異がある場合:

  • 標準原価計算: 差異は Purchase Price Variance 勘定に計上
  • 平均原価計算: 差異は品目の平均原価に反映
  • M_CostDetail に原価明細レコードが生成

仕入請求書に C_LandedCost を設定することで付随費用を入荷品目に配賦:

  • 配賦方法: 数量按分、金額按分、重量按分、容積按分
  • 配賦先: 指定した入荷伝票の品目に按分
  • C_LandedCostAllocation テーブルに配賦結果を記録
  • M_CostDetail に原価への反映を記録
Calloutクラスメソッドトリガーフィールド処理内容
CalloutInvoicedocTypeC_DocTypeTarget_ID仕入用伝票タイプの初期値セット
CalloutInvoicebPartnerC_BPartner_ID仕入先情報の自動セット
CalloutInvoicepaymentTermC_PaymentTerm_ID支払条件に基づくスケジュール生成
CalloutInvoiceproductM_Product_ID品目情報・購買価格の自動セット
CalloutInvoicetaxC_Tax_ID税額の再計算
CalloutInvoiceamtPriceActual / QtyInvoiced金額の再計算

Calloutソース: org.adempiere.base.callout/src/org/compiere/model/CalloutInvoice.java

💡 ヒント: 仕入先からの請求書番号(Vendor Invoice Number)を DocumentNo とは別に管理したい場合は、AD_Column にカスタムカラムを追加し、Callout で仕入先変更時のバリデーションを行う実装が一般的です。重複チェックには DB.getSQLValue() を使ったシンプルな SELECT が有効です。

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

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

仕入請求書に独自バリデーションを追加する最も安全な方法:

public class CustomVendorInvoiceValidator implements ModelValidator {
@Override
public String docValidate(PO po, int timing) {
if (po instanceof MInvoice) {
MInvoice invoice = (MInvoice) po;
if (!invoice.isSOTrx() && timing == TIMING_BEFORE_COMPLETE) {
// 例: 入荷マッチング必須チェック
MInvoiceLine[] lines = invoice.getLines(false);
for (MInvoiceLine line : lines) {
if (line.getM_Product_ID() > 0 && line.getM_InOutLine_ID() <= 0) {
return "入荷伝票との照合が未完了の明細があります";
}
}
}
}
return null;
}
}

Doc_Invoice の AP 転記ロジックをカスタマイズし、独自の勘定科目割当や部門別配賦を実装可能。

🔧 カスタマイズ: 部門別・プロジェクト別の AP 配賦が必要な場合、C_InvoiceLineAD_OrgTrx_ID(取引組織)や C_Project_ID(プロジェクト)カラムを活用することで、標準の会計転記エンジン内でディメンション別配賦が実現できます。カスタム仕訳ロジックを実装する前に標準機能での対応可否を確認してください。

プロセス名説明
伝票アクション (DocAction)伝票の完了・無効・取消等
発注から仕入請求書生成発注伝票から請求書を一括生成
入荷から仕入請求書生成入荷伝票から請求書を一括生成
ランデッドコスト配賦付随費用の按分処理
支払処理買掛金の支払処理

iDempiereの仕入請求書は Model Validator や Callout で安全にカスタマイズできます。 ランデッドコスト配賦、価格差異管理、支払承認フローをコア改変なしで拡張可能です。

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

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