Skip to main content

MmmInput

Struct MmmInput 

Source
pub struct MmmInput {
    pub malo_id: String,
    pub nb_mp_id: String,
    pub lf_mp_id: String,
    pub period: SettlementPeriod,
    pub sparte: Sparte,
    pub actual_kwh: Decimal,
    pub profil_kwh: Decimal,
    pub mehr_preis_ct_per_kwh: Decimal,
    pub minder_preis_ct_per_kwh: Decimal,
    pub wiederverkaeufer: Wiederverkaeuferstatus,
    pub selbstausgestellt: bool,
}
Expand description

Input for Mehr-/Mindermengen (MMM) settlement invoice calculation.

Covers:

  • PID 31005 — MMM-Rechnung used for Mehr-/Mindermengen settlement between NB and LF (Strom and Gas).

Mehr-/Mindermengen settle the difference between the LF’s forecast profile (SLP standard load profile) and the actual measured consumption.

  • Mehrmengen (positive deviation): actual > profil → LF owes NB
  • Mindermengen (negative deviation): actual < profil → NB owes LF

The settlement amount is the algebraic sum of both positions. It can be negative (i.e. a credit note from NB to LF) when Mindermengen dominate.

Fields§

§malo_id: String

11-digit Marktlokations-ID.

§nb_mp_id: String

Invoice sender — Netzbetreiber MP-ID.

§lf_mp_id: String

Invoice recipient — Lieferant MP-ID.

§period: SettlementPeriod

The delivery period being settled.

§sparte: Sparte

Commodity — determines which Festlegung the legal references cite.

  • Sparte::StromGPKE (BK6-24-174) Teil 1 Kap. 8.4, GPKE BK6-22-024
  • Sparte::GasGaBi Gas 2.1 (BK7-24-01-008), GeLi Gas 3.0 (BK7-24-01-009)
§actual_kwh: Decimal

Actual measured consumption in kWh (from MSCONS / MeterBillingPeriod).

§profil_kwh: Decimal

Standard load profile (SLP) forecast consumption in kWh.

§mehr_preis_ct_per_kwh: Decimal

Mehrmengen price in ct/kWh (from PreisblattNetznutzung MMM position).

§minder_preis_ct_per_kwh: Decimal

Mindermengen price in ct/kWh (from PreisblattNetznutzung MMM position).

§wiederverkaeufer: Wiederverkaeuferstatus

Who holds §3g Wiederverkäufer status, evidenced by a USt 1 TH.

A Mehr-/Mindermenge is a Lieferung of electricity or gas, not a network service, so §13b Abs. 2 Nr. 5 Buchst. b UStG can shift the tax to the recipient. The condition differs by Sparte — electricity needs both parties, gas needs the recipient — which is why this is a status rather than a reverse_charge: bool the caller has to reason out.

§selbstausgestellt: bool

The receiving party issues this invoice itself (Gutschriftverfahren).

PID 31006 (Strom) / 31008 (Gas) is the Mehrmenge leg written by the party that would otherwise receive it, which the AHB marks as Selbstausgestellt rather than Handelsrechnung. That distinction is on the wire (IMD+7081 and the Rechnungsart), so it has to come from the settlement rather than be stamped on the document afterwards: labelling an ordinary SettlementType::MmmStrom with PID 31006 produces a message that states Handelsrechnung under a Selbstausstellung Prüfidentifikator.

Trait Implementations§

Source§

impl Clone for MmmInput

Source§

fn clone(&self) -> MmmInput

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 MmmInput

Source§

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

Formats the value using the given formatter. Read more

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, 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 = !

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.