reconcile: Factor out the output formatting
This commit is contained in:
		
							parent
							
								
									a4bba120eb
								
							
						
					
					
						commit
						e764f3d0ef
					
				
					 2 changed files with 28 additions and 13 deletions
				
			
		|  | @ -625,6 +625,24 @@ def process_unmatched(statement_trans: List[dict], books_trans: List[dict]) -> L | |||
|     return matches | ||||
| 
 | ||||
| 
 | ||||
| def format_output(matches, begin_date, end_date, csv_statement, show_reconciled_matches) -> str: | ||||
|     with io.StringIO() as out: | ||||
|         match_output = format_matches(matches, csv_statement, show_reconciled_matches) | ||||
|         _, total_missing_from_books, total_missing_from_statement = totals(matches) | ||||
|         print('-' * 155, file=out) | ||||
|         statement_heading = f'Statement transactions {begin_date} to {end_date}' | ||||
|         print(f'{statement_heading:<52}            {"Books transactions":<58}   Notes', file=out) | ||||
|         print('-' * 155, file=out) | ||||
|         for _, output in sorted(match_output, key=lambda x: x[0]): | ||||
|             print(output, file=out) | ||||
|         print('-' * 155, file=out) | ||||
|         print(f'Sub-total not on statement: {total_missing_from_statement:12,.2f}', file=out) | ||||
|         print(f'Sub-total not in books:     {total_missing_from_books:12,.2f}', file=out) | ||||
|         print(f'Total:                      {total_missing_from_statement + total_missing_from_books:12,.2f}', file=out) | ||||
|         print('-' * 155, file=out) | ||||
|         return out.getvalue() | ||||
| 
 | ||||
| 
 | ||||
| def main(arglist: Optional[Sequence[str]] = None, | ||||
|          stdout: TextIO = sys.stdout, | ||||
|          stderr: TextIO = sys.stderr, | ||||
|  | @ -689,19 +707,7 @@ def main(arglist: Optional[Sequence[str]] = None, | |||
|     matches.extend(unmatched) | ||||
| 
 | ||||
|     # Print out results of our matching. | ||||
|     match_output = format_matches(matches, args.csv_statement, args.show_reconciled_matches) | ||||
|     _, total_missing_from_books, total_missing_from_statement = totals(matches) | ||||
|     print('-' * 155) | ||||
|     statement_heading = f'Statement transactions {begin_date} to {end_date}' | ||||
|     print(f'{statement_heading:<52}            {"Books transactions":<58}   Notes') | ||||
|     print('-' * 155) | ||||
|     for _, output in sorted(match_output, key=lambda x: x[0]): | ||||
|         print(output) | ||||
|     print('-' * 155) | ||||
|     print(f'Sub-total not on statement: {total_missing_from_statement:12,.2f}') | ||||
|     print(f'Sub-total not in books:     {total_missing_from_books:12,.2f}') | ||||
|     print(f'Total:                      {total_missing_from_statement + total_missing_from_books:12,.2f}') | ||||
|     print('-' * 155) | ||||
|     print(format_output(matches, begin_date, end_date, args.csv_statement, args.show_reconciled_matches)) | ||||
| 
 | ||||
|     # Write statement metadata back to the books. | ||||
|     metadata_to_apply = [] | ||||
|  |  | |||
|  | @ -7,6 +7,7 @@ import textwrap | |||
| 
 | ||||
| from conservancy_beancount.reconcile.statement_reconciler import ( | ||||
|     date_proximity, | ||||
|     format_output, | ||||
|     match_statement_and_books, | ||||
|     metadata_for_match, | ||||
|     payee_match, | ||||
|  | @ -379,3 +380,11 @@ def test_handles_fr_csv(): | |||
|         }, | ||||
|     ] | ||||
|     assert read_fr_csv(io.StringIO(CSV)) == expected | ||||
| 
 | ||||
| 
 | ||||
| def test_format_output(): | ||||
|     statement = [S1] | ||||
|     books = [B1] | ||||
|     matches, _, _ = match_statement_and_books(statement, books) | ||||
|     output = format_output(matches, datetime.date(2022, 1, 1), datetime.date(2022, 2, 1), 'test.csv', True) | ||||
|     assert '2022-01-01:       10.00 Patreon         / Patreon   / 12345  →  2022-01-01:       10.00 Patreon                              ✓ Matched' in output | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue