123 lines
5.0 KiB
C#
123 lines
5.0 KiB
C#
using YLErp.Commons;
|
||
using YLErp.DBModels.Consts;
|
||
using YLErp.Model;
|
||
using YLErp.Modules.TradeModule;
|
||
|
||
namespace YLErp.BLL.GenerateDocument
|
||
{
|
||
public class GeneralGenerateConfirmBook : BaseGenerate
|
||
{
|
||
public GeneralGenerateConfirmBook(trade_contract_group tradeContractGroup, string docType, int optId, string optName) : base(tradeContractGroup, docType, optId, optName)
|
||
{ }
|
||
|
||
protected override string ContractType => ContractTypeEnum.Trade;
|
||
|
||
public override string TemplateFile => $"交易确认书模板.docx";
|
||
|
||
public override string ContractNOSeed => "GTJA";
|
||
|
||
//HasGeneratedConfirmBook 已转换成方法,测试成功后可删除
|
||
//protected override Func<trade_contract_group, bool> FuncAfterGenerated
|
||
//{
|
||
// get
|
||
// {
|
||
// return (contractGroup) =>
|
||
// {
|
||
// var trade = db.trade.Find(contractGroup.trade.id);
|
||
// var childTds = db.trade.Where(x => x.ParentTradeId == trade.id);
|
||
// if (trade != null)
|
||
// {
|
||
// trade.HasGeneratedConfirmBook = 1;
|
||
// foreach (var child in childTds)
|
||
// {
|
||
// child.HasGeneratedConfirmBook = 1;
|
||
// }
|
||
// }
|
||
// return db.SaveChanges() >= 1;
|
||
// };
|
||
// }
|
||
//}
|
||
|
||
public override ReturnInfo<Dictionary<string, string>> AppendDictionary()
|
||
{
|
||
var dic = CurrentContractDataSet.ModelDic;
|
||
var tradeContractGroup = CurrentContractDataSet.ContractGroup;
|
||
var trade = tradeContractGroup.trade;
|
||
|
||
var settlementType = "价格";
|
||
if (trade.SettlementType == SettlementTypeEnum.SettlePrice)
|
||
{
|
||
settlementType = "结算价";
|
||
}
|
||
else if (trade.SettlementType == SettlementTypeEnum.ClosePrice)
|
||
{
|
||
settlementType = "收盘价";
|
||
}
|
||
|
||
if (trade.ExerciseMode == "American")
|
||
{
|
||
dic["{{美式期权结算价}}"] = $"所属交易所公布的标的合约可成交的最新价";
|
||
dic["{{欧式期权结算价}}"] = $"美式期权不适用";
|
||
}
|
||
else
|
||
{
|
||
dic["{{美式期权结算价}}"] = $"欧式期权不适用";
|
||
dic["{{欧式期权结算价}}"] = $"所属交易所在到期日收盘后公布的标的合约{settlementType}";
|
||
}
|
||
|
||
var tradeNotional = trade.Notional;
|
||
|
||
if (trade.OptionType == "看涨")
|
||
{
|
||
if (trade.ExerciseMode == "American")
|
||
{
|
||
dic["{{美式期权结算金额}}"] =
|
||
$"(行权时{trade.UnderlyingCode}合约可成交最新价 - {trade.ActualStrike:f2})× {tradeNotional:f2}";
|
||
dic["{{欧式期权结算金额}}"] = $"美式期权不适用";
|
||
}
|
||
else
|
||
{
|
||
dic["{{美式期权结算金额}}"] = $"欧式期权不适用";
|
||
dic["{{欧式期权结算金额}}"] =
|
||
$"({trade.ExerciseDate?.ToString("yyyy年M月d日")}{trade.UnderlyingCode}合约{settlementType} - {trade.ActualStrike:f2})× {tradeNotional:f2}";
|
||
}
|
||
}
|
||
else if (trade.OptionType == "看跌")
|
||
{
|
||
if (trade.ExerciseMode == "American")
|
||
{
|
||
dic["{{美式期权结算金额}}"] =
|
||
$"({trade.ActualStrike:f2} - 行权时{trade.UnderlyingCode}合约可成交最新价)× {tradeNotional:f2}";
|
||
dic["{{欧式期权结算金额}}"] = $"美式期权不适用";
|
||
}
|
||
else
|
||
{
|
||
dic["{{美式期权结算金额}}"] = $"欧式期权不适用";
|
||
dic["{{欧式期权结算金额}}"] =
|
||
$"({trade.ActualStrike:f2} - {trade.ExerciseDate?.ToString("yyyy年M月d日")}{trade.UnderlyingCode}合约{settlementType})× {tradeNotional:f2}";
|
||
}
|
||
}
|
||
return Return.Success(dic);
|
||
}
|
||
|
||
protected override string GetContractIndex(trade_contract_group tradeContractGroup)
|
||
{
|
||
var contractBLL = new TradeContractBLL(OptId, OptName);
|
||
var contractIndex = contractBLL.GetContractNo(ContractNOSeed);
|
||
return contractIndex;
|
||
}
|
||
|
||
protected override string GetContractNO(trade_contract_group tradeContractGroup, string contractIndex)
|
||
{
|
||
var client = CurrentContractDataSet.Client;
|
||
return $"{client.Number}C{contractIndex}";
|
||
}
|
||
|
||
protected override string GetOutputFileName(trade_contract_group tradeContractGroup, string contractIndex)
|
||
{
|
||
var trade = tradeContractGroup.trade;
|
||
return $"{trade.ClientName}交易确认书C{contractIndex}.{DocType.ToLower()}";
|
||
}
|
||
}
|
||
}
|