namespace ROLAC.API.DTOs.Finance;

/// <summary>One Part IX row: a 990 line split across the three functional columns.</summary>
public class FunctionalExpenseRowDto
{
    public string  LineCode          { get; set; } = "";
    public string  Name_en           { get; set; } = "";
    public string? Name_zh           { get; set; }
    public decimal Program           { get; set; }
    public decimal ManagementGeneral { get; set; }
    public decimal Fundraising       { get; set; }
    public decimal Total             { get; set; }
}

/// <summary>The full Part IX Statement of Functional Expenses for a date range.</summary>
public class FunctionalExpenseStatementDto
{
    public List<FunctionalExpenseRowDto> Rows { get; set; } = [];
    public decimal ProgramTotal           { get; set; }
    public decimal ManagementGeneralTotal { get; set; }
    public decimal FundraisingTotal       { get; set; }
    public decimal GrandTotal             { get; set; }
    /// <summary>Expenses with no explicit 990 mapping (counted under line 24). Prompts mapping cleanup.</summary>
    public int     UnmappedExpenseCount   { get; set; }
}

/// <summary>A single IRS Form 990 expense line from the catalog (used to populate mapping dropdowns).</summary>
public class Form990ExpenseLineDto
{
    public int     Id        { get; set; }
    public string  LineCode  { get; set; } = "";
    public string  Name_en   { get; set; } = "";
    public string? Name_zh   { get; set; }
    public int     SortOrder { get; set; }
}
