iDempiere 売上請求書(Sales Invoice)|操作マニュアル・技術仕様
📖 販売管理の全体像: 販売管理の業務フロー全体図 も合わせてご覧ください。
売上請求書は、得意先への売上を認識し債権を計上する伝票です。五伝票制の伝票会計における「売上伝票」に相当し、売上請求書の完成時に売上と債権(売掛金)が認識され、消費税も確定します。
在庫管理しないサービス品目などは、受注伝票や出荷伝票を作成せずに、売上請求書だけを作成することもできます。
売上請求書でできること
Section titled “売上請求書でできること”- 得意先への売上請求の記録
- 受注伝票・出荷伝票からの自動生成
- 売上・売掛金の会計仕訳の自動生成(完成時)
- 消費税の自動計算
- 貸方メモ(Credit Memo)・借方メモ(Debit Memo)の作成
- 支払スケジュール(分割払い)の管理
- 入金消込との連携
🖥️ インタラクティブ画面レイアウト: AD メタデータから自動生成した 売上請求伝票の全タブ・全フィールド レイアウト(HTML版) で、実際の画面配置をご確認いただけます。
画面レイアウト(ヘッダータブ)
Section titled “画面レイアウト(ヘッダータブ)”┌─ 売上請求書(Sales Invoice)─────────────────────────────────────────────┐│ ││ クライアント [▼ Table Direct] 組織 [▼ Table Direct] ││ 伝票番号 [________________] 注文参照 [________________] ││ 説明 [_______________________________________________] ││ ││ ── 伝票タイプ・日付 ────────────────────────────────────────────────── ││ 対象伝票タイプ [▼ Table] ││ 請求日付 [📅 Date] 転記日付 [📅 Date] ││ ││ ── 取引先情報 ──────────────────────────────────────────────────────── ││ 取引先 [🔍 Search] 取引先住所 [▼ Table Direct] ││ 担当者 [▼ Table Direct] ││ ││ ── 価格・通貨 ──────────────────────────────────────────────────────── ││ 価格表 [▼ Table Direct] 通貨 [▼ Table Direct] ││ 支払方法 [▼ List] 支払条件 [▼ Table Direct] ││ ││ ── 合計・ステータス ────────────────────────────────────────────────── ││ 明細行合計 [¥_________] 総合計 [¥_________] ││ 伝票状態 [▼ List] 伝票タイプ [▼ Table Direct] ││ [明細行コピー] [請求処理] ││ ││ [請求伝票] [請求明細] [税額計算] [支払スケジュール] [消込] │└──────────────────────────────────────────────────────────────────────────┘📌 ポイント: この図はADメタデータ(
AD_Field.XPosition,IsSameLine)から再現した実際のUI配置です。画面は2カラム構成で、左列(XPosition=1)と右列(XPosition=4)にフィールドが配置されます。
graph TD
subgraph "売上請求書ウィンドウ(Window ID: 167)"
T1["🧾 売上請求伝票<br/>C_Invoice<br/>51項目"]
T2["📝 売上請求伝票明細<br/>C_InvoiceLine<br/>33項目"]
T3["💰 税額計算<br/>C_InvoiceTax<br/>8項目(読取専用)"]
T4["📅 支払スケジュール<br/>C_InvoicePaySchedule<br/>11項目"]
T5["✅ 消込伝票明細<br/>C_AllocationLine<br/>10項目(読取専用)"]
end
T1 --> T2
T1 --> T3
T1 --> T4
T1 --> T5
| タブ名 | テーブル | 役割 | 主な入力項目 |
|---|---|---|---|
| 売上請求伝票 | C_Invoice | ヘッダー情報(得意先・日付・金額等) | 取引先、伝票タイプ、請求日付、価格表 |
| 売上請求伝票明細 | C_InvoiceLine | 品目・数量・単価の明細行 | 品目、数量、単価、税率 |
| 税額計算 | C_InvoiceTax | 税額の自動計算結果(読み取り専用) | 税率、税額 |
| 支払スケジュール | C_InvoicePaySchedule | 分割払いのスケジュール | 支払予定日、金額 |
| 消込伝票明細 | C_AllocationLine | 入金消込の状況(読み取り専用) | 消込金額、消込日付 |
売上請求書の基本操作手順
Section titled “売上請求書の基本操作手順”graph TD
S1["① 請求書作成<br/>受注/出荷から一括生成 or 手動"] --> S2["② ヘッダー入力<br/>取引先・伝票タイプ・請求日付"]
S2 --> S3["③ 保存"]
S3 --> S4["④ 明細タブへ<br/>品目・数量・単価"]
S4 --> S5{既存伝票から取込?}
S5 -->|はい| S6["⑤' Create lines from<br/>出荷/受注伝票を参照"]
S5 -->|いいえ| S7["⑤ 手動で明細入力"]
S6 --> S8["⑥ 明細確認・保存"]
S7 --> S8
S8 --> S9["⑦ ヘッダーに戻る"]
S9 --> S10["⑧ 完了処理<br/>伝票アクション → 完了"]
S10 --> S11["✅ 会計仕訳生成・売掛金計上"]
アクセス方法
Section titled “アクセス方法”メニューから「販売管理 > 売上請求管理 > 売上請求伝票(標準)」を開きます。
受注からの一括生成(推奨)
Section titled “受注からの一括生成(推奨)”通常は受注伝票から一括生成します。
- メニュー「販売管理 > 売上請求管理 > 請求書生成」を開く
- 対象の取引先、受注日等の条件を指定
- 「OK」をクリックして請求書を自動生成
手動での新規登録
Section titled “手動での新規登録”- ツールバーの「新規」ボタンをクリック
- ヘッダー情報を入力:
- 伝票タイプ: 「売上請求伝票」を選択(貸方メモの場合は「売上貸方伝票」)
💡 ヒント: 返品や値引きが発生した場合は、伝票タイプ「売上貸方伝票(Credit Memo)」を使います。マイナス金額の請求書を作成するのではなく、専用の伝票タイプを使うことで会計仕訳が正確に生成されます。
- 請求日付: 請求日を入力
- 取引先: 得意先を選択
- 価格表: 適用する価格表を選択
- 支払条件: 支払条件を選択
- 「保存」をクリック
- 「売上請求伝票明細」タブに移動
- 明細行を入力:
- 品目: 請求する品目を選択
- 数量: 数量を入力
- 単価: 価格表から自動取得(手動修正可)
- 税率: 自動セット
- または「Create lines from」ボタンで出荷伝票・受注伝票から明細を取り込み
📐 画面レイアウト: ヘッダータブのフィールド配置は 画面レイアウト(ヘッダータブ) を参照してください。
伝票処理(請求確定)
Section titled “伝票処理(請求確定)”- 「売上請求伝票」タブ(ヘッダー)に戻る
- 「伝票アクション」ボタンをクリック
- アクション「完了(Complete)」を選択
- 「OK」をクリック
完了処理により以下が自動実行されます:
- 売上・売掛金の会計仕訳の生成
- 消費税の確定
- 受注伝票の請求済数量の更新
⚠️ 注意: 完了後の請求書は直接修正できません。取り消す場合は「無効」処理を実行すると逆仕訳が自動生成されます。ただし、消込済みの場合は先に消込の解除が必要です。
📌 ポイント: 請求書の完了によって初めて売上と売掛金が会計に計上されます。出荷伝票の完了だけでは売上計上されないため、必ず請求書の完了まで行ってください。
項目リファレンス
Section titled “項目リファレンス”売上請求伝票タブ(ヘッダー)
Section titled “売上請求伝票タブ(ヘッダー)”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 伝票タイプ | - | 選択 | 売上請求伝票、売上貸方伝票、売上借方伝票 等 |
| 受注伝票 | - | 検索 | 紐づく受注伝票 |
| 請求日付 | - | 日付 | 請求書の日付(印刷される日付) |
| 転記日付 | - | 日付 | 会計上の転記日付 |
| 取引先 | - | 検索 | 請求先の得意先 |
| 取引先住所 | - | 選択 | 請求先住所 |
| 価格表 | - | 選択 | 適用する価格表 |
| 通貨 | 自動 | 選択 | 価格表により自動セット |
| 社内担当者 | - | 選択 | 営業担当者 |
| 支払方法 | - | リスト | 現金、振込、クレジットカード 等 |
| 支払条件 | - | 選択 | 支払条件マスタから選択 |
| 料金 | - | 選択 | 追加料金(手数料等) |
売上請求伝票明細タブ
Section titled “売上請求伝票明細タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 品目 | - | 検索 | 請求する品目 |
| 数量 | 必須 | 数量 | 請求数量 |
| 単価 | - | 金額 | 販売単価 |
| 営業定価 | - | 金額 | 定価(参考) |
| 税率 | - | 選択 | 適用する税率 |
| 行合計 | 自動 | 金額 | 数量 x 単価 |
| 説明 | - | テキスト | 備考 |
伝票タイプ一覧
Section titled “伝票タイプ一覧”| 伝票タイプ | 用途 | 会計仕訳 |
|---|---|---|
| 売上請求伝票 | 通常の売上請求 | 売掛金(借方)/ 売上(貸方) |
| 売上貸方伝票 | 値引・返品時の減額 | 売上(借方)/ 売掛金(貸方) |
| 売上借方伝票 | 追加請求 | 売掛金(借方)/ 売上(貸方) |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 請求書を発行(印刷)するには?
Section titled “Q. 請求書を発行(印刷)するには?”メニュー「販売管理 > 売上請求管理 > 請求書印刷」から一括印刷、またはウィンドウ内の「印刷」ボタンで個別印刷できます。PDF形式でのメール送信も可能です。
Q. 貸方メモ(返品・値引)を作成するには?
Section titled “Q. 貸方メモ(返品・値引)を作成するには?”- 伝票タイプ「売上貸方伝票」で新規作成
- 元の請求書を参照して明細を入力
- 完了処理で売掛金が減額される
Q. 入金消込はどこで行いますか?
Section titled “Q. 入金消込はどこで行いますか?”メニュー「債権債務・資金管理 > 入出金消込」フォームで、請求書と入金を紐付けます。自動消込プロセスも利用可能です。消込状況は「消込伝票明細」タブで確認できます。
📌 ポイント: 消込が完了すると請求書の「支払済フラグ」がONになります。請求書の消込状況は「消込伝票明細」タブで明細ごとに確認できます。
Q. 請求書を取り消すには?
Section titled “Q. 請求書を取り消すには?”完了済みの請求書に対して「無効」処理を実行すると、逆仕訳が自動生成され会計が打ち消されます。ただし、既に消込済みの場合は先に消込の解除が必要です。
業務フロー上の位置づけ
Section titled “業務フロー上の位置づけ”graph TD
A[受注伝票] -->|請求生成| B[売上請求書]
C[出荷伝票] -->|明細取込| B
B -->|会計仕訳| D[総勘定元帳]
B -->|消込| E[入金]
B -->|督促| F[督促状]
OSS ERP導入についてのご相談
Section titled “OSS ERP導入についてのご相談”iDempiereの請求管理は、売上計上・債権管理・消込まで一貫した業務フローを提供します。 複数通貨対応、税計算、分割払いなど、実務に必要な機能を標準で備えています。
As-Link株式会社では、iDempiereの導入支援・カスタマイズ開発を承っております。
🛠 技術仕様(開発者向け)
画面レイアウト(ヘッダータブ)
Section titled “画面レイアウト(ヘッダータブ)”┌─ 売上請求書(Sales Invoice)─────────────────────────────────────────────┐│ ││ クライアント [▼ Table Direct] 組織 [▼ Table Direct] ││ 伝票番号 [________________] 注文参照 [________________] ││ 説明 [_______________________________________________] ││ ││ ── 伝票タイプ・日付 ────────────────────────────────────────────────── ││ 対象伝票タイプ [▼ Table] ││ 請求日付 [📅 Date] 転記日付 [📅 Date] ││ ││ ── 取引先情報 ──────────────────────────────────────────────────────── ││ 取引先 [🔍 Search] 取引先住所 [▼ Table Direct] ││ 担当者 [▼ Table Direct] ││ ││ ── 価格・通貨 ──────────────────────────────────────────────────────── ││ 価格表 [▼ Table Direct] 通貨 [▼ Table Direct] ││ 支払方法 [▼ List] 支払条件 [▼ Table Direct] ││ ││ ── 合計・ステータス ────────────────────────────────────────────────── ││ 明細行合計 [¥_________] 総合計 [¥_________] ││ 伝票状態 [▼ List] 伝票タイプ [▼ Table Direct] ││ [明細行コピー] [請求処理] ││ ││ [請求伝票] [請求明細] [税額計算] [支払スケジュール] [消込] │└──────────────────────────────────────────────────────────────────────────┘📌 ポイント: この図はADメタデータ(
AD_Field.XPosition,IsSameLine)から再現した実際のUI配置です。画面は2カラム構成で、左列(XPosition=1)と右列(XPosition=4)にフィールドが配置されます。
売上請求書は Document 型の伝票で、C_Invoice テーブルに格納されます。売上(IsSOTrx=Y)と仕入(IsSOTrx=N)の両方で共用されます。MInvoice クラス(3,662行)が中核ビジネスロジックを担い、DocAction および IDocsPostProcess インターフェースを実装しています。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MInvoice {
+prepareIt() String
+completeIt() String
+voidIt() boolean
+closeIt() boolean
+reverseCorrectIt() boolean
+calculateTaxTotal() boolean
+allocateInvoice() 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
MInvoice --> MInvoicePaySchedule : has many
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MInvoice.java
関連DBテーブル
Section titled “関連DBテーブル”C_Invoice(請求書ヘッダー)
Section titled “C_Invoice(請求書ヘッダー)”売上・仕入の両方で使用。IsSOTrx カラムで区別。
⚠️ 注意:
C_Invoiceテーブルは売上(IsSOTrx=Y)と仕入(IsSOTrx=N)で共用されています。C_DocType.DocBaseTypeでARI(売上請求書)・ARC(売上クレジット)・API(仕入請求書)・APC(仕入クレジット)が区別されます。クエリやレポート作成時は必ずIsSOTrxまたはDocBaseType条件を付与してください。
| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_Invoice_ID | ID | PK | 請求書ID | 主キー |
| AD_Client_ID | TableDirect | Y | クライアント | |
| AD_Org_ID | TableDirect | Y | 組織 | |
| IsSOTrx | YesNo | Y | 販売取引フラグ | Y=売上, N=仕入 |
| DocumentNo | String | Y | 伝票番号 | |
| C_DocType_ID | TableDirect | Y | 伝票タイプ | ARI/ARC/API/APC |
| C_DocTypeTarget_ID | Table | Y | 対象伝票タイプ | |
| DocStatus | List | Y | 伝票状態 | DR/IP/CO/CL/VO/RE |
| DocAction | Button | Y | 伝票アクション | |
| C_BPartner_ID | Search | Y | 取引先 | Callout: bPartner |
| C_BPartner_Location_ID | TableDirect | Y | 取引先住所 | |
| DateInvoiced | Date | Y | 請求日付 | |
| DateAcct | Date | Y | 転記日付 | |
| M_PriceList_ID | TableDirect | Y | 価格表 | |
| C_Currency_ID | TableDirect | Y | 通貨 | |
| C_PaymentTerm_ID | TableDirect | Y | 支払条件 | Callout: paymentTerm |
| TotalLines | Amount | Y | 明細行合計 | 自動計算(税抜) |
| GrandTotal | Amount | Y | 総合計 | 自動計算(税込) |
| C_Order_ID | Search | N | 受注伝票 | |
| M_InOut_ID | Search | N | 出荷伝票 | |
| IsPaid | YesNo | Y | 支払済み | 消込完了で自動更新 |
| Processed | YesNo | Y | 処理済み | |
| Posted | Button | Y | 転記 |
C_InvoiceLine(請求書明細)
Section titled “C_InvoiceLine(請求書明細)”| カラム名 | 型 | 必須 | 説明 |
|---|---|---|---|
| C_InvoiceLine_ID | ID | PK | 明細ID |
| C_Invoice_ID | Search | Y | ヘッダーFK |
| Line | Integer | Y | 行番号 |
| M_Product_ID | Search | N | 品目 |
| QtyInvoiced | Quantity | Y | 請求数量 |
| PriceActual | Amount | Y | 実単価 |
| PriceList | Amount | Y | 定価 |
| LineNetAmt | Amount | Y | 行合計 |
| C_Tax_ID | TableDirect | Y | 税率 |
| C_OrderLine_ID | Search | N | 受注明細FK |
| M_InOutLine_ID | Search | N | 出荷明細FK |
erDiagram
C_Invoice ||--o{ C_InvoiceLine : "has"
C_Invoice ||--o{ C_InvoiceTax : "has"
C_Invoice ||--o{ C_InvoicePaySchedule : "has"
C_Invoice }o--|| C_BPartner : "references"
C_Invoice }o--|| M_PriceList : "references"
C_Invoice }o--|| C_DocType : "references"
C_Invoice }o--o| C_Order : "references"
C_Invoice }o--o| M_InOut : "references"
C_InvoiceLine }o--o| M_Product : "references"
C_InvoiceLine }o--|| C_Tax : "references"
C_Invoice ||--o{ C_AllocationLine : "allocated"
C_Invoice ||--o{ Fact_Acct : "posted"
ビジネスロジック
Section titled “ビジネスロジック”税計算(calculateTaxTotal)
Section titled “税計算(calculateTaxTotal)”MInvoice.calculateTaxTotal() は全明細行から税額を再計算し、C_InvoiceTax レコードを更新します。税グループ(C_Tax_ID)ごとに集計し、端数処理は通貨の精度設定に従います。
🔧 カスタマイズ: 日本の消費税(軽減税率対応など)のような特殊な税計算が必要な場合は、
com.aslink.fragment.adempiere.baseのような Fragment でcalculateTaxTotal()をオーバーライドするか、ITaxProviderインターフェースを実装した OSGi サービスを登録する方法があります。後者が保守性の観点から推奨されます。
prepareIt() の主要処理
Section titled “prepareIt() の主要処理”ModelValidator.TIMING_BEFORE_PREPAREイベント発火- 会計期間のオープンチェック
- 明細行の存在チェック(0行は不可)
- 各明細行の価格・税額の再計算
- 税合計の計算(
calculateTaxTotal()) - 支払スケジュールの検証
ModelValidator.TIMING_AFTER_PREPAREイベント発火
completeIt() の主要処理
Section titled “completeIt() の主要処理”ModelValidator.TIMING_BEFORE_COMPLETEイベント発火- 税金の最終計算
- 会計転記の準備(
Fact_Acctへの仕訳データ生成) - 受注の請求済数量(QtyInvoiced)更新
- 取引先の与信残高更新
- 支払消込の自動実行(前受金がある場合)
ModelValidator.TIMING_AFTER_COMPLETEイベント発火
📌 ポイント: 会計転記(
Fact_Acct生成)はcompleteIt()内では「転記キュー」への登録のみ行われます。実際の転記はPostingServiceによって非同期に実行されます。デバッグ時はFact_AcctだけでなくAD_PInstance(バックグラウンドプロセスの実行履歴)も確認してください。
伝票処理フロー
Section titled “伝票処理フロー”stateDiagram-v2
[*] --> Drafted : 新規作成
Drafted --> InProgress : prepareIt()
InProgress --> Completed : completeIt()
Completed --> Closed : closeIt()
Completed --> Voided : voidIt()
Completed --> Reversed : reverseCorrectIt()
Drafted --> Voided : voidIt()
voidIt() の主要処理
Section titled “voidIt() の主要処理”- 消込済みの場合は消込を解除
- 取引先の与信残高をリセット
- 受注の請求済数量をリセット
- 各明細行の数量を0にセット
- 逆仕訳の生成
Callout
Section titled “Callout”| Calloutクラス | メソッド | トリガーフィールド | 処理内容 |
|---|---|---|---|
| CalloutInvoice | docType | C_DocTypeTarget_ID | 伝票タイプに応じた初期値セット |
| CalloutInvoice | bPartner | C_BPartner_ID | 取引先情報の自動セット(住所、支払条件) |
| CalloutInvoice | paymentTerm | C_PaymentTerm_ID | 支払条件に基づくスケジュール生成 |
| CalloutInvoice | product | M_Product_ID | 品目情報の自動セット(価格、税率) |
| CalloutInvoice | charge | C_Charge_ID | 科目情報の自動セット |
| CalloutInvoice | tax | C_Tax_ID | 税額の再計算 |
| CalloutInvoice | amt | PriceActual / QtyInvoiced | 金額の再計算 |
| CalloutInvoice | qty | QtyInvoiced | 数量変更時の単位変換・金額再計算 |
Calloutソース: org.adempiere.base.callout/src/org/compiere/model/CalloutInvoice.java
💡 ヒント:
CalloutInvoice.amtとCalloutInvoice.qtyは数量・単価変更時に相互に呼び出されます。追加の金額計算(割引率自動計算など)を実装する場合は、既存 Callout の後に実行される独立した Callout として実装し、無限ループを避けるためにisCalloutActive()チェックを忘れずに。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”請求書に独自バリデーションや後処理を追加する最も安全な方法:
public class CustomInvoiceValidator implements ModelValidator { @Override public String docValidate(PO po, int timing) { if (po instanceof MInvoice) { MInvoice invoice = (MInvoice) po; if (invoice.isSOTrx() && timing == TIMING_AFTER_COMPLETE) { // 例: 請求書完了後に自動メール送信をトリガー // 外部システムへの連携通知等 } } return null; }}会計転記のカスタマイズ
Section titled “会計転記のカスタマイズ”Doc_Invoice クラスを拡張することで、仕訳パターンをカスタマイズ可能。OSGi の IDocFactory を実装して独自の転記ロジックを注入。
🔧 カスタマイズ:
IDocFactoryを実装した OSGi コンポーネントを登録することで、コアDoc_Invoiceを変更せずに独自の仕訳ロジックを差し込めます。実装参考箇所:org.adempiere.base/src/org/adempiere/model/IDocFactory.java。
関連プロセス
Section titled “関連プロセス”| プロセス名 | 説明 |
|---|---|
| 伝票アクション (DocAction) | 伝票の完了・無効・取消等 |
| 受注から請求書生成 | 受注伝票から請求書を一括生成 |
| 出荷から請求書生成 | 出荷伝票から請求書を一括生成 |
| 支払消込 | 入金と請求書の消込処理 |
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”iDempiereの売上請求書は Model Validator や Callout で安全にカスタマイズできます。 税計算ロジックや会計転記パターンをコア改変なしで拡張可能です。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。