Skip to main content

BillingPositionKind

Enum BillingPositionKind 

Source
pub enum BillingPositionKind {
Show 22 variants NneArbeit, NneArbeitHt, NneArbeitNt, NneArbeitModul1, NneArbeitModul3, NneLeistung, NneGasGrundpreis, Konzessionsabgabe, Mehrmenge, Mindermenge, MsbGrundgebuehr, Messdienstleistung, GasAwhSperrung, GasAwhEntsprrung, GasAwhSonstige, Blindmehrarbeit, Sect19StromNevUmlage, OffshoreNetzumlage, KwkgUmlage, DezentraleEinspeisung, Sect19IndividuellesEntgelt, GasKapazitaetsentgelt,
}
Expand description

Semantic kind of a billing position — used by the service layer to derive the correct BdewArtikelnummer for the BO4E Rechnungsposition.

grid-billing has no rubo4e dependency, so this enum is the bridge: the service layer maps BillingPositionKindBdewArtikelnummer in into_rechnung(). Every position in every SettlementResult must carry a kind so the INVOIC Rechnungsposition.artikelnummer is never missing.

§BDEW INVOIC AHB requirement

BDEW INVOIC AHBs (FV2025-10-01) mandate artikelnummer in every SG28 PIA line item. Missing or wrong Artikelnummern cause counterparty APERAK rejection. The invoic-checker checks 6 plausibility rules; Artikelnummer matching is part of the tariff-found rule (check 5).

§Mapping to BdewArtikelnummer

BillingPositionKindBdewArtikelnummerINVOIC AHB ref
NneArbeitWirkarbeitPID 31002 (NN-Rechnung) Arbeit
NneArbeitHtWirkarbeitPID 31002 §14a Modul 2 HT
NneArbeitNtWirkarbeitPID 31002 §14a Modul 2 NT
NneArbeitModul1WirkarbeitPID 31002 §14a Modul 1 (rate reduced)
NneLeistungLeistungPID 31002 RLM kW charge
NneGasGrundpreisGrundpreisPID 31002 Gas monthly base fee
KonzessionsabgabeKonzessionsabgabePID 31002 KAV §2
MehrmengeMehrmengePID 31005 positive imbalance
MindermengeMindermengePID 31005 negative imbalance (credit)
MsbGrundgebuehrEntgeltEinbauBetriebWartungMesstechnikPID 31009 MSB monthly fee
MessdienstleistungEntgeltMessungAblesungPID 31009 reading service
GasAwhSperrungSperrkostenPID 31011 AWH disconnection
GasAwhEntsprrungEntsperrkostenPID 31011 AWH reconnection
GasAwhSonstigeEntgeltAbrechnungPID 31011 other AWH
BlindmehrarbeitBlindmehrarbeitReactive energy excess

Variants§

§

NneArbeit

Netznutzungsentgelt Arbeit — flat-rate active energy charge (kWh). SLP or Gas. → BdewArtikelnummer::Wirkarbeit

§

NneArbeitHt

§14a Modul 2 Hochlast (HT) Arbeit — time-variable higher-price band. → BdewArtikelnummer::Wirkarbeit

§

NneArbeitNt

§14a Modul 2 Niedertarif (NT) Arbeit — time-variable lower-price band. → BdewArtikelnummer::Wirkarbeit

§

NneArbeitModul1

§14a Modul 1 Arbeit — flat percentage reduction applied to Arbeitspreis. → BdewArtikelnummer::Wirkarbeit (same article, different rate)

§

NneArbeitModul3

§14a Modul 3 Spotpreis-NNE — per-dispatch-interval variable rate position.

One InvoicePosition is generated per dispatch interval from NneInput::sect14a_modul3_intervals. Each carries a lastvariable_preisposition_json with the BO4E LastvariablePreisposition COM data (pricing formula parameters) for ERP-side validation and portal display of the per-interval tariff breakdown.

Regulatory basis: BNetzA BK6-22-300 Anlage 2 §3 — Spotpreis-Netzentgelt. → BdewArtikelnummer::Wirkarbeit

§

NneLeistung

Netznutzungsentgelt Leistung — RLM peak demand charge (kW). → BdewArtikelnummer::Leistung

§

NneGasGrundpreis

Gas NNE monthly base fee (Grundpreis / Verrechnungspreis). GasNEV §14. → BdewArtikelnummer::Grundpreis

§

Konzessionsabgabe

Konzessionsabgabe — KAV §2 municipal concession fee. → BdewArtikelnummer::Konzessionsabgabe

§

Mehrmenge

Mehrmengen — positive imbalance (actual > profiled). PID 31005 GPKE (BK6-24-174) Teil 1 Kap. 8.4 / GaBi Gas 2.1 (BK7-24-01-008). → BdewArtikelnummer::Mehrmenge

§

Mindermenge

Mindermengen — negative imbalance credit note (actual < profiled). PID 31005. → BdewArtikelnummer::Mindermenge

§

MsbGrundgebuehr

MSB Grundgebühr Messstellenbetrieb — monthly metering base fee. MsbG §§6–7. → BdewArtikelnummer::EntgeltEinbauBetriebWartungMesstechnik

§

Messdienstleistung

Messdienstleistung — periodic reading service fee. MsbG §2. → BdewArtikelnummer::EntgeltMessungAblesung

§

GasAwhSperrung

Gas AWH Sperrung — abrechnungswürdige Handlung disconnection. BK7-24-01-009 §5.4. → BdewArtikelnummer::Sperrkosten

§

GasAwhEntsprrung

Gas AWH Entsperrung — abrechnungswürdige Handlung reconnection. BK7-24-01-009 §5.4. → BdewArtikelnummer::Entsperrkosten

§

GasAwhSonstige

Gas AWH sonstige — other abrechnungswürdige Handlung. BK7-24-01-009 §5.4. → BdewArtikelnummer::EntgeltAbrechnung

§

Blindmehrarbeit

Blindmehrarbeit — reactive energy excess charge. StromNEV §18. → BdewArtikelnummer::Blindmehrarbeit

§

Sect19StromNevUmlage

Aufschlag für besondere Netznutzung (§19 StromNEV-Umlage).

Funds the reduced individual network charges granted under §19 Abs. 2 StromNEV. Rate depends on the Letztverbrauchergruppe (EnFG).

§

OffshoreNetzumlage

Offshore-Netzumlage (§17f EnWG).

Funds offshore connection cost and the compensation owed to offshore wind farms for unavailable connections.

§

KwkgUmlage

KWKG-Umlage (§26 KWKG).

Funds the KWK-Zuschlag paid to CHP operators.

§

DezentraleEinspeisung

Entgelt für dezentrale Erzeugung — §18 StromNEV, under Abschmelzung (GBK-25-02-1#1). A payment out, so its net_eur is negative.

§

Sect19IndividuellesEntgelt

§19 Abs. 2 StromNEV individual-charge reduction over the Netzentgelt. Negative: it takes the published charge down to the agreed fraction.

§

GasKapazitaetsentgelt

Gas Kapazitätsentgelt — booked capacity at the price sheet’s annual rate, pro-rated over the period. §15 GasNEV.

Implementations§

Source§

impl BillingPositionKind

Source

pub fn artikelnummer( self, settlement_type: SettlementType, ) -> Option<&'static str>

The BDEW Artikelnummer that codes this position, as its codelist name.

Which article number applies depends on both what was charged and what kind of settlement it appears in — Gas NNE keeps the classic WIRKARBEIT code, while Strom NNE moved to Artikel-IDs under BK6-20-160 and carries no Artikelnummer at all.

Returned as the codelist name rather than a BO4E enum so that this crate stays free of BO4E types. A consumer parses it into whatever it renders — rubo4e::current::BdewArtikelnummer implements FromStr over exactly these names.

None means the position carries an Artikel-ID instead, resolved from the price sheet by the renderer.

Source: BDEW Codeliste der Artikelnummern und Artikel-IDs v5.6.

Trait Implementations§

Source§

impl Clone for BillingPositionKind

Source§

fn clone(&self) -> BillingPositionKind

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 Copy for BillingPositionKind

Source§

impl Debug for BillingPositionKind

Source§

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

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

impl Eq for BillingPositionKind

Source§

impl PartialEq for BillingPositionKind

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl Serialize for BillingPositionKind

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 BillingPositionKind

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 = 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.