using ROLAC.API.Entities.Base;
namespace ROLAC.API.Entities;

/// <summary>
/// One category line of an <see cref="Expense"/>. A single invoice/payment can span
/// multiple expense categories, so the category / amount / functional-class axis lives
/// here per line; the Expense header keeps payment-level info and a denormalized total.
/// Lines are wholly owned by the header (replaced as a set on update, like CheckLine).
/// </summary>
public class ExpenseLine : AuditableEntity
{
    public int      Id              { get; set; }
    public int      ExpenseId       { get; set; }
    public int      CategoryGroupId { get; set; }
    public int      SubCategoryId   { get; set; }
    public string?  FunctionalClass { get; set; }   // null = inherit Ministry.DefaultFunctionalClass
    public decimal  Amount          { get; set; }
    public string?  Description     { get; set; }    // optional per-line note (header description is authoritative for check printing)

    public Expense?              Expense       { get; set; }
    public ExpenseCategoryGroup? CategoryGroup { get; set; }
    public ExpenseSubCategory?   SubCategory   { get; set; }
}
