Fix: InvoiceCurrencyAmount and Rate columns in reports displays 0.00 (#6385)

This commit is contained in:
Nicolas Dorier 2024-11-12 11:15:02 +09:00 committed by GitHub
parent acd7765159
commit d0779b88e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 4 deletions

View File

@ -3250,8 +3250,14 @@ namespace BTCPayServer.Tests
var date2018 = new DateTimeOffset(2018, 1, 1, 0, 0, 0, TimeSpan.Zero); var date2018 = new DateTimeOffset(2018, 1, 1, 0, 0, 0, TimeSpan.Zero);
report = await GetReport(acc, new() { ViewName = "Payments", TimePeriod = new TimePeriod() { From = date2018, To = date2018 + TimeSpan.FromDays(365) } }); report = await GetReport(acc, new() { ViewName = "Payments", TimePeriod = new TimePeriod() { From = date2018, To = date2018 + TimeSpan.FromDays(365) } });
var invoiceIdIndex = report.GetIndex("InvoiceId"); var invoiceIdIndex = report.GetIndex("InvoiceId");
var invoiceCurrencyAmountIndex = report.GetIndex("InvoiceCurrencyAmount");
var rateIndex = report.GetIndex("Rate");
var oldPaymentsCount = report.Data.Count(d => d[invoiceIdIndex].Value<string>() == "Q7RqoHLngK9svM4MgRyi9y"); var oldPaymentsCount = report.Data.Count(d => d[invoiceIdIndex].Value<string>() == "Q7RqoHLngK9svM4MgRyi9y");
Assert.Equal(9, oldPaymentsCount); // 11 payments, but 2 unaccounted Assert.Equal(9, oldPaymentsCount); // 11 payments, but 2 unaccounted
Assert.Single(report.Data, d =>
d[invoiceIdIndex].Value<string>() == "Q7RqoHLngK9svM4MgRyi9y" &&
GetAmount(rateIndex, d) == 6596.35m &&
GetAmount(invoiceCurrencyAmountIndex, d) == 1.18m);
var addr = await tester.ExplorerNode.GetNewAddressAsync(); var addr = await tester.ExplorerNode.GetNewAddressAsync();
// Two invoices get refunded // Two invoices get refunded
@ -3273,9 +3279,9 @@ namespace BTCPayServer.Tests
var d = Assert.Single(report.Data.Where(d => d[report.GetIndex("InvoiceId")].Value<string>() == inv.Id)); var d = Assert.Single(report.Data.Where(d => d[report.GetIndex("InvoiceId")].Value<string>() == inv.Id));
Assert.Equal(fullyPaid, (bool)d[fullyPaidIndex]); Assert.Equal(fullyPaid, (bool)d[fullyPaidIndex]);
Assert.Equal(currency, d[currencyIndex].Value<string>()); Assert.Equal(currency, d[currencyIndex].Value<string>());
Assert.Equal(completed, (((JObject)d[completedIndex])["v"]).Value<decimal>()); Assert.Equal(completed, GetAmount(completedIndex, d));
Assert.Equal(awaiting, (((JObject)d[awaitingIndex])["v"]).Value<decimal>()); Assert.Equal(awaiting, GetAmount(awaitingIndex, d));
Assert.Equal(limit, (((JObject)d[limitIndex])["v"]).Value<decimal>()); Assert.Equal(limit, GetAmount(limitIndex, d));
} }
await AssertData("USD", awaiting: 0.0m, limit: 10.0m, completed: 0.0m, fullyPaid: false); await AssertData("USD", awaiting: 0.0m, limit: 10.0m, completed: 0.0m, fullyPaid: false);
@ -3296,6 +3302,12 @@ namespace BTCPayServer.Tests
} }
} }
private static decimal GetAmount(int idx, JArray d)
{
var jobj = (JObject)d[idx];
return Math.Round(jobj["v"].Value<decimal>(), jobj["d"].Value<int>());
}
private async Task<StoreReportResponse> GetReport(TestAccount acc, StoreReportRequest req) private async Task<StoreReportResponse> GetReport(TestAccount acc, StoreReportRequest req)
{ {
var controller = acc.GetController<UIReportsController>(); var controller = acc.GetController<UIReportsController>();

View File

@ -326,7 +326,7 @@ namespace BTCPayServer.Services.Invoices
} }
public bool TryGetRate(string currency, out decimal rate) public bool TryGetRate(string currency, out decimal rate)
{ {
return TryGetRate(new CurrencyPair(Currency, currency), out rate); return TryGetRate(new CurrencyPair(currency, Currency), out rate);
} }
public bool TryGetRate(CurrencyPair pair, out decimal rate) public bool TryGetRate(CurrencyPair pair, out decimal rate)
{ {