@model PowderCoating.Application.DTOs.Accounting.ArAgingReportDto @{ ViewData["Title"] = "AR Aging"; ViewData["PageIcon"] = "bi-hourglass-split"; var today = DateTime.Today; }

As of @Model.AsOf.ToString("MMMM d, yyyy") · @Model.Customers.Sum(c => c.Invoices.Count) open invoices

Download PDF Print

@Model.CompanyName

Accounts Receivable Aging

As of @Model.AsOf.ToString("MMMM d, yyyy")

@Model.TotalCurrent.ToString("C0")
Current
@Model.Total1to30.ToString("C0")
1–30 Days
@Model.Total31to60.ToString("C0")
31–60 Days
@Model.Total61to90.ToString("C0")
61–90 Days
@Model.TotalOver90.ToString("C0")
Over 90 Days
@Model.TotalOutstanding.ToString("C0")
Total Outstanding
@if (!Model.Customers.Any()) {

All invoices are paid!

No outstanding balances as of @Model.AsOf.ToString("MMMM d, yyyy").

} else {
Aging Summary by Customer
@foreach (var cust in Model.Customers) { }
Customer Current 1–30 Days 31–60 Days 61–90 Days Over 90 Total
@cust.CustomerName @cust.Invoices.Count inv. @(cust.TotalCurrent > 0 ? cust.TotalCurrent.ToString("C") : "—") @(cust.Total1to30 > 0 ? cust.Total1to30.ToString("C") : "—") @(cust.Total31to60 > 0 ? cust.Total31to60.ToString("C") : "—") @(cust.Total61to90 > 0 ? cust.Total61to90.ToString("C") : "—") @(cust.TotalOver90 > 0 ? cust.TotalOver90.ToString("C") : "—") @cust.TotalBalance.ToString("C")
Total @Model.TotalCurrent.ToString("C") @Model.Total1to30.ToString("C") @Model.Total31to60.ToString("C") @Model.Total61to90.ToString("C") @Model.TotalOver90.ToString("C") @Model.TotalOutstanding.ToString("C")
Invoice Detail
@foreach (var cust in Model.Customers) { @foreach (var inv in cust.Invoices.OrderBy(i => i.DaysOverdue)) { string ageBadge = inv.DaysOverdue <= 0 ? "bg-success-subtle text-success" : inv.DaysOverdue <= 30 ? "bg-warning-subtle text-warning" : inv.DaysOverdue <= 60 ? "bg-orange-subtle text-warning" : inv.DaysOverdue <= 90 ? "bg-danger-subtle text-danger" : "bg-danger text-white"; string ageLabel = inv.DaysOverdue <= 0 ? "Current" : $"{inv.DaysOverdue}d overdue"; } }
Invoice Date Due Date Balance Due Age Status
@cust.CustomerName
@inv.InvoiceNumber @inv.InvoiceDate.ToString("MM/dd/yyyy") @(inv.DueDate?.ToString("MM/dd/yyyy") ?? "—") @inv.BalanceDue.ToString("C") @ageLabel
@cust.CustomerName subtotal @cust.TotalBalance.ToString("C")
}
Generated @DateTime.Now.ToString("MMM d, yyyy h:mm tt") · Includes all open invoices (excluding Draft and Voided). Age calculated from due date.
@if (Model.Customers.Any()) {
AI Payment Risk Prediction

Claude is analyzing payment behavior…

Customer Risk Est. Days to Payment Reasoning
} @section Scripts { }