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

644 lines
37 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 System.Collections.Generic;
using System.ComponentModel;
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("A1005_SwapConfirmation")]
public class SwapConfirmationModel : ReportBaseModel
{
/// <summary>
/// 支付方式
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="PaymentMethodMap"/></para>
/// </summary>
[XmlIgnore]
[SacDescription("PaymentMethod", "支付方式", "2", true, "")]
public string PaymentMethod { 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>长度: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>长度: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")]
[CheckStringMaxLength(MaxLength = 32, 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="ReportTypeMap"/>校验规则:首次提交时填0,补正时填1</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="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="SwapTypeMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "2", "99" })]
[DefaultValue("")]
[SacDescription("SwapType", "收益互换交易类型", "2", true, "")]
public string SwapType { get; set; }
/// <summary>
/// 起始日
/// <para>长度:10</para>
/// <para>必填:是</para>
/// <para>说明:校验规则:1 起始日不能大于到期日日期;2 必须是YYYY-MM-DD</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 10)]
[CheckStringIsDateTimeFormat]
[DefaultValue("")]
[SacDescription("StartDate", "起始日", "10", true, "校验规则:\r\n1 起始日不能大于到期日日期;\r\n2 必须是YYYY-MM-DD;")]
public string StartDate { get; set; }
/// <summary>
/// 到期日
/// <para>长度:10</para>
/// <para>必填:是</para>
/// <para>说明:指定的进行结算金额收付的日期. 校验规则:1 到期日不能小于起始日日期;2 必须是YYYY-MM-DD;</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 10)]
[CheckStringIsDateTimeFormat]
[DefaultValue("")]
[SacDescription("DueDate", "到期日", "10", true, "指定的进行结算金额收付的日期.\r\n校验规则:\r\n1 到期日不能小于起始日日期;\r\n2 必须是YYYY-MM-DD;")]
public string DueDate { get; set; }
/// <summary>
/// 结算日
/// <para>长度:10</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:1 必须是YYYY-MM-DD;</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 10, Required = false)]
[CheckStringIsDateTimeFormat(Required = false)]
[DefaultValue("")]
[SacDescription("SettlementDate", "结算日", "10", false, "校验规则:\r\n1 必须是YYYY-MM-DD;")]
public string SettlementDate { get; set; }
/// <summary>
/// 结算货币
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="CurrencyEnum"/>使用货币通用代码(大写)</para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "2", "3", "4", "5", "6" })]
[DefaultValue("")]
[SacDescription("Currency", "结算货币", "2", true, "使用货币通用代码(大写);")]
public string Currency { get; set; }
/// <summary>
/// 名义本金(元)
/// <para>长度:36,2</para>
/// <para>必填:是</para>
/// <para>说明:校验规则:1 必须两位小数以内;2 补正时,如果该交易还有未被废除的存续期记录(包括展期\终止数据),名义本金额(人民币)字段不能修改;</para>
/// <para>说明:名义本金为标的期初价格乘以数量乘以乘数;多空组合填写多头名义本金与空头名义本金孰高</para>
/// </summary>
[CheckStringIntMaxLength(BeforePointMaxLength = 36, AfterPointMaxLength = 2, MinValue = 0)]
[DefaultValue("")]
[SacDescription("NotinalPrincipleAmt", "名义本金(元)", "36,2", true, "校验规则:\r\n1 必须两位小数以内;\r\n2 补正时,如果该交易还有未被废除的存续期记录(包括展期、终止数据),名义本金额(人民币)字段不能修改;")]
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>说明:交易场所选"99:其他交易场所"时,必填</para>
/// </summary>
[CheckConditionStringValue(ConditionName = nameof(TradingPlace), ConditionValue = "99", CheckHandleNameArr = new[] { "A" })]
[CheckStringMaxLength(MaxLength = 200, CheckHandleName = "A")]
[DefaultValue("")]
[SacDescription("TradingPlaceOther", "交易场所(其他)", "200", false, "交易场所选99:其他交易场所时,必填;")]
public string TradingPlaceOther { get; set; }
/// <summary>
/// 标的类型
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.UndrlygAssetTypeMap"/>对于多类别资产组合,单一资产类别占比大等于80%的,分类为该类别,各资产类别占比均小于80%的,为混合类</para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "2", "3", "4", "5", "99" })]
[DefaultValue("")]
[SacDescription("UndrlygAssetType", "标的类型", "2", true, "对于多类别资产组合,单一资产类别占比大等于80%的,分类为该类别,各资产类别占比均小于80%的,为混合类;")]
public string UndrlygAssetType { 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>
/// 费用端支付
/// </summary>
[XmlElement]
[NotMapped]
[SacDescription("CostPaymentTuple", "费用端支付", "", false, "")]
public List<PaymentMethodModel> CostPaymentTuple { 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, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 1024, 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>说明:校验规则:大于等于0的数字,最多2位小数,该值为100%时,填写100.00</para>
/// </summary>
[CheckStringIntMaxLength(BeforePointMaxLength = 3, AfterPointMaxLength = 2, MinValue = 0)]
[DefaultValue("")]
[SacDescription("PerformanceCollInitialRatio", "履约担保品初始比率(%", "5,2", true, "校验规则:大于等于0的数字,最多2位小数,该值为100%时,填写100.00;")]
public string PerformanceCollInitialRatio { get; set; }
/// <summary>
/// 履约担保品追保比率(%
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:1 当"履约保障类型"选择"部分担保"或"全额担保"时必填;2 大于等于0的数字,最多2位小数,该值为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 = 3, AfterPointMaxLength = 2, MinValue = 0, CheckHandleName = "A")]
[CheckStringIntMaxLength(BeforePointMaxLength = 3, AfterPointMaxLength = 2, MinValue = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PerformanceCollAddtlRatio", "履约担保品追保比率(%", "5,2", false, "校验规则:\r\n1 当履约保障类型选择部分担保或全额担保时必填;\r\n2 大于等于0的数字,最多2位小数,该值为100%时,填写100.00;")]
public string PerformanceCollAddtlRatio { get; set; }
/// <summary>
/// 履约担保品平仓比率(%
/// <para>长度:5,2</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:1 当"履约保障类型"选择"部分担保"或"全额担保"时必填;2 大于等于0的数字,最多2位小数,该值为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 = 3, AfterPointMaxLength = 2, MinValue = 0, CheckHandleName = "A")]
[CheckStringIntMaxLength(BeforePointMaxLength = 3, AfterPointMaxLength = 2, MinValue = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PerformanceCollOffsetRatio", "履约担保品平仓比率(%", "5,2", false, "校验规则:\r\n1 当履约保障类型选择部分担保或全额担保时必填;\r\n2 大于等于0的数字,最多2位小数,该值为100%时,填写100.00;")]
public string PerformanceCollOffsetRatio { get; set; }
/// <summary>
/// 维持担保比率(%
/// <para>长度:5,2</para>
/// <para>必填:是</para>
/// <para>说明:担保品占名义本金比例,大于等于0的数字,最多2位小数,担保比例为80.00%,则填写80.00</para>
/// </summary>
[CheckStringIntLength(BeforePointMaxLength = 5, AfterPointLength = 2, MinValue = 0)]
[SacDescription("MaintainGuaranteeRatio", "维持担保比率(%", "5,2", true, "担保品占名义本金比例,大于等于0的数字,最多2位小数,担保比例为80.00%,则填写80.00;")]
public string MaintainGuaranteeRatio { 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>长度: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>说明:数组结构,支持新增多条;校验规则:字段信息详见收益互换交易确认书【履约担保品】。检验规则:当“履约担保类型”为“部分担保”或“全额担保”时必填</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PerformanceGuaranteeType), ConditionMap = new[] { "1", "2" }, CheckHandleNameArr = new[] { "A" })]
[CheckIEnumerableTMinCount(CheckHandleName = "A", MinCount = 1)]
[XmlElement]
[NotMapped]
[SacDescription("PerformanceCollTuple", "履约担保品", "", false, "数组结构,支持新增多条;\r\n校验规则:字段信息详见收益互换交易确认书【履约担保品】。检验规则:当“履约担保类型”为“部分担保”或“全额担保”时必填;")]
public List<SwapPerformanceGuaranteeAttModel> 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>长度:</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:只支持PDF格式;</para>
/// </summary>
[CheckStringEndsWith(EndsWithString = ".pdf", Required = false)]
[DefaultValue("")]
[SacDescription("ComplianceOpinion", "合规意见书", "", false, "校验规则:只支持PDF格式;")]
public string ComplianceOpinion { get; set; }
/// <summary>
/// 标的个数
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明: <see cref="UndrlygAssetNoMap"/>多标的时,权益收益、浮动利率收益、固定利率收益信息需新增多个</para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1" })]
[DefaultValue("")]
[SacDescription("PtyAUndrlygAssetNo", "标的个数", "2", true, "多标的时,权益收益、浮动利率收益、固定利率收益信息需新增多个;")]
public string PtyAUndrlygAssetNo { get; set; }
/// <summary>
/// 收益计算说明
/// <para>长度:1024</para>
/// <para>必填:是</para>
/// <para>说明:详细说明收益计算方式</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 1024)]
[DefaultValue("")]
[SacDescription("PtyAPrOfitCalculationInfo", "收益计算说明", "1024", true, "详细说明收益计算方式;")]
public string PtyAPrOfitCalculationInfo { get; set; }
/// <summary>
/// 收益备注
/// <para>长度:1024</para>
/// <para>必填:否</para>
/// <para>说明:填写上述字段或交易确认书中不能包含的信息</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 1024, Required = false)]
[DefaultValue("")]
[SacDescription("PtyAProfitRemark", "收益备注", "1024", false, "填写上述字段或交易确认书中不能包含的信息;")]
public string PtyAProfitRemark { get; set; }
/// <summary>
/// 甲方代签产品名称
/// <para>长度:200</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:1 如甲方代签产品名称或甲方代签产品代码填值,则乙方代签产品名称和乙方代签产品代码禁止填值;2 甲方代签产品名称必须在主协议关联产品列表-产品名称中存在;</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PtyBPdctName), ConditionMap = new[] { null, "" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PtyBPdctName), ConditionMap = new[] { null, "" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 200, Required = false, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PtyAPdctName", "甲方代签产品名称", "200", false, "校验规则:\r\n1 如甲方代签产品名称或甲方代签产品代码填值,则乙方代签产品名称和乙方代签产品代码禁止填值;\r\n2 甲方代签产品名称必须在主协议关联产品列表-产品名称中存在;")]
public string PtyAPdctName { get; set; }
/// <summary>
/// 甲方交易对手码(产品)
/// <para>长度:20</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:如甲方代签产品名称或甲方代签产品代码填值,则乙方代签产品名称和乙方代签产品代码禁止填值</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PtyBPdctName), ConditionMap = new[] { null, "" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PtyBPdctName), ConditionMap = new[] { null, "" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 20, Required = false, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PytAPdctCode", "甲方交易对手码(产品)", "20", false, "校验规则:如甲方代签产品名称或甲方代签产品代码填值,则乙方代签产品名称和乙方代签产品代码禁止填值;")]
public string PytAPdctCode { get; set; }
/// <summary>
/// 乙方代签产品名称
/// <para>长度:200</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:1 如乙方代签产品名称或乙方代签产品代码填值,则甲方代签产品名称和甲方代签产品代码禁止填值;2 乙方代签产品名称必须在主协议关联产品列表-产品名称中存在;</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PtyAPdctName), ConditionMap = new[] { null, "" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PtyAPdctName), ConditionMap = new[] { null, "" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 200, Required = false, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PtyBPdctName", "乙方代签产品名称", "200", false, "校验规则:\r\n1 如乙方代签产品名称或乙方代签产品代码填值,则甲方代签产品名称和甲方代签产品代码禁止填值;\r\n2 乙方代签产品名称必须在主协议关联产品列表-产品名称中存在;")]
public string PtyBPdctName { get; set; }
/// <summary>
/// 乙方交易对手码(产品)
/// <para>长度:20</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:如乙方代签产品名称或乙方代签产品代码填值,则甲方代签产品名称和甲方代签产品代码禁止填值</para>
/// </summary>
[CheckConditionStringInMap(ConditionName = nameof(PtyAPdctName), ConditionMap = new[] { null, "" }, CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNotInMap(ConditionName = nameof(PtyAPdctName), ConditionMap = new[] { null, "" }, CheckHandleNameArr = new[] { "B" })]
[CheckStringMaxLength(MaxLength = 20, Required = false, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 0, Required = false, CheckHandleName = "B")]
[DefaultValue("")]
[SacDescription("PytBPdctCode", "乙方交易对手码(产品)", "20", false, "校验规则:如乙方代签产品名称或乙方代签产品代码填值,则甲方代签产品名称和甲方代签产品代码禁止填值;")]
public string PytBPdctCode { get; set; }
//TODO: 2.3互换上线时取消注释
///// <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
/// </summary>
[DefaultValue("")]
[SacDescription("Blank1", "空白1", "", false, "")]
public string Blank1 { get; set; }
/// <summary>
/// 空白2
/// </summary>
[DefaultValue("")]
[SacDescription("Blank2", "空白2", "", false, "")]
public string Blank2 { get; set; }
}
/// <summary>
/// 履约担保品详情
/// </summary>
[Table("A1005_SwapPerformanceGuaranteeAtt")]
public class SwapPerformanceGuaranteeAttModel : ReportSubBaseModel
{
/// <summary>
/// 履约担保品类型
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:校验规则:当履约保障类型(<see cref="PerformanceGuaranteeType"/>)选择部分担保或全额担保时必填;</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.PerformanceCollTypeMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "2", "3", "99" })]
[DefaultValue("")]
[SacDescription("PerformanceCollType", "履约担保品类型", "2", false, "校验规则:当履约保障类型选择部分担保或全额担保时必填;")]
public string PerformanceCollType { get; set; }
/// <summary>
/// 担保品担保范围
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:<see cref="YLErp.DBModels.Consts.ConsReport.PerformanceCollRangeMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "2" }, Required = false)]
[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; }
/// <summary>
/// 备注
/// <para>长度:1024</para>
/// <para>必填:否</para>
/// </summary>
[CheckStringMaxLength(MaxLength = 1024, Required = false)]
[DefaultValue("")]
[SacDescription("Remarks", "备注", "1024", false, "")]
public string Remarks { get; set; }
[XmlIgnore]
[DefaultValue("")]
[SacDescription("ConfirmationNo", "交易确认书编号", "100", false, "")]
public string ConfirmationNo { get; set; }
}
/// <summary>
/// 收益互换交易费用端支付
/// </summary>
[Table("A1005_PaymentMethod")]
public class PaymentMethodModel : ReportSubBaseModel
{
/// <summary>
/// 支付方式
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="PaymentMethodMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "2", "3" })]
[DefaultValue("")]
[SacDescription("PaymentMethod", "支付方式", "2", true, "")]
public string PaymentMethod { get; set; }
/// <summary>
/// 支付方
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="PayerMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1" })]
[DefaultValue("")]
[SacDescription("Payer", "支付方", "2", true, "")]
public string Payer { get; set; }
/// <summary>
/// 支付频率
/// <para>长度:2</para>
/// <para>必填:是</para>
/// <para>说明:<see cref="PaymentFreqMap"/></para>
/// </summary>
[CheckStringInMap(Map = new[] { "0", "1", "2" })]
[DefaultValue("")]
[SacDescription("PaymentFreq", "支付频率", "2", true, "")]
public string PaymentFreq { get; set; }
/// <summary>
/// 固定利率(%)
/// <para>长度:8,2</para>
/// <para>必填:否</para>
/// <para>说明:当"支付方式"选择为"固定利率时"时必填;</para>
/// </summary>
[CheckConditionStringValue(ConditionName = nameof(PaymentMethod), ConditionValue = "3", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = nameof(PaymentMethod), ConditionValue = "3", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 8, AfterPointLength = 2, CheckHandleName = "A")]
[CheckStringIntLength(BeforePointMaxLength = 8, AfterPointLength = 2, CheckHandleName = "B", Required = false)]
[DefaultValue("")]
[SacDescription("FixedInterestRate", "固定利率(%)", "8,2", false, "当支付方式选择为固定利率时时必填;")]
public string FixedInterestRate { get; set; }
/// <summary>
/// 浮动利率类型
/// <para>长度:2</para>
/// <para>必填:否</para>
/// <para>说明:当"支付方式"选择为"浮动利率"时必填;应当符合标准规范<see cref="RefRateTypeMap"/></para>
/// </summary>
[CheckConditionStringValue(ConditionName = nameof(PaymentMethod), ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = nameof(PaymentMethod), ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringMinLength(MinLength = 1, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 0, CheckHandleName = "B", Required = false)]
[DefaultValue("")]
[SacDescription("FloatInterestRate", "浮动利率类型", "2", false, "当支付方式选择为浮动利率时必填;\r\n应当符合标准规范;")]
public string FloatInterestRate { get; set; }
/// <summary>
/// 浮动利率参考标的
/// <para>长度:200</para>
/// <para>必填:否</para>
/// <para>说明:当"支付方式"选择为"浮动利率"时必填;</para>
/// </summary>
[CheckConditionStringValue(ConditionName = nameof(PaymentMethod), ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = nameof(PaymentMethod), ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringMinLength(MinLength = 1, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 200, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 0, CheckHandleName = "B", Required = false)]
[DefaultValue("")]
[SacDescription("ReferenceofFloatingInterestRate", "浮动利率参考标的", "200", false, "当支付方式选择为浮动利率时必填;")]
public string ReferenceofFloatingInterestRate { get; set; }
/// <summary>
/// 浮动基点
/// <para>长度:20</para>
/// <para>必填:否</para>
/// <para>说明:整数;当"支付方"式选择为"浮动利率"时,必填,如30\-30</para>
/// </summary>
[CheckConditionStringValue(ConditionName = nameof(PaymentMethod), ConditionValue = "2", CheckHandleNameArr = new[] { "A" })]
[CheckConditionStringNEQValue(ConditionName = nameof(PaymentMethod), ConditionValue = "2", CheckHandleNameArr = new[] { "B" })]
[CheckStringIntLength(BeforePointMaxLength = 20, CheckHandleName = "A")]
[CheckStringMaxLength(MaxLength = 0, CheckHandleName = "B", Required = false)]
[DefaultValue("")]
[SacDescription("BasePoint", "浮动基点", "20", false, "整数;\r\n当支付方式选择为浮动利率时,必填,如30、-30;")]
public string BasePoint { get; set; }
/// <summary>
/// 空白1
/// </summary>
[DefaultValue("")]
[SacDescription("Blank1", "空白1", "", false, "")]
public string Blank1 { get; set; }
/// <summary>
/// 空白2
/// </summary>
[DefaultValue("")]
[SacDescription("Blank2", "空白2", "", false, "")]
public string Blank2 { get; set; }
[XmlIgnore]
[DefaultValue("")]
[SacDescription("ConfirmationNo", "交易确认书编号", "100", false, "")]
public string ConfirmationNo { get; set; }
}
}