namespace YLErp.Modules.TradeModule.OrderModule { partial class TradeSavePreHandler { private static void CheckSnowball(trade req) { var snowball = req.trade_snowball; if (snowball.PrepaymentUsed) { if (snowball.SpreadStrikeAtMaturity1 == null) { throw new ServiceException("敲入执行价格 必须填写"); } snowball.KOObservationDates = snowball.KOObservationDates?.Trim(new[] { ' ', ';' }); if (string.IsNullOrWhiteSpace(snowball.KOObservationDates)) { throw new ServiceException("敲出观察频率 必须填写"); } req.Strike = snowball.SpreadStrikeAtMaturity1; snowball.IsAnnualized2 = false; snowball.AnnualizeFactor2 = 1; req.MetaDic[nameof(snowball.AnnualizeFactor2)] = "/"; snowball.KOPayoffType = KOPayoffTypeEnum.Rebate; snowball.KIPayoffType = KIPayoffTypeEnum.Prepayment; } else { if (!snowball.IsAnnualized2 || !snowball.AnnualizeFactor2.HasValue) { snowball.AnnualizeFactor2 = 1; req.MetaDic[nameof(snowball.AnnualizeFactor2)] = "/"; } if (snowball.KIPayoffType == KIPayoffTypeEnum.None) { req.Strike = req.IsMoneynessOptionData ? 1 : req.SpotPrice; } else { req.Strike = snowball.SpreadStrikeAtMaturity1; } } } } }