Expose annual debt flow relation summaries
This commit is contained in:
parent
ecfc78f410
commit
4f2955093f
6 changed files with 74 additions and 7 deletions
|
|
@ -69,7 +69,8 @@ pub use runtime::{
|
|||
RuntimePlayerTarget, RuntimeSaveProfileState, RuntimeServiceState, RuntimeState,
|
||||
RuntimeTerritory, RuntimeTerritoryMetric, RuntimeTerritoryTarget, RuntimeTrackMetric,
|
||||
RuntimeTrackPieceCounts, RuntimeTrain, RuntimeWorldFinanceNeighborhoodCandidate,
|
||||
RuntimeWorldIssueState, RuntimeWorldRestoreState, runtime_company_annual_bond_policy_state,
|
||||
RuntimeWorldIssueState, RuntimeWorldRestoreState,
|
||||
runtime_annual_bond_principal_flow_relation_label, runtime_company_annual_bond_policy_state,
|
||||
runtime_company_annual_creditor_pressure_state, runtime_company_annual_deep_distress_state,
|
||||
runtime_company_annual_dividend_policy_state,
|
||||
runtime_company_annual_finance_policy_action_label,
|
||||
|
|
|
|||
|
|
@ -3620,6 +3620,35 @@ pub fn runtime_company_annual_finance_policy_action_label(
|
|||
}
|
||||
}
|
||||
|
||||
pub fn runtime_annual_bond_principal_flow_relation_label(
|
||||
retired_principal_total: u64,
|
||||
issued_principal_total: u64,
|
||||
) -> Option<&'static str> {
|
||||
match retired_principal_total.cmp(&issued_principal_total) {
|
||||
std::cmp::Ordering::Equal => {
|
||||
if retired_principal_total == 0 {
|
||||
None
|
||||
} else {
|
||||
Some("retired_equals_issued")
|
||||
}
|
||||
}
|
||||
std::cmp::Ordering::Greater => {
|
||||
if issued_principal_total == 0 {
|
||||
Some("retired_only")
|
||||
} else {
|
||||
Some("retired_exceeds_issued")
|
||||
}
|
||||
}
|
||||
std::cmp::Ordering::Less => {
|
||||
if retired_principal_total == 0 {
|
||||
Some("issued_only")
|
||||
} else {
|
||||
Some("issued_exceeds_retired")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn runtime_company_stock_issue_price_to_book_ratio_f64(
|
||||
pressured_support_adjusted_share_price_scalar: f64,
|
||||
book_value_per_share: f64,
|
||||
|
|
@ -8359,6 +8388,30 @@ mod tests {
|
|||
assert!(bond_state.eligible_for_bond_issue_branch);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn classifies_annual_bond_principal_flow_relation() {
|
||||
assert_eq!(
|
||||
runtime_annual_bond_principal_flow_relation_label(0, 0),
|
||||
None
|
||||
);
|
||||
assert_eq!(
|
||||
runtime_annual_bond_principal_flow_relation_label(350_000, 0),
|
||||
Some("retired_only")
|
||||
);
|
||||
assert_eq!(
|
||||
runtime_annual_bond_principal_flow_relation_label(0, 500_000),
|
||||
Some("issued_only")
|
||||
);
|
||||
assert_eq!(
|
||||
runtime_annual_bond_principal_flow_relation_label(350_000, 1_000_000),
|
||||
Some("issued_exceeds_retired")
|
||||
);
|
||||
assert_eq!(
|
||||
runtime_annual_bond_principal_flow_relation_label(500_000, 500_000),
|
||||
Some("retired_equals_issued")
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn annual_bond_policy_stays_eligible_for_repayment_without_new_issue() {
|
||||
let mut year_stat_family_qword_bits = vec![
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::{
|
||||
CalendarPoint, RuntimeState, runtime_company_annual_bond_policy_state,
|
||||
runtime_company_annual_creditor_pressure_state, runtime_company_annual_deep_distress_state,
|
||||
runtime_company_annual_dividend_policy_state,
|
||||
CalendarPoint, RuntimeState, runtime_annual_bond_principal_flow_relation_label,
|
||||
runtime_company_annual_bond_policy_state, runtime_company_annual_creditor_pressure_state,
|
||||
runtime_company_annual_deep_distress_state, runtime_company_annual_dividend_policy_state,
|
||||
runtime_company_annual_finance_policy_action_label,
|
||||
runtime_company_annual_finance_policy_state, runtime_company_annual_finance_state,
|
||||
runtime_company_annual_stock_issue_state, runtime_company_annual_stock_repurchase_state,
|
||||
|
|
@ -261,6 +261,7 @@ pub struct RuntimeSummary {
|
|||
pub annual_dividend_adjustment_commit_count: u64,
|
||||
pub annual_bond_last_retired_principal_total: u64,
|
||||
pub annual_bond_last_issued_principal_total: u64,
|
||||
pub annual_bond_last_principal_flow_relation: Option<String>,
|
||||
pub annual_stock_repurchase_last_share_count: u64,
|
||||
pub annual_stock_issue_last_share_count: u64,
|
||||
pub total_trigger_dispatch_count: u64,
|
||||
|
|
@ -1391,6 +1392,12 @@ impl RuntimeSummary {
|
|||
annual_bond_last_issued_principal_total: state
|
||||
.service_state
|
||||
.annual_bond_last_issued_principal_total,
|
||||
annual_bond_last_principal_flow_relation:
|
||||
runtime_annual_bond_principal_flow_relation_label(
|
||||
state.service_state.annual_bond_last_retired_principal_total,
|
||||
state.service_state.annual_bond_last_issued_principal_total,
|
||||
)
|
||||
.map(str::to_string),
|
||||
annual_stock_repurchase_last_share_count: state
|
||||
.service_state
|
||||
.annual_stock_repurchase_last_share_count,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue