tktax_analysis/
analysis.rs

1// ---------------- [ File: tktax-analysis/src/analysis.rs ]
2crate::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}