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();
     }
 }
Esempio n. 2
0
 /// <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, "修改价格");
     }
 }
Esempio n. 3
0
 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("参数错误");
         }
     }
 }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
 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();
     }
 }
Esempio n. 6
0
 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();
 }
Esempio n. 7
0
 private void bindData(RefundOrScrapApplyform applyform)
 {
     bindHeader(applyform);
     bindPassengers(applyform);
     bindVoyage(applyform);
 }
Esempio n. 8
0
 private void bindVoyage(RefundOrScrapApplyform applyform)
 {
     ListVoyage.DataSource = applyform.Order.PNRInfos.First().Flights;
     ListVoyage.DataBind();
     flightType.InnerHtml = applyform.Order.TripType.GetDescription();
 }
Esempio n. 9
0
 private void bindPassengers(RefundOrScrapApplyform applyform)
 {
     this.passengers.InitData(applyform.Order, applyform.Passengers, applyform.Flights.Select(f => f.OriginalFlight));
 }
Esempio n. 10
0
 private void bindProcessInfo(RefundOrScrapApplyform applyform)
 {
 }
Esempio n. 11
0
        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      = "冻结出票方票款"
                });
            }
        }
Esempio n. 12
0
 private void bindVoyages(RefundOrScrapApplyform applyform)
 {
     voyages.InitData(applyform.Order, applyform.Flights.Select(item => item.OriginalFlight));
 }
Esempio n. 13
0
        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();
        }
Esempio n. 14
0
        private void bindPolicyRemark(RefundOrScrapApplyform applyform)
        {
            var product = applyform.Order.Provider.Product;

            lblPolicyRemark.Text = product.Remark;
        }
Esempio n. 15
0
 private void bindProcessInfo(RefundOrScrapApplyform applyform)
 {
     ProcessInfo.DataSource = applyform.Operations.Where(p => p.Company == CurrentCompany.CompanyId);
     ProcessInfo.DataBind();
     Reason.Text = applyform.ProcessedFailedReason;
 }
Esempio n. 16
0
 private void bindNewPriceInputer(RefundOrScrapApplyform applyform)
 {
     ModPriceInfo.Visible = applyform.RequireRevisePrice;
 }
Esempio n. 17
0
 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();
 }