Skip to main content

OwnershipChangeEvent

Struct OwnershipChangeEvent 

Source
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: String

Entity 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: String

Code of the parent entity whose interest changed. Mirrors ManifestEntity::parent_code.

§event_type: OwnershipChangeType

What happened — drives which accounting treatment applies.

§effective_date: NaiveDate

Date the change took effect (typically the closing date of the share purchase / sale agreement).

§ownership_percent_before: Decimal

Parent’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: Decimal

Parent’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: Decimal

Cash / 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: NciMeasurementMethod

Method used to measure the new NCI (only relevant for ControlGained). Defaults to Proportionate.

§currency: String

Group presentation currency the amounts are denominated in.

Implementations§

Source§

impl OwnershipChangeEvent

Source

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 on ControlGained or ControlLost.
  • Some(loss) (negative) when carrying exceeds fair value.
  • None when the event is ControlIncreased or ControlDecreased (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.
Source

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.

Source

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

Source§

fn clone(&self) -> OwnershipChangeEvent

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for OwnershipChangeEvent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for OwnershipChangeEvent

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for OwnershipChangeEvent

Source§

fn eq(&self, other: &OwnershipChangeEvent) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for OwnershipChangeEvent

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for OwnershipChangeEvent

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,