Table of Contents

Class PaymentInformation

Namespace
arolariu.Backend.Domain.Invoices.DDD.ValueObjects
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

Currency

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

PaymentType

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

decimal

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

decimal

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

DateTimeOffset

Remarks

May differ from ingestion time. Use for chronological analytics and interval bucketing.