add invoicemetadata as a tab (#4693)

* add invocie metadata as a tab

* Allow forms to add to posdata too in pos app

* Cleanup view

* Display additional information directly

* Update BTCPayServer/Views/Shared/PosData.cshtml

* Update BTCPayServer/Models/InvoicingModels/InvoiceDetailsModel.cs

---------

Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
This commit is contained in:
Andrew Camilleri
2023-02-25 14:38:28 +01:00
committed by GitHub
parent 4ef19e19cc
commit e89b1826ce
4 changed files with 371 additions and 381 deletions

View File

@@ -106,6 +106,14 @@ namespace BTCPayServer.Controllers
var receipt = InvoiceDataBase.ReceiptOptions.Merge(store.GetStoreBlob().ReceiptOptions, invoice.ReceiptOptions);
var invoiceState = invoice.GetInvoiceState();
var posData = PosDataParser.ParsePosData(invoice.Metadata.PosData);
var metaData = PosDataParser.ParsePosData(invoice.Metadata.ToJObject().ToString());
var excludes = typeof(InvoiceMetadata).GetProperties()
.Select(p => char.ToLowerInvariant(p.Name[0]) + p.Name[1..])
.ToList();
var additionalData = metaData
.Where(dict => !excludes.Contains(dict.Key))
.ToDictionary(dict=> dict.Key, dict=> dict.Value);
var model = new InvoiceDetailsModel
{
StoreId = store.Id,
@@ -131,7 +139,9 @@ namespace BTCPayServer.Controllers
TypedMetadata = invoice.Metadata,
StatusException = invoice.ExceptionStatus,
Events = invoice.Events,
PosData = PosDataParser.ParsePosData(invoice.Metadata.PosData),
PosData = posData,
Metadata = metaData,
AdditionalData = additionalData,
Archived = invoice.Archived,
CanRefund = invoiceState.CanRefund(),
Refunds = invoice.Refunds,