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.
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:
| Column | Used by | Meaning |
|---|---|---|
consolidation_group, data_area_id | all | Group + legal entity key |
ownership_pct | acquisition, disposal | Group ownership percentage (0–100) |
consolidation_method | acquisition | e.g. full |
acquisition_date | acquisition | Acquisition / step-acquisition date |
is_first_acquisition | acquisition | Flags the initial acquisition (goodwill/FVA trigger) |
acquisition_price | acquisition | Consideration paid |
fair_value_adjustment | acquisition | Fair-value uplift on net assets |
is_disposal, disposal_date, disposal_price | disposal | Disposal 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.
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 model | amount mapped from | main_account | journal_id |
|---|---|---|---|
gold_acquisition_adjustments | adjustment_amount | passthrough (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.sqldbt_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