pub struct OwnershipChangeEvent {
pub entity_code: String,
pub parent_entity_code: String,
pub event_type: OwnershipChangeType,
pub effective_date: NaiveDate,
pub ownership_percent_before: Decimal,
pub ownership_percent_after: Decimal,
pub previously_held_interest_carrying: Option<Decimal>,
pub previously_held_interest_fair_value: Option<Decimal>,
pub consideration_paid_or_received: Decimal,
pub acquisition_date_nci_fair_value: Option<Decimal>,
pub nci_measurement_method: NciMeasurementMethod,
pub currency: String,
}Expand description
One mid-period ownership-change event for a subsidiary or
associate. All amounts are in the group presentation currency
(translation per IAS 21 must already have been applied — same
contract as NciInputs).
The struct captures all the inputs an IFRS 3.42 / IFRS 10.B97 computation needs; the helper methods derive the gain/loss and the post-event NCI carrying amount. v5.2 ships the model + the helpers; the rollforward wiring is a follow-up.
Fields§
§entity_code: StringEntity code of the subsidiary / associate whose ownership
changed. Joins to ManifestEntity::code so the rollforward
can attribute the event to the right entity.
parent_entity_code: StringCode of the parent entity whose interest changed. Mirrors
ManifestEntity::parent_code.
event_type: OwnershipChangeTypeWhat happened — drives which accounting treatment applies.
effective_date: NaiveDateDate the change took effect (typically the closing date of the share purchase / sale agreement).
ownership_percent_before: DecimalParent’s ownership percent immediately before the event,
in [0, 1]. Zero for a fresh acquisition where the parent
had no prior position; one only for a 100 %-owned subsidiary
that’s being sold (rare).
ownership_percent_after: DecimalParent’s ownership percent immediately after the event,
in [0, 1]. Zero only when control is fully lost AND no
retained interest remains; one when this is a roll-up to
100 %.
previously_held_interest_carrying: Option<Decimal>Carrying amount of the previously-held interest in the
investor’s books immediately before the event, in the group
presentation currency. For ControlGained: typically the
equity-method carrying value of the associate. For
ControlLost: the carrying amount of the retained interest
post-deconsolidation (zero if no retained interest).
previously_held_interest_fair_value: Option<Decimal>Acquisition-date fair value of the previously-held
interest (ControlGained) or the retained interest
(ControlLost). This is the amount the investor re-measures
the prior position to under IFRS 3.42 / IFRS 10.B97 — the
difference between this and previously_held_interest_carrying
is the P&L gain or loss.
consideration_paid_or_received: DecimalCash / share consideration paid (positive on
ControlGained / ControlIncreased) or received (negative
on ControlDecreased / ControlLost). Sign convention:
positive = outflow from parent, matching how the cash
flow statement presents acquisitions.
acquisition_date_nci_fair_value: Option<Decimal>IFRS 3 § 19 acquisition-date NCI fair value when this event
triggers a new consolidation (ControlGained only — must be
Some(fv) when method is FullGoodwill; ignored for the
other event types). Mirrors the field on
crate::models::business_combination::BusinessCombination.
nci_measurement_method: NciMeasurementMethodMethod used to measure the new NCI (only relevant for
ControlGained). Defaults to Proportionate.
currency: StringGroup presentation currency the amounts are denominated in.
Implementations§
Source§impl OwnershipChangeEvent
impl OwnershipChangeEvent
Sourcepub fn p_and_l_gain_or_loss(&self) -> Option<Decimal>
pub fn p_and_l_gain_or_loss(&self) -> Option<Decimal>
Compute the P&L gain or loss triggered by an IFRS 3.42 / IFRS 10.B97 re-measurement. Returns:
Some(gain)(positive) when the fair value of the prior position exceeds its carrying amount onControlGainedorControlLost.Some(loss)(negative) when carrying exceeds fair value.Nonewhen the event isControlIncreasedorControlDecreased(IFRS 10.23 — no gain/loss in P&L for equity-transaction changes), OR when either the carrying amount or the fair value is missing.
Sourcepub fn triggers_pl_remeasurement(&self) -> bool
pub fn triggers_pl_remeasurement(&self) -> bool
Returns true when this event triggers a re-measurement
gain/loss in P&L (IFRS 3.42 / IFRS 10.B97). False for
equity-transaction changes (IFRS 10.23) where the entire
adjustment runs through equity.
Sourcepub fn triggers_method_transition(&self) -> bool
pub fn triggers_method_transition(&self) -> bool
Returns true when this event triggers a transition between
consolidation methods (e.g. associate → subsidiary or
subsidiary → associate). False for ownership changes that
stay within full-consolidation scope.
Trait Implementations§
Source§impl Clone for OwnershipChangeEvent
impl Clone for OwnershipChangeEvent
Source§fn clone(&self) -> OwnershipChangeEvent
fn clone(&self) -> OwnershipChangeEvent
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for OwnershipChangeEvent
impl Debug for OwnershipChangeEvent
Source§impl<'de> Deserialize<'de> for OwnershipChangeEvent
impl<'de> Deserialize<'de> for OwnershipChangeEvent
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for OwnershipChangeEvent
impl PartialEq for OwnershipChangeEvent
Source§fn eq(&self, other: &OwnershipChangeEvent) -> bool
fn eq(&self, other: &OwnershipChangeEvent) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for OwnershipChangeEvent
impl Serialize for OwnershipChangeEvent
impl StructuralPartialEq for OwnershipChangeEvent
Auto Trait Implementations§
impl Freeze for OwnershipChangeEvent
impl RefUnwindSafe for OwnershipChangeEvent
impl Send for OwnershipChangeEvent
impl Sync for OwnershipChangeEvent
impl Unpin for OwnershipChangeEvent
impl UnsafeUnpin for OwnershipChangeEvent
impl UnwindSafe for OwnershipChangeEvent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.