pub struct EarnedValueMetric {Show 14 fields
pub id: String,
pub project_id: String,
pub measurement_date: NaiveDate,
pub bac: Decimal,
pub planned_value: Decimal,
pub earned_value: Decimal,
pub actual_cost: Decimal,
pub schedule_variance: Decimal,
pub cost_variance: Decimal,
pub spi: Decimal,
pub cpi: Decimal,
pub eac: Decimal,
pub etc: Decimal,
pub tcpi: Decimal,
}Expand description
Earned Value Management metrics for a project at a point in time.
EVM formulas:
- SV (Schedule Variance) = EV - PV
- CV (Cost Variance) = EV - AC
- SPI (Schedule Performance Index) = EV / PV
- CPI (Cost Performance Index) = EV / AC
- EAC (Estimate at Completion) = BAC / CPI
- ETC (Estimate to Complete) = EAC - AC
- TCPI (To-Complete Performance Index) = (BAC - EV) / (BAC - AC)
Fields§
§id: StringUnique metric ID
project_id: StringProject ID
measurement_date: NaiveDateMeasurement date
bac: DecimalBudget at Completion (total baseline budget)
planned_value: DecimalPlanned Value (BCWS — Budgeted Cost of Work Scheduled)
earned_value: DecimalEarned Value (BCWP — Budgeted Cost of Work Performed)
actual_cost: DecimalActual Cost (ACWP — Actual Cost of Work Performed)
schedule_variance: DecimalSchedule Variance (EV - PV)
cost_variance: DecimalCost Variance (EV - AC)
spi: DecimalSchedule Performance Index (EV / PV)
cpi: DecimalCost Performance Index (EV / AC)
eac: DecimalEstimate at Completion (BAC / CPI)
etc: DecimalEstimate to Complete (EAC - AC)
tcpi: DecimalTo-Complete Performance Index ((BAC - EV) / (BAC - AC))
Implementations§
Source§impl EarnedValueMetric
impl EarnedValueMetric
Sourcepub fn compute(
id: impl Into<String>,
project_id: impl Into<String>,
measurement_date: NaiveDate,
bac: Decimal,
planned_value: Decimal,
earned_value: Decimal,
actual_cost: Decimal,
) -> Self
pub fn compute( id: impl Into<String>, project_id: impl Into<String>, measurement_date: NaiveDate, bac: Decimal, planned_value: Decimal, earned_value: Decimal, actual_cost: Decimal, ) -> Self
Creates a new EVM metric by computing all derived values from the three fundamental inputs: PV, EV, AC, and BAC.
Sourcepub fn is_ahead_of_schedule(&self) -> bool
pub fn is_ahead_of_schedule(&self) -> bool
Returns true if the project is ahead of schedule (SPI > 1.0).
Sourcepub fn is_under_budget(&self) -> bool
pub fn is_under_budget(&self) -> bool
Returns true if the project is under budget (CPI > 1.0).
Sourcepub fn is_healthy(&self) -> bool
pub fn is_healthy(&self) -> bool
Returns true if the project is both on schedule and on budget.
Sourcepub fn variance_at_completion(&self) -> Decimal
pub fn variance_at_completion(&self) -> Decimal
Returns the variance at completion (BAC - EAC).
Trait Implementations§
Source§impl Clone for EarnedValueMetric
impl Clone for EarnedValueMetric
Source§fn clone(&self) -> EarnedValueMetric
fn clone(&self) -> EarnedValueMetric
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 EarnedValueMetric
impl Debug for EarnedValueMetric
Source§impl<'de> Deserialize<'de> for EarnedValueMetric
impl<'de> Deserialize<'de> for EarnedValueMetric
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 Serialize for EarnedValueMetric
impl Serialize for EarnedValueMetric
Source§impl ToNodeProperties for EarnedValueMetric
impl ToNodeProperties for EarnedValueMetric
Source§fn node_type_name(&self) -> &'static str
fn node_type_name(&self) -> &'static str
"uncertain_tax_position".Source§fn node_type_code(&self) -> u16
fn node_type_code(&self) -> u16
416.Source§fn to_node_properties(&self) -> HashMap<String, GraphPropertyValue>
fn to_node_properties(&self) -> HashMap<String, GraphPropertyValue>
Auto Trait Implementations§
impl Freeze for EarnedValueMetric
impl RefUnwindSafe for EarnedValueMetric
impl Send for EarnedValueMetric
impl Sync for EarnedValueMetric
impl Unpin for EarnedValueMetric
impl UnsafeUnpin for EarnedValueMetric
impl UnwindSafe for EarnedValueMetric
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.