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);
}