Skip to main content

Step-Acquisition Accounting

How Konsolidat handles an entity acquired (or stepped up) during the consolidation period: P&L proration so only post-acquisition results enter the group, plus goodwill and fair-value uplift on the initial acquisition.

Implemented by gold_acquisition_adjustments (PRD-11), which reads temporal ownership data from epm_staging.ownership_periods and posts into gold_fully_consolidated_tb. Its companion is Disposal & Deconsolidation.

note

The acquisition-accounting items that earlier design notes (cta-calculation.md, minority-interest.md) marked Out of Scope are now implemented here and on the Disposal page.

Shared inputs

These inputs are shared with the Disposal model.

ownership_periods source

epm_staging.ownership_periods (described in _staging__sources.yml as "Temporal ownership periods with acquisition and disposal fields") supplies the columns these models read:

ColumnUsed byMeaning
consolidation_group, data_area_idallGroup + legal entity key
ownership_pctacquisition, disposalGroup ownership percentage (0–100)
consolidation_methodacquisitione.g. full
acquisition_dateacquisitionAcquisition / step-acquisition date
is_first_acquisitionacquisitionFlags the initial acquisition (goodwill/FVA trigger)
acquisition_priceacquisitionConsideration paid
fair_value_adjustmentacquisitionFair-value uplift on net assets
is_disposal, disposal_date, disposal_pricedisposalDisposal trigger, date, proceeds

Acquisition rows are recognised only where acquisition_date > '1900-01-01'; disposal rows only where is_disposal = 1 and disposal_date < '9999-12-31'. Those sentinel dates are the "no constraint" markers used throughout (see the proration macro below).

Net-asset and P&L base

Both acquisition and disposal models derive the entity's balances from gold_consolidated_trial_balance (CTB), using its is_balance_sheet and is_pnl flags and the local_amount column. Net assets are sum(local_amount where is_balance_sheet = 1) per consolidation_group / data_area_id.

Adjustments

Source: gold_acquisition_adjustments.sql. Output grain is one adjustment row per group / entity / period, with columns main_account, account_name, adjustment_type, adjustment_amount, acquisition_date. It produces three adjustment_type values, unioned together.

1. P&L proration (pnl_proration)

Only post-acquisition P&L should enter the group result in the year of acquisition. The model joins CTB P&L rows (is_pnl = 1) to the acquisition period for the acquisition year (period dates between Jan 1 and Dec 31 of the acquisition year, built with build_date_from_year_period) and prorates each amount with the prorate_period_amount macro.

The macro (macros/prorate_period_amount.sql) returns a fraction days_post_acquisition / days_in_period:

-- prorate_period_amount(amount, acq_date, year, period)
when acq_date <= '1900-01-01' then 1.0 -- no constraint
when acq_date < start_of_period then 1.0 -- acquired earlier
when acq_date >= start_of_next_period then 0.0 -- pre-acquisition month
else dateDiff('day', acq_date, next_period_start)
/ dateDiff('day', period_start, next_period_start) -- partial month

The proration entry removes the pre-acquisition slice rather than the prorated remainder:

pre_acquisition_excluded = local_amount - prorated_amount
adjustment_amount = -pre_acquisition_excluded
adjustment_type = 'pnl_proration'

Rows are emitted only where abs(pre_acquisition_excluded) > 0.01, so fully post-acquisition periods produce no entry. The negative adjustment cancels the months the group did not yet own the entity.

2. Goodwill (goodwill / goodwill_entries)

Goodwill is computed once per acquisition, gated on is_first_acquisition = 1 AND acquisition_price > 0:

goodwill_amount = acquisition_price - (net_assets × ownership_pct / 100)

where net_assets is the CTB balance-sheet total for the entity. The entry is posted to account 1800 "Goodwill on acquisition", dated to the acquisition month (toYear/toMonth of acquisition_date), with adjustment_type = 'goodwill'. Only material amounts (abs > 0.01) are kept.

3. Fair-value adjustment (fva_entries)

The fair_value_adjustment carried on the ownership period is posted directly to account 1900 "Fair value adjustment on acquisition", dated to the acquisition month, with adjustment_type = 'fair_value_adjustment'. Kept only where abs > 0.01.

Acquisition-date (IAS 21) rate handling

The model performs no explicit FX retranslation: goodwill and fair-value uplift are taken from acquisition_price / fair_value_adjustment and from CTB net assets as already carried in the consolidated trial balance. There is no separate historical/acquisition-date rate lookup in this model — translation is handled upstream in gold_fx_revaluation / CTB, and the acquisition-date timing is applied through period dating and proration rather than a rate re-fetch.

How it posts into consolidation

gold_acquisition_adjustments is folded into gold_fully_consolidated_tb as Layer 6 ("Acquisition & disposal adjustments"), unioned alongside entity balances, IC eliminations, CTA, top-side adjustments, and equity-method entries:

Source modelamount mapped frommain_accountjournal_id
gold_acquisition_adjustmentsadjustment_amountpassthrough (1800/1900/proration account)ACQ_<data_area_id>

The adjustment_type is carried forward, so the fully consolidated TB can distinguish pnl_proration, goodwill, and fair_value_adjustment rows. The disposal side (DSP_<data_area_id>) is documented on the Disposal page.

Source files

  • dbt_project/models/gold/gold_acquisition_adjustments.sql
  • dbt_project/models/gold/gold_fully_consolidated_tb.sql (Layer 6 integration)
  • dbt_project/macros/prorate_period_amount.sql, dbt_project/macros/db_adapter.sql (build_date_from_year_period)
  • dbt_project/models/staging/_staging__sources.yml (ownership_periods), dbt_project/seeds/consolidation_groups.csv