using Org.BouncyCastle.Ocsp; using YLErp.DBModels; using YLErp.Modules.EodModule; namespace YLErp.Web.Controllers { public class BondPaymentController : BaseController { readonly IViewRenderService _viewRenderer; public BondPaymentController(IViewRenderService viewRenderer) { _viewRenderer = viewRenderer; } [MyAuthorize("结算管理-债券付息数据查看")] public ActionResult BondPaymentList() { return View(); } [HttpPost] public JsonResult BondPaymentQuery(BondPaymentReq req) { var sList = new BondPaymentService(CurUser).SearchList(req); return Json(sList); } public ActionResult BondPaymentView(string enid) { var intid = DecryptLong(enid); var r = yldb.bondPayment.Find(intid); var um = yldb.underlying_manager.FirstOrDefault(x => x.UnderlyingCode == r.underlyingCode); r.symbol = um?.UnderlyingName; r.security_id = um?.UnderlyingCode; return View(r); } public ActionResult BondPaymentEdit(string enid) { if (string.IsNullOrEmpty(enid) || enid == "0") { return View(new BondPayment()); } var intid = DecryptLong(enid); var dbmodel = yldb.bondPayment.Find(intid); if (dbmodel == null) { return ShowError("找不到数据"); } var um = yldb.underlying_manager.FirstOrDefault(x => x.UnderlyingCode == dbmodel.security_id); dbmodel.symbol = um?.UnderlyingName; return View(dbmodel); } public JsonResult BondPaymentEditJson(BondPayment req) { if (!string.IsNullOrEmpty(req.EncryptId)) { req.id = DecryptLong(req.EncryptId); } var r = new BondPaymentService(CurUser).SaveBondPayment(req); return JsonSuccess("更新成功", r); } [HttpPost] public JsonResult DeletBondPayment(string id) { var intid = DecryptLong(id); var r = yldb.bondPayment.Find(intid); if (r == null) { return JsonError("找不到债券期间付息信息"); } yldb.bondPayment.Remove(r); yldb.SaveChanges(); return JsonSuccess("删除成功"); } /// /// 获取某债券期间付息,扣除当天已消费部分 /// 【已废弃·不再用于平仓/互换预览】分红展示改由后端 SwapDealService.GetPreEodDividendSum /// 读 EOD PosiDividendSum 提供(方案C,单一可信源)。前端 unwindSwapTrade.js / incomeSwapTrade.js /// 的 getDivindIn 不再调用本接口。本接口仅保留供历史调用方,consumedDividend 查询无日期过滤的 /// 隐患随废弃自然消解,不再单独修复。 /// /// /// /// /// 交易ID(可选,用于扣除已消费分红) /// 结算日期(可选) /// public JsonResult GetBondPayMentInterest(DateTime startDate, DateTime endDate, string underlyingCode, int? tradeId = null, DateTime? unwindDate = null) { var payments = new BondPaymentService(CurUser).GetBondPayments(underlyingCode, startDate, endDate); decimal totalInterest = payments.Sum(s => s.payment_interest ?? 0) * 0.01m; // 考虑增值税,与 EOD UpdateEodPosition 口径一致 var um = yldb.underlying_manager.FirstOrDefault(x => x.UnderlyingCode == underlyingCode); if (um != null) { decimal tax = um.ValueAddedTax ?? 0; totalInterest = totalInterest / (1 + tax) * (1 - tax); } decimal consumedDividend = 0; if (tradeId.HasValue) { List swapEventTypes = new List() { (int)SwapEventTypeEnum.互换, (int)SwapEventTypeEnum.自动互换,(int)SwapEventTypeEnum.平仓 }; consumedDividend = yldb.swap_flow_event .Where(x => x.SwapTradeId == tradeId.Value && swapEventTypes.Contains(x.EventType) && x.DataState == (int)SwapFlowDateStateEnum.完成) .Sum(s => s.DividendIn); } return JsonSuccess("", new { totalInterest, consumedDividend }); } } }