@model PowderCoating.Application.DTOs.Accounting.SalesTaxReportDto @{ ViewData["Title"] = "Sales Tax Report"; ViewData["PageIcon"] = "bi-percent"; var today = DateTime.Today; var ytdFrom = new DateTime(today.Year, 1, 1).ToString("yyyy-MM-dd"); var ytdTo = today.ToString("yyyy-MM-dd"); var lastYrFrom = new DateTime(today.Year - 1, 1, 1).ToString("yyyy-MM-dd"); var lastYrTo = new DateTime(today.Year - 1, 12, 31).ToString("yyyy-MM-dd"); var thisMonthFrom = new DateTime(today.Year, today.Month, 1).ToString("yyyy-MM-dd"); var thisMonthTo = today.ToString("yyyy-MM-dd"); var lastMonthFrom = new DateTime(today.Year, today.Month, 1).AddMonths(-1).ToString("yyyy-MM-dd"); var lastMonthTo = new DateTime(today.Year, today.Month, 1).AddDays(-1).ToString("yyyy-MM-dd"); var monthLabels = Model.ByMonth.Select(m => m.Label).ToList(); var monthTaxable = Model.ByMonth.Select(m => m.TaxableSales).ToList(); var monthTaxBilled = Model.ByMonth.Select(m => m.TaxBilled).ToList(); }

@Model.From.ToString("MMM d") – @Model.To.ToString("MMM d, yyyy") · @(Model.TaxableInvoiceCount + Model.NonTaxableInvoiceCount) invoices

Export CSV Download PDF Print

@Model.CompanyName

Sales Tax Liability Report

@Model.From.ToString("MMMM d, yyyy") – @Model.To.ToString("MMMM d, yyyy") · Invoice Basis

@Model.TotalTaxBilled.ToString("C")
Total Tax Billed
@Model.TotalTaxableSales.ToString("C")
Taxable Sales
@Model.TaxableInvoiceCount invoices
@Model.TotalNonTaxableSales.ToString("C")
Non-Taxable Sales
@Model.NonTaxableInvoiceCount invoices
@Model.EffectiveTaxRate.ToString("F2")%
Effective Tax Rate
on taxable sales
@if (!Model.Invoices.Any()) {

No invoices found for this period.

} else {
@if (Model.ByMonth.Count > 1) {
Monthly Tax Trend
}
By Month
@foreach (var m in Model.ByMonth) { }
Month Taxable Sales Tax Billed #
@m.Label @m.TaxableSales.ToString("C") @m.TaxBilled.ToString("C") @m.InvoiceCount
Total @Model.TotalTaxableSales.ToString("C") @Model.TotalTaxBilled.ToString("C") @Model.TaxableInvoiceCount
@if (Model.ByAccount.Any()) {
By Tax Account
@foreach (var a in Model.ByAccount) { var rate = a.TaxableSales == 0 ? 0m : Math.Round(a.TaxBilled / a.TaxableSales * 100, 2); }
Account Taxable Sales Tax Billed Invoices Effective Rate
@if (!string.IsNullOrEmpty(a.AccountNumber)) { @a.AccountNumber } @a.AccountName @a.TaxableSales.ToString("C") @a.TaxBilled.ToString("C") @a.InvoiceCount @rate.ToString("F2")%
Total @Model.TotalTaxableSales.ToString("C") @Model.TotalTaxBilled.ToString("C") @Model.TaxableInvoiceCount
}
Invoice Detail
@(Model.TaxableInvoiceCount + Model.NonTaxableInvoiceCount) invoices Non-taxable rows shaded
@foreach (var inv in Model.Invoices) { bool isTaxable = inv.TaxAmount > 0; string statusBadge = inv.Status switch { "Paid" => "bg-success-subtle text-success", "PartiallyPaid" => "bg-warning-subtle text-warning", "Sent" => "bg-info-subtle text-info", "Overdue" => "bg-danger-subtle text-danger", _ => "bg-secondary-subtle text-secondary" }; }
Invoice Customer Date Status Subtotal Tax % Tax Amount Total Paid Tax Account
@inv.InvoiceNumber @inv.CustomerName @inv.InvoiceDate.ToString("MM/dd/yyyy") @inv.Status @inv.SubTotal.ToString("C") @Html.Raw(isTaxable ? inv.TaxPercent.ToString("F2") + "%" : "—") @Html.Raw(isTaxable ? inv.TaxAmount.ToString("C") : "—") @inv.Total.ToString("C") @inv.AmountPaid.ToString("C") @Html.Raw(string.IsNullOrEmpty(inv.TaxAccountName) ? "—" : inv.TaxAccountName)
Totals @(Model.TotalTaxableSales + Model.TotalNonTaxableSales).ToString("C") @Model.TotalTaxBilled.ToString("C") @Model.Invoices.Sum(i => i.Total).ToString("C") @Model.Invoices.Sum(i => i.AmountPaid).ToString("C")
}
Generated @DateTime.Now.ToString("MMM d, yyyy h:mm tt") · Invoice basis — tax liability is recognized when invoiced, not when collected. Excludes Draft and Voided invoices.
@if (Model.ByMonth.Count > 1) { @section Scripts { } }