using PowderCoating.Application.DTOs.Accounting; namespace PowderCoating.Application.Interfaces; /// /// Read-only service for financial aggregate reports. All methods query the database /// with AsNoTracking and return pre-shaped DTOs — no tracked entities are returned. /// Implemented in Infrastructure; uses ApplicationDbContext directly. /// public interface IFinancialReportService { /// Returns a Profit & Loss report for the given company and date range. Task GetProfitAndLossAsync(int companyId, DateTime from, DateTime to); /// Returns a Balance Sheet snapshot as of the given date. Task GetBalanceSheetAsync(int companyId, DateTime asOf); /// Returns an AR Aging report bucketed at 0-30, 31-60, 61-90, and 90+ days. Task GetArAgingAsync(int companyId, DateTime asOf); /// Returns a Sales & Income report for the given company and date range. Task GetSalesAndIncomeAsync(int companyId, DateTime from, DateTime to); /// Returns an invoice-basis Sales Tax Liability report for the given company and date range. Task GetSalesTaxReportAsync(int companyId, DateTime from, DateTime to); }