tktax-analysis 0.2.2

A robust Rust crate for financial account analysis, histogram generation, donation processing, and more.
Documentation
// ---------------- [ File: tktax-analysis/src/analysis.rs ]
crate::ix!();

#[derive(Debug,Builder,Getters,Default)]
#[getset(get="pub")]
pub struct AccountAnalysis<TxCat:TransactionCategory> {
    flags:                      AccountAnalysisFlags,
    histogram_display_strategy: HistogramDisplayStrategy,
    year:                       TrackedYear,
    accounts:                   Vec<AccountKind>,
    donations:                  Vec<Donation>,
    amazon_biz_items:           Option<Vec<AmazonStoreBusinessPurchase>>,
    amazon_med_items:           Option<Vec<AmazonStoreMedicalPurchase>>,
    category_map:               CategoryMap<TxCat>,
}

impl<TxCat:TransactionCategory + 'static> AccountAnalysis<TxCat> {

    pub fn full_analysis(
        &self, 
        program_config:  &ProgramConfig

    ) -> Result<(),AccountError>
    {
        debug!("running full analysis with {:#?} {:#?}", self, program_config);

        for kind in self.accounts().iter() {
            Account::new(*self.year(), *kind, program_config)?.analyze(self)?;
        }

        if let Some(amazon_biz_items) = self.amazon_biz_items() {
            analyze_amazon_line_items::<TxCat,_>(amazon_biz_items);
        }

        if let Some(amazon_med_items) = self.amazon_med_items() {
            analyze_amazon_line_items::<TxCat,_>(amazon_med_items);
        }

        analyze_donations(&self.donations());

        post_summary();

        Ok(())
    }
}