using System.ComponentModel.DataAnnotations.Schema; using YLErp.DBModels.Attributes; using YLErp.Helpers; namespace YLErp.DBModels { [DataChange] [Table("trade_autocall")] public class trade_autocall : TradeExtendBase, IClonable, IDataTraceV2, IDataTraceV3 { private string _couponDayCount; [DisplayName("敲入敲出状态")] public string KnockInOutStatus { get; set; } [NotMapped] [DisplayName("敲入敲出状态")] public string KnockInOutStatusCn => Helpers.TradeHelper.GetKnockInOutStatusCn(KnockInOutStatus); [DisplayName("敲入敲出日期")] public DateTime? KnockInOutDate { get; set; } [DisplayName("敲出价格")] [TradeAuditChangeMsg] [DataChange] public double KOBarrier { set; get; } [DisplayName("期权敲入价格")] [TradeAuditChangeMsg] [DataChange] public double KIBarrier { set; get; } [DisplayName("派息障碍价格")] [TradeAuditChangeMsg] [DataChange] public double CouponBarrier { get; set; } /// /// /// [DisplayName("票息")] [TradeAuditChangeMsg] [DataChange] public double Coupon { get; set; } [DisplayName("票息是否年化")] [TradeAuditChangeMsg] [DataChange] public bool IsFixedCoupon { get; set; } [DisplayName("票息结算方式")] [TradeAuditChangeMsg] [DataChange] public CouponPayTypeEnum CouponPayType { get; set; } [DisplayName("敲入期权行权价1"), TradeAuditChangeMsg] [DataChange] public double? SpreadStrike1 { get; set; } /// /// 封顶/封底行权价 /// [DisplayName("封顶/封底行权价"), TradeAuditChangeMsg] [DataChange] public double? SpreadStrike { get; set; } /// /// 票息是否期末支付 /// public bool CouponPayAtMaturity => CouponPayType == CouponPayTypeEnum.AtMaturity; [DisplayName("敲入未敲出仍支付票息 ")] [TradeAuditChangeMsg] [DataChange] public bool IncludeCouponAfterKI { get; set; } [DisplayName("敲出观察日")] public string KOObservationDates { get; set; } /// /// 票息观察信息 /// [NotMapped] public string CouponObservation { get; set;} /// /// 最近敲出观察日 /// [NotMapped] public DateTime? LatestKOObservationDate { get; set; } /// /// 最近敲出障碍价格 /// [NotMapped] public double? LatestKOBarrier { get; set; } [DisplayName("敲入观察日")] public string ObservationDates { get; set; } /// /// 最近敲入观察日 /// [NotMapped] public DateTime? LatestObservationDate { get; set; } /// /// 是否为期权年化,默认false /// [DisplayName("期权年化")] public bool IsAnnualized2 { get; set; } [DisplayName("年化系数")] public double? AnnualizeFactor2 { get; set; } /// /// 票息日历规则 /// Qdp.Pricing.Base.Enums.DayCount /// public string CouponDayCount { get => _couponDayCount ?? "Act365"; set => _couponDayCount = value; } public trade_autocall Clone() { return (trade_autocall)MemberwiseClone(); } [NotMapped] public List HappenedObservations { get; set; } /// /// 敲入到期支付类别 /// [TradeAuditChangeMsg] [DataChange] public KIPayoffTypeEnum KIPayoffType { get; set; } /// /// 是否首日计息 /// [TradeAuditChangeMsg] [DataChange] public bool? CouponIncludeStartDate { get; set; } /// /// 是否使用支付日期计息 /// [TradeAuditChangeMsg] [DataChange] public bool? CouponUsePaymentDate { get; set; } /// /// 敲入到期支付类别中文 /// public string KIPayoffTypeDesc() { return KIPayoffTypeEnumHelper.GetDesc(KIPayoffType); } /// /// 票息结算方式中文 /// public string CouponPayTypeDesc() { return CouponPayTypeEnumHelper.GetDesc(CouponPayType); } public string GetDataTraceKeyId() { return TradeId.ToString(); } public string GetDataTraceKeyInfo() { return "凤凰期权"; } /// /// 更新敲入敲出状态时需要更新trade数据 /// public string GetDataTraceTableName() { return ConsTrade.TableName; } } [NotMapped] public class trade_autocallDto : trade_autocall { } }