Financial Reporting and Analysis
Overview
- What you’ll learn:
- How to build custom financial reports using iDempiere’s Report Builder (PA_Report, PA_ReportLine, PA_ReportColumn) with account ranges, calculations, and multiple column types
- How the period-end and year-end closing processes work, including soft close, hard close, closing journals, and retained earnings posting
- How to configure budgets, perform budget vs. actual analysis, create custom Balance Sheet and P&L reports step by step, and schedule report distribution
- Prerequisites: Lesson 38 — Multi-Currency and Multi-Org Accounting (understanding of accounting schemas, organizations, and general ledger structure)
- Estimated reading time: 25 minutes
Introduction
Financial reports are the output of an ERP system — the artifacts that board members read, auditors examine, tax authorities review, and managers use to make decisions. Everything else in the system — every invoice, payment, journal entry, and inventory movement — ultimately feeds into these reports.
iDempiere includes a Financial Report Builder that allows you to create highly customized financial reports without writing code. You can define which accounts appear on each row, which time periods or comparison columns to display, and how calculated rows (subtotals, ratios, variances) derive their values. This lesson covers the report builder in detail, the period-end processes that prepare data for reporting, budget management, and step-by-step instructions for creating Balance Sheet and Profit and Loss reports.
Financial Report Builder Architecture
The report builder is composed of three core tables that work together: PA_Report defines the overall report, PA_ReportLine defines the rows, and PA_ReportColumn defines the columns.
PA_Report (Report Definition)
The PA_Report table is the master record for a financial report. Key fields include:
| Field | Description |
|---|---|
| Name | The report name (e.g., “Balance Sheet”, “Income Statement Q1”) |
| PA_ReportLineSet_ID | Reference to the set of row definitions (report lines) |
| PA_ReportColumnSet_ID | Reference to the set of column definitions |
| C_AcctSchema_ID | The Accounting Schema whose data this report queries |
| C_Calendar_ID | The calendar used for period-based column calculations |
| ListTrx | Whether to list individual transactions (detail report) or summarize by account |
| ListSources | Whether to show source account details below summary lines |
A single report definition brings together a line set (rows) and a column set (columns). You can reuse the same line set with different column sets — for example, the same Balance Sheet row definitions displayed with “Current Period” columns or “Year-to-Date” columns.
PA_ReportLine (Row Definitions)
Report lines define what appears in each row of the report. Lines are grouped into a Report Line Set (PA_ReportLineSet), and each line set contains multiple lines ordered by their sequence number.
Line Types
Each report line can be one of the following types based on its configuration:
- Account range line: Pulls actual accounting data from the general ledger. You define the account range by specifying starting and ending account values using the
PA_ReportSourcetable. For example, a line labeled “Cash and Bank” might include accounts 1000-1099. - Calculation line: Computes a value from other lines. For example, “Total Current Assets” sums the Cash, Receivables, and Inventory lines. Calculations reference other lines by their identifier and support addition, subtraction, and percentage operations.
- Segment line: Filters by accounting dimensions other than account — such as organization, business partner, product, project, or activity. This enables reports segmented by dimension.
Key PA_ReportLine Fields
| Field | Description |
|---|---|
| Name | The label that appears on the report row |
| SeqNo | The display sequence (order) of this line |
| LineType | Segment Value or Calculation |
| AmountType | Which amount to display: Balance (Dr-Cr), Debit, Credit, Quantity |
| PostingType | Actual, Budget, Statistical, Encumbrance |
| IsPrinted | Whether this line appears on the printed report (some lines exist only for calculation purposes) |
| Oper_1_ID / Oper_2_ID | References to other report lines for calculation (line 1 operator line 2) |
| CalculationType | Add, Subtract, Percentage, or Range for calculation lines |
| IsSummary | Whether this is a summary/total line (affects formatting) |
PA_ReportSource (Account Ranges)
For segment-value lines, the PA_ReportSource table defines which accounts feed into the line. Each source record specifies:
- ElementValue (Account): A specific account or an account range (from-to).
- Other dimensions: Optional filters by organization, business partner, product, project, campaign, or activity.
- ListSources: Whether to break down the line by individual accounts in the report output.
A single report line can have multiple report source records, and the line’s value will be the sum of all matching accounts across all its sources.
PA_ReportColumn (Column Definitions)
Report columns define the time-based or comparative values displayed for each row. Columns are grouped into a Report Column Set (PA_ReportColumnSet).
Column Types
| Column Type | Description |
|---|---|
| Period | Shows the balance or activity for a specific accounting period (e.g., “January 2026”) |
| Year-to-Date | Shows the cumulative balance from the start of the fiscal year through the selected period |
| Total | Shows the total across all periods in the fiscal year |
| Relative Period | Shows data for a period relative to the report’s run date (e.g., “Current Period”, “Prior Period”, “Same Period Prior Year”) |
| Calculation | Computes a value from other columns (e.g., Variance = Budget – Actual, Percentage = Actual / Budget x 100) |
Key PA_ReportColumn Fields
| Field | Description |
|---|---|
| Name | The column header text |
| SeqNo | The display order of this column |
| ColumnType | Period, Year, Relative Period, Calculation, etc. |
| AmountType | Balance, Period Amount (activity), Year Balance |
| PostingType | Actual, Budget, Statistical (which posting type to read from the GL) |
| RelativePeriod | Offset from current period (0 = current, -1 = prior, -12 = same month last year) |
| Oper_1_ID / Oper_2_ID | References to other columns for calculation columns |
| CalculationType | Add, Subtract, Percentage for calculation columns |
| CurrencyType | Which conversion rate type to use if currency conversion is needed |
T_Report: The Temporary Reporting Table
When a financial report is executed, iDempiere does not query the general ledger directly for each cell. Instead, it populates a temporary table called T_Report with the calculated values, and the report viewer reads from this table.
How T_Report Is Populated
- Initialization: The report engine creates T_Report records for each line-column intersection (each cell in the report matrix).
- Segment value lines: For each segment value line, the engine queries
Fact_Acct(the general ledger detail table) using the account ranges, dimension filters, period boundaries, and posting type defined by the line and column. The result (sum of debits minus credits, or as configured by AmountType) is stored in T_Report. - Calculation lines: After all segment value lines are populated, calculation lines are evaluated. A calculation line references other lines (Oper_1_ID, Oper_2_ID) and applies the calculation type (add, subtract, percentage) to derive its value.
- Calculation columns: Similarly, calculation columns reference other columns and compute derived values (e.g., variance = budget column minus actual column).
- Display: The report viewer reads T_Report and renders it as a formatted report with headers, data rows, subtotals, and formatting based on the line and column properties (IsSummary, IsPrinted, etc.).
The T_Report table is session-specific and temporary — it is cleaned up after the report is displayed. This architecture allows reports to be generated without permanent storage overhead.
Period-End Closing
Before financial reports can be finalized for a period, the period must go through a closing process that ensures all transactions are recorded and no further changes can be made.
Soft Close
A soft close (also called “closing” the period) prevents new documents from being posted to the period. The period status is changed to “Closed” in the C_Period and C_PeriodControl tables. Key characteristics:
- No new documents can be posted with an accounting date in the closed period.
- The period can be re-opened if adjustments are needed (by an administrator with the appropriate permissions).
- This is a reversible action — it is a control mechanism, not a permanent lock.
Hard Close
A hard close (or “permanently closing” the period) is a more definitive action. Once a period is hard-closed:
- It cannot be re-opened through the standard interface.
- All adjustments for the period must be made in a subsequent adjustment period.
- This is typically done after the audit is complete and the period’s financials are finalized.
Period Close Checklist
Before closing a period, ensure the following tasks are complete:
- Post all documents: Run the posting process to ensure no unposted documents remain for the period.
- Currency revaluation: Perform the unrealized gain/loss calculation for foreign-currency open items (covered in Lesson 38).
- Accruals and deferrals: Enter any accrual or deferral journal entries (prepaid expenses, deferred revenue, accrued liabilities).
- Depreciation: Run asset depreciation for the period.
- Reconciliation: Reconcile bank statements, inter-company balances, and sub-ledger to GL balances.
- Review trial balance: Verify that the trial balance is in balance and investigate any unusual amounts.
- Close the period: Change the period status to Closed.
Year-End Processing
At the end of the fiscal year, additional steps are required beyond the normal period close.
Closing Journal (Income Summary)
The year-end closing journal transfers the net income (or net loss) from the income statement accounts to the Retained Earnings account on the balance sheet. The process:
- Zero out revenue accounts: Debit each revenue account for its year-end balance, Credit Income Summary.
- Zero out expense accounts: Credit each expense account for its year-end balance, Debit Income Summary.
- Transfer net income: The Income Summary balance (revenue minus expenses = net income) is transferred to Retained Earnings. Debit Income Summary, Credit Retained Earnings (for a profitable year).
In iDempiere, this is typically accomplished through a year-end closing process or a manually created GL Journal. The key configuration is the Retained Earnings account on the Accounting Schema defaults — this is where the system posts the net income transfer.
Opening Balances in the New Year
After the closing journal is posted:
- Balance sheet accounts carry their ending balances forward as opening balances in the new fiscal year. Assets, liabilities, and equity continue seamlessly.
- Income statement accounts start the new year with zero balances. All revenue and expense accumulation begins fresh, as the prior year’s amounts have been moved to Retained Earnings.
iDempiere handles this automatically: when a financial report for the new year queries balance sheet accounts, it includes all prior-year postings. When it queries income statement accounts, it automatically excludes postings from prior fiscal years (based on the account type and the calendar’s year boundaries).
Budget Management
Budgets establish the financial plan against which actual performance is measured. iDempiere’s budgeting framework allows you to define detailed budgets and compare them to actuals through the financial report builder.
GL_Budget
The GL_Budget table defines a budget as a named plan. A client can have multiple budgets — an operating budget, a capital expenditure budget, a cash budget, etc. Each budget is identified by name and has an active flag that controls whether it appears in reports and lookups.
Budget Entry
Budget amounts are entered through GL Journals with the posting type set to Budget (rather than the default “Actual”). Each journal line specifies:
- Account: The account being budgeted.
- Period: The accounting period for this budget amount.
- Amount: The budgeted debit or credit.
- Organization: The organization this budget applies to (allowing per-org budgets).
- Other dimensions: Product, project, business partner, activity — enabling detailed dimensional budgeting.
Budget journals are posted to the Fact_Acct table with PostingType = ‘B’ (Budget), keeping them separate from actual transactions (PostingType = ‘A’). This separation allows the financial report builder to query actuals and budgets independently and create comparison columns.
GL_BudgetControl
The GL_BudgetControl table enables budget enforcement — preventing transactions from being completed when they would cause the actual spending to exceed the budget. Configuration options include:
- Budget: Which budget to enforce against.
- Control scope: Which accounts are subject to budget control.
- Control action: Whether exceeding the budget generates a warning (allowing the user to proceed) or an error (blocking the transaction).
- Commitment type: Whether to include committed amounts (open POs) in the budget utilization calculation, providing a more forward-looking view of budget consumption.
Budget vs. Actual Analysis
Using the financial report builder, you can create budget comparison reports with columns such as:
- Column 1 — Actual YTD: PostingType = Actual, ColumnType = Year-to-Date.
- Column 2 — Budget YTD: PostingType = Budget, ColumnType = Year-to-Date.
- Column 3 — Variance: Calculation column = Budget – Actual.
- Column 4 — % Utilized: Calculation column = Actual / Budget x 100.
This four-column layout gives managers a clear view of how actual spending tracks against the plan, where variances exist, and what percentage of the budget has been consumed.
Creating a Custom Balance Sheet: Step by Step
Let us walk through the creation of a Balance Sheet report from scratch.
Step 1: Create the Report Line Set
Navigate to the Report Line Set window and create a new record named “Balance Sheet Lines.” Then create the following lines (simplified example):
| SeqNo | Name | Type | Account Range / Calculation |
|---|---|---|---|
| 10 | Cash and Bank | Segment | Accounts 1100-1199 |
| 20 | Accounts Receivable | Segment | Accounts 1200-1299 |
| 30 | Inventory | Segment | Accounts 1300-1399 |
| 40 | Prepaid Expenses | Segment | Accounts 1400-1499 |
| 50 | Total Current Assets | Calculation | Sum of lines 10+20+30+40 |
| 60 | Fixed Assets (net) | Segment | Accounts 1500-1699 |
| 70 | Other Non-Current Assets | Segment | Accounts 1700-1899 |
| 80 | Total Assets | Calculation | Line 50 + 60 + 70 |
| 90 | Accounts Payable | Segment | Accounts 2100-2199 |
| 100 | Accrued Liabilities | Segment | Accounts 2200-2299 |
| 110 | Short-Term Debt | Segment | Accounts 2300-2399 |
| 120 | Total Current Liabilities | Calculation | Sum of lines 90+100+110 |
| 130 | Long-Term Debt | Segment | Accounts 2500-2699 |
| 140 | Total Liabilities | Calculation | Line 120 + 130 |
| 150 | Share Capital | Segment | Accounts 3100-3199 |
| 160 | Retained Earnings | Segment | Accounts 3200-3299 |
| 170 | Current Year Earnings | Segment | Accounts 3300-3399 (or revenue minus expense accounts) |
| 180 | Total Equity | Calculation | Sum of lines 150+160+170 |
| 190 | Total Liabilities and Equity | Calculation | Line 140 + 180 |
For each segment line, create PA_ReportSource records specifying the account ranges. Set the AmountType to “Balance” (Debit minus Credit) for asset lines and consider sign reversal for liability and equity lines (since they naturally have credit balances, you may want to display them as positive numbers).
Step 2: Create the Report Column Set
Create a new Report Column Set named “Balance Sheet Columns” with the following columns:
| SeqNo | Name | Type | Configuration |
|---|---|---|---|
| 10 | Current Period | Relative Period | RelativePeriod = 0, PostingType = Actual |
| 20 | Prior Period | Relative Period | RelativePeriod = -1, PostingType = Actual |
| 30 | Same Period Prior Year | Relative Period | RelativePeriod = -12, PostingType = Actual |
| 40 | Change vs Prior Period | Calculation | Column 10 minus Column 20 |
This column set displays the balance sheet at the current date, the prior month, the same month last year, and the month-over-month change.
Step 3: Create the Report
Navigate to the Financial Report (PA_Report) window and create a new record:
- Name: Balance Sheet
- Report Line Set: Balance Sheet Lines (created in Step 1)
- Report Column Set: Balance Sheet Columns (created in Step 2)
- Accounting Schema: Your primary accounting schema
- Calendar: Your fiscal calendar
Run the report by clicking the Process button. The report will populate T_Report and display the formatted Balance Sheet with all rows and columns populated from the general ledger.
Creating a Custom Profit and Loss Report
The P&L (Income Statement) report follows the same pattern but uses income and expense accounts.
Report Line Set (Simplified)
| SeqNo | Name | Type | Account Range / Calculation |
|---|---|---|---|
| 10 | Sales Revenue | Segment | Accounts 4100-4199 |
| 20 | Sales Returns and Discounts | Segment | Accounts 4200-4299 |
| 30 | Net Revenue | Calculation | Line 10 – Line 20 |
| 40 | Cost of Goods Sold | Segment | Accounts 5000-5999 |
| 50 | Gross Profit | Calculation | Line 30 – Line 40 |
| 60 | Salaries and Wages | Segment | Accounts 6100-6199 |
| 70 | Rent and Utilities | Segment | Accounts 6200-6299 |
| 80 | Depreciation | Segment | Accounts 6300-6399 |
| 90 | Other Operating Expenses | Segment | Accounts 6400-6999 |
| 100 | Total Operating Expenses | Calculation | Sum of lines 60+70+80+90 |
| 110 | Operating Income | Calculation | Line 50 – Line 100 |
| 120 | Interest Income/Expense | Segment | Accounts 7000-7199 |
| 130 | Exchange Gain/Loss | Segment | Accounts 7200-7299 |
| 140 | Income Before Tax | Calculation | Line 110 + 120 + 130 |
| 150 | Income Tax Expense | Segment | Accounts 8000-8099 |
| 160 | Net Income | Calculation | Line 140 – Line 150 |
Report Column Set for P&L
A typical P&L column set might include:
| SeqNo | Name | Type | Configuration |
|---|---|---|---|
| 10 | Current Month Actual | Relative Period | RelativePeriod = 0, PostingType = Actual, AmountType = Period Amount |
| 20 | Current Month Budget | Relative Period | RelativePeriod = 0, PostingType = Budget, AmountType = Period Amount |
| 30 | Monthly Variance | Calculation | Column 20 – Column 10 (favorable when positive for expenses) |
| 40 | YTD Actual | Year-to-Date | PostingType = Actual |
| 50 | YTD Budget | Year-to-Date | PostingType = Budget |
| 60 | YTD Variance | Calculation | Column 50 – Column 40 |
Note that for P&L reports, you typically use Period Amount rather than Balance for the AmountType. Period Amount shows only the activity within the period (debits and credits posted during that month), whereas Balance shows the cumulative balance since the account’s inception.
Financial Ratios and Analysis
The report builder’s calculation capabilities extend beyond simple subtotals. You can create financial ratio lines directly in the report:
- Current Ratio: Total Current Assets / Total Current Liabilities (use percentage calculation between lines 50 and 120 from the Balance Sheet example).
- Gross Margin %: Gross Profit / Net Revenue x 100 (percentage calculation between P&L lines 50 and 30).
- Operating Margin %: Operating Income / Net Revenue x 100.
- Debt-to-Equity: Total Liabilities / Total Equity.
These ratio lines use the Calculation line type with CalculationType set to “Percentage.” The result is displayed as a percentage, providing immediate analytical insight within the standard financial report.
Report Scheduling and Distribution
Financial reports can be scheduled for automatic generation and distribution using iDempiere’s process scheduling framework.
Scheduling Reports
Using the Scheduler window, you can configure a financial report to run on a recurring schedule:
- Frequency: Daily, weekly, monthly, or on specific dates (e.g., the 5th business day after month end).
- Parameters: The report parameters (period, organization, etc.) can be preset or derived dynamically (e.g., “current period” always runs for the most recent closed period).
- Output format: PDF, Excel, or HTML.
Distribution
Scheduled reports can be distributed automatically:
- Email: The generated report is emailed as an attachment to a distribution list. Configure recipients on the scheduler or use a notification rule.
- Dashboard: Report results can be configured to appear on the user’s dashboard, providing at-a-glance financial status.
- Archive: Reports can be automatically archived in iDempiere’s document archive for historical reference and audit trail.
Advanced Reporting Techniques
Multi-Organization Reports
When running a report for the * (all) organization, the report sums data across all organizations. To create a comparative report showing each organization side by side:
- Create separate columns filtered by organization, or
- Use the ListSources option with organization as a dimension to break down totals by org.
Trailing Twelve Months (TTM)
Create 12 relative-period columns (RelativePeriod = 0 through -11) and a calculation column that sums them. This provides a rolling twelve-month view that smooths seasonality and is useful for trend analysis.
Comparative Year-over-Year
Use relative period columns with offsets of 0 and -12 to show the current month and the same month in the prior year. Add a calculation column for the year-over-year change and a percentage column for the growth rate.
Departmental P&L
If your chart of accounts includes an Activity or Cost Center dimension, create report lines with PA_ReportSource records filtered by activity. This produces a departmental P&L without needing separate reports — each line shows the income and expenses for a specific department.
Key Takeaways
- iDempiere’s Financial Report Builder uses three core structures: PA_Report (the report definition linking rows to columns), PA_ReportLine (row definitions with account ranges or calculations), and PA_ReportColumn (column definitions with period types, posting types, and calculations).
- Report lines can reference specific accounts or account ranges through PA_ReportSource records, and calculation lines can sum, subtract, or compute percentages from other lines — enabling complex report structures like subtotaled Balance Sheets and P&L statements with gross margin calculations.
- The T_Report temporary table is populated at report execution time by querying Fact_Acct (the general ledger), ensuring reports always reflect the latest posted data without permanent storage overhead.
- Period-end closing follows a checklist (post all documents, revalue currencies, enter accruals, reconcile, close the period), with soft close being reversible and hard close being permanent.
- Year-end processing transfers net income from revenue and expense accounts to Retained Earnings via a closing journal, resetting income statement accounts to zero for the new fiscal year while carrying balance sheet balances forward.
- Budgets are entered as GL Journals with PostingType = Budget, stored in Fact_Acct alongside actuals, and compared through the report builder using columns with different posting types and calculation columns for variance and percentage analysis.
- The report builder supports advanced analysis including financial ratios (using percentage calculation lines), multi-organization comparisons, trailing twelve-month views, and year-over-year analysis — all without custom code.
What’s Next
This lesson concludes the Advanced series on Manufacturing and Financial Management. You now have the knowledge to manage complex production operations, multi-location distribution, product costing, multi-currency and multi-organization accounting, and sophisticated financial reporting. The next series moves into Expert-level topics, covering system customization, plugin development, and advanced integrations that extend iDempiere beyond its standard capabilities.
繁體中文翻譯
概述
- 您將學到:
- 如何使用 iDempiere 的報表建立器(PA_Report、PA_ReportLine、PA_ReportColumn)建構自訂財務報表,包括科目範圍、計算和多種欄位類型
- 期末和年末結帳流程如何運作,包括軟結帳、硬結帳、結帳日記帳和保留盈餘過帳
- 如何配置預算、執行預算對實際分析、逐步建立自訂資產負債表和損益表,以及排程報表發送
- 先修條件:第 38 課 — 多幣別與多組織會計(了解會計模式、組織和總帳結構)
- 預估閱讀時間:25 分鐘
導論
財務報表是 ERP 系統的產出——董事會成員閱讀、稽核人員檢查、稅務機關審查、經理人據以決策的產物。系統中的所有其他內容——每張發票、付款、日記帳分錄和庫存移動——最終都流入這些報表。
iDempiere 包含財務報表建立器,讓您無需撰寫程式碼即可建立高度自訂的財務報表。您可以定義每行顯示哪些科目、顯示哪些時間期間或比較欄位,以及計算行(小計、比率、差異)如何推導其值。本課詳細介紹報表建立器、為報表準備資料的期末流程、預算管理,以及建立資產負債表和損益表的逐步說明。
財務報表建立器架構
報表建立器由三個共同運作的核心資料表組成:PA_Report 定義整體報表,PA_ReportLine 定義行,PA_ReportColumn 定義欄位。
PA_Report(報表定義)
PA_Report 資料表是財務報表的主記錄。關鍵欄位包括:
| 欄位 | 說明 |
|---|---|
| Name | 報表名稱(例如「資產負債表」、「第一季損益表」) |
| PA_ReportLineSet_ID | 行定義集(報表行)的參照 |
| PA_ReportColumnSet_ID | 欄位定義集的參照 |
| C_AcctSchema_ID | 此報表查詢資料的會計模式 |
| C_Calendar_ID | 期間欄位計算使用的行事曆 |
| ListTrx | 是否列出個別交易(明細報表)或按科目彙總 |
| ListSources | 是否在彙總行下方顯示來源科目明細 |
一個報表定義將行集(行)和欄位集(欄位)結合在一起。您可以用不同的欄位集重複使用相同的行集——例如,相同的資產負債表行定義搭配「當期」欄位或「年初至今」欄位顯示。
PA_ReportLine(行定義)
報表行定義報表每行的內容。行被分組為報表行集(PA_ReportLineSet),每個行集包含多個按順序號排列的行。
行類型
每個報表行根據其配置可以是以下類型之一:
- 科目範圍行:從總帳提取實際會計資料。您透過
PA_ReportSource資料表指定起始和結束科目值來定義科目範圍。例如,標記為「現金和銀行」的行可能包含科目 1000-1099。 - 計算行:從其他行計算值。例如,「流動資產合計」加總現金、應收帳款和庫存行。計算透過標識符參照其他行,支援加法、減法和百分比運算。
- 區段行:按科目以外的會計維度篩選——如組織、業務夥伴、產品、專案或活動。這使報表可按維度分段。
PA_ReportLine 關鍵欄位
| 欄位 | 說明 |
|---|---|
| Name | 報表行上顯示的標籤 |
| SeqNo | 此行的顯示順序 |
| LineType | 區段值或計算 |
| AmountType | 顯示哪種金額:餘額(借-貸)、借方、貸方、數量 |
| PostingType | 實際、預算、統計、承諾 |
| IsPrinted | 此行是否出現在列印的報表上(某些行僅為計算目的而存在) |
| Oper_1_ID / Oper_2_ID | 計算用的其他報表行參照(行1 運算子 行2) |
| CalculationType | 計算行的加法、減法、百分比或範圍 |
| IsSummary | 是否為彙總/合計行(影響格式化) |
PA_ReportSource(科目範圍)
對於區段值行,PA_ReportSource 資料表定義哪些科目饋入該行。每筆來源記錄指定:
- ElementValue(科目):特定科目或科目範圍(起訖)。
- 其他維度:按組織、業務夥伴、產品、專案、活動或活動的選用篩選器。
- ListSources:是否在報表輸出中按個別科目細分該行。
單一報表行可有多筆報表來源記錄,該行的值為所有來源中所有匹配科目的總和。
PA_ReportColumn(欄位定義)
報表欄位定義每行顯示的時間基礎或比較值。欄位被分組為報表欄位集(PA_ReportColumnSet)。
欄位類型
| 欄位類型 | 說明 |
|---|---|
| Period | 顯示特定會計期間的餘額或活動(例如「2026年1月」) |
| Year-to-Date | 顯示從會計年度開始到所選期間的累計餘額 |
| Total | 顯示會計年度所有期間的合計 |
| Relative Period | 顯示相對於報表執行日期的期間資料(例如「當期」、「前期」、「去年同期」) |
| Calculation | 從其他欄位計算值(例如差異 = 預算 – 實際,百分比 = 實際 / 預算 x 100) |
PA_ReportColumn 關鍵欄位
| 欄位 | 說明 |
|---|---|
| Name | 欄位標題文字 |
| SeqNo | 此欄位的顯示順序 |
| ColumnType | 期間、年度、相對期間、計算等 |
| AmountType | 餘額、期間金額(活動)、年度餘額 |
| PostingType | 實際、預算、統計(從總帳讀取哪種過帳類型) |
| RelativePeriod | 相對於當前期間的偏移(0 = 當期,-1 = 前期,-12 = 去年同月) |
| Oper_1_ID / Oper_2_ID | 計算欄位的其他欄位參照 |
| CalculationType | 計算欄位的加法、減法、百分比 |
| CurrencyType | 如需幣別轉換時使用的匯率類型 |
T_Report:暫存報表資料表
當財務報表執行時,iDempiere 不會直接為每個儲存格查詢總帳。相反,它將計算值填入名為 T_Report 的暫存資料表,報表檢視器從此資料表讀取。
T_Report 的填入方式
- 初始化:報表引擎為每個行欄位交叉點(報表矩陣中的每個儲存格)建立 T_Report 記錄。
- 區段值行:對每個區段值行,引擎使用行和欄位定義的科目範圍、維度篩選器、期間邊界和過帳類型查詢
Fact_Acct(總帳明細資料表)。結果(借方減貸方之和,或依 AmountType 配置)儲存在 T_Report 中。 - 計算行:所有區段值行填入後,計算行才進行評估。計算行參照其他行(Oper_1_ID、Oper_2_ID)並套用計算類型(加法、減法、百分比)推導其值。
- 計算欄位:同樣地,計算欄位參照其他欄位並計算衍生值(例如差異 = 預算欄位減實際欄位)。
- 顯示:報表檢視器讀取 T_Report 並根據行和欄位屬性(IsSummary、IsPrinted 等)將其呈現為包含標題、資料行、小計和格式的格式化報表。
T_Report 資料表是會期特定的暫存資料——報表顯示後即被清理。此架構允許在沒有永久儲存開銷的情況下產生報表。
期末結帳
在財務報表可以確定某一期間之前,該期間必須經過結帳流程,確保所有交易都已記錄且不能再做變更。
軟結帳
軟結帳(也稱為「關閉」期間)防止新單據過帳到該期間。期間狀態在 C_Period 和 C_PeriodControl 資料表中變更為「已關閉」。主要特徵:
- 不能將會計日期在已關閉期間的新單據過帳。
- 如需調整,該期間可以重新開啟(由具有適當權限的管理員)。
- 這是可逆操作——是一種控制機制,不是永久鎖定。
硬結帳
硬結帳(或「永久關閉」期間)是更確定性的操作。一旦期間被硬結帳:
- 無法通過標準介面重新開啟。
- 該期間的所有調整必須在後續的調整期間進行。
- 通常在稽核完成且期間財務已最終確定後進行。
期末結帳檢查清單
結帳前,確保以下任務已完成:
- 過帳所有單據:執行過帳流程以確保該期間沒有未過帳的單據。
- 幣別重估:對外幣未結項目執行未實現損益計算(第 38 課涵蓋)。
- 應計和遞延:輸入任何應計或遞延日記帳分錄(預付費用、遞延收入、應計負債)。
- 折舊:執行該期間的資產折舊。
- 調節:調節銀行對帳單、公司間餘額和子帳對總帳餘額。
- 審閱試算表:驗證試算表是否平衡並調查任何異常金額。
- 關閉期間:將期間狀態變更為已關閉。
年末處理
在會計年度結束時,除了正常的期末結帳外,還需要額外的步驟。
結帳日記帳(損益彙總)
年末結帳日記帳將淨利(或淨損)從損益表科目轉入資產負債表的保留盈餘科目。流程:
- 歸零收入科目:借記每個收入科目的年末餘額,貸記損益彙總。
- 歸零費用科目:貸記每個費用科目的年末餘額,借記損益彙總。
- 轉入淨利:損益彙總餘額(收入減費用 = 淨利)轉入保留盈餘。借記損益彙總,貸記保留盈餘(對於盈利年度)。
在 iDempiere 中,這通常透過年末結帳流程或手動建立的總帳日記帳完成。關鍵配置是會計模式預設值上的保留盈餘科目——系統將淨利轉入此處。
新年度的期初餘額
結帳日記帳過帳後:
- 資產負債表科目將期末餘額結轉為新會計年度的期初餘額。資產、負債和股東權益無縫延續。
- 損益表科目在新年度以零餘額開始。所有收入和費用的累計重新開始,因為前一年度的金額已轉入保留盈餘。
iDempiere 自動處理這一點:當新年度的財務報表查詢資產負債表科目時,它包含所有前一年度的過帳。當查詢損益表科目時,它自動排除前一會計年度的過帳(基於科目類型和行事曆的年度邊界)。
預算管理
預算建立衡量實際績效的財務計畫。iDempiere 的預算框架允許您定義詳細預算並透過財務報表建立器與實際比較。
GL_Budget
GL_Budget 資料表將預算定義為具名計畫。用戶端可以有多個預算——營運預算、資本支出預算、現金預算等。每個預算以名稱識別,並有控制是否出現在報表和查詢中的啟用標記。
預算輸入
預算金額透過過帳類型設為預算(而非預設的「實際」)的總帳日記帳輸入。每筆日記帳行指定:
- 科目:編列預算的科目。
- 期間:此預算金額的會計期間。
- 金額:預算的借方或貸方。
- 組織:此預算適用的組織(允許逐組織預算)。
- 其他維度:產品、專案、業務夥伴、活動——支援詳細的維度預算。
預算日記帳以 PostingType = ‘B’(預算)過帳到 Fact_Acct 資料表,與實際交易(PostingType = ‘A’)分開。此分離使財務報表建立器可以獨立查詢實際和預算並建立比較欄位。
GL_BudgetControl
GL_BudgetControl 資料表啟用預算控制——當交易將導致實際支出超過預算時,防止交易完成。配置選項包括:
- 預算:要對照控制的預算。
- 控制範圍:哪些科目受預算控制約束。
- 控制操作:超出預算時產生警告(允許使用者繼續)或錯誤(阻止交易)。
- 承諾類型:是否在預算使用計算中包含已承諾金額(未結採購單),提供更前瞻性的預算消耗檢視。
預算對實際分析
使用財務報表建立器,您可以建立包含以下欄位的預算比較報表:
- 欄位 1 — 實際 YTD:PostingType = 實際,ColumnType = 年初至今。
- 欄位 2 — 預算 YTD:PostingType = 預算,ColumnType = 年初至今。
- 欄位 3 — 差異:計算欄位 = 預算 – 實際。
- 欄位 4 — 使用率 %:計算欄位 = 實際 / 預算 x 100。
這種四欄配置讓管理者清楚了解實際支出如何追蹤計畫、差異在哪裡,以及預算已消耗的百分比。
建立自訂資產負債表:逐步說明
讓我們從頭開始建立資產負債表報表。
步驟 1:建立報表行集
導覽至報表行集視窗,建立名為「資產負債表行」的新記錄。然後建立以下行(簡化範例):
| SeqNo | 名稱 | 類型 | 科目範圍 / 計算 |
|---|---|---|---|
| 10 | 現金和銀行 | 區段 | 科目 1100-1199 |
| 20 | 應收帳款 | 區段 | 科目 1200-1299 |
| 30 | 庫存 | 區段 | 科目 1300-1399 |
| 40 | 預付費用 | 區段 | 科目 1400-1499 |
| 50 | 流動資產合計 | 計算 | 行 10+20+30+40 之和 |
| 60 | 固定資產(淨值) | 區段 | 科目 1500-1699 |
| 70 | 其他非流動資產 | 區段 | 科目 1700-1899 |
| 80 | 資產合計 | 計算 | 行 50 + 60 + 70 |
| 90 | 應付帳款 | 區段 | 科目 2100-2199 |
| 100 | 應計負債 | 區段 | 科目 2200-2299 |
| 110 | 短期借款 | 區段 | 科目 2300-2399 |
| 120 | 流動負債合計 | 計算 | 行 90+100+110 之和 |
| 130 | 長期借款 | 區段 | 科目 2500-2699 |
| 140 | 負債合計 | 計算 | 行 120 + 130 |
| 150 | 股本 | 區段 | 科目 3100-3199 |
| 160 | 保留盈餘 | 區段 | 科目 3200-3299 |
| 170 | 本年度盈餘 | 區段 | 科目 3300-3399(或收入減費用科目) |
| 180 | 股東權益合計 | 計算 | 行 150+160+170 之和 |
| 190 | 負債和股東權益合計 | 計算 | 行 140 + 180 |
對每個區段行,建立指定科目範圍的 PA_ReportSource 記錄。資產行的 AmountType 設為「餘額」(借方減貸方),負債和股東權益行可考慮符號反轉(因其自然為貸方餘額,您可能希望以正數顯示)。
步驟 2:建立報表欄位集
建立名為「資產負債表欄位」的新報表欄位集,包含以下欄位:
| SeqNo | 名稱 | 類型 | 配置 |
|---|---|---|---|
| 10 | 當期 | 相對期間 | RelativePeriod = 0,PostingType = 實際 |
| 20 | 前期 | 相對期間 | RelativePeriod = -1,PostingType = 實際 |
| 30 | 去年同期 | 相對期間 | RelativePeriod = -12,PostingType = 實際 |
| 40 | 較前期變動 | 計算 | 欄位 10 減 欄位 20 |
此欄位集顯示當前日期、前月、去年同月的資產負債表,以及月度變動。
步驟 3:建立報表
導覽至財務報表(PA_Report)視窗,建立新記錄:
- 名稱:資產負債表
- 報表行集:資產負債表行(步驟 1 建立)
- 報表欄位集:資產負債表欄位(步驟 2 建立)
- 會計模式:您的主要會計模式
- 行事曆:您的會計行事曆
點擊處理按鈕執行報表。報表將填入 T_Report 並顯示所有行和欄位從總帳填入的格式化資產負債表。
建立自訂損益表
損益表遵循相同模式,但使用收入和費用科目。
報表行集(簡化版)
| SeqNo | 名稱 | 類型 | 科目範圍 / 計算 |
|---|---|---|---|
| 10 | 銷售收入 | 區段 | 科目 4100-4199 |
| 20 | 銷售退回和折扣 | 區段 | 科目 4200-4299 |
| 30 | 淨收入 | 計算 | 行 10 – 行 20 |
| 40 | 銷貨成本 | 區段 | 科目 5000-5999 |
| 50 | 毛利 | 計算 | 行 30 – 行 40 |
| 60 | 薪資和工資 | 區段 | 科目 6100-6199 |
| 70 | 租金和水電 | 區段 | 科目 6200-6299 |
| 80 | 折舊 | 區段 | 科目 6300-6399 |
| 90 | 其他營業費用 | 區段 | 科目 6400-6999 |
| 100 | 營業費用合計 | 計算 | 行 60+70+80+90 之和 |
| 110 | 營業利益 | 計算 | 行 50 – 行 100 |
| 120 | 利息收入/費用 | 區段 | 科目 7000-7199 |
| 130 | 匯兌損益 | 區段 | 科目 7200-7299 |
| 140 | 稅前淨利 | 計算 | 行 110 + 120 + 130 |
| 150 | 所得稅費用 | 區段 | 科目 8000-8099 |
| 160 | 淨利 | 計算 | 行 140 – 行 150 |
損益表欄位集
典型的損益表欄位集可能包括:
| SeqNo | 名稱 | 類型 | 配置 |
|---|---|---|---|
| 10 | 當月實際 | 相對期間 | RelativePeriod = 0,PostingType = 實際,AmountType = 期間金額 |
| 20 | 當月預算 | 相對期間 | RelativePeriod = 0,PostingType = 預算,AmountType = 期間金額 |
| 30 | 月度差異 | 計算 | 欄位 20 – 欄位 10(費用為正時表示有利) |
| 40 | 年初至今實際 | 年初至今 | PostingType = 實際 |
| 50 | 年初至今預算 | 年初至今 | PostingType = 預算 |
| 60 | 年初至今差異 | 計算 | 欄位 50 – 欄位 40 |
請注意,損益表通常使用期間金額而非餘額作為 AmountType。期間金額僅顯示期間內的活動(當月過帳的借方和貸方),而餘額顯示自科目設立以來的累計餘額。
財務比率和分析
報表建立器的計算功能不僅限於簡單的小計。您可以直接在報表中建立財務比率行:
- 流動比率:流動資產合計 / 流動負債合計(使用資產負債表範例中行 50 和行 120 之間的百分比計算)。
- 毛利率 %:毛利 / 淨收入 x 100(損益表行 50 和行 30 之間的百分比計算)。
- 營業利益率 %:營業利益 / 淨收入 x 100。
- 負債權益比:負債合計 / 股東權益合計。
這些比率行使用計算行類型,CalculationType 設為「百分比」。結果以百分比顯示,在標準財務報表中提供即時的分析洞察。
報表排程和發送
財務報表可使用 iDempiere 的流程排程框架進行自動產生和發送。
報表排程
使用排程器視窗,您可以配置財務報表按循環排程執行:
- 頻率:每日、每週、每月或特定日期(例如月底後第 5 個工作日)。
- 參數:報表參數(期間、組織等)可以預設或動態推導(例如「當期」始終執行最近關閉的期間)。
- 輸出格式:PDF、Excel 或 HTML。
發送
排程報表可以自動發送:
- 電子郵件:產生的報表作為附件寄送給發送清單。在排程器上配置收件者或使用通知規則。
- 儀表板:報表結果可配置顯示在使用者的儀表板上,提供一目瞭然的財務狀況。
- 歸檔:報表可自動歸檔到 iDempiere 的文件檔案中,供歷史參考和稽核軌跡使用。
進階報表技巧
多組織報表
對 *(全部)組織執行報表時,報表加總所有組織的資料。要建立並排顯示每個組織的比較報表:
- 建立按組織篩選的獨立欄位,或
- 使用 ListSources 選項,以組織作為維度來細分合計。
最近十二個月(TTM)
建立 12 個相對期間欄位(RelativePeriod = 0 至 -11)和一個加總的計算欄位。這提供滾動十二個月的檢視,平滑季節性因素,對趨勢分析很有用。
年度同比
使用偏移量為 0 和 -12 的相對期間欄位,顯示當月和去年同月。新增計算欄位顯示年度同比變動和百分比欄位顯示增長率。
部門損益表
如果您的會計科目表包含活動或成本中心維度,建立帶有按活動篩選的 PA_ReportSource 記錄的報表行。這無需單獨的報表即可產生部門損益表——每行顯示特定部門的收入和費用。
重點整理
- iDempiere 的財務報表建立器使用三個核心結構:PA_Report(將行連結到欄位的報表定義)、PA_ReportLine(包含科目範圍或計算的行定義)和 PA_ReportColumn(包含期間類型、過帳類型和計算的欄位定義)。
- 報表行可以透過 PA_ReportSource 記錄參照特定科目或科目範圍,計算行可以從其他行加總、減法或計算百分比——支援如帶小計的資產負債表和帶毛利率計算的損益表等複雜報表結構。
- T_Report 暫存資料表在報表執行時透過查詢 Fact_Acct(總帳)填入,確保報表始終反映最新過帳資料而無永久儲存開銷。
- 期末結帳遵循檢查清單(過帳所有單據、重估幣別、輸入應計、調節、關閉期間),軟結帳可逆,硬結帳永久。
- 年末處理透過結帳日記帳將淨利從收入和費用科目轉入保留盈餘,為新會計年度將損益表科目歸零,同時結轉資產負債表餘額。
- 預算以 PostingType = 預算的總帳日記帳輸入,與實際一起儲存在 Fact_Acct 中,並透過報表建立器使用不同過帳類型的欄位和差異及百分比分析的計算欄位進行比較。
- 報表建立器支援進階分析,包括財務比率(使用百分比計算行)、多組織比較、最近十二個月檢視和年度同比分析——全部無需自訂程式碼。
下一步
本課結束製造和財務管理的進階系列。您現在具備管理複雜生產營運、多據點配銷、產品成本計算、多幣別多組織會計和精密財務報表的知識。下一系列進入專家級主題,涵蓋系統自訂、外掛開發和擴展 iDempiere 標準功能之外的進階整合。
日本語翻訳
概要
- 学習内容:
- iDempiereのレポートビルダー(PA_Report、PA_ReportLine、PA_ReportColumn)を使用して、勘定科目範囲、計算、複数の列タイプを含むカスタム財務報告書を構築する方法
- 期末・年末決算プロセスの仕組み(ソフトクローズ、ハードクローズ、決算仕訳、利益剰余金の転記を含む)
- 予算の設定、予算対実績分析の実行、カスタム貸借対照表・損益計算書の段階的な作成、レポート配信のスケジューリング方法
- 前提条件:第38課 — 多通貨・多組織会計(会計スキーマ、組織、総勘定元帳構造の理解)
- 推定読了時間:25分
はじめに
財務報告書はERPシステムの出力です——取締役会メンバーが読み、監査人が検査し、税務当局が審査し、経営者が意思決定に使用する成果物です。システム内のすべて——すべての請求書、支払い、仕訳、在庫移動——は最終的にこれらの報告書に流れ込みます。
iDempiereにはコードを書かずに高度にカスタマイズされた財務報告書を作成できる財務レポートビルダーが含まれています。各行にどの勘定科目を表示するか、どの期間や比較列を表示するか、計算行(小計、比率、差異)がどのように値を導出するかを定義できます。本レッスンではレポートビルダーの詳細、報告のためにデータを準備する期末プロセス、予算管理、および貸借対照表と損益計算書を作成するための段階的な手順を説明します。
財務レポートビルダーのアーキテクチャ
レポートビルダーは連携する三つのコアテーブルで構成されています:PA_Reportが全体のレポートを定義し、PA_ReportLineが行を定義し、PA_ReportColumnが列を定義します。
PA_Report(レポート定義)
PA_Reportテーブルは財務報告書のマスターレコードです。主要フィールドは以下のとおりです:
| フィールド | 説明 |
|---|---|
| Name | レポート名(例:「貸借対照表」、「第1四半期損益計算書」) |
| PA_ReportLineSet_ID | 行定義セット(レポート行)への参照 |
| PA_ReportColumnSet_ID | 列定義セットへの参照 |
| C_AcctSchema_ID | このレポートがデータを照会する会計スキーマ |
| C_Calendar_ID | 期間ベースの列計算に使用するカレンダー |
| ListTrx | 個別取引を一覧表示するか(明細レポート)勘定科目で集計するか |
| ListSources | 集計行の下にソース勘定科目の詳細を表示するか |
一つのレポート定義が行セット(行)と列セット(列)を結び付けます。同じ行セットを異なる列セットで再利用できます——例えば、同じ貸借対照表の行定義を「当期」列や「年初来」列で表示できます。
PA_ReportLine(行定義)
レポート行はレポートの各行に何を表示するかを定義します。行はレポート行セット(PA_ReportLineSet)にグループ化され、各行セットにはシーケンス番号順に並んだ複数の行が含まれます。
行タイプ
各レポート行はその設定に基づいて以下のいずれかのタイプになります:
- 勘定科目範囲行:総勘定元帳から実際の会計データを取得します。
PA_ReportSourceテーブルを使用して開始と終了の勘定科目値を指定し、勘定科目範囲を定義します。例えば、「現金・預金」というラベルの行には勘定科目1000-1099が含まれるかもしれません。 - 計算行:他の行から値を計算します。例えば、「流動資産合計」は現金、売掛金、在庫の行を合計します。計算は識別子で他の行を参照し、加算、減算、百分率の演算をサポートします。
- セグメント行:勘定科目以外の会計ディメンション(組織、取引先、製品、プロジェクト、活動など)でフィルタリングします。これによりディメンション別のレポートが可能になります。
PA_ReportLineの主要フィールド
| フィールド | 説明 |
|---|---|
| Name | レポート行に表示されるラベル |
| SeqNo | この行の表示順序 |
| LineType | セグメント値または計算 |
| AmountType | 表示する金額:残高(借方-貸方)、借方、貸方、数量 |
| PostingType | 実績、予算、統計、エンカンブランス |
| IsPrinted | この行が印刷レポートに表示されるか(一部の行は計算目的のみ) |
| Oper_1_ID / Oper_2_ID | 計算用の他のレポート行への参照(行1 演算子 行2) |
| CalculationType | 計算行の加算、減算、百分率、範囲 |
| IsSummary | 集計/合計行かどうか(書式設定に影響) |
PA_ReportSource(勘定科目範囲)
セグメント値行の場合、PA_ReportSourceテーブルがどの勘定科目がその行に供給するかを定義します。各ソースレコードは以下を指定します:
- ElementValue(勘定科目):特定の勘定科目または勘定科目範囲(開始-終了)。
- その他のディメンション:組織、取引先、製品、プロジェクト、キャンペーン、活動によるオプションのフィルター。
- ListSources:レポート出力で個別の勘定科目ごとに行を分解するかどうか。
単一のレポート行に複数のレポートソースレコードを持つことができ、その行の値はすべてのソースのすべての一致する勘定科目の合計になります。
PA_ReportColumn(列定義)
レポート列は各行に表示される時間ベースまたは比較値を定義します。列はレポート列セット(PA_ReportColumnSet)にグループ化されます。
列タイプ
| 列タイプ | 説明 |
|---|---|
| Period | 特定の会計期間の残高または活動を表示(例:「2026年1月」) |
| Year-to-Date | 会計年度の開始から選択された期間までの累計残高を表示 |
| Total | 会計年度のすべての期間の合計を表示 |
| Relative Period | レポート実行日を基準とした期間のデータを表示(例:「当期」、「前期」、「前年同期」) |
| Calculation | 他の列から値を計算(例:差異 = 予算 – 実績、百分率 = 実績 / 予算 x 100) |
PA_ReportColumnの主要フィールド
| フィールド | 説明 |
|---|---|
| Name | 列ヘッダーのテキスト |
| SeqNo | この列の表示順序 |
| ColumnType | 期間、年度、相対期間、計算等 |
| AmountType | 残高、期間金額(活動)、年度残高 |
| PostingType | 実績、予算、統計(GLからどの転記タイプを読むか) |
| RelativePeriod | 当期からのオフセット(0 = 当期、-1 = 前期、-12 = 前年同月) |
| Oper_1_ID / Oper_2_ID | 計算列の他の列への参照 |
| CalculationType | 計算列の加算、減算、百分率 |
| CurrencyType | 通貨換算が必要な場合に使用する換算レートタイプ |
T_Report:一時報告テーブル
財務報告書が実行されると、iDempiereは各セルについて総勘定元帳を直接照会しません。代わりに、T_Reportと呼ばれる一時テーブルに計算値を入力し、レポートビューアがこのテーブルから読み取ります。
T_Reportの入力方法
- 初期化:レポートエンジンが各行列の交差点(レポートマトリックスの各セル)のT_Reportレコードを作成する。
- セグメント値行:各セグメント値行について、エンジンが行と列で定義された勘定科目範囲、ディメンションフィルター、期間境界、転記タイプを使用して
Fact_Acct(総勘定元帳明細テーブル)を照会する。結果(借方から貸方を引いた合計、またはAmountTypeの設定に基づく)がT_Reportに保存される。 - 計算行:すべてのセグメント値行が入力された後、計算行が評価される。計算行は他の行(Oper_1_ID、Oper_2_ID)を参照し、計算タイプ(加算、減算、百分率)を適用して値を導出する。
- 計算列:同様に、計算列は他の列を参照して導出値を計算する(例:差異 = 予算列マイナス実績列)。
- 表示:レポートビューアがT_Reportを読み取り、行と列のプロパティ(IsSummary、IsPrinted等)に基づいてヘッダー、データ行、小計、書式を含むフォーマットされたレポートとして表示する。
T_Reportテーブルはセッション固有の一時的なもので、レポート表示後にクリーンアップされます。このアーキテクチャにより、永続的なストレージオーバーヘッドなしでレポートを生成できます。
期末決算
財務報告書を期間について確定する前に、すべての取引が記録され、それ以上の変更ができないことを保証する決算プロセスを経る必要があります。
ソフトクローズ
ソフトクローズ(期間の「クローズ」とも呼ばれる)は、新しい伝票がその期間に転記されることを防止します。期間ステータスがC_PeriodおよびC_PeriodControlテーブルで「クローズ」に変更されます。主な特徴:
- クローズされた期間の会計日付を持つ新しい伝票を転記できない。
- 調整が必要な場合、適切な権限を持つ管理者が期間を再オープンできる。
- これは可逆的な操作——永続的なロックではなく制御メカニズム。
ハードクローズ
ハードクローズ(期間の「永久クローズ」)はより確定的な操作です。期間がハードクローズされると:
- 標準インターフェースから再オープンできない。
- その期間のすべての調整は後続の調整期間で行う必要がある。
- 通常、監査が完了し期間の財務が確定した後に行われる。
期末決算チェックリスト
期間をクローズする前に、以下のタスクが完了していることを確認します:
- すべての伝票を転記:転記プロセスを実行し、その期間に未転記の伝票が残っていないことを確認。
- 通貨再評価:外貨の未決済項目に対する未実現損益計算を実行(第38課で説明)。
- 見越しと繰延:見越しまたは繰延の仕訳(前払費用、繰延収益、未払負債)を入力。
- 減価償却:その期間の資産減価償却を実行。
- 照合:銀行明細書、会社間残高、補助元帳と総勘定元帳残高を照合。
- 試算表の確認:試算表がバランスしていることを確認し、異常な金額を調査。
- 期間のクローズ:期間ステータスをクローズに変更。
年末処理
会計年度末には、通常の期末決算に加えて追加の手順が必要です。
決算仕訳(損益要約)
年末決算仕訳は純利益(または純損失)を損益計算書勘定から貸借対照表の利益剰余金勘定に振り替えます。プロセス:
- 収益勘定のゼロ化:各収益勘定の年末残高を借方に記入し、損益要約を貸方に記入。
- 費用勘定のゼロ化:各費用勘定の年末残高を貸方に記入し、損益要約を借方に記入。
- 純利益の振替:損益要約残高(収益マイナス費用 = 純利益)を利益剰余金に振り替え。損益要約を借方、利益剰余金を貸方(利益のある年度の場合)。
iDempiereでは、これは通常、年末決算プロセスまたは手動で作成した総勘定元帳仕訳帳で行われます。重要な設定は会計スキーマのデフォルトの利益剰余金勘定——システムが純利益の振替を転記する場所です。
新年度の期首残高
決算仕訳の転記後:
- 貸借対照表勘定は期末残高を新会計年度の期首残高として繰り越します。資産、負債、資本はシームレスに継続します。
- 損益計算書勘定は新年度にゼロ残高で開始します。前年度の金額が利益剰余金に移されたため、すべての収益と費用の累計が新たに始まります。
iDempiereはこれを自動的に処理します:新年度の財務報告書が貸借対照表勘定を照会すると、すべての前年度の転記が含まれます。損益計算書勘定を照会すると、前の会計年度からの転記を自動的に除外します(勘定タイプとカレンダーの年度境界に基づいて)。
予算管理
予算は実績を測定する財務計画を確立します。iDempiereの予算フレームワークにより、詳細な予算を定義し、財務レポートビルダーを通じて実績と比較できます。
GL_Budget
GL_Budgetテーブルは予算を名前付き計画として定義します。クライアントは複数の予算を持つことができます——営業予算、設備投資予算、資金繰り予算等。各予算は名前で識別され、レポートやルックアップに表示されるかどうかを制御する有効フラグがあります。
予算入力
予算金額は転記タイプを予算(デフォルトの「実績」ではなく)に設定した総勘定元帳仕訳帳で入力します。各仕訳行は以下を指定します:
- 勘定科目:予算を設定する勘定科目。
- 期間:この予算金額の会計期間。
- 金額:予算の借方または貸方。
- 組織:この予算が適用される組織(組織別予算を可能にする)。
- その他のディメンション:製品、プロジェクト、取引先、活動——詳細なディメンション別予算を可能にする。
予算仕訳帳はPostingType = ‘B’(Budget)でFact_Acctテーブルに転記され、実績取引(PostingType = ‘A’)とは分離されます。この分離により、財務レポートビルダーが実績と予算を独立して照会し比較列を作成できます。
GL_BudgetControl
GL_BudgetControlテーブルは予算統制を有効にします——取引が実際の支出を予算超過させる場合に、取引の完了を防止します。設定オプションは以下のとおりです:
- 予算:どの予算に対して統制するか。
- 統制範囲:どの勘定科目が予算統制の対象か。
- 統制アクション:予算超過時に警告(ユーザーの続行を許可)またはエラー(取引をブロック)を生成するか。
- コミットメントタイプ:予算使用計算にコミット済み金額(未決済PO)を含めるか、予算消費のより前向きな視点を提供する。
予算対実績分析
財務レポートビルダーを使用して、以下の列を含む予算比較レポートを作成できます:
- 列1 — 実績 YTD:PostingType = 実績、ColumnType = 年初来。
- 列2 — 予算 YTD:PostingType = 予算、ColumnType = 年初来。
- 列3 — 差異:計算列 = 予算 – 実績。
- 列4 — 使用率 %:計算列 = 実績 / 予算 x 100。
この4列レイアウトにより、実際の支出が計画に対してどのように追跡されているか、差異がどこにあるか、予算がどの程度消費されたかを明確に把握できます。
カスタム貸借対照表の作成:段階的手順
貸借対照表レポートの作成を最初から順を追って説明します。
ステップ1:レポート行セットの作成
レポート行セットウィンドウに移動し、「貸借対照表行」という名前の新しいレコードを作成します。次に以下の行を作成します(簡略化した例):
| SeqNo | 名称 | タイプ | 勘定科目範囲 / 計算 |
|---|---|---|---|
| 10 | 現金・預金 | セグメント | 勘定科目 1100-1199 |
| 20 | 売掛金 | セグメント | 勘定科目 1200-1299 |
| 30 | 棚卸資産 | セグメント | 勘定科目 1300-1399 |
| 40 | 前払費用 | セグメント | 勘定科目 1400-1499 |
| 50 | 流動資産合計 | 計算 | 行 10+20+30+40 の合計 |
| 60 | 固定資産(純額) | セグメント | 勘定科目 1500-1699 |
| 70 | その他の固定資産 | セグメント | 勘定科目 1700-1899 |
| 80 | 資産合計 | 計算 | 行 50 + 60 + 70 |
| 90 | 買掛金 | セグメント | 勘定科目 2100-2199 |
| 100 | 未払費用 | セグメント | 勘定科目 2200-2299 |
| 110 | 短期借入金 | セグメント | 勘定科目 2300-2399 |
| 120 | 流動負債合計 | 計算 | 行 90+100+110 の合計 |
| 130 | 長期借入金 | セグメント | 勘定科目 2500-2699 |
| 140 | 負債合計 | 計算 | 行 120 + 130 |
| 150 | 資本金 | セグメント | 勘定科目 3100-3199 |
| 160 | 利益剰余金 | セグメント | 勘定科目 3200-3299 |
| 170 | 当期純利益 | セグメント | 勘定科目 3300-3399(または収益マイナス費用勘定) |
| 180 | 純資産合計 | 計算 | 行 150+160+170 の合計 |
| 190 | 負債・純資産合計 | 計算 | 行 140 + 180 |
各セグメント行について、勘定科目範囲を指定するPA_ReportSourceレコードを作成します。資産行のAmountTypeを「残高」(借方マイナス貸方)に設定し、負債・資本行には符号反転を考慮します(自然に貸方残高のため、正の数字で表示したい場合があります)。
ステップ2:レポート列セットの作成
「貸借対照表列」という名前の新しいレポート列セットを作成し、以下の列を含めます:
| SeqNo | 名称 | タイプ | 設定 |
|---|---|---|---|
| 10 | 当期 | 相対期間 | RelativePeriod = 0、PostingType = 実績 |
| 20 | 前期 | 相対期間 | RelativePeriod = -1、PostingType = 実績 |
| 30 | 前年同期 | 相対期間 | RelativePeriod = -12、PostingType = 実績 |
| 40 | 前期比変動 | 計算 | 列10 マイナス 列20 |
この列セットは、現在の日付、前月、前年同月の貸借対照表と月次変動を表示します。
ステップ3:レポートの作成
財務レポート(PA_Report)ウィンドウに移動し、新しいレコードを作成します:
- 名称:貸借対照表
- レポート行セット:貸借対照表行(ステップ1で作成)
- レポート列セット:貸借対照表列(ステップ2で作成)
- 会計スキーマ:主要な会計スキーマ
- カレンダー:会計カレンダー
処理ボタンをクリックしてレポートを実行します。レポートはT_Reportを入力し、すべての行と列が総勘定元帳から入力されたフォーマット済みの貸借対照表を表示します。
カスタム損益計算書の作成
損益計算書は同じパターンに従いますが、収益と費用の勘定科目を使用します。
レポート行セット(簡略版)
| SeqNo | 名称 | タイプ | 勘定科目範囲 / 計算 |
|---|---|---|---|
| 10 | 売上高 | セグメント | 勘定科目 4100-4199 |
| 20 | 売上戻り・値引 | セグメント | 勘定科目 4200-4299 |
| 30 | 純売上高 | 計算 | 行 10 – 行 20 |
| 40 | 売上原価 | セグメント | 勘定科目 5000-5999 |
| 50 | 売上総利益 | 計算 | 行 30 – 行 40 |
| 60 | 給与・賃金 | セグメント | 勘定科目 6100-6199 |
| 70 | 賃借料・光熱費 | セグメント | 勘定科目 6200-6299 |
| 80 | 減価償却費 | セグメント | 勘定科目 6300-6399 |
| 90 | その他の営業費用 | セグメント | 勘定科目 6400-6999 |
| 100 | 営業費用合計 | 計算 | 行 60+70+80+90 の合計 |
| 110 | 営業利益 | 計算 | 行 50 – 行 100 |
| 120 | 受取利息/支払利息 | セグメント | 勘定科目 7000-7199 |
| 130 | 為替差損益 | セグメント | 勘定科目 7200-7299 |
| 140 | 税引前利益 | 計算 | 行 110 + 120 + 130 |
| 150 | 法人税等 | セグメント | 勘定科目 8000-8099 |
| 160 | 当期純利益 | 計算 | 行 140 – 行 150 |
損益計算書の列セット
典型的な損益計算書の列セットには以下が含まれます:
| SeqNo | 名称 | タイプ | 設定 |
|---|---|---|---|
| 10 | 当月実績 | 相対期間 | RelativePeriod = 0、PostingType = 実績、AmountType = 期間金額 |
| 20 | 当月予算 | 相対期間 | RelativePeriod = 0、PostingType = 予算、AmountType = 期間金額 |
| 30 | 月次差異 | 計算 | 列20 – 列10(費用で正の場合は有利) |
| 40 | 年初来実績 | 年初来 | PostingType = 実績 |
| 50 | 年初来予算 | 年初来 | PostingType = 予算 |
| 60 | 年初来差異 | 計算 | 列50 – 列40 |
損益計算書では、AmountTypeに残高ではなく期間金額を通常使用します。期間金額はその期間内の活動のみを表示し(当月に転記された借方と貸方)、残高は勘定科目の設定以来の累計残高を表示します。
財務比率と分析
レポートビルダーの計算機能は単純な小計を超えています。レポート内に直接、財務比率行を作成できます:
- 流動比率:流動資産合計 / 流動負債合計(貸借対照表の例の行50と行120間の百分率計算を使用)。
- 売上総利益率 %:売上総利益 / 純売上高 x 100(損益計算書の行50と行30間の百分率計算)。
- 営業利益率 %:営業利益 / 純売上高 x 100。
- 負債資本比率:負債合計 / 純資産合計。
これらの比率行はCalculationTypeを「百分率」に設定した計算行タイプを使用します。結果は百分率で表示され、標準の財務報告書内で即座に分析的な洞察を提供します。
レポートのスケジューリングと配信
財務報告書はiDempiereのプロセススケジューリングフレームワークを使用して自動生成と配信をスケジュールできます。
レポートのスケジューリング
スケジューラーウィンドウを使用して、財務報告書を定期実行するように設定できます:
- 頻度:毎日、毎週、毎月、または特定の日付(例:月末後の第5営業日)。
- パラメータ:レポートパラメータ(期間、組織等)はプリセットまたは動的導出が可能(例:「当期」は常に直近のクローズされた期間で実行)。
- 出力フォーマット:PDF、Excel、またはHTML。
配信
スケジュールされたレポートは自動配信できます:
- メール:生成されたレポートが配信リストに添付ファイルとしてメール送信される。スケジューラーで受信者を設定するか、通知ルールを使用する。
- ダッシュボード:レポート結果をユーザーのダッシュボードに表示するように設定でき、一目で財務状況を把握可能。
- アーカイブ:レポートをiDempiereの文書アーカイブに自動保存し、履歴参照や監査証跡に使用可能。
高度なレポート技法
多組織レポート
*(全体)組織でレポートを実行すると、すべての組織のデータが合計されます。各組織を横並びで比較するレポートを作成するには:
- 組織でフィルタリングされた個別の列を作成するか、
- 組織をディメンションとしてListSourcesオプションを使用して合計を組織別に分解する。
過去12ヶ月(TTM)
12個の相対期間列(RelativePeriod = 0から-11)とそれらを合計する計算列を作成します。これにより季節性を平準化するローリング12ヶ月ビューが提供され、トレンド分析に有用です。
前年同期比較
オフセット0と-12の相対期間列を使用して、当月と前年同月を表示します。前年同期比変動の計算列と成長率の百分率列を追加します。
部門別損益計算書
会計科目表に活動またはコストセンターのディメンションが含まれている場合、活動でフィルタリングされたPA_ReportSourceレコードを持つレポート行を作成します。これにより個別のレポートなしで部門別損益計算書が作成でき、各行は特定の部門の収益と費用を表示します。
重要ポイント
- iDempiereの財務レポートビルダーは三つのコア構造を使用します:PA_Report(行と列をリンクするレポート定義)、PA_ReportLine(勘定科目範囲または計算を持つ行定義)、PA_ReportColumn(期間タイプ、転記タイプ、計算を持つ列定義)。
- レポート行はPA_ReportSourceレコードを通じて特定の勘定科目または勘定科目範囲を参照でき、計算行は他の行から合計、減算、または百分率を計算できます——小計付きの貸借対照表や粗利率計算付きの損益計算書のような複雑なレポート構造を可能にします。
- T_Report一時テーブルはレポート実行時にFact_Acct(総勘定元帳)を照会して入力され、永続的なストレージオーバーヘッドなしでレポートが常に最新の転記データを反映することを保証します。
- 期末決算はチェックリスト(すべての伝票の転記、通貨再評価、見越しの入力、照合、期間のクローズ)に従い、ソフトクローズは可逆、ハードクローズは永久です。
- 年末処理は決算仕訳を通じて収益・費用勘定から利益剰余金に純利益を振り替え、新会計年度に向けて損益計算書勘定をゼロにリセットしつつ貸借対照表残高を繰り越します。
- 予算はPostingType = 予算の総勘定元帳仕訳帳で入力され、実績とともにFact_Acctに保存され、異なる転記タイプの列と差異・百分率分析の計算列を使用してレポートビルダーで比較されます。
- レポートビルダーは財務比率(百分率計算行を使用)、多組織比較、過去12ヶ月ビュー、前年同期分析を含む高度な分析をサポートします——すべてカスタムコード不要です。
次のステップ
本レッスンで製造と財務管理の上級シリーズは終了です。複雑な生産運用、多拠点の流通、製品原価計算、多通貨・多組織会計、高度な財務報告を管理する知識を身につけました。次のシリーズはエキスパートレベルのトピックに進み、システムのカスタマイズ、プラグイン開発、iDempiereの標準機能を拡張する高度な統合を扱います。