diff --git a/src/FiscalOS.Infra/Transactions/Plaid/PlaidAddedTransactionHandler.cs b/src/FiscalOS.Infra/Transactions/Plaid/PlaidAddedTransactionHandler.cs index 7b960aa..8f8ccfb 100644 --- a/src/FiscalOS.Infra/Transactions/Plaid/PlaidAddedTransactionHandler.cs +++ b/src/FiscalOS.Infra/Transactions/Plaid/PlaidAddedTransactionHandler.cs @@ -89,7 +89,7 @@ internal sealed class PlaidAddedTransactionHandler : IPlaidAddedTransactionHandl account.Id, addedTransaction.Merchant, addedTransaction.Description, - addedTransaction.Amount, + addedTransaction.CanonicalAmount, addedTransaction.PostedDate, transactionMetadata ); diff --git a/src/FiscalOS.Infra/Transactions/Plaid/PlaidExtensions.cs b/src/FiscalOS.Infra/Transactions/Plaid/PlaidExtensions.cs index 66619aa..b2b1744 100644 --- a/src/FiscalOS.Infra/Transactions/Plaid/PlaidExtensions.cs +++ b/src/FiscalOS.Infra/Transactions/Plaid/PlaidExtensions.cs @@ -7,6 +7,7 @@ public static class PlaidExtensions { public string Merchant => transaction.MerchantName ?? "Unknown merchant"; public string Description => transaction.OriginalDescription ?? ""; + public decimal? CanonicalAmount => transaction.Amount is decimal amount ? -amount : null; public DateTimeOffset PostedDate => transaction.Datetime ?? ( transaction.Date.HasValue ? new DateTimeOffset( diff --git a/src/FiscalOS.Infra/Transactions/Plaid/PlaidModifiedTransactionHandler.cs b/src/FiscalOS.Infra/Transactions/Plaid/PlaidModifiedTransactionHandler.cs index c523e54..f9ab09a 100644 --- a/src/FiscalOS.Infra/Transactions/Plaid/PlaidModifiedTransactionHandler.cs +++ b/src/FiscalOS.Infra/Transactions/Plaid/PlaidModifiedTransactionHandler.cs @@ -84,7 +84,7 @@ internal sealed class PlaidModifiedTransactionHandler : IPlaidModifiedTransactio existing.AccountId, plaidModifiedTransaction.Merchant, plaidModifiedTransaction.Description, - plaidModifiedTransaction.Amount, + plaidModifiedTransaction.CanonicalAmount, plaidModifiedTransaction.PostedDate, plaidMetadata ); diff --git a/tests/FiscalOS.Infra.Tests/Integration/PlaidAddedTransactionHandlerTests.cs b/tests/FiscalOS.Infra.Tests/Integration/PlaidAddedTransactionHandlerTests.cs index c136a09..9e781d2 100644 --- a/tests/FiscalOS.Infra.Tests/Integration/PlaidAddedTransactionHandlerTests.cs +++ b/tests/FiscalOS.Infra.Tests/Integration/PlaidAddedTransactionHandlerTests.cs @@ -30,6 +30,9 @@ public class PlaidAddedTransactionHandlerTests : IntegrationTest result.Should().Be(1); account.Transactions.Should().HaveCount(2); + account.Transactions + .Single(t => t.Metadata is PlaidTransactionMetadata m && m.PlaidId == transaction.TransactionId) + .Amount.Should().Be(-transaction.Amount); } [Fact] diff --git a/tests/FiscalOS.Infra.Tests/Integration/PlaidModifiedTransactionHandlerTests.cs b/tests/FiscalOS.Infra.Tests/Integration/PlaidModifiedTransactionHandlerTests.cs index 7023198..4de1413 100644 --- a/tests/FiscalOS.Infra.Tests/Integration/PlaidModifiedTransactionHandlerTests.cs +++ b/tests/FiscalOS.Infra.Tests/Integration/PlaidModifiedTransactionHandlerTests.cs @@ -31,5 +31,6 @@ public class PlaidModifiedTransactionHandlerTests : IntegrationTest result.Should().Be(1); existingTransaction.MerchantName.Should().Be(transaction.MerchantName); + existingTransaction.Amount.Should().Be(-transaction.Amount); } } \ No newline at end of file