Files
zszq-trs/YLErpDAL/BLL/GenerateDocument/GeneralGenerateConfirmBook.cs
T
2024-05-09 14:06:26 +08:00

123 lines
5.0 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 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()}";
}
}
}