Class PaymentInformation
- Assembly
- arolariu.Backend.Domain.Invoices.dll
Value object capturing transactional payment attributes associated with an invoice.
[Serializable]
[ExcludeFromCodeCoverage]
public sealed record PaymentInformation : IEquatable<PaymentInformation>
- Inheritance
-
PaymentInformation
- Implements
- Inherited Members
Remarks
Encapsulates temporal data (TransactionDate), tender metadata (PaymentType), monetary breakdown (TotalCostAmount, TotalTaxAmount)
and currency context (Currency).
Mutability: Mutable to allow progressive enrichment (post-OCR correction, currency normalization). Treated as an owned value object in persistence.
Time Zone: TransactionDate currently seeded with local system time via Now; consider migrating to UtcNow
to prevent cross-time zone skew.
Thread-safety: Not thread-safe; confine to aggregate mutation scope.
Properties
Currency
Original settlement currency.
public Currency Currency { get; set; }
Property Value
Remarks
Represents ISO-like metadata (name, code, symbol). Values SHOULD remain stable for historical financial accuracy.
PaymentType
Mode / instrument used to settle the transaction.
public PaymentType PaymentType { get; set; }
Property Value
Remarks
Defaults to UNKNOWN when not inferable from OCR or receipt metadata.
TotalCostAmount
Gross total payable amount (inclusive of tax) expressed in Currency.
public decimal TotalCostAmount { get; set; }
Property Value
Remarks
Non-negative. Zero indicates incomplete enrichment or parsing failure.
TotalTaxAmount
Tax component of the total amount in Currency.
public decimal TotalTaxAmount { get; set; }
Property Value
Remarks
May be zero for tax-exempt purchases or when parsing failed to isolate tax line items.
TransactionDate
Point-in-time at which the purchase was executed (store local time).
public DateTimeOffset TransactionDate { get; set; }
Property Value
Remarks
May differ from ingestion time. Use for chronological analytics and interval bucketing.