reconciler: Fix reconciler lumping unmatched books items together (#20737)
Issue was that the subset matching was passing through the grouped transactions rather than the original transactions when it failed to match.
This commit is contained in:
		
							parent
							
								
									86f4232df1
								
							
						
					
					
						commit
						5793a55dbc
					
				
					 2 changed files with 28 additions and 1 deletions
				
			
		|  | @ -503,7 +503,7 @@ def subset_match( | |||
|             if best_match_index is not None: | ||||
|                 del statement_trans[best_match_index] | ||||
|         else: | ||||
|             remaining_books_trans.append(r2) | ||||
|             remaining_books_trans.extend(group_items) | ||||
|     for r1 in statement_trans: | ||||
|         remaining_statement_trans.append(r1) | ||||
|     return matches, remaining_statement_trans, remaining_books_trans | ||||
|  |  | |||
|  | @ -350,6 +350,33 @@ def test_subset_passes_through_all_non_matches(): | |||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| def test_subset_passes_though_unmatched_transactions_with_same_payee(): | ||||
|     # Tracy noticed that when multiple books payments had the same date and | ||||
|     # payee and were unmatched, they were being displayed lumped together, when | ||||
|     # they should have remained separate. | ||||
|     B1a = { | ||||
|         'date': datetime.date(2022, 1, 1), | ||||
|         'amount': decimal.Decimal('100.00'), | ||||
|         'payee': 'Hannah', | ||||
|         'check_id': '', | ||||
|         'filename': '2022/imports.beancount', | ||||
|         'line': 777, | ||||
|         'bank_statement': '', | ||||
|     } | ||||
|     B1b = { | ||||
|         'date': datetime.date(2022, 1, 1), | ||||
|         'amount': decimal.Decimal('100.00'), | ||||
|         'payee': 'Hannah', | ||||
|         'check_id': '', | ||||
|         'filename': '2022/imports.beancount', | ||||
|         'line': 797, | ||||
|         'bank_statement': '', | ||||
|     } | ||||
|     assert subset_match([], [B1a, B1b]) == ( | ||||
|         [], [], [B1a, B1b],  # No match: two preserved intact | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| def test_handles_amex_csv(): | ||||
|     CSV = """Date,Receipt,Description,Card Member,Account #,Amount,Extended Details,Appears On Your Statement As,Address,City/State,Zip Code,Country,Reference,Category\n08/19/2021,,Gandi.net           San Francisco,RODNEY R BROWN,-99999,28.15,"00000009999 00000009999999999999\nGandi.net\nSan Francisco\n00000009999999999999",Gandi.net           San Francisco,"NEPTUNUSSTRAAT 41-63\nHOOFDDORP",,2132 JA,NETHERLANDS (THE),'999999999999999999',Merchandise & Supplies-Internet Purchase\n""" | ||||
|     expected = [ | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue