Carry annual stock capital service counters

This commit is contained in:
Jan Petykiewicz 2026-04-18 02:00:55 -07:00
commit ecfc78f410
7 changed files with 43 additions and 3 deletions

View file

@ -13995,6 +13995,8 @@ mod tests {
annual_dividend_adjustment_commit_count: 0,
annual_bond_last_retired_principal_total: 0,
annual_bond_last_issued_principal_total: 0,
annual_stock_repurchase_last_share_count: 0,
annual_stock_issue_last_share_count: 0,
chairman_issue_opinion_terms_raw_i32: BTreeMap::new(),
chairman_personality_raw_u8: BTreeMap::new(),
},

View file

@ -1241,6 +1241,10 @@ pub struct RuntimeServiceState {
#[serde(default)]
pub annual_bond_last_issued_principal_total: u64,
#[serde(default)]
pub annual_stock_repurchase_last_share_count: u64,
#[serde(default)]
pub annual_stock_issue_last_share_count: u64,
#[serde(default)]
pub chairman_issue_opinion_terms_raw_i32: BTreeMap<u32, Vec<i32>>,
#[serde(default)]
pub chairman_personality_raw_u8: BTreeMap<u32, u8>,

View file

@ -502,6 +502,8 @@ fn service_company_annual_finance_policy(
state.service_state.annual_finance_service_calls += 1;
state.service_state.annual_bond_last_retired_principal_total = 0;
state.service_state.annual_bond_last_issued_principal_total = 0;
state.service_state.annual_stock_repurchase_last_share_count = 0;
state.service_state.annual_stock_issue_last_share_count = 0;
let mut mutated_company_ids = BTreeSet::new();
let mut applied_effect_count = 0u32;
@ -605,6 +607,10 @@ fn service_company_annual_finance_policy(
proceeds_per_tranche as f64,
false,
);
state.service_state.annual_stock_issue_last_share_count = state
.service_state
.annual_stock_issue_last_share_count
.saturating_add(u64::from(batch_size));
}
let Some(market_state) = state
.service_state
@ -838,6 +844,10 @@ fn service_company_annual_finance_policy(
break;
};
market_state.outstanding_shares = next_outstanding_shares;
state.service_state.annual_stock_repurchase_last_share_count = state
.service_state
.annual_stock_repurchase_last_share_count
.saturating_add(u64::from(batch_size));
}
if mutated {
applied_effect_count += 1;
@ -2899,6 +2909,14 @@ mod tests {
state.service_state.annual_finance_last_actions.get(&22),
Some(&crate::RuntimeCompanyAnnualFinancePolicyAction::StockIssue)
);
assert_eq!(
state.service_state.annual_stock_issue_last_share_count,
4_000
);
assert_eq!(
state.service_state.annual_stock_repurchase_last_share_count,
0
);
assert_eq!(state.companies[0].current_cash, 390_000);
assert_eq!(
state.service_state.company_market_state[&22].outstanding_shares,
@ -3059,6 +3077,11 @@ mod tests {
state.service_state.annual_finance_last_actions.get(&23),
Some(&crate::RuntimeCompanyAnnualFinancePolicyAction::StockRepurchase)
);
assert_eq!(state.service_state.annual_stock_issue_last_share_count, 0);
assert_eq!(
state.service_state.annual_stock_repurchase_last_share_count,
1_000
);
assert_eq!(
state.companies[0].current_cash,
1_600_000 - expected_repurchase_total

View file

@ -261,6 +261,8 @@ 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_stock_repurchase_last_share_count: u64,
pub annual_stock_issue_last_share_count: u64,
pub total_trigger_dispatch_count: u64,
pub dirty_rerun_count: u64,
pub total_company_cash: i64,
@ -1389,6 +1391,12 @@ impl RuntimeSummary {
annual_bond_last_issued_principal_total: state
.service_state
.annual_bond_last_issued_principal_total,
annual_stock_repurchase_last_share_count: state
.service_state
.annual_stock_repurchase_last_share_count,
annual_stock_issue_last_share_count: state
.service_state
.annual_stock_issue_last_share_count,
total_trigger_dispatch_count: state
.service_state
.trigger_dispatch_counts