@model List @using PowderCoating.Core.Enums @{ ViewData["Title"] = "Credit Memos"; var status = ViewBag.Status as string ?? ""; var search = ViewBag.Search as string ?? ""; int activeCount = ViewBag.ActiveCount; decimal outstanding = ViewBag.OutstandingBalance; }

Credit Memos

Issue Credit Memo
@if (TempData["Success"] != null) {
@TempData["Success"]
} @if (TempData["Error"] != null) {
@TempData["Error"]
} @* ── Stats bar ─────────────────────────────────────────────────── *@
Active Memos
@activeCount
Outstanding Credit
@outstanding.ToString("C")
Total Memos
@Model.Count
Total Issued
@Model.Sum(m => m.Amount).ToString("C")
@* ── Filters ──────────────────────────────────────────────────── *@
Clear
@* ── Table ────────────────────────────────────────────────────── *@ @if (!Model.Any()) {
No credit memos found.
} else {
@foreach (var m in Model) { var expired2 = m.ExpiryDate.HasValue && m.ExpiryDate.Value < DateTime.UtcNow && m.Status != CreditMemoStatus.FullyApplied && m.Status != CreditMemoStatus.Voided; var (cmBadge, cmLabel) = m.Status switch { CreditMemoStatus.Active => ("bg-success-subtle text-success", "Active"), CreditMemoStatus.PartiallyApplied => ("bg-warning-subtle text-warning", "Partial"), CreditMemoStatus.FullyApplied => ("bg-secondary-subtle text-secondary", "Applied"), CreditMemoStatus.Voided => ("bg-danger-subtle text-danger", "Voided"), _ => ("bg-secondary-subtle text-secondary", m.Status.ToString()) }; var cmCustomer = string.IsNullOrWhiteSpace(m.Customer?.CompanyName) ? $"{m.Customer?.ContactFirstName} {m.Customer?.ContactLastName}".Trim() : m.Customer!.CompanyName;
@m.MemoNumber
@cmCustomer
Status @cmLabel
Amount @m.Amount.ToString("C")
Remaining @m.RemainingBalance.ToString("C")
Issued @m.IssueDate.ToLocalTime().ToString("MM/dd/yy")
@if (m.ExpiryDate.HasValue) {
Expires @m.ExpiryDate.Value.ToLocalTime().ToString("MM/dd/yy") @if (expired2) { (Expired) }
}
}
@foreach (var m in Model) { var rowClass = m.Status == CreditMemoStatus.Voided ? "text-muted" : ""; var expired = m.ExpiryDate.HasValue && m.ExpiryDate.Value < DateTime.UtcNow && m.Status != CreditMemoStatus.FullyApplied && m.Status != CreditMemoStatus.Voided; }
Memo # Customer Amount Applied Remaining Issue Date Expires Status
@m.MemoNumber @(string.IsNullOrWhiteSpace(m.Customer?.CompanyName) ? $"{m.Customer?.ContactFirstName} {m.Customer?.ContactLastName}".Trim() : m.Customer.CompanyName) @m.Amount.ToString("C") @m.AmountApplied.ToString("C") @m.RemainingBalance.ToString("C") @m.IssueDate.ToLocalTime().ToString("MM/dd/yyyy") @(m.ExpiryDate.HasValue ? m.ExpiryDate.Value.ToLocalTime().ToString("MM/dd/yyyy") : "—") @if (expired) { (Expired) } @{ var (badgeClass, badgeLabel) = m.Status switch { CreditMemoStatus.Active => ("bg-success-subtle text-success", "Active"), CreditMemoStatus.PartiallyApplied => ("bg-warning-subtle text-warning", "Partial"), CreditMemoStatus.FullyApplied => ("bg-secondary-subtle text-secondary", "Applied"), CreditMemoStatus.Voided => ("bg-danger-subtle text-danger", "Voided"), _ => ("bg-secondary-subtle text-secondary", m.Status.ToString()) }; } @badgeLabel Details
}