- 修改 CalcPayment 方法添加 useBondPriceScale 参数区分债券和股票/基金的金额计算口径 - 债券利息按每100元面值票息通过BondPriceConverter转为入库金额,股票基金分红直接计算 - 在BondPaymentService中添加详细的参数说明文档注释 - 更新SwapDealService中分红计算逻辑,根据标的类型自动选择合适的金额转换方式 - 新增CorporateActionEventLifecycleTest单元测试验证公司行为事件生命周期管理 - 添加SplitCorporateActionTddTest测试验证拆合股功能 - 优化FundCorporateActionRollbackAndUnwindTest扩展到股票类型测试 - 更新前端OperationHistory页面表格列宽和显示格式支持更长的说明信息
121 lines
3.5 KiB
C#
121 lines
3.5 KiB
C#
using BaseOUDAL;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
|
|
namespace YLErp.DBModels
|
|
{
|
|
public static class ExDividendDataSources
|
|
{
|
|
public const string Manual = "Manual";
|
|
public const string MarketData = "MarketData";
|
|
}
|
|
|
|
[Table("ex_dividend_info")]
|
|
public class ex_dividend_info : DBModelWithOperator
|
|
{
|
|
public static string LogClass = "除权除息信息";
|
|
|
|
/// <summary>
|
|
/// 股权登记日
|
|
/// </summary>
|
|
[DisplayName("股权登记日")]
|
|
public DateTime? ExDividendDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 真实除权生效日。
|
|
/// ExDividendDate 表示登记日,EffectiveDate 表示从哪个 EOD 起数量/价格基线
|
|
/// 才允许切换到除权后口径;两者可能因周末、节假日或公告安排而不同。
|
|
/// </summary>
|
|
[DisplayName("真实除权日")]
|
|
public DateTime? EffectiveDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 税率
|
|
/// </summary>
|
|
[NotMapped]
|
|
public double DividRate { get; set; }
|
|
|
|
[DisplayName("标的资产")]
|
|
public int UnderlyingId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 标的资产码
|
|
/// </summary>
|
|
[DisplayName("标的资产码"), Required]
|
|
public string UnderlyingCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 派息金额
|
|
/// </summary>
|
|
[DisplayName("派息金额")]
|
|
public decimal GiveCashAmount { get; set; }
|
|
/// <summary>
|
|
/// 送股手数
|
|
/// </summary>
|
|
[DisplayName("送股股数")]
|
|
|
|
public decimal GiveShareAmount { get; set; }
|
|
|
|
/// <summary>
|
|
/// 拆/合股倍数。为空时按 1 兼容历史记录;与 GiveShareAmount 的“每 10 份送股数量”语义不同。
|
|
/// </summary>
|
|
[DisplayName("拆/合股倍数")]
|
|
public decimal? Split { get; set; }
|
|
|
|
/// <summary>
|
|
/// 配股手数
|
|
/// </summary>
|
|
[DisplayName("配股股数")]
|
|
|
|
public decimal RationedSharesAmount { get; set; }
|
|
/// <summary>
|
|
/// 配股手数
|
|
/// </summary>
|
|
[DisplayName("配股价")]
|
|
|
|
public decimal RationedSharesPrice { get; set; }
|
|
/// <summary>
|
|
/// 是否有效
|
|
/// </summary>
|
|
public bool ValidStatus { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ownership of the record. Manual records always take precedence over imports.
|
|
/// </summary>
|
|
[DisplayName("数据来源"), Required, MaxLength(32)]
|
|
public string DataSource { get; set; } = ExDividendDataSources.Manual;
|
|
|
|
/// <summary>
|
|
/// Last update timestamp supplied by the market-data provider.
|
|
/// </summary>
|
|
[DisplayName("来源更新时间")]
|
|
public DateTime? SourceUpdatedAt { get; set; }
|
|
}
|
|
|
|
public class ex_dividend_infoReq : BaseSearchReq
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public int id { get; set; }
|
|
|
|
[DisplayName("标的资产")]
|
|
public int? UnderlyingId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 标的资产码
|
|
/// </summary>
|
|
public string UnderlyingCode { get; set; }
|
|
/// <summary>
|
|
/// 股权登记日
|
|
/// </summary>
|
|
public DateTime? ExDividendDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 真实除权生效日。
|
|
/// </summary>
|
|
public DateTime? EffectiveDate { get; set; }
|
|
}
|
|
}
|