tktax_analysis/
analysis.rs1crate::ix!();
3
4#[derive(Debug,Builder,Getters,Default)]
5#[getset(get="pub")]
6pub struct AccountAnalysis<TxCat:TransactionCategory> {
7 flags: AccountAnalysisFlags,
8 histogram_display_strategy: HistogramDisplayStrategy,
9 year: TrackedYear,
10 accounts: Vec<AccountKind>,
11 donations: Vec<Donation>,
12 amazon_biz_items: Option<Vec<AmazonStoreBusinessPurchase>>,
13 amazon_med_items: Option<Vec<AmazonStoreMedicalPurchase>>,
14 category_map: CategoryMap<TxCat>,
15}
16
17impl<TxCat:TransactionCategory + 'static> AccountAnalysis<TxCat> {
18
19 pub fn full_analysis(
20 &self,
21 program_config: &ProgramConfig
22
23 ) -> Result<(),AccountError>
24 {
25 debug!("running full analysis with {:#?} {:#?}", self, program_config);
26
27 for kind in self.accounts().iter() {
28 Account::new(*self.year(), *kind, program_config)?.analyze(self)?;
29 }
30
31 if let Some(amazon_biz_items) = self.amazon_biz_items() {
32 analyze_amazon_line_items::<TxCat,_>(amazon_biz_items);
33 }
34
35 if let Some(amazon_med_items) = self.amazon_med_items() {
36 analyze_amazon_line_items::<TxCat,_>(amazon_med_items);
37 }
38
39 analyze_donations(&self.donations());
40
41 post_summary();
42
43 Ok(())
44 }
45}