コード例 #1
0
        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 : "原编码:");
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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();
        }
コード例 #4
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))
         {
             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("参数错误");
         }
     }
 }
コード例 #5
0
 /// <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 + "'");
     }
 }
コード例 #6
0
ファイル: FreezeService.cs プロジェクト: 842549829/Pool
        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));
        }
コード例 #7
0
 private void bindData(BalanceRefundApplyform applyform)
 {
     BindHeader(applyform);
     bindVoyages(applyform.Applyform);
     bindPassengers(applyform.Applyform);
     bindPolicyRemark(applyform);
     bindApplyAndProcessInfo(applyform);
     //bindBill(applyform);
     bindBalanceRefund(applyform);
     bindRefundInfo(applyform.Applyform);
 }
コード例 #8
0
 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);
 }
コード例 #9
0
 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);
 }
コード例 #10
0
        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();
        }
コード例 #11
0
        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();
        }
コード例 #12
0
        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();
        }
コード例 #13
0
 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("参数错误");
         }
     }
 }
コード例 #14
0
        private void bindPolicyRemark(BalanceRefundApplyform applyform)
        {
            var product = applyform.Order.Provider.Product;

            lblPolicyRemark.Text = product.Remark;
        }
コード例 #15
0
ファイル: FreezeService.cs プロジェクト: 842549829/Pool
        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      = "差额退款,冻结出票方票款"
                });
            }
        }
コード例 #16
0
 public BalanceRefundApplyformNotifier(BalanceRefundApplyform balanceRefundApplyform)
 {
 }