Skip to main content

arolariu.Backend.Domain.Invoices.DDD.ValueObjects

arolariu.Backend.Domain.Invoices​

arolariu.Backend.Domain.Invoices.DDD.ValueObjects Namespace​

Classes​

Allergen Class​

Represents an identified or inferred allergen associated with an invoice product line.

public sealed record Allergen : System.IEquatable<arolariu.Backend.Domain.Invoices.DDD.ValueObjects.Allergen>

Inheritance System.Object 🡒 Allergen

Implements System.IEquatable<Allergen>

Remarks​

Captures canonical allergen taxonomy information used for dietary risk surfacing, recipe suitability filtering and future health profile personalization.

Mutation: Instances are mutable for progressive enrichment (name normalization, description augmentation, documentation link updates).

Thread-safety: Not thread-safe. Treat each instance as aggregate-scoped.

Constructors​

Allergen() Constructor​

public Allergen();

Properties​

Allergen.Description Property​

Human-readable descriptive context for the allergen.

public string Description { get; set; }

Property Value​

System.String

Remarks​

Intended for UI tooltips and accessibility narration. MAY be empty if not yet enriched.

Allergen.LearnMoreAddress Property​

Reference URI for authoritative or supplemental allergen information.

public System.Uri LearnMoreAddress { get; set; }

Property Value​

System.Uri

Remarks​

Defaults to project documentation site. SHOULD be replaced with domain knowledge base / medical authority link when available.

Allergen.Name Property​

Canonical allergen display name (e.g. "Peanuts", "Gluten").

public string Name { get; set; }

Property Value​

System.String

Remarks​

Empty string denotes unresolved extraction; SHOULD be populated by enrichment pipeline.

PaymentDetail Class​

Represents a single payment method and amount used in a transaction.

public sealed record PaymentDetail : System.IEquatable<arolariu.Backend.Domain.Invoices.DDD.ValueObjects.PaymentDetail>

Inheritance System.Object 🡒 PaymentDetail

Implements System.IEquatable<PaymentDetail>

Remarks​

Receipts may record multiple payment methods (e.g., partial cash + card). Each PaymentDetail captures one method and its amount.

Source: Azure Document Intelligence v4.0 prebuilt-receipt model — Payments array field.

Constructors​

PaymentDetail() Constructor​

public PaymentDetail();

Properties​

PaymentDetail.Amount Property​

The amount paid via this method.

public decimal Amount { get; set; }

Property Value​

System.Decimal

PaymentDetail.Method Property​

The payment method (e.g., "Cash", "Credit Card", "Debit Card", "Mobile Payment").

public string Method { get; set; }

Property Value​

System.String

PaymentInformation Class​

Value object capturing transactional payment attributes associated with an invoice.

public sealed record PaymentInformation : System.IEquatable<arolariu.Backend.Domain.Invoices.DDD.ValueObjects.PaymentInformation>

Inheritance System.Object 🡒 PaymentInformation

Implements System.IEquatable<PaymentInformation>

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 System.DateTimeOffset.Now; consider migrating to System.DateTimeOffset.UtcNow to prevent cross-time zone skew.

Thread-safety: Not thread-safe; confine to aggregate mutation scope.

Constructors​

PaymentInformation() Constructor​

public PaymentInformation();

Properties​

PaymentInformation.Currency Property​

Original settlement currency.

public arolariu.Backend.Common.DDD.ValueObjects.Currency Currency { get; set; }

Property Value​

arolariu.Backend.Common.DDD.ValueObjects.Currency

Remarks​

Represents ISO-like metadata (name, code, symbol). Values SHOULD remain stable for historical financial accuracy.

PaymentInformation.PaymentType Property​

Mode / instrument used to settle the transaction.

public arolariu.Backend.Domain.Invoices.DDD.ValueObjects.PaymentType PaymentType { get; set; }

Property Value​

PaymentType

Remarks​

Defaults to UNKNOWN when not inferable from OCR or receipt metadata.

PaymentInformation.SubtotalAmount Property​

Pre-tax subtotal amount in Currency.

public decimal SubtotalAmount { get; set; }

Property Value​

System.Decimal

Remarks​

Extracted from Document Intelligence Subtotal field. Zero when not available on receipt.

PaymentInformation.TipAmount Property​

Tip / gratuity amount in Currency.

public decimal TipAmount { get; set; }

Property Value​

System.Decimal

Remarks​

Extracted from Document Intelligence Tip field. Common on restaurant and service receipts.

PaymentInformation.TotalCostAmount Property​

Gross total payable amount (inclusive of tax) expressed in Currency.

public decimal TotalCostAmount { get; set; }

Property Value​

System.Decimal

Remarks​

Non-negative. Zero indicates incomplete enrichment or parsing failure.

PaymentInformation.TotalTaxAmount Property​

Tax component of the total amount in Currency.

public decimal TotalTaxAmount { get; set; }

Property Value​

System.Decimal

Remarks​

May be zero for tax-exempt purchases or when parsing failed to isolate tax line items.

PaymentInformation.TransactionDate Property​

Point-in-time at which the purchase was executed (store local time).

public System.DateTimeOffset TransactionDate { get; set; }

Property Value​

System.DateTimeOffset

Remarks​

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

Recipe Class​

Recipe model.

public sealed record Recipe : System.IEquatable<arolariu.Backend.Domain.Invoices.DDD.ValueObjects.Recipe>

Inheritance System.Object 🡒 Recipe

Implements System.IEquatable<Recipe>

Constructors​

Recipe() Constructor​

Parameterless constructor.

public Recipe();

Recipe(string, string, int, RecipeComplexity, ICollection<string>, Uri) Constructor​

Parameterized constructor.

public Recipe(string name, string description, int approximateTotalDuration, arolariu.Backend.Domain.Invoices.DDD.ValueObjects.RecipeComplexity complexity, System.Collections.Generic.ICollection<string> ingredients, System.Uri referenceForMoreDetails);

Parameters​

name System.String

description System.String

approximateTotalDuration System.Int32

complexity RecipeComplexity

ingredients System.Collections.Generic.ICollection<System.String>

referenceForMoreDetails System.Uri

Properties​

Recipe.ApproximateTotalDuration Property​

The recipe estimated duration.

public int ApproximateTotalDuration { get; set; }

Property Value​

System.Int32

Recipe.Complexity Property​

The recipe complexity.

public arolariu.Backend.Domain.Invoices.DDD.ValueObjects.RecipeComplexity Complexity { get; set; }

Property Value​

RecipeComplexity

Recipe.Description Property​

The recipe description.

public string Description { get; set; }

Property Value​

System.String

Recipe.Ingredients Property​

The recipe ingredients.

public System.Collections.Generic.ICollection<string> Ingredients { get; init; }

Property Value​

System.Collections.Generic.ICollection<System.String>

Recipe.Name Property​

The recipe name.

public string Name { get; set; }

Property Value​

System.String

Recipe.ReferenceForMoreDetails Property​

The recipe learn more address.

public System.Uri ReferenceForMoreDetails { get; set; }

Property Value​

System.Uri

TaxDetail Class​

Represents a single tax line item extracted from a receipt via Document Intelligence.

public sealed record TaxDetail : System.IEquatable<arolariu.Backend.Domain.Invoices.DDD.ValueObjects.TaxDetail>

Inheritance System.Object 🡒 TaxDetail

Implements System.IEquatable<TaxDetail>

Remarks​

Receipts may contain multiple tax lines (e.g., VAT, sales tax, service tax). Each TaxDetail captures the amount, rate, net amount, and description for one tax entry.

Source: Azure Document Intelligence v4.0 prebuilt-receipt model — TaxDetails array field.

Constructors​

TaxDetail() Constructor​

public TaxDetail();

Properties​

TaxDetail.Amount Property​

The tax amount for this line.

public decimal Amount { get; set; }

Property Value​

System.Decimal

TaxDetail.Description Property​

Description of the tax type (e.g., "VAT", "Sales Tax", "Service Tax").

public string Description { get; set; }

Property Value​

System.String

TaxDetail.NetAmount Property​

The net amount before this tax was applied.

public decimal NetAmount { get; set; }

Property Value​

System.Decimal

TaxDetail.Rate Property​

The tax rate as a percentage (e.g., 19 for 19% VAT).

public decimal Rate { get; set; }

Property Value​

System.Decimal

Enums​

PaymentType Enum​

Enumerates supported payment settlement methods.

public enum PaymentType

Fields​

UNKNOWN 0

Sentinel; payment method not resolved from source.

CASH 100

Physical cash tender.

CARD 200

Payment card (credit / debit).

TRANSFER 300

Bank (wire / ACH / SEPA-like) transfer.

MOBILEPAYMENT 400

Mobile wallet / NFC application (e.g. device-based tokenized payment).

VOUCHER 500

Voucher / coupon / prepaid certificate redemption.

Other 9999

Fallback when no defined payment method applies.

Remarks​

Extensibility: Reserve numeric spacing (increments of 100) for future methods; sentinel UNKNOWN indicates unresolved extraction.

Analytics: Drives spend channel distribution reporting and potential loyalty program inference.

RecipeComplexity Enum​

The recipe complexity enumeration.

public enum RecipeComplexity

Fields​

UNKNOWN 0

The recipe complexity is unknown.

EASY 1

The recipe is easy to prepare.

NORMAL 2

The recipe is normal to prepare.

HARD 3

The recipe is hard to prepare.

// was this page useful?