tktax_analysis/
show_account.rs

1// ---------------- [ File: tktax-analysis/src/show_account.rs ]
2crate::ix!();
3
4//-------------------------------------------------
5impl<TxCat:TransactionCategory> ShowCategoryMap<TxCat> for Account {
6    fn show_category_map(&self, category_map: &CategoryMap<TxCat>) {
7        print_header("[category-map]");
8        println!("{:#?}", category_map);
9        println!(" ");
10    }
11}
12
13//-------------------------------------------------
14impl<TxCat:TransactionCategory> ShowCategorizedDebug<TxCat> for Account {
15    fn show_categorized_debug(&self, category_map: &CategoryMap<TxCat>) {
16        print_header("[category-debug]");
17        self.print_categorized_transactions_full(category_map);
18        println!(" ");
19    }
20}
21
22//-------------------------------------------------
23impl<TxCat:TransactionCategory> ShowCategorizedShort<TxCat> for Account {
24    fn show_categorized_short(&self, category_map: &CategoryMap<TxCat>) {
25        print_header("[categorized]");
26        self.print_categorized_transactions_short(category_map);
27        println!(" ");
28    }
29}
30
31//-------------------------------------------------
32impl ShowMonthlySummary for Account {
33
34    fn show_monthly_summary(&self) {
35        print_header("[monthly-summary]");
36        let summary = self.monthly_summary();
37        println!("{:#?}", summary);
38        println!(" ");
39    }
40}
41
42//-------------------------------------------------
43impl ShowAccountSummary for Account {
44
45    fn show_account_summary(&self) {
46        print_header("[account-summary]");
47        let summary = self.summary();
48        println!("{}", summary);
49        println!(" ");
50    }
51}
52
53//-------------------------------------------------
54impl ShowHistogram for Account {
55
56    type DisplayStrategy = HistogramDisplayStrategy;
57
58    fn show_histogram(&self, histogram_display_strategy: &Self::DisplayStrategy) {
59        print_header("[account-histogram]");
60        let histogram = self.histogram(histogram_display_strategy);
61        println!("{}", histogram);
62        println!(" ");
63    }
64}
65
66//-------------------------------------------------
67impl ShowAccountBursts for Account {
68
69    fn show_account_bursts(&self) {
70        print_header("[account-bursts]");
71        self.print_heavy_bursts(
72            DEFAULT_TOP_N_HEAVY_BURSTS,
73            DEFAULT_HEAVY_BURST_WINDOW_SIZE_DAYS
74        );
75        println!(" ");
76    }
77}
78
79//-------------------------------------------------
80impl<TxCat:TransactionCategory + 'static> ShowBusinessTransactions<TxCat> for Account {
81
82    fn show_business_transactions(&self, category_map: &CategoryMap<TxCat>) {
83        let items = self.business_expenditures(category_map);
84        match items.is_empty() {
85            true => {
86                println!("NOTE: no businesslike transactions for {}", self.kind());
87            },
88            false => {
89                print_header("[businesslike-expenditures]");
90                analyze_line_items_for_account(
91                    *self.kind(), 
92                    &items
93                );
94                println!(" ");
95            }
96        }
97    }
98}
99
100//-------------------------------------------------
101impl<TxCat:TransactionCategory + 'static> ShowMedicalAndInsuranceExpenditures<TxCat> for Account {
102
103    fn show_medical_and_insurance_expenditures(&self, category_map: &CategoryMap<TxCat>) {
104        let items = self.medical_and_insurance_expenditures(category_map);
105        match items.is_empty() {
106            true => {
107                println!("NOTE: no medical or insurance transactions for {}", self.kind());
108            },
109            false => {
110                print_header("[medical-and-insurance-expenditures]");
111                analyze_line_items_for_account(
112                    *self.kind(), 
113                    &items
114                );
115                println!(" ");
116            }
117        }
118    }
119}
120
121//-------------------------------------------------
122impl<TxCat:TransactionCategory + 'static> ShowTreasuryTransactionsAndChecks<TxCat> for Account {
123
124    fn show_treasury_transactions_and_checks(&self, category_map: &CategoryMap<TxCat>) {
125        let items = self.treasury_transactions_and_checks(category_map);
126        match items.is_empty() {
127            true => {
128                println!("NOTE: no checks or treasury transactions for {}", self.kind());
129            },
130            false => {
131                print_header("[treasury-transactions-and-checks]");
132                analyze_line_items_for_account(
133                    *self.kind(), 
134                    &items
135                );
136                println!(" ");
137            }
138        }
139    }
140}
141
142impl ShowQuarterlySummary for Account {
143    fn show_quarterly_summary(&self) {
144        print_header("[quarterly-summary]");
145        for summary in self.quarterly_summary().expect("expected to be able to create quarterly summaries") {
146            println!("{}", summary);
147        }
148    }
149}