From 8a433869098cbd044fdc9a85d2d8d96f75c1ed4e Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 23 May 2025 19:39:28 +0900 Subject: [PATCH] Add tip and subtotal to report --- BTCPayServer/Services/Invoices/PosAppData.cs | 11 +++++++++++ .../LegacyInvoiceExportReportProvider.cs | 15 +++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/BTCPayServer/Services/Invoices/PosAppData.cs b/BTCPayServer/Services/Invoices/PosAppData.cs index 2e1cb42e5..675c77e5a 100644 --- a/BTCPayServer/Services/Invoices/PosAppData.cs +++ b/BTCPayServer/Services/Invoices/PosAppData.cs @@ -19,6 +19,17 @@ public class PosAppData } return null; } + public static PosAppData TryParse(JObject posData) + { + try + { + return posData.ToObject(); + } + catch + { + } + return null; + } [JsonProperty(PropertyName = "cart")] public PosAppCartItem[] Cart { get; set; } diff --git a/BTCPayServer/Services/Reporting/LegacyInvoiceExportReportProvider.cs b/BTCPayServer/Services/Reporting/LegacyInvoiceExportReportProvider.cs index 218f8921f..b59506cd3 100644 --- a/BTCPayServer/Services/Reporting/LegacyInvoiceExportReportProvider.cs +++ b/BTCPayServer/Services/Reporting/LegacyInvoiceExportReportProvider.cs @@ -49,6 +49,8 @@ public class LegacyInvoiceExportReportProvider : ReportProvider new("InvoiceDue", "number"), new("InvoicePrice", "number"), new("InvoiceTaxIncluded", "number"), + new("InvoiceTip", "number"), + new("InvoiceSubtotal", "number"), new("InvoiceItemCode", "text"), new("InvoiceItemDesc", "text"), new("InvoiceFullStatus", "text"), @@ -93,6 +95,17 @@ public class LegacyInvoiceExportReportProvider : ReportProvider data.Add(Math.Round(invoiceDue, currency.NumberDecimalDigits)); data.Add(invoiceEntity.Price); data.Add(invoiceEntity.Metadata.TaxIncluded ?? 0.0m); + if (invoiceEntity.Metadata.PosData != null && + PosAppData.TryParse(invoiceEntity.Metadata.PosData) is { } posData) + { + data.Add(posData.Tip); + data.Add(posData.Subtotal); + } + else + { + data.Add(0m); + data.Add(0m); + } data.Add(invoiceEntity.Metadata.ItemCode); data.Add(invoiceEntity.Metadata.ItemDesc); data.Add(invoiceEntity.GetInvoiceState().ToString()); @@ -128,6 +141,8 @@ public class LegacyInvoiceExportReportProvider : ReportProvider data.Add(Math.Round(invoiceDue, currency.NumberDecimalDigits)); // InvoiceDue data.Add(invoiceEntity.Price); data.Add(invoiceEntity.Metadata.TaxIncluded ?? 0.0m); + data.Add(0m); // Tip + data.Add(0m); // Subtotal data.Add(invoiceEntity.Metadata.ItemCode); data.Add(invoiceEntity.Metadata.ItemDesc); data.Add(invoiceEntity.GetInvoiceState().ToString());