using TakeoutSaaS.Domain.Finance.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;

namespace TakeoutSaaS.Domain.Finance.Entities;

/// <summary>
/// 成本录入明细项实体。
/// </summary>
public sealed class FinanceCostEntryItem : MultiTenantEntityBase
{
    /// <summary>
    /// 关联汇总行标识。
    /// </summary>
    public long EntryId { get; set; }

    /// <summary>
    /// 统计维度。
    /// </summary>
    public FinanceCostDimension Dimension { get; set; } = FinanceCostDimension.Tenant;

    /// <summary>
    /// 门店标识（租户汇总维度为空）。
    /// </summary>
    public long? StoreId { get; set; }

    /// <summary>
    /// 成本月份（统一存储为 UTC 每月第一天 00:00:00）。
    /// </summary>
    public DateTime CostMonth { get; set; }

    /// <summary>
    /// 成本分类。
    /// </summary>
    public FinanceCostCategory Category { get; set; }

    /// <summary>
    /// 明细名称。
    /// </summary>
    public string ItemName { get; set; } = string.Empty;

    /// <summary>
    /// 明细金额。
    /// </summary>
    public decimal Amount { get; set; }

    /// <summary>
    /// 数量（人工类可用）。
    /// </summary>
    public decimal? Quantity { get; set; }

    /// <summary>
    /// 单价（人工类可用）。
    /// </summary>
    public decimal? UnitPrice { get; set; }

    /// <summary>
    /// 排序值。
    /// </summary>
    public int SortOrder { get; set; } = 100;
}
