diff --git a/app/models/family/auto_categorizer.rb b/app/models/family/auto_categorizer.rb index f9a83f1f2..2448f16e1 100644 --- a/app/models/family/auto_categorizer.rb +++ b/app/models/family/auto_categorizer.rb @@ -45,9 +45,8 @@ class Family::AutoCategorizer category_id, source: "ai" ) + transaction.lock_attr!(:category_id) end - - transaction.lock_attr!(:category_id) end end diff --git a/app/models/family/auto_merchant_detector.rb b/app/models/family/auto_merchant_detector.rb index 96bfa4144..783121269 100644 --- a/app/models/family/auto_merchant_detector.rb +++ b/app/models/family/auto_merchant_detector.rb @@ -50,11 +50,9 @@ class Family::AutoMerchantDetector merchant_id, source: "ai" ) - + # We lock the attribute so that this Rule doesn't try to run again + transaction.lock_attr!(:merchant_id) end - - # We lock the attribute so that this Rule doesn't try to run again - transaction.lock_attr!(:merchant_id) end end diff --git a/app/models/provider/twelve_data.rb b/app/models/provider/twelve_data.rb index 8f347d9fb..ff46038b4 100644 --- a/app/models/provider/twelve_data.rb +++ b/app/models/provider/twelve_data.rb @@ -187,7 +187,7 @@ class Provider::TwelveData < Provider symbol: symbol, date: date.to_date, price: price, - currency: parsed.dig("currency"), + currency: parsed.dig("meta", "currency") || parsed.dig("currency"), exchange_operating_mic: exchange_operating_mic ) end.compact diff --git a/test/models/family/auto_categorizer_test.rb b/test/models/family/auto_categorizer_test.rb index c9440919d..296ac8e93 100644 --- a/test/models/family/auto_categorizer_test.rb +++ b/test/models/family/auto_categorizer_test.rb @@ -33,8 +33,9 @@ class Family::AutoCategorizerTest < ActiveSupport::TestCase assert_equal test_category, txn2.reload.category assert_nil txn3.reload.category - # After auto-categorization, all transactions are locked and no longer enrichable - assert_equal 0, @account.transactions.reload.enrichable(:category_id).count + # After auto-categorization, only successfully categorized transactions are locked + # txn3 remains enrichable since it didn't get a category (allows retry) + assert_equal 1, @account.transactions.reload.enrichable(:category_id).count end private diff --git a/test/models/family/auto_merchant_detector_test.rb b/test/models/family/auto_merchant_detector_test.rb index aa4a56be6..296569b1f 100644 --- a/test/models/family/auto_merchant_detector_test.rb +++ b/test/models/family/auto_merchant_detector_test.rb @@ -34,8 +34,9 @@ class Family::AutoMerchantDetectorTest < ActiveSupport::TestCase assert_equal "https://cdn.brandfetch.io/chipotle.com/icon/fallback/lettermark/w/40/h/40?c=123", txn2.reload.merchant.logo_url assert_nil txn3.reload.merchant - # After auto-detection, all transactions are locked and no longer enrichable - assert_equal 0, @account.transactions.reload.enrichable(:merchant_id).count + # After auto-detection, only successfully detected transactions are locked + # txn3 remains enrichable since it didn't get a merchant (allows retry) + assert_equal 1, @account.transactions.reload.enrichable(:merchant_id).count end private