tktax-analysis 0.2.2

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

impl<TxCat:TransactionCategory + 'static> AccountAnalysisInterface<TxCat> for Account {

    fn analyze(&self, analysis: &AccountAnalysis<TxCat>) 
        -> Result<(),AccountError> 
    {
        let flags                      = analysis.flags();
        let category_map               = analysis.category_map();
        let histogram_display_strategy = analysis.histogram_display_strategy();

        info!("will analyze account {:#?}", self.kind());

        print_thick_header("[ACCOUNT_ANALYSIS]");

        println!("performing account analysis for year={}, account={}", self.year(), self.kind());
        println!(" ");

        if flags.contains(AccountAnalysisFlags::SHOW_ACCOUNT_SUMMARY) {
            self.show_account_summary();
        }

        if flags.contains(AccountAnalysisFlags::SHOW_HISTOGRAM) {
            self.show_histogram(histogram_display_strategy);
        }

        if flags.contains(AccountAnalysisFlags::SHOW_BURSTS) {
            self.show_account_bursts();
        }

        if flags.contains(AccountAnalysisFlags::SHOW_MONTHLY_SUMMARY) {
            self.show_monthly_summary();
        }

        if flags.contains(AccountAnalysisFlags::SHOW_BUSINESS_TRANSACTIONS) {
            self.show_business_transactions(category_map);
        }

        if flags.contains(AccountAnalysisFlags::SHOW_MEDICAL_AND_INSURANCE_TRANSACTIONS) {
            self.show_medical_and_insurance_expenditures(category_map);
        }

        if flags.contains(AccountAnalysisFlags::SHOW_TREASURY_TRANSACTIONS_AND_CHECKS) {
            self.show_treasury_transactions_and_checks(category_map);
        }

        if flags.contains(AccountAnalysisFlags::SHOW_CATEGORY_MAP) {
            self.show_category_map(category_map);
        }

        if flags.contains(AccountAnalysisFlags::SHOW_CATEGORIZED_FULL) {
            self.show_categorized_debug(category_map);
        }

        if flags.contains(AccountAnalysisFlags::SHOW_CATEGORIZED_SHORT) {
            self.show_categorized_short(category_map);
        }

        if flags.contains(AccountAnalysisFlags::SHOW_QUARTERLY_SUMMARY) {
            self.show_quarterly_summary();
        }

        Ok(())
    }
}