paft_fundamentals/
statements.rs1use serde::{Deserialize, Serialize};
4
5use chrono::{DateTime, NaiveDate, Utc};
6#[cfg(feature = "dataframe")]
7use df_derive_macros::ToDataFrame;
8use paft_domain::ReportingPeriod;
9use paft_money::Money;
10
11#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
12#[cfg_attr(feature = "dataframe", derive(ToDataFrame))]
13pub struct IncomeStatementRow {
15 #[cfg_attr(feature = "dataframe", df_derive(as_string))]
17 pub period: ReportingPeriod,
18 pub total_revenue: Option<Money>,
20 pub gross_profit: Option<Money>,
22 pub operating_income: Option<Money>,
24 pub net_income: Option<Money>,
26 pub interest_expense: Option<Money>,
28 pub income_tax_expense: Option<Money>,
30 pub depreciation_and_amortization: Option<Money>,
32}
33
34#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
35#[cfg_attr(feature = "dataframe", derive(ToDataFrame))]
36pub struct BalanceSheetRow {
38 #[cfg_attr(feature = "dataframe", df_derive(as_string))]
40 pub period: ReportingPeriod,
41 pub total_assets: Option<Money>,
43 pub total_liabilities: Option<Money>,
45 pub total_equity: Option<Money>,
47 pub cash: Option<Money>,
49 pub long_term_debt: Option<Money>,
51 pub shares_outstanding: Option<u64>,
53 pub current_assets: Option<Money>,
55 pub current_liabilities: Option<Money>,
57 pub accounts_receivable: Option<Money>,
59 pub inventory: Option<Money>,
61 pub accounts_payable: Option<Money>,
63 pub net_property_plant_equipment: Option<Money>,
65 pub goodwill: Option<Money>,
67 pub intangible_assets: Option<Money>,
69}
70
71#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
72#[cfg_attr(feature = "dataframe", derive(ToDataFrame))]
73pub struct CashflowRow {
75 #[cfg_attr(feature = "dataframe", df_derive(as_string))]
77 pub period: ReportingPeriod,
78 pub operating_cashflow: Option<Money>,
80 pub capital_expenditures: Option<Money>,
82 pub free_cash_flow: Option<Money>,
84 pub net_income: Option<Money>,
86 pub depreciation_and_amortization: Option<Money>,
88}
89
90#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
91#[cfg_attr(feature = "dataframe", derive(ToDataFrame))]
92pub struct Calendar {
94 #[serde(with = "paft_core::serde_helpers::ts_milliseconds_vec")]
96 pub earnings_dates: Vec<DateTime<Utc>>,
97 #[serde(default)]
99 pub ex_dividend_date: Option<NaiveDate>,
100 #[serde(default)]
102 pub dividend_payment_date: Option<NaiveDate>,
103}