Ejemplo n.º 1
0
        /// <summary>
        /// 申请退/废票
        /// </summary>
        /// <param name="orderId">订单号</param>
        /// <param name="pnrCode">编码(小编码|大编码)</param>
        /// <param name="passengers">乘机人(乘机人id,以','隔开)</param>
        /// <param name="voyages">航段(航段id,以','隔开)</param>
        /// <param name="refundType">退票类型(当日作废:-1,升舱全退:0,自愿按客规退票:1,非自愿退票:2,特殊原因退票:3)</param>
        /// <param name="reason">退/废票原因</param>
        /// <param name="DelegageCancelPNR">是否委托平台取消编码</param>
        public string ApplyRefund(decimal orderId, string pnrCode, string passengers, string voyages, int refundType, string reason, bool DelegageCancelPNR, string filePath)
        {
            try
            {
                RefundOrScrapApplyformView applyformView = null;
                if (refundType == -1)
                {
                    applyformView = new ScrapApplyformView();
                }
                else
                {
                    applyformView = new RefundApplyformView();
                    var view = applyformView as RefundApplyformView;
                    view.RefundType = (RefundType)refundType;
                    if (!string.IsNullOrEmpty(filePath) && (view.RefundType == RefundType.SpecialReason || view.RefundType == RefundType.Involuntary))
                    {
                        var       bytes     = FileService.GetFileBytes(filePath);
                        Thumbnail thumbnail = new Thumbnail();
                        view.ApplyAttachmentView = new List <ApplyAttachmentView>();
                        view.ApplyAttachmentView.Add(new ApplyAttachmentView {
                            FilePath  = filePath,
                            Thumbnail = thumbnail.MakeThumb(100, bytes)
                        });
                        //view.Thumbnail = thumbnail.MakeThumb(100, "");
                    }
                    applyformView = view;
                }
                applyformView.PNR               = getPNRPair(pnrCode);
                applyformView.Passengers        = getPassengers(passengers);
                applyformView.Reason            = reason;
                applyformView.DelegageCancelPNR = DelegageCancelPNR;
                foreach (var item in getRefundVoyages(voyages))
                {
                    applyformView.AddVoyage(item);
                }
                if (Session["NeedPlatformCancelPNR"] != null && Session["NeedPlatformCancelPNR"].ToString() == orderId.ToString())
                {
                    applyformView.NeedPlatfromCancelPNR = true;
                }
                var applyform = OrderProcessService.Apply(orderId, applyformView, CurrentUser, BasePage.OwnerOEMId) as RefundOrScrapApplyform;
                releaseLock(orderId);
                //if (applyform.Status == RefundApplyformStatus.AppliedForProvider && (applyform.Order.Source == OrderSource.ContentImport || applyform.Order.Source == OrderSource.CodeImport || applyform.Order.Source == OrderSource.InterfaceOrder))
                //{
                //    var pnr = CommandService.GetReservedPnr(applyformView.PNR, Guid.Empty);
                //    if (!pnr.Success || pnr.Success && !pnr.Result.HasCanceled)
                //    {
                //        return "OK1";
                //    }
                //}

                return(OK);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
Ejemplo n.º 2
0
 internal ScrapApplyform(Order order, ScrapApplyformView scrapApplyformView, Guid oemId)
     : base(order, scrapApplyformView, oemId)
 {
 }
Ejemplo n.º 3
0
        private decimal ApplyRefundObj(Order order)
        {
            RefundOrScrapApplyformView applyformView = null;

            if (_refundType == "-1")
            {
                applyformView = new ScrapApplyformView();
            }
            else
            {
                applyformView = new RefundApplyformView()
                {
                    RefundType = (RefundType)int.Parse(_refundType)
                };
            }
            var            app      = Service.ApplyformQueryService.QueryApplyforms(order.Id);
            string         pid      = "";
            string         vid      = "";
            List <PNRPair> _pnrCode = new List <PNRPair>();

            foreach (var item in _passengers.Split('^'))
            {
                foreach (var o in order.PNRInfos)
                {
                    var j = o.Passengers.FirstOrDefault(i => i.Name == item);
                    if (j != null)
                    {
                        if (pid != "")
                        {
                            pid += "," + j.Id.ToString();
                        }
                        else
                        {
                            pid += j.Id.ToString();
                        }
                        _pnrCode.Add(o.Code);
                        if (!_pnrCode.Contains(o.Code))
                        {
                            throw new InterfaceInvokeException("9", "当前订单中存在不同的编码");
                        }
                        foreach (var f in _voyages.Split('^'))
                        {
                            if (f.Split('|').Count() < 3)
                            {
                                throw new InterfaceInvokeException("1", "航班信息");
                            }
                            if (f.Split('|')[0].Length != 6)
                            {
                                throw new InterfaceInvokeException("1", "城市对");
                            }
                            var departure  = f.Split('|')[0].Substring(0, 3).ToUpper();
                            var arrival    = f.Split('|')[0].Substring(3, 3).ToUpper();
                            var flightNo   = f.Split('|')[1];
                            var flightTime = f.Split('|')[2];
                            var ff         = o.Flights.FirstOrDefault(i => i.Departure.Code == departure && i.Arrival.Code == arrival && i.FlightNo == flightNo && i.TakeoffTime.Date == DateTime.Parse(flightTime));
                            if (ff != null)
                            {
                                if (!vid.Split(',').Contains(ff.Id.ToString()))
                                {
                                    if (vid != "")
                                    {
                                        vid += "," + ff.Id.ToString();
                                    }
                                    else
                                    {
                                        vid += ff.Id.ToString();
                                    }
                                }
                            }
                        }
                        break;
                    }
                }
            }
            if (pid == "")
            {
                throw new InterfaceInvokeException("9", "当前订单中没有找到对应的乘机人信息");
            }
            if (vid == "")
            {
                throw new InterfaceInvokeException("9", "当前订单中没有找到对应的航班信息");
            }
            if (!_pnrCode.Any())
            {
                throw new InterfaceInvokeException("9", "当前订单中没有找到对应的编码信息");
            }

            applyformView.PNR        = _pnrCode.FirstOrDefault();
            applyformView.Passengers = ApplyOrder.getPassengers(pid);
            applyformView.Reason     = _reason;
            foreach (var item in ApplyOrder.getRefundVoyages(vid))
            {
                applyformView.AddVoyage(item);
            }
            string lockErrorMsg = "";

            Lock(order.Id, Service.Locker.LockRole.Purchaser, "申请退改签", out lockErrorMsg);
            if (!string.IsNullOrEmpty(lockErrorMsg))
            {
                throw new InterfaceInvokeException("9", lockErrorMsg);
            }
            var apply = Service.OrderProcessService.Apply(order.Id, applyformView, Employee, Guid.Empty);

            releaseLock(order.Id);
            return(apply.Id);
        }
Ejemplo n.º 4
0
        public object CheckRefundCondition(decimal orderId, string passenger, string voyages, int refundType, string pnr, bool DelegageCancelPNR)
        {
            var passgners = getPassengers(passenger);
            var _voyages  = getRefundVoyages(voyages);
            var pnrPair   = getPNRPair(pnr);
            var order     = OrderQueryService.QueryOrder(orderId);


            RefundOrScrapApplyformView applyformView = null;

            if (refundType == -1)
            {
                applyformView = new ScrapApplyformView();
            }
            else
            {
                applyformView = new RefundApplyformView();
                var view = applyformView as RefundApplyformView;
                view.RefundType = (RefundType)refundType;

                applyformView = view;
            }
            applyformView.PNR               = pnrPair;
            applyformView.Passengers        = passgners;
            applyformView.Reason            = "退票验证";
            applyformView.DelegageCancelPNR = DelegageCancelPNR;
            foreach (var item in getRefundVoyages(voyages))
            {
                applyformView.AddVoyage(item);
            }
            OrderProcessService.ApplyValidate(orderId, applyformView, CurrentUser, BasePage.OwnerOEMId);
            if (order == null)
            {
                throw new CustomException("订单不存在!");
            }
            if (!SystemParamService.ValidateRefundCondition)
            {
                return(new
                {
                    PNRCancled = true,
                    TicketUnUse = true,
                    IsNotPrinted = true,
                    IsSameName = true,
                    Successed = true,
                    NeedPlatfromDeal = false,
                    CheckCondition = false
                });
            }
            var result = OrderProcessService.CheckRefundCondition(order, passgners, _voyages, pnrPair, DelegageCancelPNR, BasePage.OwnerOEMId);

            if (result.Item5)
            {
                return(new
                {
                    PNRCancled = result.Item1,
                    TicketUnUse = result.Item2,
                    IsNotPrinted = result.Item3,
                    IsSameName = result.Item4,
                    Successed = result.Item1 && result.Item2 && result.Item3 && result.Item4,
                    NeedPlatfromDeal = false,
                    CheckCondition = true
                });
            }
            Session["NeedPlatformCancelPNR"] = orderId;
            return(new
            {
                PNRCancled = result.Item1,
                TicketUnUse = false,
                IsNotPrinted = false,
                IsSameName = false,
                Successed = true,
                NeedPlatfromDeal = true,
                CheckCondition = true
            });
        }
Ejemplo n.º 5
0
 public ScrapApplyChecker(Order order, ScrapApplyformView applyformView)
     : base(order, applyformView)
 {
 }