Files
zszq-trs/YLErpDAL/Modules/SuperviseReportModule/SAC/Model/OptionConfirmationModel.cs
T

2527 lines
152 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Newtonsoft.Json;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Xml.Serialization;
using YLErp.Modules.SuperviseReportModule.SAC.Common;
using static YLErp.DBModels.Consts.ConsReport;
namespace YLErp.Modules.SuperviseReportModule.SAC.Model
{
/// <summary>
/// 期权交易确认书
/// </summary>
[Table("A1004_OptionConfirmation")]
public class OptionConfirmationModel : ReportBaseModel
{
/// <summary>
/// 主协议编号(双方约定)
/// <para>长度:100</para>
/// <para>必填:是</para>
/// <para>说明:校验规则:双方约定</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 100)]
[DefaultValue("")]
[SacDescription("MasterAgrmtNo", "主协议编号(双方约定)", "100", true, "校验规则:双方约定;")]
public string MasterAgrmtNo { get; set; }
/// <summary>
/// 补充协议编号(双方约定)
/// <para>长度:100</para>
/// <para>必填:是</para>
/// <para>说明:校验规则:双方约定</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 100)]
[DefaultValue("")]
[SacDescription("SupAgrmtNo", "补充协议编号(双方约定)", "100", true, "校验规则:双方约定;")]
public string SupAgrmtNo { get; set; }
/// <summary>
/// 操作标识
/// <para>长度:1</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="OptFlagsEnum"/></para>
/// </summary>
[XmlIgnore]
[SacDescription("OperationType", "操作标识", "1", true, "")]
public OptFlagsEnum OperationType { get; set; }
/// <summary>
/// 交易确认书编号
/// <para>长度:32</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:补正时必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = nameof(OperationType), ConditionValue = "A",
CheckHandleNameArr = new[] { "B" })]
[CheckConditionStringNEQValue(ConditionName = nameof(OperationType), ConditionValue = "A",
CheckHandleNameArr = new[] { "A" })]
[CheckStringMaxLength(MaxLength = 32, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("ConfirmationID", "交易确认书编号", "32", false, "校验规则:补正时必填;")]
public string ConfirmationID { get; set; }
/// <summary>
/// 交易确认书编号(双方约定)
/// <para>长度:100</para>
/// <para>必填:是</para>
/// <para>说明:校验规则:双方约定</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 100)]
[DefaultValue("")]
[SacDescription("ConfirmationNo", "交易确认书编号(双方约定)", "100", true, "校验规则:双方约定;")]
public string ConfirmationNo { get; set; }
/// <summary>
/// 交易确认书类型
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.ReportTypeMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1" })]
[DefaultValue("")]
[SacDescription("ConfirmationType", "交易确认书类型", "2", true, "校验规则:首次提交时填0,补正时填1")]
public string ConfirmationType { get; set; }
/// <summary>
/// 填报方角色
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.FillPartyMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1" })]
[DefaultValue("")]
[SacDescription("FillParty", "填报方角色", "2", true, "")]
public string FillParty { get; set; }
/// <summary>
/// 期权卖方
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.OptionTraderMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "01", "02" })]
[DefaultValue("")]
[SacDescription("OptionSeller", "期权卖方", "2", true, "")]
public string OptionSeller { get; set; }
/// <summary>
/// 期权方向
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.OptionDirectionMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "2" })]
[DefaultValue("")]
[SacDescription("OptionDirection", "期权方向", "2", true, "")]
public string OptionDirection { get; set; }
/// <summary>
/// 期权结构类型
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.OptionStructureTypeMap"/>选择期权结构类型后填写对应的【期权结构类型详情】</para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "2", "3", "4", "5", "99" })]
[DefaultValue("")]
[SacDescription("OptionStructureType", "期权结构类型", "2", true, "选择期权结构类型后填写对应的【期权结构类型详情】")]
public string OptionStructureType { get; set; }
/// <summary>
/// 期权结构类型
/// <para>长度:2000</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:<see cref="OptionStructureType"/>=其他时,该字段必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = nameof(OptionStructureType), ConditionValue = "99",
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = nameof(OptionStructureType), ConditionValue = "99",
CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 2000, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OptionStructure", "期权结构类型", "2000", false, "校验规则:期权结构类型选择为其他时,该字段必填;")]
public string OptionStructure { get; set; }
/// <summary>
/// 行权方式
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.ExerciseApproachMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "2", "3" })]
[DefaultValue("")]
[SacDescription("ExerciseApproach", "行权方式", "2", true, "")]
public string ExerciseApproach { get; set; }
/// <summary>
/// 起始日
/// <para>长度:10</para>
/// <para>必填:是</para>
/// <para>
/// 说明:交易条款开始执行的日期.
/// 校验规则:1 起始日不能大于到期日日期;
/// 2 必须是yyyy-MM-dd;
/// </para>
/// </summary>
[CheckStringLength(Length = 10)]
[CheckStringIsDateTimeFormat(FormatString = "yyyy-MM-dd")]
[DefaultValue("")]
[SacDescription("StartDate", "起始日", "10", true, "交易条款开始执行的日期.\r\n校验规则:\r\n1 起始日不能大于到期日日期;\r\n2 必须是YYYY-MM-DD;")]
public string StartDate { get; set; }
/// <summary>
/// 到期日
/// <para>长度:10</para>
/// <para>必填:是</para>
/// <para>
/// 说明:指定交易结束的日期.
/// 校验规则:1 到期日不能小于起始日日期;
/// 2 必须是yyyy-MM-dd;
/// 3 补正时,如果该交易还有未被废除的存续期记录(包括展期,终止数据),到期日字段不能修改;
/// </para>
/// </summary>
[CheckStringLength(Length = 10)]
[CheckStringIsDateTimeFormat(FormatString = "yyyy-MM-dd")]
[DefaultValue("")]
[SacDescription("DueDate", "到期日", "10", true,
"指定交易结束的日期.\r\n校验规则:\r\n1 到期日不能小于起始日日期;\r\n2 必须是YYYY-MM-DD;\r\n3 补正时,如果该交易还有未被废除的存续期记录(包括展期,终止数据),到期日字段不能修改;")]
public string DueDate { get; set; }
/// <summary>
/// 结算日
/// <para>长度:10</para>
/// <para>必填:否</para>
/// <para>
/// 说明:指定的进行结算金额收付的日期.
/// 校验规则:必须是yyyy-MM-dd.
/// </para>
/// </summary>
[CheckStringLength(Length = 10, Required = false)]
[CheckStringIsDateTimeFormat(FormatString = "yyyy-MM-dd", Required = false)]
[DefaultValue("")]
[SacDescription("SettlementDate", "结算日", "10", false, "指定的进行结算金额收付的日期.\r\n校验规则:必须是YYYY-MM-DD;")]
public string SettlementDate { get; set; }
/// <summary>
/// 期权费(非年化)(%)
/// <para>长度:6</para>
/// <para>必填:是</para>
/// <para>说明:校验规则:1 数值处于0~100之间最多两位小数;2 百分比处于0~100之间整数不带%</para>
/// </summary>
[CheckStringIntMaxLength(BeforePointMaxLength = 5, AfterPointMaxLength = 2, MaxValue = 100, MinValue = 0)]
[DefaultValue("")]
[SacDescription("OptionPremium", "期权费(非年化)(%)", "6", true, "校验规则:\r\n1 数值处于0至100之间最多两位小数;\r\n2 百分比处于0至100之间整数;")]
public string OptionPremium { get; set; }
/// <summary>
/// 年化天数
/// <para>长度:3</para>
/// <para>必填:是</para>
/// <para>说明:正整数</para>
/// </summary>
[CheckStringIntMaxLength(AfterPointMaxLength = 0, BeforePointMaxLength = 3, MinValue = 0)]
[DefaultValue("")]
[SacDescription("AnnualizedDays", "年化天数", "3", true, "填写不为零的正整数")]
public string AnnualizedDays { get; set; }
/// <summary>
/// 定价波动率(%)
/// <para>长度:5,2</para>
/// <para>必填:是</para>
/// <para>说明:</para>
/// </summary>
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2)]
[DefaultValue("")]
[SacDescription("PricingVolatility", "定价波动率(%)", "5,2", true, "期权期初估值定价时的波动率")]
public string PricingVolatility { get; set; }
/// <summary>
/// 无风险利率(%)
/// <para>长度:5,2</para>
/// <para>必填:是</para>
/// <para>说明:</para>
/// </summary>
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2)]
[DefaultValue("")]
[SacDescription("RiskFreeInterestRates", "无风险利率(%)", "5,2", true, "期权期初估值定价时的无风险利率")]
public string RiskFreeInterestRates { get; set; }
/// <summary>
/// 结算货币
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="CurrencyEnum"/></para>
/// </summary>
[CheckStringMaxLength(MaxLength = 2)]
[DefaultValue("")]
[SacDescription("Currency", "结算货币", "2", true, "使用货币通用代码(大写)")]
public string Currency { get; set; }
/// <summary>
/// 名义本金(元)
/// <para>长度:36,2</para>
/// <para>必填:是</para>
/// <para>
/// 说明:控件提示:单位元,小数点后保留两位.
/// 校验规则:1 必须两位小数;2 名义本金为标的期初价格乘以数量乘以乘数;
/// 3 补正时,如果该交易还有未被废除的存续期记录(包括展期,终止数据),名义本金额(人民币)字段不能修改;
/// </para>
/// </summary>
[CheckStringIntLength(BeforePointMaxLength = 36, AfterPointLength = 2)]
[DefaultValue("")]
[SacDescription("NotinalPrincipleAmt", "名义本金(元)", "36,2", true,
"控件提示:单位元,小数点后保留两位.\r\n校验规则:\r\n1 保留两位小数;\r\n2 名义本金为标的期初价格乘以数量乘以乘数;\r\n3 补正时,如果该交易还有未被废除的存续期记录(包括展期、终止数据),名义本金(人民币)字段不能修改;")]
public string NotinalPrincipleAmt { get; set; }
/// <summary>
/// 清算机构
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.ClearingAgencyMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "3", "4", "5", "99" })]
[DefaultValue("")]
[SacDescription("ClearingAgency", "清算机构", "2", true, "")]
public string ClearingAgency { get; set; }
/// <summary>
/// 交易场所
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.TradingPlaceMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "2", "99" })]
[DefaultValue("")]
[SacDescription("TradingPlace", "交易场所", "2", true, "")]
public string TradingPlace { get; set; }
/// <summary>
/// 交易场所(其他)
/// <para>长度:200</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.TradingPlaceMap"/>当"交易场所"选择"其他交易场所"时,必填;选其他选项时不能填写</para>
/// </summary>
[CheckConditionStringValue(ConditionName = nameof(TradingPlace), ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = nameof(TradingPlace), ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 200, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("TradingPlaceOther", "交易场所(其他)", "200", false, "当\"交易场所\"选择\"其他交易场所\"时,必填;\r\n选其他选项时不能填写;")]
public string TradingPlaceOther { get; set; }
///// <summary>
///// 业务模式类型
///// <para>长度:2</para>
///// <para>必填:是</para>
///// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.BusinessModelTypeMap"/></para>
///// </summary>
//// [CheckStringInMap(Map = new[] { "1" })]
//// [DefaultValue("")]
//// [SacDescription("BusinessModelType", "业务模式类型", "2", true, "")]
//// public string BusinessModelType { get; set; }
///// <summary>
///// 交易确认书附件
///// </summary>
//[CheckIEnumerableTMinCount(MinCount = 1)]
//[XmlElement]
//[SacDescription("ConfirmationAttTuple", "交易确认书附件", "", false, "")]
//public List<ConfirmationAttModel> ConfirmationAttTuple { get; set; }
/// <summary>
/// 基本信息备注
/// <para>长度:1024</para>
/// <para>必填:否</para>
/// <para>说明:填写上述字段或交易确认书中不能包含的信息</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 1024, Required = false)]
[DefaultValue("")]
[SacDescription("ConfirmationRemark", "基本信息备注", "1024", false, "填写上述字段或交易确认书中不能包含的信息;")]
public string ConfirmationRemark { get; set; }
/// <summary>
/// 标的类型
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.UndrlygAssetTypeMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "2", "3", "4", "99" })]
[DefaultValue("")]
[SacDescription("UndrlygAssetType", "标的类型", "2", true, "")]
public string UndrlygAssetType { get; set; }
/// <summary>
/// 标的个数
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.UndrlygAssetNoMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1" })]
[DefaultValue("")]
[SacDescription("UndrlygAssetNo", "标的个数", "2", true, "")]
public string UndrlygAssetNo { get; set; }
/// <summary>
/// 期权收益计算说明
/// <para>长度:1024</para>
/// <para>必填:是</para>
/// <para>说明:</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 1024)]
[DefaultValue("")]
[SacDescription("ProfitCalculationInfo", "期权收益计算说明", "1024", true, "")]
public string ProfitCalculationInfo { get; set; }
/// <summary>
/// 备注/收益备注
/// <para>长度:1024</para>
/// <para>必填:否</para>
/// <para>说明:填写上述字段或交易确认书中不能包含的信息</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 1024, Required = false)]
[DefaultValue("")]
[SacDescription("ProfitRemark", "备注/收益备注", "1024", false, "填写上述字段或交易确认书中不能包含的信息;")]
public string ProfitRemark { get; set; }
/// <summary>
/// 标的详情
/// <para>长度:</para>
/// <para>必填:</para>
/// <para>说明:数组结构支持新增多条</para>
/// </summary>
[CheckIEnumerableTMinCount(MinCount = 1)]
[XmlElement]
[NotMapped]
[SacDescription("UndrlygAssetTuple", "标的详情", "", false, "数组结构,支持新增多条;")]
public List<UndrlygAssetModel> UndrlygAssetTuple { get; set; }
/// <summary>
/// 履约担保类型
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.PerformanceGuaranteeMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "2" })]
[DefaultValue("")]
[SacDescription("PerformanceGuaranteeType", "履约担保类型", "2", true, "")]
public string PerformanceGuaranteeType { get; set; }
/// <summary>
/// 履约担保品提供方
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.PerformanceCollProviderMap"/>校验规则:当“履约担保类型”选择部分担保、全额担保时,必填;</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" },
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PerformanceGuaranteeType),
ConditionMap = new[] { "1", "2" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1", "2", "3" }, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PerformanceCollProvider", "履约担保品提供方", "2", false, "校验规则:当“履约担保类型”选择部分担保、全额担保时,必填;")]
public string PerformanceCollProvider { get; set; }
/// <summary>
/// 担保品收取方是否可使用担保品
/// <para>长度:5</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.BoolMap"/>校验规则:当“履约担保类型”选择部分担保、全额担保时,必填;</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" },
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PerformanceGuaranteeType),
ConditionMap = new[] { "1", "2" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "true", "false" }, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PartyUseColl", "担保品收取方是否可使用担保品", "5", false, "校验规则:当“履约担保类型”选择部分担保、全额担保时,必填;")]
public string PartyUseColl { get; set; }
/// <summary>
/// 担保品使用说明
/// <para>长度:1024</para>
/// <para>必填:否</para>
/// <para>说明:检验规则:当“担保品收取方是否可使用担保品”选择“是”时,必填;</para>
/// </summary>
[CheckConditionStringValue(ConditionName = nameof(PartyUseColl), ConditionValue = "true",
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = nameof(PartyUseColl), ConditionValue = "true",
CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 1024, IgnoreNullOrEmpty = false, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("CollInstruction", "担保品使用说明", "1024", false, "检验规则:当“担保品收取方是否可使用担保品”选择“是”时,必填;")]
public string CollInstruction { get; set; }
/// <summary>
/// 是否计算担保品价值产生利息
/// <para>长度:5</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.BoolMap"/>校验规则:当“履约担保类型”选择部分担保、全额担保时,必填</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" },
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PerformanceGuaranteeType),
ConditionMap = new[] { "1", "2" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "true", "false" }, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("CalculateCollInterest", "是否计算担保品价值产生利息", "5", false, "校验规则:当“履约担保类型”选择部分担保、全额担保时,必填")]
public string CalculateCollInterest { get; set; }
/// <summary>
/// 履约担保品初始比率(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>
/// 说明:校验规则:1.当“履约担保类型”选择部分担保、全额担保时,必填;2.大于等于0的数字,保留两位小数,该值为100%时,填写100.00;
/// </para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" },
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PerformanceGuaranteeType),
ConditionMap = new[] { "1", "2" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringIntMaxLength(BeforePointMaxLength = 5, AfterPointMaxLength = 2, MinValue = 0, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PerformanceCollInitialRatio", "履约担保品初始比率(%)", "5,2", false,
"校验规则:\r\n1.当“履约担保类型”选择部分担保、全额担保时,必填;\r\n2.大于等于0的数字,保留两位小数,该值为100%时,填写100.00;")]
public string PerformanceCollInitialRatio { get; set; }
/// <summary>
/// 履约担保品初始比率(现金部分)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>
/// 说明:校验规则:1、当“履约担保类型”选择部分担保、全额担保时,必填;2、大于等于0 的数字,保留两位小数,该值为100% 时 , 填写100.00
/// </para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" },
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PerformanceGuaranteeType),
ConditionMap = new[] { "1", "2" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringIntMaxLength(BeforePointMaxLength = 5, AfterPointMaxLength = 2, MinValue = 0, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PerformanceCollInitialRatioCash", "履约担保品初始比率(现金部分)(%)", "5,2", false,
"校验规则:\r\n1、当“履约担保类型”选择部分担保、全额担保时,必填;\r\n2、大于等于0 的数字,保留两位小数,该值为100% 时 , 填写100.00")]
public string PerformanceCollInitialRatioCash { get; set; }
/// <summary>
/// 履约担保品追保比率(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para><see cref="PerformanceGuaranteeType"/>校验规则:1.当“履约担保类型”选择部分担保、全额担保时,必填;2.大于等于0的数字,保留两位小数,该值为100%时,填写100.00;</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" },
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PerformanceGuaranteeType),
ConditionMap = new[] { "1", "2" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringIntMaxLength(BeforePointMaxLength = 5, AfterPointMaxLength = 2, MinValue = 0,
CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PerformanceCollAddtlRatio", "履约担保品追保比率(%)", "5,2", false,
"校验规则:\r\n1.当“履约担保类型”选择部分担保、全额担保时,必填;\r\n2.大于等于0的数字,保留两位小数,该值为100%时,填写100.00;")]
public string PerformanceCollAddtlRatio { get; set; }
/// <summary>
/// 履约担保品平仓比率(%
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para><see cref="PerformanceGuaranteeType"/>校验规则:1、当“履约担保类型”选择部分担保、全额担保时,必填;2、大于等于0的数字,保留两位小数,该值为100%时,填写100.00;</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" },
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PerformanceGuaranteeType),
ConditionMap = new[] { "1", "2" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringIntMaxLength(BeforePointMaxLength = 5, AfterPointMaxLength = 2, MinValue = 0,
CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PerformanceCollOffsetRatio", "履约担保品平仓比率(%", "5,2", false,
"校验规则:\r\n1、当“履约担保类型”选择部分担保、全额担保时,必填;\r\n2、大于等于0的数字,保留两位小数,该值为100%时,填写100.00;")]
public string PerformanceCollOffsetRatio { get; set; }
/// <summary>
/// 维持担保比率(%
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para><see cref="PerformanceGuaranteeType"/>校验规则:当"履约担保类型"选择部分担保、全额担保 时必填;选其他选项时不能填写;</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" },
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PerformanceGuaranteeType),
ConditionMap = new[] { "1", "2" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringIntMaxLength(BeforePointMaxLength = 5, AfterPointMaxLength = 2, MinValue = 0,
CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("MaintainGuaranteeRatio", "维持担保比率(%", "5,2", false,
"校验规则:当\"履约担保类型\"选择部分担保、全额担保 时必填;选其他选项时不能填写;")]
public string MaintainGuaranteeRatio { get; set; }
/// <summary>
/// 备注/履约担保备注
/// <para>长度:1024</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:填写上述字段或交易确认书中不能包含的信息</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 1024, Required = false)]
[DefaultValue("")]
[SacDescription("PerformanceGuaranteeRemark", "备注/履约担保备注", "1024", false, "填写上述字段或交易确认书中不能包含的信息;")]
public string PerformanceGuaranteeRemark { get; set; }
/// <summary>
/// 履约担保附件
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:只支持PDF格式</para>
/// </summary>
[CheckStringEndsWith(EndsWithString = ".pdf", Required = false)]
[DefaultValue("")]
[SacDescription("PerformanceGuaranteeAtt", "履约担保附件", "", false, "校验规则:只支持PDF格式;")]
public string PerformanceGuaranteeAtt { get; set; }
/// <summary>
/// 履约担保品详情
/// <para>长度:</para>
/// <para>必填:</para>
/// <para>说明:数组结构,支持新增多条</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" },
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" },
CheckHandleNameArr = new[] { "B" })]
[CheckIEnumerableTMinCount(MinCount = 1, CheckHandleName = "A")]
[CheckIEnumerableTMaxCount(MaxCount = 0, CheckHandleName = "B", Required = false)]
[XmlElement]
[NotMapped]
[SacDescription("PerformanceCollTuple", "履约担保品详情", "", false, "数组结构,支持新增多条;")]
public List<PerformanceGuaranteeAttModel> PerformanceCollTuple { get; set; }
/// <summary>
/// 备注/其他信息备注
/// <para>长度:1024</para>
/// <para>必填:否</para>
/// <para>说明:填写上述字段或交易确认书中不能包含的信息填写上述字段或交易确认书中不能包含的信息</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 1024, Required = false)]
[DefaultValue("")]
[SacDescription("Remark", "备注/其他信息备注", "1024", false, "填写上述字段或交易确认书中不能包含的信息填写上述字段或交易确认书中不能包含的信息;")]
public string Remark { get; set; }
/// <summary>
/// 有效名义本金(元)
/// <para>长度:36,2</para>
/// <para>必填:是</para>
/// <para>说明:</para>
/// </summary>
[CheckStringIntLength(BeforePointMaxLength = 36, AfterPointLength = 2)]
[DefaultValue("")]
[SacDescription("ValidNotinalPrincipleAmt", "有效名义本金(元)", "36,2", true,
"")]
public string ValidNotinalPrincipleAmt { get; set; }
/// <summary>
/// 合规意见书
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:只支持PDF格式;</para>
/// </summary>
[CheckStringEndsWith(EndsWithString = ".pdf", Required = false)]
[DefaultValue("")]
[SacDescription("ComplianceOpinion", "合规意见书", "", false, "校验规则:只支持PDF格式;")]
public string ComplianceOpinion { get; set; }
// /// <summary>
// /// 行权价格1
// /// <para>长度:36,2</para>
// /// <para>必填:是</para>
// /// <para>说明:校验规则:保留两位小数;</para>
// /// </summary>
// [CheckStringIntLength(BeforePointMaxLength = 36, AfterPointLength = 2)]
// [DefaultValue("")]
// [SacDescription("ExercisePriceOne", "行权价格1", "36,2", true, "校验规则:保留两位小数;")]
// public string ExercisePriceOne { get; set; }
// /// <summary>
// /// 行权价格2
// /// <para>长度:36,2</para>
// /// <para>必填:否</para>
// /// <para>说明:校验规则:保留两位小数;</para>
// /// </summary>
// [CheckStringIntLength(BeforePointMaxLength = 36, AfterPointLength = 2, Required = false)]
// [DefaultValue("")]
// [SacDescription("ExercisePriceTwo", "行权价格2", "36,2", false, "校验规则:保留两位小数;")]
// public string ExercisePriceTwo { get; set; }
/// <summary>
/// 甲方代签产品名称
/// <para>长度:100</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:1、如甲方代签产品名称或甲方交易对手方码(产品)填值,则乙方代签产品名称和乙方交易对手码(产品)禁止填值;2、甲方代签产品名称必须在主协议关联产品列表-产品名称中存在;</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 100, Required = false)]
[DefaultValue("")]
[SacDescription("PtyAPdctName", "甲方代签产品名称", "100", false,
"校验规则:\r\n1、如甲方代签产品名称或甲方交易对手方码(产品)填值,则乙方代签产品名称和乙方交易对手码(产品)禁止填值;\r\n2、甲方代签产品名称必须在主协议关联产品列表-产品名称中存在;")]
public string PtyAPdctName { get; set; }
/// <summary>
/// 甲方交易对手码(产品)
/// <para>长度:20</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:如甲方代签产品名称或甲方交易对手方码(产品)填值,则乙方代签产品名称和乙方交易对手码(产品)禁止填值;</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 20, Required = false)]
[DefaultValue("")]
[SacDescription("PytAPdctCode", "甲方交易对手码(产品)", "20", false, "校验规则:如甲方代签产品名称或甲方交易对手方码(产品)填值,则乙方代签产品名称和乙方交易对手码(产品)禁止填值;")]
public string PytAPdctCode { get; set; }
/// <summary>
/// 乙方代签产品名称
/// <para>长度:100</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:1、如乙方代签产品名称或乙方交易对手方码(产品)填值,则甲方代签产品名称和甲方交易对手码(产品)禁止填值;2、乙方代签产品名称必须在主协议关联产品列表-产品名称中存在;</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 100, Required = false)]
[DefaultValue("")]
[SacDescription("PtyBPdctName", "乙方代签产品名称", "100", false,
"校验规则:\r\n1、如乙方代签产品名称或乙方交易对手方码(产品)填值,则甲方代签产品名称和甲方交易对手码(产品)禁止填值;\r\n2、乙方代签产品名称必须在主协议关联产品列表-产品名称中存在;")]
public string PtyBPdctName { get; set; }
/// <summary>
/// 乙方交易对手码(产品)
/// <para>长度:20</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:如乙方代签产品名称或乙方交易对手方码(产品)填值,则甲方代签产品名称和甲方交易对手码(产品)禁止填值;</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 20, Required = false)]
[DefaultValue("")]
[SacDescription("PytBPdctCode", "乙方交易对手码(产品)", "20", false, "校验规则:如乙方代签产品名称或乙方交易对手方码(产品)填值,则甲方代签产品名称和甲方交易对手码(产品)禁止填值;")]
public string PytBPdctCode { get; set; }
/// <summary>
/// 是否为跨境交易
/// <para>长度:5</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="BoolMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "true", "false" })]
[DefaultValue("")]
[SacDescription("CrossBorderTransactions", "是否为跨境交易", "5", true, "")]
public string CrossBorderTransactions { get; set; }
/// <summary>
/// 空白1
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[XmlIgnore]
[DefaultValue("")]
[SacDescription("Blank1", "空白1", "", false, "")]
public string Blank1 { get; set; }
/// <summary>
/// 空白2
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[XmlIgnore]
[DefaultValue("")]
[SacDescription("Blank2", "空白2", "", false, "")]
public string Blank2 { get; set; }
#region 香草及其组合
/// <summary>
/// 期权结构小类
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.VanillaOptionStructureSubclassMap"/></para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" }, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaOptionStructureSubclass", "期权结构小类", "2", true, "")]
public string VanillaOptionStructureSubclass { get; set; }
/// <summary>
/// 行权价格系数1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:期权买方可以买入或卖出标的资产的价格,当期权涉及1个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaStrikePriceCoefficientOne", "行权价格系数1(%)", "5,2", false,
"期权买方可以买入或卖出标的资产的价格,当期权涉及1个执行价时,必填;")]
public string VanillaStrikePriceCoefficientOne { get; set; }
/// <summary>
/// 行权价格系数2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及2个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaStrikePriceCoefficientTwo", "行权价格系数2(%)", "5,2", false, "当期权涉及2个执行价时,必填;")]
public string VanillaStrikePriceCoefficientTwo { get; set; }
/// <summary>
/// 行权价格系数3(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及3个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaStrikePriceCoefficientThree", "行权价格系数3(%)", "5,2", false, "当期权涉及3个执行价时,必填;")]
public string VanillaStrikePriceCoefficientThree { get; set; }
/// <summary>
/// 行权价格系数4(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及4个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaStrikePriceCoefficientFour", "行权价格系数4(%)", "5,2", false, "当期权涉及4个执行价时,必填;")]
public string VanillaStrikePriceCoefficientFour { get; set; }
/// <summary>
/// 参与率1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及1个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaEngagementRateOne", "参与率1(%)", "5,2", false, "当期权涉及1个参与率时,必填;")]
public string VanillaEngagementRateOne { get; set; }
/// <summary>
/// 参与率2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及2个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaEngagementRateTwo", "参与率2(%)", "5,2", false, "当期权涉及2个参与率时,必填;")]
public string VanillaEngagementRateTwo { get; set; }
/// <summary>
/// 参与率3(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及3个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaEngagementRateThree", "参与率3(%)", "5,2", false, "当期权涉及3个参与率时,必填;")]
public string VanillaEngagementRateThree { get; set; }
/// <summary>
/// 参与率4(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及4个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaEngagementRateFour", "参与率4(%)", "5,2", false, "当期权涉及4个参与率时,必填;")]
public string VanillaEngagementRateFour { get; set; }
/// <summary>
/// 封底收益率(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及有限亏损时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaBackCoverYield", "封底收益率(非年化)(%)", "5,2", false, "当期权涉及有限亏损时,必填;")]
public string VanillaBackCoverYield { get; set; }
/// <summary>
/// 封顶收益率(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及有限收益时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaCappingYield", "封顶收益率(非年化)(%)", "5,2", false, "当期权涉及有限收益时,必填;")]
public string VanillaCappingYield { get; set; }
/// <summary>
/// 空白1
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaBlank1", "空白1", "", false, "")]
public string VanillaBlank1 { get; set; }
/// <summary>
/// 空白2
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "0", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("VanillaBlank2", "空白2", "", false, "")]
public string VanillaBlank2 { get; set; }
#endregion
#region 二元及其组合
/// <summary>
/// 期权结构小类
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.DigitalOptionStructureSubclassMap"/></para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalOptionStructureSubclass", "期权结构小类", "2", true, "")]
public string DigitalOptionStructureSubclass { get; set; }
/// <summary>
/// 行权价格系数1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:期权买方可以买入或卖出标的资产的价格,当期权涉及1个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalStrikePriceCoefficientOne", "行权价格系数1(%)", "5,2", false,
"期权买方可以买入或卖出标的资产的价格,当期权涉及1个执行价时,必填;")]
public string DigitalStrikePriceCoefficientOne { get; set; }
/// <summary>
/// 行权价格系数2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及2个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalStrikePriceCoefficientTwo", "行权价格系数2(%)", "5,2", false, "当期权涉及2个执行价时,必填;")]
public string DigitalStrikePriceCoefficientTwo { get; set; }
/// <summary>
/// 行权价格系数3(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及3个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalStrikePriceCoefficientThree", "行权价格系数3(%)", "5,2", false, "当期权涉及3个执行价时,必填;")]
public string DigitalStrikePriceCoefficientThree { get; set; }
/// <summary>
/// 参与率1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及1个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalEngagementRateOne", "参与率1(%)", "5,2", false, "当期权涉及1个参与率时,必填;")]
public string DigitalEngagementRateOne { get; set; }
/// <summary>
/// 参与率2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及2个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalEngagementRateTwo", "参与率2(%)", "5,2", false, "当期权涉及2个参与率时,必填;")]
public string DigitalEngagementRateTwo { get; set; }
/// <summary>
/// 参与率3(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及3个参与率时,必填;</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalEngagementRateThree", "参与率3(%)", "5,2", false, "当期权涉及3个参与率时,必填;")]
public string DigitalEngagementRateThree { get; set; }
/// <summary>
/// 收益率1(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:期权买方可以获得的行权收益,当期权涉及1个收益率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, /*MinValue = 0.00,*/ Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalYieldOneNonAnnualized", "收益率1(非年化)(%)", "5,2", false, "期权买方可以获得的行权收益,当期权涉及1个收益率时,必填;")]
public string DigitalYieldOneNonAnnualized { get; set; }
/// <summary>
/// 收益率2(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及2个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, /*MinValue = 0.00,*/ Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalYieldTwoNonAnnualized", "收益率2(非年化)(%)", "5,2", false, "当期权涉及2个收益率时,必填;")]
public string DigitalYieldTwoNonAnnualized { get; set; }
/// <summary>
/// 收益率3(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及3个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, /*MinValue = 0.00,*/ Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalYieldThreeNonAnnualized", "收益率3(非年化)(%)", "5,2", false, "当期权涉及3个收益率时,必填;")]
public string DigitalYieldThreeNonAnnualized { get; set; }
/// <summary>
/// 收益率4(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及4个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, /*MinValue = 0.00, */Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalYieldFourNonAnnualized", "收益率4(非年化)(%)", "5,2", false, "当期权涉及4个收益率时,必填;")]
public string DigitalYieldFourNonAnnualized { get; set; }
///// <summary>
///// 最低收益率(年化)(%)
///// <para>长度:5,2</para>
///// <para>必填:否</para>
///// <para>说明:期权存在最低保底收益时,必填</para>
///// </summary>
//[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
//[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
//[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
//[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
//[DefaultValue("")]
//[SacDescription("DigitalMinimumYieldAnnualized", "最低收益率(年化)(%)", "5,2", false, "期权存在最低保底收益时,必填;")]
//public string DigitalMinimumYieldAnnualized { get; set; }
/// <summary>
/// 空白1
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalBlank1", "空白1", "", false, "")]
public string DigitalBlank1 { get; set; }
/// <summary>
/// 空白2
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "1", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("DigitalBlank2", "空白2", "", false, "")]
public string DigitalBlank2 { get; set; }
#endregion
#region 障碍及其组合
/// <summary>
/// 期权结构小类
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.BarrierOptionStructureSubclassMap"/></para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1", "2", "3" }, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierOptionStructureSubclass", "期权结构小类", "2", true, "")]
public string BarrierOptionStructureSubclass { get; set; }
/// <summary>
/// 行权价格系数1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:期权买方可以买入或卖出标的资产的价格,当期权涉及1个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierStrikePriceCoefficientOne", "行权价格系数1(%)", "5,2", false,
"期权买方可以买入或卖出标的资产的价格,当期权涉及1个执行价时,必填;")]
public string BarrierStrikePriceCoefficientOne { get; set; }
/// <summary>
/// 行权价格系数2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及2个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierStrikePriceCoefficientTwo", "行权价格系数2(%)", "5,2", false, "当期权涉及2个执行价时,必填;")]
public string BarrierStrikePriceCoefficientTwo { get; set; }
/// <summary>
/// 参与率1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及1个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierEngagementRateOne", "参与率1(%)", "5,2", false, "当期权涉及1个参与率时,必填;")]
public string BarrierEngagementRateOne { get; set; }
/// <summary>
/// 参与率2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及2个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierEngagementRateTwo", "参与率2(%)", "5,2", false, "当期权涉及2个参与率时,必填;")]
public string BarrierEngagementRateTwo { get; set; }
/// <summary>
/// 敲入价格系数(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:存在敲入障碍价格时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierKnockInPriceCoefficient", "敲入价格系数(%)", "5,2", false, "存在敲入障碍价格时,必填;")]
public string BarrierKnockInPriceCoefficient { get; set; }
/// <summary>
/// 敲出价格系数1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及1个敲出障碍价格时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierKnockOutPriceCoefficientOne", "敲出价格系数1(%)", "5,2", false, "当期权涉及1个敲出障碍价格时,必填;")]
public string BarrierKnockOutPriceCoefficientOne { get; set; }
/// <summary>
/// 敲出收益率1(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及1个敲出收益率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, /*MinValue = 0.00,*/ Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierKnockOutYieldOneNonAnnualized", "敲出收益率1(非年化)(%)", "5,2", false,
"当期权涉及1个敲出收益率时,必填;")]
public string BarrierKnockOutYieldOneNonAnnualized { get; set; }
/// <summary>
/// 敲出价格系数2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及2个敲出障碍价格时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierKnockOutPriceCoefficientTwo", "敲出价格系数2(%)", "5,2", false, "当期权涉及2个敲出障碍价格时,必填;")]
public string BarrierKnockOutPriceCoefficientTwo { get; set; }
/// <summary>
/// 敲出收益率2(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及2个敲出收益率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, /*MinValue = 0.00,*/ Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierKnockOutYieldTwoNonAnnualized", "敲出收益率2(非年化)(%)", "5,2", false, "当期权涉及2个敲出收益率时,必填;")]
public string BarrierKnockOutYieldTwoNonAnnualized { get; set; }
/// <summary>
/// 观察类型
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.BarrierObservationTypeMap"/></para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1", "2" }, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierObservationType", "观察类型", "2", false, "")]
public string BarrierObservationType { get; set; }
/// <summary>
/// 封底收益率(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及有限亏损时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierBackCoverYield", "封底收益率(非年化)(%)", "5,2", false, "当期权涉及有限亏损时,必填;")]
public string BarrierBackCoverYield { get; set; }
/// <summary>
/// 未敲入收益率(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及未敲入收益率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierUnknockedYield", "未敲入收益率(非年化)(%)", "5,2", false, "当期权涉及未敲入收益率时,必填;")]
public string BarrierUnknockedYield { get; set; }
/// <summary>
/// 空白1
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierBlank1", "空白1", "", false, "")]
public string BarrierBlank1 { get; set; }
/// <summary>
/// 空白2
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("BarrierBlank2", "空白2", "", false, "")]
public string BarrierBlank2 { get; set; }
#endregion
#region 自动赎回
/// <summary>
/// 期权结构小类
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.AutoCallableOptionStructureSubclassMap"/></para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1", "2", "3", "4", "5", "6" }, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableOptionStructureSubclass", "期权结构小类", "2", true, "")]
public string AutoCallableOptionStructureSubclass { get; set; }
/// <summary>
/// 参与率(%)
/// <para>长度:5,2</para>
/// <para>必填:是</para>
/// <para>说明:当期权涉及1个参与率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0.00, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableEngagementRate", "参与率(%)", "5,2", true, "当期权涉及1个参与率时,必填;")]
public string AutoCallableEngagementRate { get; set; }
/// <summary>
/// 行权价格系数(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:用于计算行权价格;当“期权结构小类”选择“非保本普通型雪球”“非保本要素(敲入、敲出、收益率)可变型雪球”“非保本普通型凤凰”“非保本要素(敲入、敲出、收益率)可变型凤凰”时,必填;</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "2", "3", "4", "5" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "2", "3", "4", "5", "6" }, CheckHandleNameArr = new[] { "B" })]
[CheckConditionStringInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "6" }, CheckHandleNameArr = new[] { "C" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, CheckHandleName = "A")]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "C")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableStrikePriceCoefficient", "行权价格系数(%)", "5,2", false, "用于计算行权价格;\r\n当“期权结构小类”选择“非保本普通型雪球”“非保本要素(敲入、敲出、收益率)可变型雪球”“非保本普通型凤凰”“非保本要素(敲入、敲出、收益率)可变型凤凰”时,必填;")]
public string AutoCallableStrikePriceCoefficient { get; set; }
/// <summary>
/// 敲出价格系数(%)
/// <para>长度:1024</para>
/// <para>必填:是</para>
/// <para>说明:正数,保留两位小数;当期权涉及敲出价格系数时,必填,以数组形式提交,半角字符,数组元素以分号隔开,示例:(95.00;90.00;85.00)</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 1024, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableKnockOutPriceCoefficient", "敲出价格系数(%)", "1024", true,
"当期权涉及敲出价格系数时,必填,以数组形式提交,半角字符,数组元素以分号隔开,示例:(95.00;90.00;85.00);")]
public string AutoCallableKnockOutPriceCoefficient { get; set; }
/// <summary>
/// 敲出收益率(年化)(%)
/// <para>长度:1024</para>
/// <para>必填:是</para>
/// <para>说明:合约中既定的收益利率;当标的物触及敲出障碍价时的所得收益将通过该数值计算,以数组形式提交,半角字符,数组元素以分号隔开,示例:(10.00;10.00;10.00)</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 1024, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableKnockOutYieldAnnualized", "敲出收益率(年化)(%)", "1024", true,
"合约中既定的收益利率;当标的物触及敲出障碍价时的所得收益将通过该数值计算,以数组形式提交,半角字符,数组元素以分号隔开,示例:(10.00;10.00;10.00);")]
public string AutoCallableKnockOutYieldAnnualized { get; set; }
/// <summary>
/// 敲出观察日
/// <para>长度:2048</para>
/// <para>必填:是</para>
/// <para>说明:YYYY-MM-DD;半角字符,以数组形式提交,数组元素以分号隔开;示例:(2023-01-01;2023-02-01;2023-03-01)</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 2048, CheckHandleName = "A")]
// [CheckStringIsDateTimeFormat(FormatString = "yyyy-MM-dd")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableKnockOutObservationDay", "敲出观察日", "2048", true,
"半角字符,以数组形式提交,数组元素以分号隔开;示例:(2023-01-01;2023-02-01;2023-03-01)")]
public string AutoCallableKnockOutObservationDay { get; set; }
/// <summary>
/// 敲出结算日
/// <para>长度:2048</para>
/// <para>必填:是</para>
/// <para>说明:半角字符,以数组形式提交,数组元素以分号隔开;示例:(2023-01-02;2023-02-02;2023-03-02)</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 2048, CheckHandleName = "A")]
// [CheckStringIsDateTimeFormat(FormatString = "yyyy-MM-dd")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableKnockOutSettlementDay", "敲出结算日", "2048", true,
"半角字符,以数组形式提交,数组元素以分号隔开;示例:(2023-01-02;2023-02-02;2023-03-02)")]
public string AutoCallableKnockOutSettlementDay { get; set; }
/// <summary>
/// 敲入价格系数(%)
/// <para>长度:1024</para>
/// <para>必填:否</para>
/// <para>说明:当“期权结构小类”选择 “保本雪球(三元)”“非保本普通型雪球”“非保本要素(敲入、敲出、收益率)可变型雪球”“非保本普通型凤凰”“非保本要素(敲入、敲出、收益率)可变型凤凰”或涉及敲入障碍价格时,必填;涉及多个时以数组形式提交,半角字符,数组元素以分号隔开,示例:(95.00;90.00;85.00)</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "1", "2", "3", "4", "5" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "1", "2", "3", "4", "5", "6" }, CheckHandleNameArr = new[] { "B" })]
[CheckConditionStringInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "6" }, CheckHandleNameArr = new[] { "C" })]
[CheckStringMaxLength(MaxLength = 1024, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[CheckStringMaxLength(MaxLength = 1024, Required = false, CheckHandleName = "C")]
[DefaultValue("")]
[SacDescription("AutoCallableKnockInPriceCoefficient", "敲入价格系数(%)", "1024", false,
"当“期权结构小类”选择 “保本雪球(三元)”“非保本普通型雪球”“非保本要素(敲入、敲出、收益率)可变型雪球”“非保本普通型凤凰”“非保本要素(敲入、敲出、收益率)可变型凤凰”或涉及敲入障碍价格时,必填;\r\n涉及多个时以数组形式提交,半角字符,数组元素以分号隔开,示例:(95.00;90.00;85.00)")]
public string AutoCallableKnockInPriceCoefficient { get; set; }
/// <summary>
/// 敲入观察日
/// <para>长度:1024</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到多个敲入价格系数(%)时,必填;半角字符,以时间区间的数组形式提交,数组元素以分号隔开,示例:(2023-01-01:2023-12-31;2024-01-01:2024-12-312025-01-01:2025-12-31);</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 1024, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableKnockInObservationDay", "敲入观察日", "1024", false,
"当期权涉及到多个敲入价格系数(%)时,必填;\r\n半角字符,以时间区间的数组形式提交,数组元素以分号隔开,示例:(2023-01-01:2023-12-31;2024-01-01:2024-12-312025-01-01:2025-12-31);")]
public string AutoCallableKnockInObservationDay { get; set; }
/// <summary>
/// 红利收益率(年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当"期权结构小类"选择"保本雪球(二元)"或"保本雪球(三元)"时,必填</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "0", "1" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "0", "1" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, IgnoreNullOrEmpty = false,
CheckHandleName = "A")]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false,
CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableDividendYieldAnnualized", "红利收益率(年化)(%)", "5,2", false,
"当\"期权结构小类\"选择\"保本雪球(二元)\"或\"保本雪球(三元)\"时,必填;")]
public string AutoCallableDividendYieldAnnualized { get; set; }
/// <summary>
/// 最低收益率(年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当“期权结构小类”选择“保本雪球(三元)”时,必填;当“是否为FCN型”字段选择“是”时,必填</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "1" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringInMap(ConditionName = nameof(AutoCallableWhetherFixedCouponNote),
ConditionMap = new[] { "0" }, CheckHandleNameArr = new[] { "C" })]
[CheckConditionStringNotInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "1" }, CheckHandleNameArr = new[] { "B" })]
[CheckConditionStringNotInMap(ConditionName = nameof(AutoCallableWhetherFixedCouponNote),
ConditionMap = new[] { "0" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, IgnoreNullOrEmpty = false,
CheckHandleName = "A")]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, IgnoreNullOrEmpty = false,
CheckHandleName = "C")]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, IgnoreNullOrEmpty = false,
Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableMinimumYieldAnnualized", "最低收益率(年化)(%)", "5,2", false,
"当“期权结构小类”选择“保本雪球(三元)”时,必填;\r\n当“是否为FCN型”字段选择“是”时,必填;")]
public string AutoCallableMinimumYieldAnnualized { get; set; }
/// <summary>
/// 最低本金保障比例(%)
/// <para>长度:5,2</para>
/// <para>必填:是</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableMinimumPrincipalProtectionRatio", "最低本金保障比例(%)", "5,2", true, "")]
public string AutoCallableMinimumPrincipalProtectionRatio { get; set; }
/// <summary>
/// 是否为折价建仓型
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.AutoCallableWhetherDiscountedWarehouseTypeMap"/>当期权涉及到敲入后转线性结构的情形时,填"是"</para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1" }, Required = false)]
[DefaultValue("")]
[SacDescription("AutoCallableWhetherDiscountedWarehouseType", "是否为折价建仓型", "2", true,
"当期权涉及到敲入后转线性结构的情形时,填\"是\"")]
public string AutoCallableWhetherDiscountedWarehouseType { get; set; }
/// <summary>
/// 是否为收益增强型
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.AutoCallableWhetherRevenueEnhancedTypeMap"/>当期权涉及到敲出时收益增强的情形时,填"是"</para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1" }, Required = false)]
[DefaultValue("")]
[SacDescription("AutoCallableWhetherRevenueEnhancedType", "是否为收益增强型", "2", true, "当期权涉及到敲出时收益增强的情形时,填\"是\"")]
public string AutoCallableWhetherRevenueEnhancedType { get; set; }
/// <summary>
/// 是否为FCN型
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.AutoCallableWhetherRevenueEnhancedTypeMap"/>当期权为FCN结构时,填“是”</para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1" }, Required = false)]
[DefaultValue("")]
[SacDescription("AutoCallableWhetherFixedCouponNote", "是否为FCN型", "2", true, "当期权为FCN结构时,填“是”")]
public string AutoCallableWhetherFixedCouponNote { get; set; }
/// <summary>
/// 敲入价格系数是否可变
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.AutoCallableWhetherKnockInPriceCoefficientIsVariableMap"/>当"期权结构小类"选择"非保本要素(敲入、敲出、收益率)可变型雪球"或"非保本要素(敲入、敲出、收益率)可变型凤凰"时,必填</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "3", "5" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "3", "5" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1" }, CheckHandleName = "A")]
[CheckStringInMap(Map = new[] { "0", "1" }, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableWhetherKnockInPriceCoefficientIsVariable", "敲入价格系数是否可变", "2", false,
"当\"期权结构小类\"选择\"非保本要素(敲入、敲出、收益率)可变型雪球\"或\"非保本要素(敲入、敲出、收益率)可变型凤凰\"时,必填;")]
public string AutoCallableWhetherKnockInPriceCoefficientIsVariable { get; set; }
/// <summary>
/// 敲出价格系数是否可变
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.AutoCallableWhetherKnockOutPriceCoefficientIsVariableMap"/>当"期权结构小类"选择"非保本要素(敲入、敲出、收益率)可变型雪球"或"非保本要素(敲入、敲出、收益率)可变型凤凰"时,必填</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "3", "5" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "3", "5" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1" }, CheckHandleName = "A")]
[CheckStringInMap(Map = new[] { "0", "1" }, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableWhetherKnockOutPriceCoefficientIsVariable", "敲出价格系数是否可变", "2", false,
"当\"期权结构小类\"选择\"非保本要素(敲入、敲出、收益率)可变型雪球\"或\"非保本要素(敲入、敲出、收益率)可变型凤凰\"时,必填;")]
public string AutoCallableWhetherKnockOutPriceCoefficientIsVariable { get; set; }
/// <summary>
/// 敲出收益率是否可变
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.AutoCallableWhetherKnockOutYieldIsVariableMap"/>当"期权结构小类"选择"非保本要素(敲入、敲出、收益率)可变型雪球"或"非保本要素(敲入、敲出、收益率)可变型凤凰"时,必填</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "3", "5" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "3", "5" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1" }, CheckHandleName = "A")]
[CheckStringInMap(Map = new[] { "0", "1" }, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableWhetherKnockOutYieldIsVariable", "敲出收益率是否可变", "2", false,
"当\"期权结构小类\"选择\"非保本要素(敲入、敲出、收益率)可变型雪球\"或\"非保本要素(敲入、敲出、收益率)可变型凤凰\"时,必填;")]
public string AutoCallableWhetherKnockOutYieldIsVariable { get; set; }
/// <summary>
/// 红利收益率是否可变
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.AutoCallableWhetherDividendYieldIsVariableMap"/>当"期权结构小类"选择"非保本要素(敲入、敲出、收益率)可变型雪球"或"非保本要素(敲入、敲出、收益率)可变型凤凰"时,必填</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "3", "5" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(AutoCallableOptionStructureSubclass),
ConditionMap = new[] { "3", "5" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1" }, CheckHandleName = "A")]
[CheckStringInMap(Map = new[] { "0", "1" }, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableWhetherDividendYieldIsVariable", "红利收益率是否可变", "2", false,
"当\"期权结构小类\"选择\"非保本要素(敲入、敲出、收益率)可变型雪球\"或\"非保本要素(敲入、敲出、收益率)可变型凤凰\"时,必填;")]
public string AutoCallableWhetherDividendYieldIsVariable { get; set; }
/// <summary>
/// 空白1
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableBlank1", "空白1", "", false, "")]
public string AutoCallableBlank1 { get; set; }
/// <summary>
/// 空白2
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "3", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AutoCallableBlank2", "空白2", "", false, "")]
public string AutoCallableBlank2 { get; set; }
#endregion
#region 区间累计
/// <summary>
/// 期权结构小类
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.RangeAccrualOptionStructureSubclassMap"/></para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1", "2" }, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("RangeAccrualOptionStructureSubclass", "期权结构小类", "2", true, "")]
public string RangeAccrualOptionStructureSubclass { get; set; }
/// <summary>
/// 行权价格系数1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:期权买方可以买入或卖出标的资产价格,当期权涉及到1个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("RangeAccrualStrikePriceCoefficientOne", "行权价格系数1(%)", "5,2", false,
"期权买方可以买入或卖出标的资产价格,当期权涉及到1个执行价时,必填;")]
public string RangeAccrualStrikePriceCoefficientOne { get; set; }
/// <summary>
/// 行权价格系数2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到2个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("RangeAccrualStrikePriceCoefficientTwo", "行权价格系数2(%)", "5,2", false, "当期权涉及到2个执行价时,必填;")]
public string RangeAccrualStrikePriceCoefficientTwo { get; set; }
/// <summary>
/// 行权价格系数3(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到3个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("RangeAccrualStrikePriceCoefficientThree", "行权价格系数3(%)", "5,2", false, "当期权涉及到3个执行价时,必填;")]
public string RangeAccrualStrikePriceCoefficientThree { get; set; }
/// <summary>
/// 行权价格系数4(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到4个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("RangeAccrualStrikePriceCoefficientFour", "行权价格系数4(%)", "5,2", false, "当期权涉及到4个执行价时,必填;")]
public string RangeAccrualStrikePriceCoefficientFour { get; set; }
/// <summary>
/// 参与率(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到1个参与率时,必须为正数;每份合约中参与率的大小决定了实际名义本金的数额</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("RangeAccrualEngagementRate", "参与率(%)", "5,2", false,
"当期权涉及到1个参与率时,必须为正数;\r\n每份合约中参与率的大小决定了实际名义本金的数额;")]
public string RangeAccrualEngagementRate { get; set; }
/// <summary>
/// 收益率1(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:期权买方可以获得的行权收益,当期权涉及到1个收益率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, /*MinValue = 0,*/ Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("RangeAccrualOneNonAnnualized", "收益率1(非年化)(%)", "5,2", false,
"期权买方可以获得的行权收益,当期权涉及到1个收益率时,必填;")]
public string RangeAccrualOneNonAnnualized { get; set; }
/// <summary>
/// 收益率2(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到2个收益率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, /*MinValue = 0,*/ Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("RangeAccrualTwoNonAnnualized", "收益率2(非年化)(%)", "5,2", false, "当期权涉及到2个收益率时,必填;")]
public string RangeAccrualTwoNonAnnualized { get; set; }
/// <summary>
/// 收益率3(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到2个收益率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, /*MinValue = 0,*/ Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("RangeAccrualThreeNonAnnualized", "收益率3(非年化)(%)", "5,2", false, "当期权涉及到3个收益率时,必填;")]
public string RangeAccrualThreeNonAnnualized { get; set; }
/// <summary>
/// 收益率4(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到2个收益率时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, /*MinValue = 0,*/ Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("RangeAccrualFourNonAnnualized", "收益率4(非年化)(%)", "5,2", false, "当期权涉及到4个收益率时,必填;")]
public string RangeAccrualFourNonAnnualized { get; set; }
///// <summary>
///// 最低收益率(年化)(%)
///// <para>长度:5,2</para>
///// <para>必填:否</para>
///// <para>说明:期权存在最低保底收益时,必填;无论标的合约价格如何变动,投资者可以获得的最低收益</para>
///// </summary>
//[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
//[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
//[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
//[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
//[DefaultValue("")]
//[SacDescription("RangeAccrualMinimumYieldAnnualized", "最低收益率(年化)(%)", "5,2", false,
// "期权存在最低保底收益时,必填;无论标的合约价格如何变动,投资者可以获得的最低收益;")]
//public string RangeAccrualMinimumYieldAnnualized { get; set; }
/// <summary>
/// 空白1
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("RangeAccrualBlank1", "空白1", "", false, "")]
public string RangeAccrualBlank1 { get; set; }
/// <summary>
/// 空白2
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "4", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("RangeAccrualBlank2", "空白2", "", false, "")]
public string RangeAccrualBlank2 { get; set; }
#endregion
#region 安全气囊
/// <summary>
/// 期权结构小类
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.AirbagOptionStructureSubclassMap"/></para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1", "2", "3", "4", "5" }, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagOptionStructureSubclass", "期权结构小类", "2", true, "")]
public string AirbagOptionStructureSubclass { get; set; }
/// <summary>
/// 行权价格系数1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:期权买方可以买入或卖出标的资产价格,当期权涉及到1个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagStrikePriceCoefficientOne", "行权价格系数1(%)", "5,2", false,
"期权买方可以买入或卖出标的资产价格,当期权涉及到1个执行价时,必填;")]
public string AirbagStrikePriceCoefficientOne { get; set; }
/// <summary>
/// 行权价格系数2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到2个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagStrikePriceCoefficientTwo", "行权价格系数2(%)", "5,2", false, "当期权涉及到2个执行价时,必填;")]
public string AirbagStrikePriceCoefficientTwo { get; set; }
/// <summary>
/// 行权价格系数3(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到3个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagStrikePriceCoefficientThree", "行权价格系数3(%)", "5,2", false, "当期权涉及到3个执行价时,必填;")]
public string AirbagStrikePriceCoefficientThree { get; set; }
/// <summary>
/// 行权价格系数4(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到4个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagStrikePriceCoefficientFour", "行权价格系数4(%)", "5,2", false, "当期权涉及到4个执行价时,必填;")]
public string AirbagStrikePriceCoefficientFour { get; set; }
/// <summary>
/// 参与率1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及1个参与率时,必须为正数</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagEngagementRateOne", "参与率1(%)", "5,2", false, "当期权涉及1个参与率时,必须为正数;")]
public string AirbagEngagementRateOne { get; set; }
/// <summary>
/// 参与率2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及2个参与率时,必须为正数</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagEngagementRateTwo", "参与率2(%)", "5,2", false, "当期权涉及2个参与率时,必须为正数;")]
public string AirbagEngagementRateTwo { get; set; }
/// <summary>
/// 参与率3(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及3个参与率时,必须为正数</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagEngagementRateThree", "参与率3(%)", "5,2", false, "当期权涉及3个参与率时,必须为正数;")]
public string AirbagEngagementRateThree { get; set; }
/// <summary>
/// 敲入价格系数(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:存在敲入障碍价格时,必填,必须为正数</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagKnockInPriceCoefficient", "敲入价格系数(%)", "5,2", false, "存在敲入障碍价格时,必填,必须为正数;")]
public string AirbagKnockInPriceCoefficient { get; set; }
///// <summary>
///// 上端封顶收益率(非年化)(%)
///// <para>长度:5,2</para>
///// <para>必填:否</para>
///// <para>说明:上端封顶类安全气囊类期权,必填</para>
///// </summary>
//[CheckConditionStringInMap(ConditionName = nameof(AirbagOptionStructureSubclass),
// ConditionMap = new[] { "4" }, CheckHandleNameArr = new[] { "A" })]
//[CheckConditionStringNotInMap(ConditionName = nameof(AirbagOptionStructureSubclass),
// ConditionMap = new[] { "4" }, CheckHandleNameArr = new[] { "B" })]
//[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, CheckHandleName = "A")]
//[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
//[DefaultValue("")]
//[SacDescription("AirbagTopCapYieldAnnualized", "上端封顶收益率(非年化)(%)", "5,2", false, "上端封顶类安全气囊类期权,必填;")]
//public string AirbagTopCapYieldAnnualized { get; set; }
///// <summary>
///// 最低收益率(年化)(%)
///// <para>长度:5,2</para>
///// <para>必填:否</para>
///// <para>说明:期权存在最低保底收益时,必填</para>
///// </summary>
//[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
//[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
//[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
//[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
//[DefaultValue("")]
//[SacDescription("AirbagMinimumYieldAnnualized", "最低收益率(年化)(%)", "5,2", false, "期权存在最低保底收益时,必填;")]
//public string AirbagMinimumYieldAnnualized { get; set; }
/// <summary>
/// 封底收益率(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及有限亏损时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagBackCoverYield", "封底收益率(非年化)(%)", "5,2", false, "当期权涉及有限亏损时,必填;")]
public string AirbagBackCoverYield { get; set; }
/// <summary>
/// 封顶收益率(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及有限收益时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagCappingYield", "封顶收益率(非年化)(%)", "5,2", false, "当期权涉及有限收益时,必填;")]
public string AirbagCappingYield { get; set; }
/// <summary>
/// 空白1
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagBlank1", "空白1", "", false, "")]
public string AirbagBlank1 { get; set; }
/// <summary>
/// 空白2
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "5", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("AirbagBlank2", "空白2", "", false, "")]
public string AirbagBlank2 { get; set; }
#endregion
#region 其他
/// <summary>
/// 期权结构类型
/// <para>长度:1024</para>
/// <para>必填:是</para>
/// <para>说明:必填,请以文字形式描述期权结构类型名称</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 1024, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersOptionStructureSubclass", "期权结构类型", "1024", true, "必填,请以文字形式描述期权结构类型名称;")]
public string OthersOptionStructureSubclass { get; set; }
/// <summary>
/// 行权价格系数1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:期权买方可以买入或卖出标的资产价格,当期权涉及到1个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersStrikePriceCoefficientOne", "行权价格系数1(%)", "5,2", false,
"期权买方可以买入或卖出标的资产价格,当期权涉及到1个执行价时,必填;")]
public string OthersStrikePriceCoefficientOne { get; set; }
/// <summary>
/// 行权价格系数2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到2个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersStrikePriceCoefficientTwo", "行权价格系数2(%)", "5,2", false, "当期权涉及到2个执行价时,必填;")]
public string OthersStrikePriceCoefficientTwo { get; set; }
/// <summary>
/// 行权价格系数3(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到3个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersStrikePriceCoefficientThree", "行权价格系数3(%)", "5,2", false, "当期权涉及到3个执行价时,必填;")]
public string OthersStrikePriceCoefficientThree { get; set; }
/// <summary>
/// 行权价格系数4(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到4个执行价时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersStrikePriceCoefficientFour", "行权价格系数4(%)", "5,2", false, "当期权涉及到4个执行价时,必填;")]
public string OthersStrikePriceCoefficientFour { get; set; }
/// <summary>
/// 参与率1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及1个参与率时,必须为正数</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersEngagementRateOne", "参与率1(%)", "5,2", false, "当期权涉及1个参与率时,必须为正数;")]
public string OthersEngagementRateOne { get; set; }
/// <summary>
/// 参与率2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及2个参与率时,必须为正数</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersEngagementRateTwo", "参与率2(%)", "5,2", false, "当期权涉及2个参与率时,必须为正数;")]
public string OthersEngagementRateTwo { get; set; }
/// <summary>
/// 参与率3(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及3个参与率时,必须为正数</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersEngagementRateThree", "参与率3(%)", "5,2", false, "当期权涉及3个参与率时,必须为正数;")]
public string OthersEngagementRateThree { get; set; }
/// <summary>
/// 参与率4(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及4个参与率时,必填,必须为正数</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersEngagementRateFour", "参与率4(%)", "5,2", false, "当期权涉及4个参与率时,必填,必须为正数;")]
public string OthersEngagementRateFour { get; set; }
/// <summary>
/// 障碍价格系数1(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到1个障碍价格时,必填,必须为正数</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersBarrierPricesCoefficientOne", "障碍价格系数1(%)", "5,2", false, "当期权涉及到1个障碍价格时,必填,必须为正数;")]
public string OthersBarrierPricesCoefficientOne { get; set; }
/// <summary>
/// 障碍价格系数2(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及到2个障碍价格时,必填,必须为正数</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersBarrierPricesCoefficientTwo", "障碍价格系数2(%)", "5,2", false, "当期权涉及到2个障碍价格时,必填,必须为正数;")]
public string OthersBarrierPricesCoefficientTwo { get; set; }
/// <summary>
/// 封底收益率(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及有限亏损时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersBackCoverYield", "封底收益率(非年化)(%)", "5,2", false, "当期权涉及有限亏损时,必填")]
public string OthersBackCoverYield { get; set; }
/// <summary>
/// 封顶收益率(非年化)(%)
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:当期权涉及有限收益时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersCappingYield", "封顶收益率(非年化)(%)", "5,2", false, "当期权涉及有限收益时,必填")]
public string OthersCappingYield { get; set; }
/// <summary>
/// 空白1
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersBlank1", "空白1", "", false, "")]
public string OthersBlank1 { get; set; }
/// <summary>
/// 空白2
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckConditionStringValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "OptionStructureType", ConditionValue = "99", CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 9999, Required = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OthersBlank2", "空白2", "", false, "")]
public string OthersBlank2 { get; set; }
#endregion
}
// <summary>
// 标的详情
// </summary>
[Table("A1004_UndrlygAsset")]
public class UndrlygAssetModel : ReportSubBaseModel
{
/// <summary>
/// 标的小类
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.SwapUndrlygAssetDtldTypeMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[]
{
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18",
"99"
})]
[DefaultValue("")]
[SacDescription("UndrlygAssetDtldType", "标的小类", "2", true, "")]
public string UndrlygAssetDtldType { get; set; }
/// <summary>
/// 标的名称
/// <para>长度:200</para>
/// <para>必填:是</para>
/// <para>说明:</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 200)]
[DefaultValue("")]
[SacDescription("UndrlygAssetName", "标的名称", "200", true, "")]
public string UndrlygAssetName { get; set; }
/// <summary>
/// 标的交易场所
/// <para>长度:2</para>
/// <para>必填:是</para>
///// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.UndrlygAssetTradgPlceMap"/></para>
/// </summary>
//[CheckStringInMap(Map = new[] { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "99" })]
[CheckStringMaxLength(MaxLength = 200)]
[DefaultValue("")]
[SacDescription("UndrlygAssetTradgPlc", "标的交易场所", "200", true, "")]
public string UndrlygAssetTradgPlc { get; set; }
/// <summary>
/// 标的编码
/// <para>长度:200</para>
/// <para>必填:是</para>
/// <para>说明:</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 200)]
[DefaultValue("")]
[SacDescription("UndrlygAssetCode", "标的编码", "200", true, "")]
public string UndrlygAssetCode { get; set; }
/// <summary>
/// 标的数量
/// <para>长度:36,6</para>
/// <para>必填:是</para>
/// <para>说明:校验规则:六位小数且大于0</para>
/// </summary>
[CheckStringIntMaxLength(BeforePointMaxLength = 36, AfterPointMaxLength = 6)]
[DefaultValue("")]
[SacDescription("UndrlygAssetAmt", "标的数量", "36,6", true, "校验规则:六位小数且大于0;")]
public string UndrlygAssetAmt { get; set; }
/// <summary>
/// 合约乘数
/// <para>长度:36,6</para>
/// <para>必填:是</para>
/// <para>说明:校验规则:整数</para>
/// </summary>
[CheckStringIntMaxLength(BeforePointMaxLength = 36, AfterPointMaxLength = 0)]
[DefaultValue("")]
[SacDescription("ContractMultiplier", "合约乘数", "36", true, "校验规则:整数;")]
public string ContractMultiplier { get; set; }
/// <summary>
/// 标的个数
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.UndrlygAssetNoMap"/></para>
/// </summary>
[XmlIgnore]
[CheckStringInMap(Map = new[] { "0", "1" })]
[DefaultValue("")]
[SacDescription("UndrlygAssetNo", "标的个数", "2", true, "")]
public string UndrlygAssetNo { get; set; }
/// <summary>
/// 多标的期权类型
/// <para>长度:36,2</para>
/// <para>必填:否</para>
/// <para>说明:多标的期权必填;<see cref="MultiOrderOptionTypeMap"/></para>
/// </summary>
[CheckConditionStringValue(ConditionName = "UndrlygAssetNo", ConditionValue = "1",
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = "UndrlygAssetNo", ConditionValue = "1",
CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 2, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("MultiOrderOptionType", "多标的期权类型", "2", false, "多标的期权必填;")]
public string MultiOrderOptionType { get; set; }
/// <summary>
/// 标的名义本金(元)
/// <para>长度:36,2</para>
/// <para>必填:是</para>
/// <para>说明:包含多个标的的期权交易,每个标的须填写一份标的详情表</para>
/// </summary>
[CheckStringIntMaxLength(BeforePointMaxLength = 36, AfterPointMaxLength = 2)]
[DefaultValue("")]
[SacDescription("UndrlygAssetNotinalPrincipleAmtRMB", "标的名义本金(元)", "36,2", true, "包含多个标的的期权交易,每个标的须填写一份标的详情表")]
public string UndrlygAssetNotinalPrincipleAmtRMB { get; set; }
/// <summary>
/// 标的价格
/// <para>长度:36,4</para>
/// <para>必填:是</para>
/// <para>说明:</para>
/// </summary>
[CheckStringIntMaxLength(BeforePointMaxLength = 36, AfterPointMaxLength = 4)]
[DefaultValue("")]
[SacDescription("OpeningPrice", "标的价格", "36,4", true, "")]
public string OpeningPrice { get; set; }
/// <summary>
/// 标的类型
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.UndrlygAssetTypeMap"/></para>
/// </summary>
[XmlIgnore]
[DefaultValue("")]
[SacDescription("UndrlygAssetType", "标的类型", "2", false, "")]
public string UndrlygAssetType { get; set; }
/// <summary>
/// 标的价格货币
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="CurrencyEnum"/>当“标的类型”选择“权益类”“大宗商品”“利率”“信用类”“其他”时,必填</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(UndrlygAssetType),
ConditionMap = new[] { "0", "1", "2", "3", "99" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(UndrlygAssetType),
ConditionMap = new[] { "0", "1", "2", "3", "99" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 2, IgnoreNullOrEmpty = false, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("OpeningPriceCurrency", "标的价格货币", "2", false, "当标的类型选择权益类、大宗商品、利率、信用类、其他时,必填")]
public string OpeningPriceCurrency { get; set; }
[XmlIgnore]
[DefaultValue("")]
[SacDescription("ConfirmationNo", "关联交易确认书编号", "32", false, "")]
public string ConfirmationNo { get; set; }
/// <summary>
/// 空白1
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[XmlIgnore]
[DefaultValue("")]
[SacDescription("Blank1", "空白1", "", false, "")]
public string Blank1 { get; set; }
/// <summary>
/// 空白2
/// <para>长度:</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[XmlIgnore]
[DefaultValue("")]
[SacDescription("Blank2", "空白2", "", false, "")]
public string Blank2 { get; set; }
}
// <summary>
// 履约担保品详情
// </summary>
[Table("A1004_PerformanceGuaranteeAtt")]
public class PerformanceGuaranteeAttModel : ReportSubBaseModel
{
/// <summary>
/// 履约担保品类型
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.PerformanceCollTypeMap"/>校验规则:当“履约担保类型”选择部分担保、全额担保时,必填;</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" },
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PerformanceGuaranteeType),
ConditionMap = new[] { "1", "2" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1", "2", "3", "99" }, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PerformanceCollType", "履约担保品类型", "2", false, "校验规则:当“履约担保类型”选择部分担保、全额担保时,必填;")]
public string PerformanceCollType { get; set; }
/// <summary>
/// 履约担保类型
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.PerformanceGuaranteeMap"/></para>
/// </summary>
[XmlIgnore]
[CheckStringInMap(Map = new[] { "1", "2", "3" })]
[DefaultValue("")]
[SacDescription("PerformanceGuaranteeType", "履约担保类型", "2", true, "")]
public string PerformanceGuaranteeType { get; set; }
/// <summary>
/// 担保品担保范围
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.PerformanceCollRangeMap"/>校验规则:当“履约担保类型”选择部分担保、全额担保时,必填;</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" },
CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PerformanceGuaranteeType),
ConditionMap = new[] { "1", "2" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringInMap(Map = new[] { "0", "1", "2" }, CheckHandleName = "A")]
[CheckStringLength(Length = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PerformanceCollRange", "担保品担保范围", "2", false, "校验规则:当“履约担保类型”选择部分担保、全额担保时,必填;")]
public string PerformanceCollRange { get; set; }
/// <summary>
/// 多笔担保交易确认书编号
/// <para>长度:1024</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 1024, Required = false)]
[DefaultValue("")]
[SacDescription("MultiConfirmationID", "多笔担保交易确认书编号", "1024", false, "")]
public string MultiConfirmationID { get; set; }
[XmlIgnore]
[DefaultValue("")]
[SacDescription("ConfirmationNo", "关联交易确认书编号", "32", false, "")]
public string ConfirmationNo { get; set; }
/// <summary>
/// 备注
/// <para>长度:1024</para>
/// <para>必填:否</para>
/// <para>说明:</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 1024, Required = false)]
[DefaultValue("")]
[SacDescription("Remarks", "备注", "", false, "")]
public string Remarks { get; set; }
}
}