private void BindHeader(BalanceRefundApplyform applyform) { OrderRole orderRole = BasePage.GetOrderRole(applyform.Order); lblApplyformId.Text = applyform.Id.ToString(); linkOrderId.HRef = "OrderDetail.aspx?id=" + applyform.OrderId.ToString() + "&returnUrl=" + HttpUtility.UrlEncode(Request.Url.PathAndQuery); linkOrderId.InnerText = applyform.OrderId.ToString(); this.lblApplyType.Text = "差额退款"; var product = applyform.Order.Provider.Product; if (product is SpeicalProductInfo) { var specialProductInfo = product as SpeicalProductInfo; this.lblProductType.Text = applyform.Order.Product.ProductType.GetDescription() + "(" + specialProductInfo.SpeicalProductType.GetDescription() + ")"; } else { this.lblProductType.Text = product.ProductType.GetDescription(); } lblStatus.Text = StatusService.GetBalanceRefundStatus(applyform.BalanceRefundStatus, orderRole); if (applyform.Order.Provider != null && applyform.Order.Provider.Product is Service.Order.Domain.CommonProductInfo) { this.lblTicketType.Text = (applyform.Order.Provider.Product as Service.Order.Domain.CommonProductInfo).TicketType.ToString(); } else { this.lblTicketType.Text = "-"; } lblPNR.Text = AppendPNR(applyform.NewPNR, string.Empty); lblPNR.Text += AppendPNR(applyform.OriginalPNR, string.IsNullOrWhiteSpace(lblPNR.Text) ? string.Empty : "原编码:"); }
private void bindBalanceRefund(BalanceRefundApplyform applyform) { var refundInfoHTML = new StringBuilder(); refundInfoHTML.Append("<h3 class=\"titleBg\">差错退款信息</h3><table> <tr><th>姓名</th><th>类型</th><th>票号</th><th>票面价</th><th>名航基金</th><th>燃油</th><th>返佣</th><th>收款金额</th><th>首次退款金额</th><th>本次退款金额</th><th>退款金额总计</th> </tr>"); var index = 0; var bill = CompanyType.Platform == CurrentCompany.CompanyType ? applyform.RefundBill.Provider : getUserRoleBill(applyform.RefundBill); var commission = applyform.Order.Bill.PayBill.Provider.Source.Rebate; int passengerCount = applyform.Applyform.Passengers.Count(); decimal refundedFee = applyform.Applyform.RefundBill.Provider.Amount / passengerCount; decimal balanceFee = (decimal)(applyform.Applyform.Flights.Sum(f => f.BanlanceFare) / passengerCount); foreach (var passenger in applyform.Applyform.Passengers) { refundInfoHTML.Append("<tr>"); refundInfoHTML.AppendFormat("<td>{0}</td>", passenger.Name); refundInfoHTML.AppendFormat("<td>{0}</td>", passenger.PassengerType.GetDescription()); refundInfoHTML.AppendFormat("<td>{0}</td>", string.Join("<br />", passenger.Tickets.Select(t => t.SettleCode + "-" + t.No))); refundInfoHTML.AppendFormat("<td>{0}</td>", passenger.Price.Fare); refundInfoHTML.AppendFormat("<td>{0:0.00}</td>", passenger.Price.AirportFee); refundInfoHTML.AppendFormat("<td>{0:0.00}</td>", passenger.Price.BAF); refundInfoHTML.AppendFormat("<td>{0:0.0}%</td>", commission * 100); refundInfoHTML.AppendFormat("<td>{0:0.00}</td>", applyform.Applyform.Flights.Sum(f => f.OriginalFlight.Price.Fare * (1 - commission))); refundInfoHTML.AppendFormat("<td>{0}</td>", refundedFee); refundInfoHTML.AppendFormat("<td class='price'>{0:0.00}</td>", balanceFee); refundInfoHTML.AppendFormat("<td>{0}</td>", refundedFee + balanceFee); refundInfoHTML.Append("</tr>"); index++; } refundInfoHTML.Append("</table>"); this.BalanceRefundInfo.InnerHtml = refundInfoHTML.ToString(); BalanceRefundInfo.Visible = true; }
private void bindHeader(BalanceRefundApplyform applyform) { lblApplyformId.Text = applyform.Id.ToString(); linkOrderId.HRef = "OrderDetail.aspx?id=" + applyform.OrderId.ToString() + "&returnUrl=" + HttpUtility.UrlEncode(Request.Url.PathAndQuery); linkOrderId.InnerText = applyform.OrderId.ToString(); lblApplyType.Text = "差错退款"; ProductInfo product = applyform.Order.IsThirdRelation ? applyform.Order.Supplier.Product : applyform.Order.Provider.Product; if (product is SpeicalProductInfo) { var specialProductInfo = product as SpeicalProductInfo; lblProductType.Text = applyform.Order.Product.ProductType.GetDescription() + "(" + specialProductInfo.SpeicalProductType.GetDescription() + ")"; } else { lblProductType.Text = applyform.Order.Product.ProductType.GetDescription(); } lblStatus.Text = StatusService.GetBalanceRefundStatus(applyform.BalanceRefundStatus, OrderRole.Platform); if (applyform.Order.Provider != null && applyform.Order.Provider.Product is CommonProductInfo) { lblTicketType.Text = (applyform.Order.Provider.Product as CommonProductInfo).TicketType.ToString(); } else { lblTicketType.Text = "-"; } lblPNR.Text = AppendPNR(applyform.NewPNR, string.Empty); lblPNR.Text += AppendPNR(applyform.OriginalPNR, string.IsNullOrWhiteSpace(lblPNR.Text) ? string.Empty : "原编码:"); linkPurchaser.InnerText = applyform.PurchaserName; linkPurchaser.HRef = "/OrganizationModule/TerraceModule/CompanyInfoManage/LookUpCompanyInfo.aspx?CompanyId=" + applyform.PurchaserId.ToString(); linkProvider.InnerText = applyform.ProviderName; linkProvider.HRef = "/OrganizationModule/TerraceModule/CompanyInfoManage/LookUpCompanyInfo.aspx?CompanyId=" + applyform.ProviderId.ToString(); }
protected void Page_Load(object sender, EventArgs e) { RegisterOEMSkins("form.css"); if (!IsPostBack) { setBackButton(); decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { string lockErrorMsg; if (Lock(applyformId, LockRole.Provider, "退款", out lockErrorMsg)) { BalanceRefundApplyform applyform = ApplyformQueryService.QueryBalanceRefundApplyform(applyformId); if (applyform == null) { showErrorMessage("差额退款申请单不存在"); } else { bindData(applyform); } } else { showErrorMessage("锁定申请单失败。原因:" + lockErrorMsg); } } else { showErrorMessage("参数错误"); } } }
/// <summary> /// 处理按钮 /// </summary> /// <param name="applyform"></param> private void setButton(BalanceRefundApplyform applyform) { if (applyform.BalanceRefundStatus == BalanceRefundProcessStatus.AppliedForPlatform || applyform.BalanceRefundStatus == BalanceRefundProcessStatus.DeniedByProviderBusiness) { btnProcess.Visible = true; btnProcess.Attributes.Add("onclick", "location.href='HandleBalanceRefund.aspx?id=" + applyform.Id + "'"); } }
private static decimal getFreezeAmount(BalanceRefundApplyform refundOrScrapApplyform, NormalPayRoleBill roleBill, NormalRefundRoleBill provider) { var payAmount = roleBill.Source.Details.Where( item => refundOrScrapApplyform.Applyform.Passengers.Any(p => p.Id == item.Passenger) && refundOrScrapApplyform.Applyform.Flights.Any(f => f.OriginalFlight.ReservateFlight == item.Flight.Id)).Sum(item => item.Amount); return(payAmount - Math.Abs(provider.Amount)); }
private void bindData(BalanceRefundApplyform applyform) { BindHeader(applyform); bindVoyages(applyform.Applyform); bindPassengers(applyform.Applyform); bindPolicyRemark(applyform); bindApplyAndProcessInfo(applyform); //bindBill(applyform); bindBalanceRefund(applyform); bindRefundInfo(applyform.Applyform); }
private void bindData(BalanceRefundApplyform applyform) { bindHeader(applyform); bindVoyages(applyform.Applyform); bindPassengers(applyform.Applyform); bindApplyAndProcessInfo(applyform.Applyform); bindApplyInfo(applyform.Applyform, applyform.Id); bindProcessInfo(applyform.Applyform); bindBalanceRefund(applyform); bindRefundInfo(applyform.Applyform); }
private void bindData(BalanceRefundApplyform applyform) { bindHeader(applyform); bindVoyages(applyform.Applyform); bindPassengers(applyform.Applyform); bindApplyAndProcessInfo(applyform.Applyform); bindApplyFormBill(applyform.Applyform); bindOrderContactInfo(applyform.Applyform); bindBalanceRefund(applyform); bindRefundInfo(applyform.Applyform); }
private void bindApplyInfo(BalanceRefundApplyform applyform) { var submitTime = applyform.RefundBill.TradeTime; var remark = applyform.RefundBill.Remark; var InfoHTML = new StringBuilder(); InfoHTML.Append("<table><tr><th>提交时间</th><th>差错备注</th></tr>"); InfoHTML.Append("<tr>"); InfoHTML.AppendFormat("<td>{0}</td><td>{1}</td>", submitTime, remark); InfoHTML.Append("</table>"); this.divApplication.InnerHtml = InfoHTML.ToString(); }
private void bindApplyInfo(RefundOrScrapApplyform applyform, decimal applyformId) { BalanceRefundApplyform form = ApplyformQueryService.QueryBalanceRefundApplyform(applyformId); DateTime?submitTime = form.RefundBill.TradeTime; string remark = form.RefundBill.Remark; var InfoHTML = new StringBuilder(); InfoHTML.Append("<table><tr><th>提交时间</th><th>差错备注</th></tr>"); InfoHTML.Append("<tr>"); InfoHTML.AppendFormat("<td>{0}</td><td>{1}</td>", submitTime, remark); InfoHTML.Append("</table>"); divApplication.InnerHtml = InfoHTML.ToString(); }
private void bindApplyAndProcessInfo(BalanceRefundApplyform applyform) { lblAppliedTime.Text = applyform.AppliedTime.ToString("yyyy-MM-dd HH:mm"); lblAppliedReason.Text = applyform.ApplyRemark; if (applyform.ProcessedTime.HasValue) { lblProcessedTime.Text = applyform.ProcessedTime.Value.ToString("yyyy-MM-dd HH:mm"); lblProcessedResult.Text = applyform.BalanceRefundStatus == BalanceRefundProcessStatus.Finished ? StatusService.GetBalanceRefundStatus(applyform.BalanceRefundStatus, GetOrderRole(applyform.Order)) + " " + applyform.ProcessedFailedReason : string.Empty; } var refundInfoHTML = new StringBuilder(); refundInfoHTML.Append("<table><tr><th>航段</th><th>手续费率</th><th>手续费</th><th>应退金额</th><th>实退金额</th></tr>"); int index = 0; NormalRefundRoleBill bill = applyform.RefundBill.Provider; var flightRefundFees = applyform.OriginalFlights.Join(bill.Source.Details, f => f.ReservateFlight, f => f.Flight.Id, (f1, f2) => new { flight = f1, fee = f2 }); foreach (var item in flightRefundFees) { refundInfoHTML.Append("<tr>"); refundInfoHTML.AppendFormat("<td>{0} - {1}</td>", item.flight.Departure.City, item.flight.Arrival.City); refundInfoHTML.AppendFormat("<td>{0}%</td>", (item.fee.RefundRate * 100).TrimInvaidZero()); refundInfoHTML.AppendFormat("<td>{0}</td>", Math.Abs(item.fee.RefundFee).TrimInvaidZero()); if (index == 0) { refundInfoHTML.AppendFormat("<td rowspan='{0}'>{1}</td>", applyform.Applyform.Flights.Count() * applyform.Passengers.Count(), bill.Source.Anticipation.TrimInvaidZero()); refundInfoHTML.AppendFormat("<td rowspan='{0}'>{1}</td>", applyform.Applyform.Flights.Count() * applyform.Passengers.Count(), bill.Amount.TrimInvaidZero()); } refundInfoHTML.Append("</tr>"); index++; } refundInfoHTML.Append("</table>"); divRefundFeeInfo.InnerHtml = refundInfoHTML.ToString(); }
protected void Page_Load(object sender, EventArgs e) { RegisterOEMSkins("form.css"); if (!IsPostBack) { setBackButton(); if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { ; BalanceRefundApplyform applyform = ApplyformQueryService.QueryBalanceRefundApplyform(applyformId); if (applyform == null) { showErrorMessage("差额退款申请单不存在"); } else { bindData(applyform); } } else { showErrorMessage("参数错误"); } } }
private void bindPolicyRemark(BalanceRefundApplyform applyform) { var product = applyform.Order.Provider.Product; lblPolicyRemark.Text = product.Remark; }
internal static void Freeze(BalanceRefundApplyform balanceRefundApplyform) { if (!balanceRefundApplyform.Order.Bill.PayBill.RoyaltySucceed) { return; } if (!balanceRefundApplyform.Applyform.RefundBill.Succeed) { return; } var providerPayBill = balanceRefundApplyform.Order.Bill.PayBill.Provider; var tradeNo = balanceRefundApplyform.Order.Bill.PayBill.Tradement.TradeNo; var freezeAccount = providerPayBill.Owner.Account; var freezeAmount = getFreezeAmount(balanceRefundApplyform, providerPayBill, balanceRefundApplyform.Applyform.RefundBill.Provider); var freezeRequest = string.Format("交易流水号:{0} 账号:{1} 金额:{2}", tradeNo, freezeAccount, freezeAmount); var freezeResponse = string.Empty; string freezeNo = null; var freezeSuccess = false; try { TradeFreezeRequestProcess request = new TradeFreezeRequestProcess(balanceRefundApplyform.OrderId, balanceRefundApplyform.Id, tradeNo, providerPayBill.Owner.Account, freezeAmount); if (request.Execute()) { freezeNo = request.FreezeNo; freezeResponse = "冻结号:" + freezeNo; freezeSuccess = true; } else { freezeResponse = "冻结号失败," + request.Message; freezeSuccess = false; } } catch (Exception ex) { freezeResponse = ex.Message; } finally { // 记录冻结记录 var freezeInfo = new FreezeInfo() { OrderId = balanceRefundApplyform.OrderId, ApplyformId = balanceRefundApplyform.Id, TradeNo = balanceRefundApplyform.Order.Bill.PayBill.Tradement.TradeNo, Account = freezeAccount, Amount = freezeAmount, No = freezeNo, RequestTime = DateTime.Now, Success = freezeSuccess }; if (freezeSuccess) { freezeInfo.ProcessedTime = DateTime.Now; freezeInfo.Remark = string.Empty; } else { freezeInfo.Remark = freezeResponse; } var repository = Order.Repository.Factory.CreateFreezeRepository(); repository.Save(freezeInfo); // 记录交互日志 Service.LogService.SaveTradementLog(new TradementLog() { OrderId = balanceRefundApplyform.OrderId, ApplyformId = balanceRefundApplyform.Id, Type = TradementBusinessType.Freeze, Request = freezeRequest, Response = freezeResponse, Time = DateTime.Now, Remark = "差额退款,冻结出票方票款" }); } }
public BalanceRefundApplyformNotifier(BalanceRefundApplyform balanceRefundApplyform) { }