using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Events.SYS.Zq;
namespace F9WebAiTest.Domain.Entities.SYS.Zq;
///
/// 账期(基础数据):一段统计区间(默认按每月 28 日划分),可"扎帐"锁定该期间业务数据。
///
[Table(Name = "sys_zhangqi")]
public class Zhangqi : AggregateRoot
{
/// 年度
[Column(Name = "year")]
public int Year { get; private set; }
/// 月份
[Column(Name = "month")]
public int Month { get; private set; }
/// 开始日期
[Column(Name = "start_date")]
public DateTime StartDate { get; private set; }
/// 截止日期
[Column(Name = "end_date")]
public DateTime EndDate { get; private set; }
/// 是否已扎帐(扎帐后期间内业务数据禁止修改)
[Column(Name = "is_zha_zhang")]
public bool IsZhaZhang { get; private set; }
public Zhangqi() { }
public Zhangqi(long id, int year, int month, DateTime startDate, DateTime endDate)
{
Id = id;
Year = year;
Month = month;
StartDate = startDate;
EndDate = endDate;
IsZhaZhang = false;
AddDomainEvent(new Zhangqi_ChangedDomainEvent(Id));
}
public void Update(int year, int month, DateTime startDate, DateTime endDate)
{
Year = year;
Month = month;
StartDate = startDate;
EndDate = endDate;
AddDomainEvent(new Zhangqi_ChangedDomainEvent(Id));
}
/// 扎帐 / 取消扎帐
public void SetZhaZhang(bool isZhaZhang)
{
IsZhaZhang = isZhaZhang;
AddDomainEvent(new Zhangqi_ChangedDomainEvent(Id));
}
public void Deleted() => AddDomainEvent(new Zhangqi_ChangedDomainEvent(Id));
}