using System.ComponentModel.DataAnnotations.Schema; using YLErp.DBModels.Attributes; using YLErp.Helpers; namespace YLErp.DBModels { [DataChange] [Table("trade_swap")] public class trade_swap : TradeExtendBase, IClonable { public static string LogClass = "收益互换交易"; /// /// 年交易天数 /// [DisplayName("年化天数"), TradeAuditChangeMsg] [DataChange] public int? AnnualDays { get; set; } /// /// [收取]是否浮动收益 /// [DisplayName("浮动收益"), TradeAuditChangeMsg] [DataChange] public bool IsGetFloatingProfit { get; set; } /// /// [收取]标的品种 /// [DisplayName("标的品种"), TradeAuditChangeMsg] [DataChange] public int? GetVarietyId { get; set; } /// /// [收取]标的代码 /// [DisplayName("标的代码"), TradeAuditChangeMsg] [DataChange] public int? GetUnderlyingId { get; set; } /// /// [收取]标的代码 /// [DisplayName("标的代码"), TradeAuditChangeMsg] [DataChange] public string GetUnderlyingCode { get; set; } ///// ///// [收取]标的名称 ///// //[DisplayName("标的名称"), TradeAuditChangeMsg] //public string GetUnderlyingAssetName { get; set; } /// /// [收取]多头空头 /// [DisplayName("多头空头"), TradeAuditChangeMsg] [DataChange] public string GetLongShort { get; set; } /// /// [收取]期初标的价格 /// [DisplayName("期初标的价格"), TradeAuditChangeMsg] [DataChange] public double? GetSpotPrice { get; set; } /// /// [收取]开仓价格 /// [NotMapped] public double? GetOpenPrice { get; set; } /// /// [收取]交易费用 /// [DisplayName("交易费用"), TradeAuditChangeMsg] [DataChange] public double? GetTradePrice { get; set; } /// /// [收取]互换间隔及互换利率 /// [DisplayName("互换间隔"), TradeAuditChangeMsg] [DataChange] public string GetSwapTimeAndRate { get; set; } [DisplayName("互换利率(年化)")] [NotMapped] public double GetSwapRate { get; set; } /// /// [收取]固定收益 /// [DisplayName("固定收益"), TradeAuditChangeMsg] [DataChange] public double? GetFixedProfit { get; set; } /// /// [收取]按手数收费 /// [DisplayName("按手数收费"), TradeAuditChangeMsg] [DataChange] public double? GetSingleFee { get; set; } /// /// [收取]按名义本金收费 /// [DisplayName("按名义本金收费"), TradeAuditChangeMsg] [DataChange] public double? GetUnAnnualRate { get; set; } private double? _getMarginRate; /// /// [收取]初始预付金率 /// [DisplayName("初始预付金率"), TradeAuditChangeMsg] [DataChange] public double? GetMarginRate { get { return NumberHelper.Normalize(_getMarginRate); } set { _getMarginRate = NumberHelper.Normalize(value); } } /// /// [收取]期末价格 /// [DisplayName("期末价格"), TradeAuditChangeMsg] [DataChange] public double? GetFinalPrice { get; set; } /// /// [收取]份额 /// [DisplayName("份额"), TradeAuditChangeMsg] [DataChange] public double? GetNotional { get; set; } /// /// [收取]数量 /// [DisplayName("数量"), TradeAuditChangeMsg] [DataChange] public double? GetTradeAmount { get; set; } /// /// [收取]手数 /// [NotMapped] public double? GetLot { get; set; } /// /// [支付]是否浮动收益 /// [DisplayName("浮动收益"), TradeAuditChangeMsg] [DataChange] public bool IsPayFloatingProfit { get; set; } /// /// [支付]标的品种 /// [DisplayName("标的品种"), TradeAuditChangeMsg] [DataChange] public int? PayVarietyId { get; set; } /// /// [支付]标的代码 /// [DisplayName("标的代码"), TradeAuditChangeMsg] [DataChange] public int? PayUnderlyingId { get; set; } /// /// [支付]标的代码 /// [DisplayName("标的代码"), TradeAuditChangeMsg] [DataChange] public string PayUnderlyingCode { get; set; } ///// ///// [收取]标的名称 ///// //[DisplayName("标的名称"), TradeAuditChangeMsg] //public string PayUnderlyingAssetName { get; set; } /// /// [支付]多头空头 /// [DisplayName("多头空头"), TradeAuditChangeMsg] [DataChange] public string PayLongShort { get; set; } /// /// [支付]期初标的价格 /// [DisplayName("期初标的价格"), TradeAuditChangeMsg] [DataChange] public double? PaySpotPrice { get; set; } /// /// [支付]开仓价格 /// [NotMapped] public double? PayOpenPrice { get; set; } /// /// [支付]交易费用 /// [DisplayName("交易费用"), TradeAuditChangeMsg] [DataChange] public double? PayTradePrice { get; set; } /// /// [支付]互换间隔及互换利率 /// [DisplayName("互换间隔"), TradeAuditChangeMsg] [DataChange] public string PaySwapTimeAndRate { get; set; } [DisplayName("互换利率(年化)")] [NotMapped] public double PaySwapRate { get; set; } /// /// [支付]固定收益 /// [DisplayName("固定收益"), TradeAuditChangeMsg] [DataChange] public double? PayFixedProfit { get; set; } /// /// [支付]按手数收费 /// [DisplayName("按手数收费"), TradeAuditChangeMsg] [DataChange] public double? PaySingleFee { get; set; } /// /// 计息方式 11:算头算尾;10:算头不算尾;01:不算头算尾;00:不算头不算尾, /// 默认:算头算尾 /// [DisplayName("计息方式"), TradeAuditChangeMsg] [DataChange] public string RateCalcMode { get => rateCalcMode.TrimToNull() ?? "11"; set => rateCalcMode = value; } /// /// 计息是否包括首日 /// [NotMapped] public bool IncludeFirstDay => string.IsNullOrEmpty(RateCalcMode) || RateCalcMode == "10" || RateCalcMode == "11"; /// /// [支付]按名义本金收费 /// [DisplayName("按名义本金收费"), TradeAuditChangeMsg] [DataChange] public double? PayUnAnnualRate { get; set; } private double? _payMarginRate; private string rateCalcMode; /// /// [支付]初始预付金率 /// [DisplayName("初始预付金率"), TradeAuditChangeMsg] [DataChange] public double? PayMarginRate { get { return NumberHelper.Normalize(_payMarginRate); } set { _payMarginRate = NumberHelper.Normalize(value); } } /// /// [支付]期末价格 /// [DisplayName("期末价格"), TradeAuditChangeMsg] [DataChange] public double? PayFinalPrice { get; set; } /// /// [支付]份额 /// [DisplayName("份额"), TradeAuditChangeMsg] [DataChange] public double? PayNotional { get; set; } /// /// [支付]数量 /// [DisplayName("数量"), TradeAuditChangeMsg] [DataChange] public double? PayTradeAmount { get; set; } /// /// [支付]手数 /// [NotMapped] public double? PayLot { get; set; } /// /// 交易流水Id --国君 trade_swap_flow_more /// public int? FlowId { get; set; } /// /// 变动收益是否年化 /// public bool AnnualVarIncome { get; set; } ///// ///// 计息是否排除首日 ///// //public bool ExcludeFirstDay { get; set; } /// /// 互换类型 /// [DisplayName("互换类型"), TradeAuditChangeMsg] public string SwapType { get; set; } /// /// 了结支付方式 /// 0代表了结时支付,1代表结算日支付 /// public int SettlementPayType { get; set; } /// /// 是否开仓时收取开仓费 /// [DisplayName("是否开仓时收取开仓费")] public bool IsTradePriceWhenOpen { get; set; } /// /// 收费基本单位 false 按份额收费 true按手数收费 /// [DisplayName("收费基本单位")] public bool IsShare { get; set; } /// /// 原始交易Id /// public int? OriginalTradeId { get; set; } [NotMapped] public double GetCountRatio { get; set; } [NotMapped] public double PayCountRatio { get; set; } [NotMapped] public double GetContractSize { get; set; } [NotMapped] public double PayContractSize { get; set; } public trade_swap Clone() { return (trade_swap)MemberwiseClone(); } } }