pub struct PricedSession {
pub start: DateTime,
pub end: Option<DateTime>,
pub periods: Vec<PricedPeriod>,
pub time_zone: TimeZone,
pub profile_type: Option<ProfileType>,
pub ad_hoc_payment: bool,
pub reservation_expired: bool,
}tariffs only.Expand description
A session reduced to what the pricing engine needs.
Build one with PricedSession::from_cdr or PricedSession::from_session, or by hand for
a “what would this cost?” calculation that has no CDR yet.
Fields§
§start: DateTimeWhen the session started, in UTC.
end: Option<DateTime>When the session ended, in UTC, if it has.
periods: Vec<PricedPeriod>The charging periods, in order.
time_zone: TimeZoneThe time zone of the Location, which the local-time restrictions are expressed in.
profile_type: Option<ProfileType>The ProfileType the driver selected, which decides which Tariff.type applies.
ad_hoc_payment: boolWhether the driver used ad-hoc payment rather than a contract.
reservation_expired: boolWhether a reservation that was made expired before charging started.
Selects between the RESERVATION and RESERVATION_EXPIRES tariff elements.
Implementations§
Source§impl PricedSession
impl PricedSession
Sourcepub fn from_cdr(cdr: &Cdr, time_zone: TimeZone) -> Self
pub fn from_cdr(cdr: &Cdr, time_zone: TimeZone) -> Self
Builds the pricing input from an OCPI 2.3.0 CDR.
The CDR does not carry the Location’s time zone — it is not one of the fields
CdrLocation keeps — so it has to be supplied. Use the time_zone of the
Location the session took place at.
Sourcepub fn from_session(session: &Session, time_zone: TimeZone) -> Self
pub fn from_session(session: &Session, time_zone: TimeZone) -> Self
Builds the pricing input from an OCPI 2.3.0 Session.
Source§impl PricedSession
impl PricedSession
Sourcepub fn from_cdr_v2_2_1(cdr: &Cdr, time_zone: TimeZone) -> Self
pub fn from_cdr_v2_2_1(cdr: &Cdr, time_zone: TimeZone) -> Self
Builds the pricing input from an OCPI 2.2.1 CDR.
The charging period types are wire-identical between 2.2.1 and 2.3.0, so this reuses the same reduction.
Sourcepub fn from_session_v2_2_1(session: &Session, time_zone: TimeZone) -> Self
pub fn from_session_v2_2_1(session: &Session, time_zone: TimeZone) -> Self
Builds the pricing input from an OCPI 2.2.1 Session.
Source§impl PricedSession
impl PricedSession
Sourcepub fn new(start: DateTime, time_zone: TimeZone) -> Self
pub fn new(start: DateTime, time_zone: TimeZone) -> Self
A session with no periods, for building up by hand.
Sourcepub fn with_period(self, period: PricedPeriod) -> Self
pub fn with_period(self, period: PricedPeriod) -> Self
Adds a charging period.
Sourcepub fn total_energy_kwh(&self) -> Number
pub fn total_energy_kwh(&self) -> Number
The total energy across all periods, in kWh.
Sourcepub fn total_charging_hours(&self) -> Number
pub fn total_charging_hours(&self) -> Number
The total charging time across all periods, in hours.
Sourcepub fn total_parking_hours(&self) -> Number
pub fn total_parking_hours(&self) -> Number
The total parking time across all periods, in hours.
Sourcepub fn total_reservation_hours(&self) -> Number
pub fn total_reservation_hours(&self) -> Number
The total reservation time across all periods, in hours.
Sourcepub fn energy_before(&self, index: usize) -> Number
pub fn energy_before(&self, index: usize) -> Number
The energy charged before index, for a min_kwh/max_kwh restriction.
Sourcepub fn duration_before(&self, index: usize) -> i64
pub fn duration_before(&self, index: usize) -> i64
The session duration up to the start of period index, in seconds.
min_duration: Minimum duration in seconds the Charging Session MUST last.
Sourcepub fn first_out_of_order(&self) -> Option<DateTime>
pub fn first_out_of_order(&self) -> Option<DateTime>
The start of the first period that does not begin after the one before it, if any.
The engine reads the periods as a timeline: a period’s duration is the gap to the next
one, and step_size applies to “the last relevant PriceComponent”. Neither means
anything if the list is out of order, which is a thing that happens when a CPO merges
period streams from more than one source.
Sourcepub fn period_end(&self, index: usize) -> Option<DateTime>
pub fn period_end(&self, index: usize) -> Option<DateTime>
The end of period index: the start of the next one, or the end of the session.
Trait Implementations§
Source§impl Clone for PricedSession
impl Clone for PricedSession
Source§fn clone(&self) -> PricedSession
fn clone(&self) -> PricedSession
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more