Multi-Currency and Multi-Org Accounting
Overview
- What you’ll learn:
- How iDempiere manages currencies, conversion rates, and the currency conversion process that occurs during document posting
- How to handle multi-currency invoices, calculate unrealized gains and losses, and perform currency revaluation at period end
- How to structure multi-organization environments, process inter-organization transactions, build organizational hierarchies, and perform financial consolidation with elimination entries
- Prerequisites: Lesson 37 — Cost Management and Costing Methods (understanding of accounting schemas and financial posting)
- Estimated reading time: 25 minutes
Introduction
Businesses that operate across borders or serve international customers face two fundamental accounting challenges. First, transactions occur in multiple currencies, and exchange rates fluctuate constantly — creating gains and losses that must be recognized in the financial statements. Second, organizations with multiple legal entities must consolidate their individual financial results into a single set of group-level statements, eliminating inter-company transactions that would otherwise inflate the group’s revenue and expenses.
iDempiere addresses both challenges with built-in multi-currency support and a flexible multi-organization architecture. This lesson explains how currency management and multi-org accounting work in practice, from the moment a foreign-currency invoice is entered through to the consolidated financial statements.
Currency Management
Every monetary transaction in iDempiere involves at least one currency, and many involve two or three. Understanding the currency types is the starting point.
Currency Types
- Functional Currency: The primary currency of the Accounting Schema — the currency in which the general ledger is maintained. For a US-based company, this is typically USD. All accounting entries are ultimately expressed in the functional currency. Each Accounting Schema has exactly one functional currency.
- Transaction Currency: The currency in which a specific business document is denominated. A sales invoice to a European customer might be in EUR, while a purchase order to a Japanese supplier might be in JPY. The transaction currency can differ from the functional currency.
- Reporting Currency: An additional currency used for financial reporting. A subsidiary in Brazil (functional currency BRL) might need to report in USD for the parent company. Reporting currencies are defined as additional Accounting Schemas linked to the primary schema.
C_Currency Table
The C_Currency table stores all currencies available in the system. Each currency record includes:
| Field | Description |
|---|---|
| ISO_Code | The ISO 4217 currency code (USD, EUR, GBP, JPY, etc.) |
| CurSymbol | The currency symbol ($, €, £, ¥) |
| StdPrecision | Number of decimal places for standard amounts (2 for most currencies, 0 for JPY) |
| CostingPrecision | Number of decimal places for costing calculations (often higher than standard) |
| IsEuro | Whether the currency participates in Euro fixed-rate conversion |
| EMUEntryDate / EMURate | Entry date and fixed rate for European Monetary Union currencies |
iDempiere ships with a comprehensive set of world currencies pre-loaded. Administrators typically need only to maintain exchange rates rather than create new currency records.
Conversion Rates (C_Conversion_Rate)
Exchange rates are stored in the C_Conversion_Rate table. Each rate record specifies the conversion factor between two currencies for a given date range and conversion type.
Key Fields
| Field | Description |
|---|---|
| C_Currency_ID | The source currency |
| C_Currency_ID_To | The target currency |
| ValidFrom / ValidTo | The date range for which this rate is effective |
| MultiplyRate | The multiplication factor (source x rate = target amount) |
| DivideRate | The division factor (source / rate = target amount). Automatically calculated as 1/MultiplyRate. |
| C_ConversionType_ID | The type of conversion rate (Spot, Period End, Company, etc.) |
Conversion Rate Types
iDempiere supports multiple conversion rate types through the C_ConversionType table. Common types include:
- Spot: The current market exchange rate. Used for day-to-day transaction conversion. Updated daily (or more frequently for volatile currencies).
- Period End: The exchange rate at the close of an accounting period. Used for balance sheet revaluation of foreign-currency monetary items.
- Company: An internally defined rate that the organization uses for budgeting, planning, or transfer pricing. May differ from the market rate.
- Average: An average rate for a period, sometimes used for income statement conversion in consolidation.
Users can define additional conversion types for specific business requirements. Each document type can be configured to use a specific conversion type by default.
Maintaining Exchange Rates
Exchange rates can be maintained in several ways:
- Manual entry: An administrator enters rates through the Currency Conversion Rate window. This is the most common method for small to medium operations.
- Import: Rates can be imported in bulk from external sources (bank feeds, financial data providers) using the data import framework.
- Automatic feed: Custom integrations can pull rates from APIs (European Central Bank, Open Exchange Rates, etc.) and populate the conversion rate table automatically.
Currency Conversion During Document Posting
When a document with a foreign transaction currency is posted to the general ledger, iDempiere automatically converts the transaction amount to the functional currency. This conversion happens at the posting engine level and follows a specific sequence.
Conversion Process
- Identify currencies: The posting engine compares the document’s transaction currency against the Accounting Schema’s functional currency.
- Determine conversion type: The document type’s configured conversion type is used (or Spot as the default).
- Look up the rate: The system searches the C_Conversion_Rate table for a matching record: source currency, target currency, conversion type, and date range that includes the document’s accounting date.
- Apply the rate: Transaction amount x MultiplyRate = functional currency amount.
- Generate accounting entries: Both the source (transaction currency) and the converted (functional currency) amounts are stored in the accounting entries (Fact_Acct table), which carries both AmtSourceDr/Cr and AmtAcctDr/Cr fields.
If no matching conversion rate is found, the posting fails with an error message indicating the missing rate. This is one of the most common posting errors in multi-currency environments and is resolved by entering the required rate.
Multi-Currency Invoice Example
Consider a US company (functional currency USD) receiving an invoice from a European supplier for EUR 10,000:
- The invoice is entered with currency EUR and amount 10,000.
- The invoice date is January 15, and the EUR/USD spot rate for that date is 1.0850.
- When the invoice is posted, the accounting entries are:
- Debit Expense/Inventory: EUR 10,000 (source) / USD 10,850 (accounting)
- Credit Accounts Payable: EUR 10,000 (source) / USD 10,850 (accounting)
- When the payment is made on February 10, the EUR/USD rate is 1.0920:
- Debit Accounts Payable: EUR 10,000 (source) / USD 10,850 (accounting, original rate)
- Credit Bank: EUR 10,000 (source) / USD 10,920 (accounting, payment date rate)
- Debit Realized Exchange Loss: USD 70 (the difference: $10,920 – $10,850)
The $70 represents a realized exchange loss — the euro strengthened between the invoice date and payment date, so the company paid more in USD terms than originally recorded.
Unrealized Gain/Loss Calculation
At each reporting period end, open foreign-currency balances (unpaid invoices, outstanding receivables) must be revalued to the current exchange rate. The difference between the original booking rate and the period-end rate is an unrealized gain or loss — unrealized because the transaction has not yet settled.
Revaluation Process
- Identify open items: Find all unpaid AP invoices and uncollected AR invoices denominated in foreign currencies.
- Determine the period-end rate: Use the Period End conversion type rate for the reporting date.
- Calculate the difference: For each open item, compare the original functional currency amount against the revalued amount at the period-end rate.
- Generate revaluation entries:
- If the foreign currency strengthened (liability increased): Debit Unrealized Exchange Loss, Credit Accounts Payable.
- If the foreign currency weakened (liability decreased): Debit Accounts Payable, Credit Unrealized Exchange Gain.
- The inverse logic applies for receivables.
Reversal of Unrealized Entries
Unrealized gain/loss entries are typically reversed at the beginning of the next period. When the transaction eventually settles, the full realized gain or loss is calculated against the original booking rate. This approach prevents double-counting: the unrealized entry is temporary (for accurate period-end reporting) and the realized entry at settlement is permanent.
Currency Revaluation Process in iDempiere
iDempiere provides a Currency Revaluation process that automates the unrealized gain/loss calculation. The process parameters include:
- Accounting Schema: The schema whose functional currency is the target.
- Currency Type: Typically “Period End” to use the closing rate.
- Revaluation Date: The period-end date for the revaluation.
- Account types to include: Typically Accounts Payable and Accounts Receivable, but can include bank accounts in foreign currencies.
The process generates a GL Journal with the revaluation entries, which can be reviewed before posting. The reversing entry for the next period opening can be generated automatically.
Multi-Organization Structure
iDempiere’s multi-organization architecture separates a single client into multiple independent (or semi-independent) organizational units. This structure is fundamental to multi-company accounting.
Client and Organization Hierarchy
The hierarchy follows this pattern:
- Client (Tenant): The top-level container. All organizations exist within a single client and share the same system dictionary, security model, and base configuration.
- Organization (*): The asterisk organization represents data shared across all organizations within the client. Master data defined at the * organization (products, business partners, chart of accounts) is visible to all organizations.
- Operating Organizations: Individual legal entities, divisions, branches, or departments. Each operating organization has its own transactions, inventory, and can have its own accounting configuration.
When to Use Multiple Organizations
Multiple organizations are appropriate when:
- Separate legal entities: A holding company with multiple subsidiaries that file separate tax returns and financial statements.
- Geographic divisions: Regional operations that need independent P&L tracking.
- Functional segmentation: Separating manufacturing, distribution, and retail operations for management reporting.
- Regulatory requirements: When regulations require separate books for different business activities.
Shared vs. Organization-Specific Data
Data in iDempiere falls into three categories in a multi-org setup:
- Shared (Org *): Master data like products, business partners, payment terms, and tax categories are typically shared. This ensures consistency and reduces maintenance.
- Organization-specific: Transactions (orders, invoices, payments), inventory, and accounting entries belong to specific organizations. This ensures clear ownership and accountability.
- Configurable: Some data (warehouses, price lists, bank accounts) can be shared or organization-specific depending on business requirements.
Inter-Organization Transactions
When organizations within the same client trade with each other — transferring goods, providing services, or allocating costs — inter-organization transactions are required.
Inter-Org Inventory Transfers
When Organization A transfers goods to Organization B:
- A Distribution Order or Inventory Movement is created specifying the source org/warehouse and destination org/warehouse.
- The system generates offsetting accounting entries:
- Org A: Credit Inventory, Debit Inter-Org Due From B.
- Org B: Debit Inventory, Credit Inter-Org Due To A.
- The inter-org due-from/due-to accounts ensure that each organization’s books balance independently.
Inter-Org Invoicing
For internal service charges or transfer pricing between organizations:
- Organization A creates an AR Invoice to Organization B (using B as the Business Partner).
- Organization B creates a matching AP Invoice from Organization A.
- Each organization recognizes the revenue/expense on its own books.
- The inter-company receivable and payable are tracked in designated inter-org accounts.
Transfer pricing — the price at which inter-org transactions are valued — must comply with tax regulations. Many jurisdictions require arm’s-length pricing (prices comparable to those charged to external parties). The transfer price is set on the inter-org price list or configured through specific pricing rules.
Organizational Hierarchies
iDempiere supports Organization Hierarchies (AD_OrgInfo, AD_Tree) that define reporting relationships between organizations. A hierarchy might look like:
Group Holding Company ├── Manufacturing Division │ ├── Plant North │ └── Plant South ├── Sales Division │ ├── Region East │ └── Region West └── Shared Services
Hierarchies serve two purposes:
- Reporting aggregation: Financial reports can be run at any level of the hierarchy, automatically summing the results of all child organizations.
- Security: Role-based access can be configured to grant access to a hierarchy node and all its children, simplifying permission management for divisional managers.
Financial Consolidation
Consolidation is the process of combining the financial statements of multiple organizations into a single set of group-level statements. This is required whenever a parent company owns subsidiaries and must report group results.
Consolidation Steps
- Prepare individual statements: Each organization completes its period-end closing and generates its own trial balance, income statement, and balance sheet.
- Currency translation: If organizations operate in different functional currencies, their financial statements must be translated to the group’s reporting currency. The translation uses:
- Balance sheet accounts: Translated at the period-end (closing) rate.
- Income statement accounts: Translated at the average rate for the period (or transaction-date rates if available).
- Equity accounts: Translated at historical rates.
- Translation adjustment: The balancing difference is recorded in a Currency Translation Adjustment (CTA) equity account.
- Elimination entries: Inter-organization transactions must be eliminated to avoid double-counting:
- Inter-org revenue and cost: If Org A sold $100,000 of goods to Org B, the consolidated statements must eliminate $100,000 of revenue from A and $100,000 of cost from B.
- Inter-org receivables and payables: The due-from/due-to balances between organizations must net to zero in the consolidated balance sheet.
- Inter-org profit in inventory: If Org B still holds inventory purchased from Org A at a markup, the unrealized inter-company profit must be eliminated from the consolidated inventory balance.
- Produce consolidated statements: After translation and elimination, the remaining balances are summed across all organizations to produce the consolidated Balance Sheet, Income Statement, and Cash Flow Statement.
Consolidation in iDempiere
iDempiere supports consolidation through several mechanisms:
- Multi-org reporting: Financial reports can be run for the * (all) organization, which automatically sums all organizations’ balances.
- Reporting currency schema: A secondary Accounting Schema in the group reporting currency can be configured to maintain parallel accounting entries translated at appropriate rates.
- GL Journal for eliminations: Elimination entries are created as GL Journals posted to the parent organization, debiting and crediting the appropriate elimination accounts.
Practical Example: Multi-Company Setup
Consider a group with the following structure:
- Parent Corp (US): Holding company, functional currency USD.
- Mfg GmbH (Germany): Manufacturing subsidiary, functional currency EUR.
- Sales Ltd (UK): Sales subsidiary, functional currency GBP.
Transaction Flow
- Mfg GmbH manufactures a product at a cost of EUR 80 per unit.
- Mfg GmbH sells 1,000 units to Sales Ltd at a transfer price of EUR 100 per unit. Mfg GmbH records EUR 100,000 revenue; Sales Ltd records EUR 100,000 cost (converted to GBP at the transaction date rate).
- Sales Ltd sells 800 units to external customers at GBP 120 per unit. Sales Ltd records GBP 96,000 revenue.
- At period end, Sales Ltd still holds 200 units in inventory, valued at the transfer price.
Consolidation
- Translate Mfg GmbH’s EUR statements and Sales Ltd’s GBP statements to USD using appropriate rates.
- Eliminate the inter-company sale: remove EUR 100,000 revenue from Mfg GmbH and EUR 100,000 COGS from Sales Ltd. The net effect on consolidated P&L is zero for this transaction.
- Eliminate inter-company receivable/payable: the EUR 100,000 receivable on Mfg GmbH’s books and the corresponding payable on Sales Ltd’s books net to zero.
- Eliminate unrealized profit in inventory: The 200 units Sales Ltd holds were purchased at EUR 100 (transfer price) but cost EUR 80 to manufacture. The EUR 20 x 200 = EUR 4,000 unrealized inter-company profit must be removed from consolidated inventory.
- The consolidated result shows only the external revenue (Sales Ltd’s GBP 96,000 translated to USD), the manufacturing cost (Mfg GmbH’s EUR 80 x 800 units for goods sold externally, translated to USD), and the correct inventory valuation for the 200 units at manufacturing cost.
Key Takeaways
- Every transaction in iDempiere carries both a transaction currency and a functional currency amount; the conversion happens automatically during posting using rates from C_Conversion_Rate, matched by currency pair, date, and conversion type.
- Multiple conversion rate types (Spot, Period End, Company, Average) allow different rates for different purposes — daily transactions use Spot, period-end revaluation uses Period End, and budget comparisons can use Company rates.
- Unrealized gains and losses on open foreign-currency items must be recognized at each period end through the currency revaluation process, with the entries reversed at the start of the next period to avoid double-counting when the transactions eventually settle.
- Multi-organization structures separate legal entities, divisions, or branches within a single client, with shared master data at the * organization and transaction-level data owned by individual organizations.
- Inter-organization transactions require offsetting due-from/due-to entries to keep each organization’s books balanced, and transfer pricing must comply with applicable tax regulations.
- Financial consolidation combines the results of all organizations after translating foreign-currency statements and eliminating inter-company revenue, costs, receivables, payables, and unrealized profit in inventory.
What’s Next
The final lesson in this series covers Financial Reporting and Analysis — how to build custom financial reports using iDempiere’s report builder, perform period-end and year-end closing, manage budgets, and create Balance Sheet and P&L reports tailored to your organization’s needs.
繁體中文翻譯
概述
- 您將學到:
- iDempiere 如何管理幣別、匯率,以及單據過帳時發生的幣別轉換流程
- 如何處理多幣別發票、計算未實現匯兌損益,以及在期末執行幣別重估
- 如何建構多組織環境、處理組織間交易、建立組織層級架構,以及執行包含沖銷分錄的財務合併
- 先修條件:第 37 課 — 成本管理與成本計算方法(了解會計模式和財務過帳)
- 預估閱讀時間:25 分鐘
導論
跨境經營或服務國際客戶的企業面臨兩個根本性的會計挑戰。首先,交易以多種幣別進行,而匯率持續波動——產生必須在財務報表中認列的損益。其次,擁有多個法律實體的組織必須將各自的財務結果合併為一套集團層級的報表,消除否則會虛增集團收入和費用的公司間交易。
iDempiere 透過內建的多幣別支援和靈活的多組織架構來應對這兩項挑戰。本課說明幣別管理和多組織會計在實務中如何運作,從輸入外幣發票到合併財務報表的完整流程。
幣別管理
iDempiere 中的每筆貨幣交易至少涉及一種幣別,許多涉及兩種或三種。了解幣別類型是起點。
幣別類型
- 功能幣別:會計模式的主要幣別——總帳以此幣別維護。對於美國公司,通常是 USD。所有會計分錄最終以功能幣別表達。每個會計模式恰好有一個功能幣別。
- 交易幣別:特定商業單據計價的幣別。對歐洲客戶的銷售發票可能以 EUR 計價,而對日本供應商的採購單可能以 JPY 計價。交易幣別可以與功能幣別不同。
- 報表幣別:用於財務報表的額外幣別。巴西的子公司(功能幣別 BRL)可能需要以 USD 向母公司報告。報表幣別定義為連結到主要模式的額外會計模式。
C_Currency 資料表
C_Currency 資料表儲存系統中所有可用的幣別。每筆幣別記錄包括:
| 欄位 | 說明 |
|---|---|
| ISO_Code | ISO 4217 幣別代碼(USD、EUR、GBP、JPY 等) |
| CurSymbol | 幣別符號($、€、£、¥) |
| StdPrecision | 標準金額的小數位數(大多數幣別為 2,JPY 為 0) |
| CostingPrecision | 成本計算的小數位數(通常高於標準) |
| IsEuro | 該幣別是否參與歐元固定匯率轉換 |
| EMUEntryDate / EMURate | 歐洲貨幣聯盟幣別的加入日期和固定匯率 |
iDempiere 出廠時預載了完整的世界幣別。管理員通常只需維護匯率,而非建立新的幣別記錄。
匯率(C_Conversion_Rate)
匯率儲存在 C_Conversion_Rate 資料表中。每筆匯率記錄指定兩種幣別之間在指定日期範圍和轉換類型下的轉換因子。
關鍵欄位
| 欄位 | 說明 |
|---|---|
| C_Currency_ID | 來源幣別 |
| C_Currency_ID_To | 目標幣別 |
| ValidFrom / ValidTo | 此匯率生效的日期範圍 |
| MultiplyRate | 乘數因子(來源 x 匯率 = 目標金額) |
| DivideRate | 除數因子(來源 / 匯率 = 目標金額)。自動計算為 1/MultiplyRate。 |
| C_ConversionType_ID | 匯率類型(即期、期末、公司、等) |
匯率類型
iDempiere 透過 C_ConversionType 資料表支援多種匯率類型。常見類型包括:
- 即期(Spot):當前市場匯率。用於日常交易轉換。每日更新(或對波動幣別更頻繁更新)。
- 期末(Period End):會計期間結束時的匯率。用於外幣貨幣項目的資產負債表重估。
- 公司(Company):組織用於預算、規劃或移轉定價的內部定義匯率。可能與市場匯率不同。
- 平均(Average):一個期間的平均匯率,有時用於合併時的損益表轉換。
使用者可以為特定業務需求定義額外的匯率類型。每種單據類型可以配置預設使用特定的匯率類型。
維護匯率
匯率可以透過多種方式維護:
- 手動輸入:管理員透過幣別匯率視窗輸入匯率。這是中小型營運最常見的方法。
- 匯入:可使用資料匯入框架從外部來源(銀行資料、金融資料供應商)批量匯入匯率。
- 自動饋送:自訂整合可從 API(歐洲央行、Open Exchange Rates 等)提取匯率並自動填入匯率資料表。
單據過帳時的幣別轉換
當具有外幣交易幣別的單據過帳到總帳時,iDempiere 自動將交易金額轉換為功能幣別。此轉換在過帳引擎層級進行,並遵循特定順序。
轉換流程
- 識別幣別:過帳引擎將單據的交易幣別與會計模式的功能幣別進行比較。
- 決定匯率類型:使用單據類型配置的匯率類型(或預設使用即期)。
- 查詢匯率:系統在 C_Conversion_Rate 資料表中搜尋匹配的記錄:來源幣別、目標幣別、匯率類型,以及包含單據會計日期的日期範圍。
- 套用匯率:交易金額 x MultiplyRate = 功能幣別金額。
- 產生會計分錄:來源(交易幣別)和轉換後(功能幣別)的金額都儲存在會計分錄(Fact_Acct 資料表)中,該表同時包含 AmtSourceDr/Cr 和 AmtAcctDr/Cr 欄位。
如果找不到匹配的匯率,過帳會失敗並顯示指出缺少匯率的錯誤訊息。這是多幣別環境中最常見的過帳錯誤之一,透過輸入所需匯率即可解決。
多幣別發票範例
假設一家美國公司(功能幣別 USD)收到歐洲供應商的 EUR 10,000 發票:
- 發票以 EUR 幣別和 10,000 金額輸入。
- 發票日期為 1 月 15 日,該日期的 EUR/USD 即期匯率為 1.0850。
- 發票過帳時,會計分錄為:
- 借記費用/庫存:EUR 10,000(來源)/ USD 10,850(會計)
- 貸記應付帳款:EUR 10,000(來源)/ USD 10,850(會計)
- 2 月 10 日付款時,EUR/USD 匯率為 1.0920:
- 借記應付帳款:EUR 10,000(來源)/ USD 10,850(會計,原始匯率)
- 貸記銀行:EUR 10,000(來源)/ USD 10,920(會計,付款日期匯率)
- 借記已實現匯兌損失:USD 70(差額:$10,920 – $10,850)
$70 代表已實現匯兌損失——歐元在發票日期和付款日期之間升值,因此公司以 USD 計算支付了比原始記錄更多的金額。
未實現匯兌損益計算
在每個報告期末,未結的外幣餘額(未付發票、未收應收帳款)必須按當前匯率重估。原始入帳匯率和期末匯率之間的差額是未實現損益——因為交易尚未結清所以稱為未實現。
重估流程
- 識別未結項目:找出所有以外幣計價的未付應付發票和未收應收發票。
- 決定期末匯率:使用報告日期的期末匯率類型。
- 計算差額:對每個未結項目,比較原始功能幣別金額與按期末匯率重估的金額。
- 產生重估分錄:
- 如果外幣升值(負債增加):借記未實現匯兌損失,貸記應付帳款。
- 如果外幣貶值(負債減少):借記應付帳款,貸記未實現匯兌收益。
- 應收帳款適用相反的邏輯。
未實現分錄的迴轉
未實現損益分錄通常在下一期初迴轉。當交易最終結清時,完整的已實現損益按原始入帳匯率計算。此方式防止重複計算:未實現分錄是暫時的(用於準確的期末報表),而結清時的已實現分錄是永久的。
iDempiere 中的幣別重估流程
iDempiere 提供幣別重估流程,自動計算未實現匯兌損益。流程參數包括:
- 會計模式:以其功能幣別為目標的模式。
- 匯率類型:通常為「期末」以使用收盤匯率。
- 重估日期:重估的期末日期。
- 要包含的科目類型:通常是應付帳款和應收帳款,但也可包括外幣銀行帳戶。
此流程產生包含重估分錄的總帳日記帳,可在過帳前審閱。下一期初的迴轉分錄可自動產生。
多組織架構
iDempiere 的多組織架構將單一用戶端分為多個獨立(或半獨立)的組織單位。此架構是多公司會計的基礎。
用戶端和組織層級架構
層級架構遵循此模式:
- 用戶端(租戶):最頂層容器。所有組織存在於單一用戶端內,共享相同的系統字典、安全模型和基本配置。
- 組織(*):星號組織代表用戶端內所有組織共享的資料。在 * 組織定義的主資料(產品、業務夥伴、會計科目表)對所有組織可見。
- 營運組織:個別法律實體、部門、分支機構或事業部。每個營運組織擁有自己的交易、庫存,並可有自己的會計配置。
何時使用多組織
多組織適用於以下情況:
- 獨立法律實體:擁有多個子公司的控股公司,各自提交獨立的稅務申報和財務報表。
- 地理分區:需要獨立損益追蹤的區域營運。
- 功能區隔:為管理報表將製造、配銷和零售營運分開。
- 法規要求:法規要求不同業務活動維護獨立帳簿。
共享與組織特定資料
多組織設定中,iDempiere 的資料分為三類:
- 共享(組織 *):產品、業務夥伴、付款條件和稅務類別等主資料通常共享。確保一致性並減少維護。
- 組織特定:交易(訂單、發票、付款)、庫存和會計分錄屬於特定組織。確保明確的擁有權和責任。
- 可配置:某些資料(倉庫、價格表、銀行帳戶)可依業務需求設為共享或組織特定。
組織間交易
當同一用戶端內的組織彼此交易——轉移商品、提供服務或分攤成本——需要組織間交易。
組織間庫存調撥
當組織 A 將商品轉移到組織 B 時:
- 建立配銷訂單或庫存移動,指定來源組織/倉庫和目標組織/倉庫。
- 系統產生沖銷會計分錄:
- 組織 A:貸記庫存,借記組織間應收 B。
- 組織 B:借記庫存,貸記組織間應付 A。
- 組織間應收/應付科目確保每個組織的帳簿獨立平衡。
組織間開票
對於組織之間的內部服務費或移轉定價:
- 組織 A 對組織 B 建立應收發票(以 B 作為業務夥伴)。
- 組織 B 建立來自組織 A 的對應應付發票。
- 每個組織在自己的帳簿上認列收入/費用。
- 公司間應收和應付在指定的組織間科目中追蹤。
移轉定價——組織間交易估價的價格——必須符合稅務法規。許多管轄區要求常規交易定價(與向外部方收取的價格相當)。移轉價格在組織間價格表上設定或透過特定定價規則配置。
組織層級架構
iDempiere 支援組織層級架構(AD_OrgInfo、AD_Tree),定義組織之間的報告關係。層級架構可能如下:
集團控股公司 ├── 製造事業部 │ ├── 北方工廠 │ └── 南方工廠 ├── 銷售事業部 │ ├── 東區 │ └── 西區 └── 共享服務
層級架構有兩個用途:
- 報表彙總:財務報表可在層級架構的任何層級執行,自動加總所有子組織的結果。
- 安全性:角色型存取可配置為授予層級架構節點及其所有子節點的存取權限,簡化事業部經理的權限管理。
財務合併
合併是將多個組織的財務報表合併為一套集團層級報表的過程。只要母公司擁有子公司且必須報告集團成果,就需要進行合併。
合併步驟
- 編製個別報表:每個組織完成期末結帳並產生自己的試算表、損益表和資產負債表。
- 幣別換算:如果組織使用不同的功能幣別,其財務報表必須換算為集團的報表幣別。換算使用:
- 資產負債表科目:按期末(收盤)匯率換算。
- 損益表科目:按期間平均匯率(或如果可用則按交易日期匯率)換算。
- 股東權益科目:按歷史匯率換算。
- 換算調整:平衡差額記入累計換算調整數(CTA)股東權益科目。
- 沖銷分錄:組織間交易必須沖銷以避免重複計算:
- 組織間收入和成本:如果組織 A 向組織 B 銷售 $100,000 的商品,合併報表必須沖銷 A 的 $100,000 收入和 B 的 $100,000 成本。
- 組織間應收和應付:組織之間的應收/應付餘額在合併資產負債表中必須淨額為零。
- 庫存中的組織間利潤:如果組織 B 仍持有以加價從組織 A 購買的庫存,未實現的公司間利潤必須從合併庫存餘額中消除。
- 編製合併報表:經過換算和沖銷後,將所有組織的剩餘餘額加總,編製合併資產負債表、損益表和現金流量表。
iDempiere 中的合併
iDempiere 透過多種機制支援合併:
- 多組織報表:財務報表可對 *(全部)組織執行,自動加總所有組織的餘額。
- 報表幣別模式:可配置集團報表幣別的次要會計模式,以適當匯率維護平行會計分錄。
- 總帳日記帳沖銷分錄:沖銷分錄作為總帳日記帳過帳到母組織,借記和貸記適當的沖銷科目。
實例:多公司設定
假設一個集團具有以下結構:
- 母公司(美國):控股公司,功能幣別 USD。
- 製造有限公司(德國):製造子公司,功能幣別 EUR。
- 銷售有限公司(英國):銷售子公司,功能幣別 GBP。
交易流程
- 製造有限公司以每單位 EUR 80 的成本製造產品。
- 製造有限公司以每單位 EUR 100 的移轉價格向銷售有限公司銷售 1,000 個單位。製造有限公司記錄 EUR 100,000 收入;銷售有限公司記錄 EUR 100,000 成本(按交易日期匯率換算為 GBP)。
- 銷售有限公司以每單位 GBP 120 向外部客戶銷售 800 個單位。銷售有限公司記錄 GBP 96,000 收入。
- 期末時,銷售有限公司仍持有 200 個單位庫存,以移轉價格估價。
合併
- 換算製造有限公司的 EUR 報表和銷售有限公司的 GBP 報表為 USD,使用適當匯率。
- 沖銷公司間銷售:從製造有限公司移除 EUR 100,000 收入,從銷售有限公司移除 EUR 100,000 銷貨成本。此交易對合併損益表的淨影響為零。
- 沖銷公司間應收/應付:製造有限公司帳上的 EUR 100,000 應收和銷售有限公司帳上對應的應付淨額為零。
- 沖銷庫存中的未實現利潤:銷售有限公司持有的 200 個單位以 EUR 100(移轉價格)購入,但製造成本為 EUR 80。EUR 20 x 200 = EUR 4,000 的未實現公司間利潤必須從合併庫存餘額中消除。
- 合併結果僅顯示外部收入(銷售有限公司的 GBP 96,000 換算為 USD)、製造成本(製造有限公司的 EUR 80 x 800 個外銷單位,換算為 USD),以及 200 個單位按製造成本的正確庫存估價。
重點整理
- iDempiere 中的每筆交易都帶有交易幣別和功能幣別金額;轉換在過帳時自動發生,使用 C_Conversion_Rate 中按幣別對、日期和匯率類型匹配的匯率。
- 多種匯率類型(即期、期末、公司、平均)允許不同用途使用不同匯率——日常交易使用即期,期末重估使用期末,預算比較可使用公司匯率。
- 未結外幣項目的未實現損益必須在每個期末透過幣別重估流程認列,並在下一期初迴轉以避免交易最終結清時的重複計算。
- 多組織架構在單一用戶端內分隔法律實體、事業部或分支機構,主資料在 * 組織共享,交易層級資料由個別組織擁有。
- 組織間交易需要沖銷的應收/應付分錄以保持每個組織帳簿的平衡,移轉定價必須符合適用的稅務法規。
- 財務合併在換算外幣報表和沖銷公司間收入、成本、應收、應付及庫存中的未實現利潤後,合併所有組織的結果。
下一步
本系列的最後一課涵蓋財務報表與分析——如何使用 iDempiere 的報表建立器建構自訂財務報表、執行期末和年末結帳、管理預算,以及建立符合組織需求的資產負債表和損益表。
日本語翻訳
概要
- 学習内容:
- iDempiereが通貨、換算レート、および伝票転記時に行われる通貨換算プロセスをどのように管理するか
- 多通貨請求書の処理、未実現為替差損益の計算、期末の通貨再評価の実行方法
- 多組織環境の構築、組織間取引の処理、組織階層の構築、消去仕訳を含む財務連結の実行方法
- 前提条件:第37課 — 原価管理と原価計算方法(会計スキーマと財務転記の理解)
- 推定読了時間:25分
はじめに
国境を越えて事業を展開する企業や国際的な顧客にサービスを提供する企業は、二つの根本的な会計上の課題に直面します。第一に、取引が複数の通貨で行われ、為替レートは常に変動し、財務諸表で認識しなければならない損益が発生します。第二に、複数の法人を持つ組織は、個々の財務結果をグループレベルの一つの連結財務諸表にまとめる必要があり、そうしなければグループの収益と費用を水増しすることになる会社間取引を消去しなければなりません。
iDempiereは、組み込みの多通貨サポートと柔軟な多組織アーキテクチャによって両方の課題に対応します。本レッスンでは、外貨建て請求書の入力から連結財務諸表まで、通貨管理と多組織会計が実務でどのように機能するかを説明します。
通貨管理
iDempiereのすべての貨幣取引は少なくとも一つの通貨を伴い、多くは二つまたは三つを伴います。通貨タイプの理解が出発点です。
通貨タイプ
- 機能通貨:会計スキーマの主要通貨——総勘定元帳がこの通貨で維持されます。米国企業の場合、通常はUSDです。すべての会計仕訳は最終的に機能通貨で表現されます。各会計スキーマにはちょうど一つの機能通貨があります。
- 取引通貨:特定の業務伝票が建値される通貨。欧州の顧客への売上請求書はEURで、日本の仕入先への購買オーダーはJPYかもしれません。取引通貨は機能通貨と異なる場合があります。
- 報告通貨:財務報告に使用される追加通貨。ブラジルの子会社(機能通貨BRL)は親会社向けにUSDで報告する必要があるかもしれません。報告通貨は主要スキーマにリンクされた追加の会計スキーマとして定義されます。
C_Currencyテーブル
C_Currencyテーブルはシステムで利用可能なすべての通貨を保存します。各通貨レコードには以下が含まれます:
| フィールド | 説明 |
|---|---|
| ISO_Code | ISO 4217通貨コード(USD、EUR、GBP、JPY等) |
| CurSymbol | 通貨記号($、€、£、¥) |
| StdPrecision | 標準金額の小数点以下桁数(ほとんどの通貨は2、JPYは0) |
| CostingPrecision | 原価計算の小数点以下桁数(標準より多い場合が多い) |
| IsEuro | ユーロ固定レート換算に参加するかどうか |
| EMUEntryDate / EMURate | 欧州通貨同盟通貨の加入日と固定レート |
iDempiereは世界通貨の包括的なセットがプリロードされて出荷されます。管理者は通常、新しい通貨レコードを作成するのではなく、為替レートの維持のみが必要です。
換算レート(C_Conversion_Rate)
為替レートはC_Conversion_Rateテーブルに保存されます。各レートレコードは、指定された日付範囲と換算タイプにおける二つの通貨間の換算係数を指定します。
主要フィールド
| フィールド | 説明 |
|---|---|
| C_Currency_ID | ソース通貨 |
| C_Currency_ID_To | ターゲット通貨 |
| ValidFrom / ValidTo | このレートが有効な日付範囲 |
| MultiplyRate | 乗算係数(ソース x レート = ターゲット金額) |
| DivideRate | 除算係数(ソース / レート = ターゲット金額)。1/MultiplyRateとして自動計算。 |
| C_ConversionType_ID | 換算レートタイプ(スポット、期末、会社等) |
換算レートタイプ
iDempiereはC_ConversionTypeテーブルを通じて複数の換算レートタイプをサポートします。一般的なタイプは以下のとおりです:
- スポット(Spot):現在の市場為替レート。日常取引の換算に使用。毎日更新(変動の激しい通貨はより頻繁に更新)。
- 期末(Period End):会計期間末の為替レート。外貨建て貨幣項目の貸借対照表再評価に使用。
- 会社(Company):組織が予算、計画、または移転価格に使用する内部定義レート。市場レートと異なる場合がある。
- 平均(Average):期間の平均レート。連結時の損益計算書の換算に使用されることがある。
ユーザーは特定の業務要件に対して追加の換算レートタイプを定義できます。各伝票タイプはデフォルトで特定の換算タイプを使用するように設定できます。
為替レートの維持
為替レートは複数の方法で維持できます:
- 手動入力:管理者が通貨換算レートウィンドウからレートを入力。中小規模の運用で最も一般的な方法。
- インポート:データインポートフレームワークを使用して外部ソース(銀行フィード、金融データプロバイダー)からレートを一括インポート可能。
- 自動フィード:カスタム統合がAPI(欧州中央銀行、Open Exchange Rates等)からレートを取得し、換算レートテーブルに自動入力可能。
伝票転記時の通貨換算
外貨取引通貨を持つ伝票が総勘定元帳に転記される際、iDempiereは取引金額を機能通貨に自動換算します。この換算は転記エンジンレベルで行われ、特定の順序に従います。
換算プロセス
- 通貨の識別:転記エンジンが伝票の取引通貨を会計スキーマの機能通貨と比較する。
- 換算タイプの決定:伝票タイプに設定された換算タイプを使用(またはデフォルトでスポット)。
- レートの検索:システムがC_Conversion_Rateテーブルから一致するレコードを検索:ソース通貨、ターゲット通貨、換算タイプ、および伝票の会計日付を含む日付範囲。
- レートの適用:取引金額 x MultiplyRate = 機能通貨金額。
- 会計仕訳の生成:ソース(取引通貨)と換算後(機能通貨)の両方の金額が会計仕訳(Fact_Acctテーブル)に保存され、AmtSourceDr/CrとAmtAcctDr/Crの両フィールドを持つ。
一致する換算レートが見つからない場合、転記はレート不足を示すエラーメッセージで失敗します。これは多通貨環境で最も一般的な転記エラーの一つであり、必要なレートを入力することで解決されます。
多通貨請求書の例
米国企業(機能通貨USD)が欧州仕入先からEUR 10,000の請求書を受領した場合を想定します:
- 請求書はEUR通貨、金額10,000で入力される。
- 請求書日付は1月15日で、その日のEUR/USDスポットレートは1.0850。
- 請求書が転記されると、会計仕訳は以下のとおり:
- 借方 費用/在庫:EUR 10,000(ソース)/ USD 10,850(会計)
- 貸方 買掛金:EUR 10,000(ソース)/ USD 10,850(会計)
- 2月10日に支払いが行われ、EUR/USDレートは1.0920:
- 借方 買掛金:EUR 10,000(ソース)/ USD 10,850(会計、原始レート)
- 貸方 銀行:EUR 10,000(ソース)/ USD 10,920(会計、支払日レート)
- 借方 実現為替差損:USD 70(差額:$10,920 – $10,850)
$70は実現為替差損を表します——請求書日付から支払日までにユーロが上昇し、企業はUSD換算で当初記録より多く支払いました。
未実現為替差損益の計算
各報告期末において、未決済の外貨残高(未払請求書、未回収売掛金)は現在の為替レートで再評価する必要があります。当初の計上レートと期末レートの差額は未実現損益——取引がまだ決済されていないので未実現——です。
再評価プロセス
- 未決済項目の識別:外貨建ての未払買掛請求書と未回収売掛請求書をすべて特定する。
- 期末レートの決定:報告日の期末換算タイプのレートを使用する。
- 差額の計算:各未決済項目について、元の機能通貨金額を期末レートでの再評価額と比較する。
- 再評価仕訳の生成:
- 外貨が上昇した場合(負債増加):借方 未実現為替差損、貸方 買掛金。
- 外貨が下落した場合(負債減少):借方 買掛金、貸方 未実現為替差益。
- 売掛金には逆のロジックが適用される。
未実現仕訳の取消
未実現損益仕訳は通常、翌期首に取消されます。取引が最終的に決済されると、完全な実現損益が当初の計上レートに対して計算されます。このアプローチは二重計上を防止します:未実現仕訳は一時的(正確な期末報告のため)であり、決済時の実現仕訳は恒久的です。
iDempiereにおける通貨再評価プロセス
iDempiereは未実現為替差損益の計算を自動化する通貨再評価プロセスを提供します。プロセスパラメータは以下のとおりです:
- 会計スキーマ:機能通貨がターゲットとなるスキーマ。
- 換算タイプ:通常は「期末」で決算レートを使用。
- 再評価日:再評価の期末日。
- 含める勘定科目タイプ:通常は買掛金と売掛金だが、外貨の銀行勘定も含められる。
プロセスは再評価仕訳を含む総勘定元帳仕訳帳を生成し、転記前に確認できます。翌期首の取消仕訳は自動生成可能です。
多組織構造
iDempiereの多組織アーキテクチャは、単一クライアントを複数の独立した(または半独立の)組織単位に分離します。この構造は多法人会計の基盤です。
クライアントと組織の階層
階層は以下のパターンに従います:
- クライアント(テナント):最上位のコンテナ。すべての組織は単一のクライアント内に存在し、同じシステム辞書、セキュリティモデル、基本設定を共有します。
- 組織(*):アスタリスク組織はクライアント内のすべての組織間で共有されるデータを表します。*組織で定義されたマスターデータ(製品、取引先、勘定科目表)はすべての組織から参照可能です。
- 運用組織:個々の法人、事業部、支店、または部門。各運用組織は独自の取引、在庫を持ち、独自の会計設定を持つことができます。
複数組織の使用時期
以下の場合に複数組織が適切です:
- 独立した法人:個別の税務申告と財務諸表を提出する複数の子会社を持つ持株会社。
- 地域区分:独立した損益追跡が必要な地域の事業運営。
- 機能別セグメント:管理報告のために製造、流通、小売の事業を分離。
- 規制要件:異なる事業活動に対して別々の帳簿を要求する規制がある場合。
共有データと組織固有データ
多組織設定では、iDempiereのデータは三つのカテゴリに分類されます:
- 共有(組織 *):製品、取引先、支払条件、税カテゴリなどのマスターデータは通常共有されます。一貫性を確保しメンテナンスを削減します。
- 組織固有:取引(受注、請求書、支払い)、在庫、会計仕訳は特定の組織に属します。明確な所有権と説明責任を確保します。
- 設定可能:一部のデータ(倉庫、価格表、銀行口座)は業務要件に応じて共有または組織固有に設定できます。
組織間取引
同じクライアント内の組織が互いに取引する場合——商品の移動、サービスの提供、コストの配賦——組織間取引が必要です。
組織間在庫移動
組織Aが組織Bに商品を移動する場合:
- ソース組織/倉庫と目的地組織/倉庫を指定する配送オーダーまたは在庫移動が作成される。
- システムが相殺の会計仕訳を生成する:
- 組織A:貸方 在庫、借方 組織間未収金 B。
- 組織B:借方 在庫、貸方 組織間未払金 A。
- 組織間未収/未払勘定により、各組織の帳簿が独立してバランスすることが保証される。
組織間請求
組織間の内部サービス料金や移転価格の場合:
- 組織Aが組織Bへの売掛請求書を作成(Bを取引先として使用)。
- 組織Bが組織Aからの対応する買掛請求書を作成。
- 各組織がそれぞれの帳簿に収益/費用を認識。
- 会社間の売掛金と買掛金は指定された組織間勘定で追跡される。
移転価格——組織間取引が評価される価格——は税務規制に準拠する必要があります。多くの管轄区域では独立企業間価格(外部当事者に請求する価格と同等の価格)が要求されます。移転価格は組織間価格表で設定するか、特定の価格設定ルールを通じて設定します。
組織階層
iDempiereは組織間の報告関係を定義する組織階層(AD_OrgInfo、AD_Tree)をサポートします。階層は以下のようになります:
グループ持株会社 ├── 製造事業部 │ ├── 北部工場 │ └── 南部工場 ├── 営業事業部 │ ├── 東部地域 │ └── 西部地域 └── シェアードサービス
階層は二つの目的に役立ちます:
- 報告の集約:財務報告書は階層の任意のレベルで実行でき、すべての子組織の結果を自動的に合計します。
- セキュリティ:ロールベースのアクセスを階層ノードとそのすべての子へのアクセスを付与するように設定でき、事業部マネージャーの権限管理を簡素化します。
財務連結
連結は、複数の組織の財務諸表を一つのグループレベルの財務諸表にまとめるプロセスです。親会社が子会社を保有しグループの成果を報告しなければならない場合に必要です。
連結手順
- 個別財務諸表の作成:各組織が期末決算を完了し、独自の試算表、損益計算書、貸借対照表を作成する。
- 通貨換算:組織が異なる機能通貨で運営している場合、その財務諸表をグループの報告通貨に換算する必要がある。換算は以下を使用:
- 貸借対照表勘定:期末(決算)レートで換算。
- 損益計算書勘定:期間平均レート(または利用可能であれば取引日レート)で換算。
- 資本勘定:ヒストリカルレートで換算。
- 換算調整:バランスの差額は為替換算調整勘定(CTA)の資本勘定に記録。
- 消去仕訳:組織間取引を消去して二重計上を防止する:
- 組織間収益と原価:組織Aが組織Bに$100,000の商品を販売した場合、連結財務諸表ではAの$100,000の収益とBの$100,000の原価を消去する必要がある。
- 組織間売掛金と買掛金:組織間の未収/未払残高は連結貸借対照表で相殺されゼロになる必要がある。
- 在庫中の組織間利益:組織BがマークアップありでAから購入した在庫をまだ保持している場合、未実現の会社間利益を連結在庫残高から消去する必要がある。
- 連結財務諸表の作成:換算と消去の後、すべての組織の残りの残高を合計して、連結貸借対照表、損益計算書、キャッシュフロー計算書を作成する。
iDempiereにおける連結
iDempiereは複数のメカニズムを通じて連結をサポートします:
- 多組織報告:財務報告書を*(全体)組織で実行でき、すべての組織の残高を自動的に合計する。
- 報告通貨スキーマ:グループ報告通貨の副次的な会計スキーマを設定して、適切なレートで換算された並行会計仕訳を維持できる。
- 消去用の総勘定元帳仕訳帳:消去仕訳は親組織に転記される総勘定元帳仕訳帳として作成され、適切な消去勘定を借方・貸方に計上する。
実例:多法人設定
以下の構造を持つグループを想定します:
- 親会社(米国):持株会社、機能通貨USD。
- 製造GmbH(ドイツ):製造子会社、機能通貨EUR。
- 販売Ltd(英国):販売子会社、機能通貨GBP。
取引フロー
- 製造GmbHが1単位あたりEUR 80の原価で製品を製造。
- 製造GmbHが1単位あたりEUR 100の移転価格で販売Ltdに1,000単位を販売。製造GmbHはEUR 100,000の収益を記録、販売LtdはEUR 100,000の原価を記録(取引日レートでGBPに換算)。
- 販売Ltdが1単位あたりGBP 120で外部顧客に800単位を販売。販売LtdはGBP 96,000の収益を記録。
- 期末時点で、販売Ltdはまだ200単位を在庫に保有、移転価格で評価。
連結
- 適切なレートを使用して、製造GmbHのEUR財務諸表と販売LtdのGBP財務諸表をUSDに換算する。
- 会社間販売を消去:製造GmbHのEUR 100,000の収益と販売LtdのEUR 100,000の売上原価を除去。この取引の連結損益計算書への純影響はゼロ。
- 会社間売掛金/買掛金を消去:製造GmbHの帳簿上のEUR 100,000の売掛金と販売Ltdの帳簿上の対応する買掛金は相殺されゼロになる。
- 在庫中の未実現利益を消去:販売Ltdが保有する200単位はEUR 100(移転価格)で購入されたが、製造原価はEUR 80。EUR 20 x 200 = EUR 4,000の未実現会社間利益を連結在庫残高から除去する必要がある。
- 連結結果は外部収益(販売LtdのGBP 96,000をUSDに換算)、製造原価(製造GmbHのEUR 80 x 外販800単位、USDに換算)、および200単位の製造原価での正しい在庫評価のみを表示する。
重要ポイント
- iDempiereのすべての取引は取引通貨と機能通貨の金額の両方を持ちます。換算は転記時にC_Conversion_Rateから通貨ペア、日付、換算タイプで照合されたレートを使用して自動的に行われます。
- 複数の換算レートタイプ(スポット、期末、会社、平均)により、異なる目的に異なるレートを使用できます——日常取引はスポット、期末再評価は期末、予算比較は会社レートを使用できます。
- 未決済外貨項目の未実現損益は、通貨再評価プロセスを通じて各期末に認識する必要があり、取引が最終的に決済される際の二重計上を避けるため翌期首に取消されます。
- 多組織構造は単一クライアント内で法人、事業部、または支店を分離し、*組織でマスターデータを共有し、取引レベルのデータは個々の組織が所有します。
- 組織間取引は各組織の帳簿のバランスを維持するための相殺の未収/未払仕訳を必要とし、移転価格は適用される税務規制に準拠する必要があります。
- 財務連結は、外貨財務諸表の換算と会社間収益、原価、売掛金、買掛金、および在庫中の未実現利益の消去後に、すべての組織の結果を統合します。
次のステップ
本シリーズの最終レッスンでは財務報告と分析を扱います——iDempiereのレポートビルダーを使用したカスタム財務報告書の構築、期末・年末決算の実行、予算管理、および組織のニーズに合わせた貸借対照表と損益計算書の作成方法について学びます。