Add Sales Tax Liability report with PDF and CSV export

Invoice-basis report showing taxable vs non-taxable sales, tax billed
by GL account, monthly trend table/chart, and full invoice detail grid.
Non-taxable invoice rows shaded grey for easy scanning. Quick-preset
date buttons (This Month, Last Month, YTD, Last Year) for common filing
periods. CSV export formatted for accountants and tax-filing software.
Gated behind AllowAccounting() like other financial reports.

- SalesTaxReportDto + 3 supporting DTOs in FinancialReportDtos.cs
- GetSalesTaxReportAsync on IFinancialReportService + implementation
- GenerateSalesTaxReportPdfAsync on IPdfService + QuestPDF implementation
- SalesTax / SalesTaxPdf / SalesTaxCsv actions in ReportsController
- Views/Reports/SalesTax.cshtml with Chart.js monthly trend chart
- Landing page card added to Finance section
- HelpKnowledgeBase and Help/Reports.cshtml updated with full docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-06 12:27:08 -04:00
parent 7e0699d5bd
commit ca4fb959aa
11 changed files with 898 additions and 7 deletions
@@ -96,6 +96,35 @@
patterns in your job volume and revenue.
</p>
<h3 class="h6 fw-semibold mt-3 mb-2">Sales Tax Report</h3>
<p>
An invoice-basis Sales Tax Liability report — shows what you collected in tax during the
period and breaks it down so you can file accurately. Key figures:
</p>
<ul class="mb-3">
<li class="mb-1"><strong>Total Tax Billed</strong> — sum of all tax charged on invoices in the period.</li>
<li class="mb-1"><strong>Taxable Sales</strong> — subtotals of invoices where tax was charged.</li>
<li class="mb-1"><strong>Non-Taxable Sales</strong> — subtotals of tax-exempt invoices (e.g. tax-exempt customers).</li>
<li class="mb-1"><strong>Effective Tax Rate</strong> — overall average rate across all taxable invoices.</li>
<li class="mb-1"><strong>By Tax Account</strong> — breakdown by GL account (useful if you have multiple tax jurisdictions or rates).</li>
<li class="mb-1"><strong>By Month</strong> — month-by-month chart and table of taxable sales and tax billed.</li>
<li class="mb-1"><strong>Invoice Detail</strong> — every invoice in the period with its tax %, tax amount, and tax account. Non-taxable invoices appear shaded grey so they are easy to distinguish.</li>
</ul>
<p>
This report supports both <strong>PDF export</strong> and <strong>CSV export</strong>.
The CSV is formatted for handing to your accountant or importing into tax-filing software —
one row per invoice with all relevant columns. Use the quick preset buttons (This Month,
Last Month, YTD, Last Year) to jump to common filing periods without manually entering dates.
</p>
<div class="alert alert-permanent alert-info d-flex gap-2 mb-3" role="alert">
<i class="bi bi-lightbulb-fill flex-shrink-0 mt-1"></i>
<div>
<strong>Invoice basis vs. cash basis:</strong> The Sales Tax Report counts tax when an
invoice is created, not when it is paid. If your jurisdiction requires cash-basis reporting,
cross-reference payments using the <strong>Sales &amp; Income</strong> report.
</div>
</div>
<h3 class="h6 fw-semibold mt-3 mb-2">Revenue Trends</h3>
<p>
A charting view of monthly and quarterly revenue over time. Useful for year-over-year
@@ -242,12 +271,23 @@
<section id="pdf-export" class="mb-5">
<h2 class="h4 fw-bold border-bottom pb-2 mb-3">
<i class="bi bi-file-earmark-pdf text-primary me-2"></i>PDF Export
<i class="bi bi-file-earmark-pdf text-primary me-2"></i>PDF &amp; CSV Export
</h2>
<p>
Most financial reports (P&amp;L, Balance Sheet, AR Aging, and others) include a
<strong>Download PDF</strong> button. Use this to generate a print-ready version for your
accountant, a business review, or your own records.
Most financial reports (P&amp;L, Balance Sheet, AR Aging, Sales &amp; Income, and others)
include a <strong>Download PDF</strong> button. Use this to generate a print-ready version
for your accountant, a business review, or your own records.
</p>
<p>
The <strong>Sales Tax Report</strong> also includes an <strong>Export CSV</strong> button.
The CSV file contains one row per invoice and is formatted so it can be opened directly in
Excel or imported into most tax-filing and accounting packages. Column headers match standard
tax report terminology: Invoice #, Customer, Date, Status, Subtotal, Tax %, Tax Amount,
Total, Amount Paid, Balance Due, Tax Account.
</p>
<p>
All PDF and CSV exports respect the same date range you have selected in the report — what
you see on screen is exactly what gets exported.
</p>
</section>
@@ -261,9 +301,10 @@
<nav class="nav flex-column">
<a class="nav-link py-1 px-3 small text-body" href="#overview">Overview</a>
<a class="nav-link py-1 px-3 small text-body" href="#financial-reports">Financial Reports</a>
<a class="nav-link py-1 px-3 small text-body ps-4" href="#financial-reports" style="font-size:.75rem">Sales Tax Report</a>
<a class="nav-link py-1 px-3 small text-body" href="#operations-reports">Operations Reports</a>
<a class="nav-link py-1 px-3 small text-body" href="#ai-reports">AI-Powered Reports</a>
<a class="nav-link py-1 px-3 small text-body" href="#pdf-export">PDF Export</a>
<a class="nav-link py-1 px-3 small text-body" href="#pdf-export">PDF &amp; CSV Export</a>
</nav>
</div>
</div>