private void bindApplyAndProcessInfo(RefundOrScrapApplyform applyform) { lblAppliedTime.Text = applyform.AppliedTime.ToString("yyyy-MM-dd HH:mm:ss"); lblAppliedReason.Text = applyform.ApplyRemark; if (applyform.ProcessedTime.HasValue) { lblProcessedTime.Text = applyform.ProcessedTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); lblProcessedResult.Text = applyform.ProcessStatus == ApplyformProcessStatus.Finished ? StatusService.GetRefundApplyformStatus(applyform.Status, GetOrderRole(applyform.Order)) + " " + applyform.ProcessedFailedReason : string.Empty; } if (applyform.Status == RefundApplyformStatus.Refunded) { var refundInfoHTML = new StringBuilder(); refundInfoHTML.Append("<table><tr><th>航段</th><th>手续费率</th><th>手续费</th><th>退款金额</th></tr>"); int index = 0; var flightRefundFees = applyform.OriginalFlights.Join(applyform.RefundBill.Purchaser.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>", flightRefundFees.Count(), applyform.RefundBill.Purchaser.Amount.TrimInvaidZero()); } refundInfoHTML.Append("</tr>"); index++; } refundInfoHTML.Append("</table>"); divRefundFeeInfo.InnerHtml = refundInfoHTML.ToString(); } }
/// <summary> /// 确认价格信息修改 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void SurePrice(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { RefundOrScrapApplyform applyform = ApplyformQueryService.QueryRefundOrScrapApplyform(applyformId); var priceView = new List <PriceView>(); foreach (RepeaterItem item in ListVoyage.Items) { if (item.ItemType == ListItemType.Header || item.ItemType == ListItemType.Footer) { continue; } var releasePriceCtl = item.FindControl("ReleasePrice") as TextBox; var airportFeeCtl = item.FindControl("AirPortFee") as TextBox; var Departure = item.FindControl("VoyageStart") as HiddenField; var Arrival = item.FindControl("VoyageEnd") as HiddenField; var ReleasePrice = float.Parse(releasePriceCtl.Text.Trim()); var AirPortFee = float.Parse(airportFeeCtl.Text.Trim()); priceView.Add(new PriceView { AirportPair = new AirportPair(Departure.Value, Arrival.Value), AirportFee = (decimal)AirPortFee, Fare = (decimal)ReleasePrice }); } OrderProcessService.RevisePrice(applyform.OrderId, priceView, CurrentUser.UserName); ReleaseLock(applyform.OrderId); RegisterScript(this, "alert('价格修改成功!');location.href='/OrderModule/Operate/ChangeProcessList.aspx'", true); } } catch (Exception ex) { ShowExceptionMessage(ex, "修改价格"); } }
protected void Page_Load(object sender, EventArgs e) { RegisterOEMSkins("form.css"); if (!IsPostBack) { setBackButton(); decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { RefundOrScrapApplyform applyform = ApplyformQueryService.QueryRefundOrScrapApplyform(applyformId); string lockErrorMsg; if (Lock(applyformId, LockRole.Platform, "退/废票处理", out lockErrorMsg)) { if (applyform == null) { showErrorMessage("退/废票申请单不存在"); } else { RefundApplyform refundApplyform = applyform as RefundApplyform; if (refundApplyform != null && (refundApplyform.RefundType == RefundType.Involuntary || refundApplyform.RefundType == RefundType.SpecialReason)) { bindAttachment(applyform.Id); } bindData(applyform); } } else { showErrorMessage("锁定申请单失败。原因:" + lockErrorMsg); } } else { showErrorMessage("参数错误"); } } }
private void bindButtonView(RefundOrScrapApplyform applyform) { switch (applyform.Status) { case RefundApplyformStatus.AppliedForCancelReservation: RedircetToProvider.Visible = true; break; case RefundApplyformStatus.DeniedByProviderBusiness: btnDenyRefund.Visible = true; btnReDeal.Visible = true; if (applyform.IsSpecial && applyform is RefundApplyform && ((RefundApplyform)applyform).RefundType == RefundType.SpecialReason) { SetServiceCharge.Visible = true; } break; case RefundApplyformStatus.AppliedForPlatform: RedircetToProviderRefund.Visible = true; SetServiceCharge.Visible = true; break; } }
private void bindApplyAndProcessInfo(RefundOrScrapApplyform 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 = StatusService.GetRefundApplyformStatus(applyform.Status, GetOrderRole(applyform.Order)) + " " + applyform.ProcessedFailedReason; } if (applyform.Status == RefundApplyformStatus.Refunded) { var refundInfoHTML = new StringBuilder(); refundInfoHTML.Append("<table><tr><th>航段</th><th>手续费率</th><th>手续费</th><th>退款金额</th></tr>"); int index = 0; NormalRefundRoleBill bill = CompanyType.Platform == CurrentCompany.CompanyType ? applyform.RefundBill.Provider : getUserRoleBill(applyform.RefundBill); 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>", flightRefundFees.Count(), bill.Source.Details.Sum(p => p.Anticipation).TrimInvaidZero()); } refundInfoHTML.Append("</tr>"); index++; } refundInfoHTML.Append("</table>"); divRefundFeeInfo.InnerHtml = refundInfoHTML.ToString(); } }
private void BindFlight(RefundOrScrapApplyform applyform) { FlightInfos.DataSource = applyform.Flights.OrderBy(f => f.OriginalFlight.Serial).Select(flightInfo => new { Departure = flightInfo.OriginalFlight.Departure.City + " " + flightInfo.OriginalFlight.Departure.Name, Arrival = flightInfo.OriginalFlight.Arrival.City + " " + flightInfo.OriginalFlight.Arrival.Name, TakeoffTime = flightInfo.OriginalFlight.TakeoffTime.ToString("yyyy-MM-dd HH:mm"), LandingTime = flightInfo.OriginalFlight.LandingTime.ToString("yyyy-MM-dd HH:mm"), FightNo = flightInfo.OriginalFlight.Carrier.Code + flightInfo.OriginalFlight.FlightNo, Bunk = flightInfo.OriginalFlight.Bunk.Code, Discount = (flightInfo.OriginalFlight.Bunk.Discount * 100).TrimInvaidZero() } ); FlightInfos.DataBind(); }
private void bindData(RefundOrScrapApplyform applyform) { bindHeader(applyform); bindPassengers(applyform); bindVoyage(applyform); }
private void bindVoyage(RefundOrScrapApplyform applyform) { ListVoyage.DataSource = applyform.Order.PNRInfos.First().Flights; ListVoyage.DataBind(); flightType.InnerHtml = applyform.Order.TripType.GetDescription(); }
private void bindPassengers(RefundOrScrapApplyform applyform) { this.passengers.InitData(applyform.Order, applyform.Passengers, applyform.Flights.Select(f => f.OriginalFlight)); }
private void bindProcessInfo(RefundOrScrapApplyform applyform) { }
internal static void Freeze(RefundOrScrapApplyform refundOrScrapApplyform) { if (!refundOrScrapApplyform.Order.Bill.PayBill.RoyaltySucceed) { return; } var providerPayBill = refundOrScrapApplyform.Order.Bill.PayBill.Provider; var tradeNo = refundOrScrapApplyform.Order.Bill.PayBill.Tradement.TradeNo; var freezeAccount = providerPayBill.Owner.Account; var freezeAmount = getFreezeAmount(refundOrScrapApplyform, providerPayBill); 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(refundOrScrapApplyform.OrderId, refundOrScrapApplyform.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 = refundOrScrapApplyform.OrderId, ApplyformId = refundOrScrapApplyform.Id, TradeNo = refundOrScrapApplyform.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 = refundOrScrapApplyform.OrderId, ApplyformId = refundOrScrapApplyform.Id, Type = TradementBusinessType.Freeze, Request = freezeRequest, Response = freezeResponse, Time = DateTime.Now, Remark = "冻结出票方票款" }); } }
private void bindVoyages(RefundOrScrapApplyform applyform) { voyages.InitData(applyform.Order, applyform.Flights.Select(item => item.OriginalFlight)); }
private void bindProcessInfo(RefundOrScrapApplyform applyform) { var passenagerCount = applyform.Passengers.Count(); hdPassengerCount.Value = passenagerCount.ToString(); ChinaPay.B3B.Service.Order.Domain.Order order = applyform.Order; decimal CommissionRate = applyform.Order.Bill.PayBill.Provider.Source.Fare == 0 ? 0 : Math.Abs(applyform.Order.Bill.PayBill.Provider.Source.Commission) / applyform.Order.Bill.PayBill.Provider.Source.Fare; var flightsPassengerRelation = applyform.Flights.OrderBy(f => f.OriginalFlight.Serial) .Select(flightInfo => { var bill = applyform.RefundBill.Purchaser.Source.Details.First(f => f.Flight.Id == flightInfo.OriginalFlight.ReservateFlight); var maxRufundFee = bill != null ? bill.Anticipation : short.MaxValue; return (new { Refunded = bill.Amount, RefundFee = Math.Abs(bill.RefundFee), RefundReate = (bill.RefundRate * 100).ToString("0.00"), Flight = flightInfo, flightId = flightInfo.OriginalFlight.Id, Departure = flightInfo.OriginalFlight.Departure.Name, Arrival = flightInfo.OriginalFlight.Arrival.Name, Carrier = flightInfo.OriginalFlight.Carrier.Code, flightInfo.OriginalFlight.FlightNo, TicketPrice = flightInfo.OriginalFlight.Price.Fare, flightInfo.OriginalFlight.Id, Bunk = flightInfo.OriginalFlight.Bunk.Code, TakeoffTime = flightInfo.OriginalFlight.TakeoffTime.ToString("yyyy-MM-dd"), Rate = string.Empty, Fee = string.Empty, Total = string.Empty, PassengerCount = passenagerCount, EI = getEI(flightInfo.OriginalFlight, applyform.Order), TripType = order.TripType.GetDescription(), RenderServiceCharge = IsSpeical && !order.IsThirdRelation, Seaial = CNIndex[flightInfo.OriginalFlight.Serial], Passengers = from p in applyform.Passengers let serviceCharge = getServiceCharge(p) let ticket = p.Tickets.First( t => t.Flights .Any(f => f.ReservateFlight == flightInfo.OriginalFlight.ReservateFlight)) select new { first = bill.Anticipation, p.Name, No = ticket == null ? string.Empty : ticket.SettleCode + "-" + ticket.No, PassengerType = p.PassengerType.GetDescription(), flightInfo.OriginalFlight.Price.AirportFee, flightInfo.OriginalFlight.Price.BAF, TicketPrice = flightInfo.OriginalFlight.Price.Fare, YingShou = flightInfo.OriginalFlight.Price.Total - (CommissionRate * flightInfo.OriginalFlight.Price.Fare), Rate = string.Empty, Fee = string.Empty, AirportPair = string.Format("{0}-{1}", flightInfo.OriginalFlight.Departure.Code, flightInfo.OriginalFlight.Arrival.Code), TotalRefund = string.Empty, RenderServiceCharge = IsSpeical && !order.IsThirdRelation, p.CredentialsType, RefundServiceCharge = flightInfo.RefundServiceCharge == 0 ? string.Format("{0}(不退)", serviceCharge) : serviceCharge == flightInfo.RefundServiceCharge ? string.Format("{0}(全退)", flightInfo.RefundServiceCharge ?? 0) : string.Format("{0}(退{1})", serviceCharge, flightInfo. RefundServiceCharge ?? 0), Commission = IsSpeical ? "0" : (CommissionRate * flightInfo.OriginalFlight.Price.Fare). TrimInvaidZero(), //是否是特殊票,民航基金,燃油,佣金 StrFee = string.Format( "parameters={{IsSpeical:{0},AirportFee:{1},BAF:{2},Commission:{3},Price:{4},ServiceCharge:{5},maxRufundFee:{6}}}", IsSpeical ? 1 : 0, flightInfo.OriginalFlight.Price.AirportFee, flightInfo.OriginalFlight.Price.BAF, (IsSpeical ? 0 : CommissionRate * flightInfo.OriginalFlight.Price.Fare). TrimInvaidZero(), flightInfo.OriginalFlight.Price.Fare, 0, maxRufundFee ) } }); } ); RefundInfos.DataSource = flightsPassengerRelation; RefundInfos.DataBind(); }
private void bindPolicyRemark(RefundOrScrapApplyform applyform) { var product = applyform.Order.Provider.Product; lblPolicyRemark.Text = product.Remark; }
private void bindProcessInfo(RefundOrScrapApplyform applyform) { ProcessInfo.DataSource = applyform.Operations.Where(p => p.Company == CurrentCompany.CompanyId); ProcessInfo.DataBind(); Reason.Text = applyform.ProcessedFailedReason; }
private void bindNewPriceInputer(RefundOrScrapApplyform applyform) { ModPriceInfo.Visible = applyform.RequireRevisePrice; }
private void bindVoyages(RefundOrScrapApplyform applyform) { this.voyages.InitData(applyform.Order, applyform.Flights.Select(item => item.OriginalFlight)); ChangedServiceCharge.Value = renderedServiceCharge.InnerText = Math.Round(getServiceCharge(applyform.Passengers.First(), applyform.Order.IsSpecial), 2).ToString(); }