reconcile: Add statement total and cleared total.
This commit is contained in:
		
							parent
							
								
									042633d82d
								
							
						
					
					
						commit
						5d45171ed7
					
				
					 1 changed files with 17 additions and 0 deletions
				
			
		|  | @ -27,6 +27,7 @@ Problems in scope: | ||||||
|  - transactions are entered manually and reconciled after the fact, but importing from statements may be useful in some cases |  - transactions are entered manually and reconciled after the fact, but importing from statements may be useful in some cases | ||||||
| 
 | 
 | ||||||
| Q. How are reconciliation reports created currently? How do you read them? | Q. How are reconciliation reports created currently? How do you read them? | ||||||
|  |  - by hand from copying and pasting from the helper tool output | ||||||
| 
 | 
 | ||||||
| TODO/ISSUES: | TODO/ISSUES: | ||||||
|  - AMEX statement doesn't provide bank balance or running total |  - AMEX statement doesn't provide bank balance or running total | ||||||
|  | @ -110,8 +111,11 @@ parser.add_argument('--account', required=True, help='eg. Liabilities:CreditCard | ||||||
| parser.add_argument('--grep-output-filename') | parser.add_argument('--grep-output-filename') | ||||||
| # parser.add_argument('--report-group-regex') | # parser.add_argument('--report-group-regex') | ||||||
| parser.add_argument('--show-reconciled-matches', action='store_true') | parser.add_argument('--show-reconciled-matches', action='store_true') | ||||||
|  | parser.add_argument('--statement-total', required=True) | ||||||
| args = parser.parse_args() | args = parser.parse_args() | ||||||
| 
 | 
 | ||||||
|  | statement_total = decimal.Decimal(args.statement_total) | ||||||
|  | 
 | ||||||
| # TODO: Should put in a sanity check to make sure the statement you're feeding | # TODO: Should put in a sanity check to make sure the statement you're feeding | ||||||
| # in matches the account you've provided. | # in matches the account you've provided. | ||||||
| if 'AMEX' in args.account: | if 'AMEX' in args.account: | ||||||
|  | @ -135,6 +139,16 @@ end_date = statement_trans[-1]['date'] | ||||||
| # but I'm not clear on how to use compile(). An example would help. | # but I'm not clear on how to use compile(). An example would help. | ||||||
| entries, _, options = loader.load_file(args.beancount_file) | entries, _, options = loader.load_file(args.beancount_file) | ||||||
| 
 | 
 | ||||||
|  | total_query = f"""SELECT sum(COST(position)) AS aa WHERE account = "{args.account}" | ||||||
|  |     AND date <= {end_date.isoformat()} AND META('bank-statement') != NULL""" | ||||||
|  | result_types, result_rows = run_query( | ||||||
|  |     entries, | ||||||
|  |     options, | ||||||
|  |     total_query, | ||||||
|  |     numberify=True, | ||||||
|  | ) | ||||||
|  | cleared_total = result_rows[0][0] | ||||||
|  | 
 | ||||||
| # String concatenation looks bad, but there's no SQL injection possible here | # String concatenation looks bad, but there's no SQL injection possible here | ||||||
| # because BQL can't write back to the Beancount files. I hope! | # because BQL can't write back to the Beancount files. I hope! | ||||||
| query = f"SELECT filename, META('lineno') AS posting_line, META('bank-statement') AS posting_statement, date, number(cost(position)), payee, narration where account = '{args.account}' and date >= {begin_date} and date <= {end_date}" | query = f"SELECT filename, META('lineno') AS posting_line, META('bank-statement') AS posting_statement, date, number(cost(position)), payee, narration where account = '{args.account}' and date >= {begin_date} and date <= {end_date}" | ||||||
|  | @ -183,6 +197,9 @@ print('-' * 155) | ||||||
| for _, output in sorted(matches): | for _, output in sorted(matches): | ||||||
|     print(output) |     print(output) | ||||||
| print('-' * 155) | print('-' * 155) | ||||||
|  | print(f'STATEMENT TOTAL: {statement_total}') | ||||||
|  | print(f'CLEARED TOTAL:   {cleared_total:12,.2f}') | ||||||
|  | print('-' * 155) | ||||||
| 
 | 
 | ||||||
| # Write statement metadata back to books | # Write statement metadata back to books | ||||||
| if metadata_to_apply: | if metadata_to_apply: | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue