internal RefundApplyform(Order order, RefundApplyformView refundApplyformView, Guid oemId) : base(order, refundApplyformView, oemId) { RefundType = refundApplyformView.RefundType; ApplyAttachment = refundApplyformView.ApplyAttachmentView; if (IsSpecial) { if (RefundType == RefundType.SpecialReason && !refundApplyformView.DelegageCancelPNR) { Status = RefundApplyformStatus.AppliedForPlatform; } foreach (var flight in Flights) { var specialBunk = flight.OriginalFlight.Bunk as Bunk.SpecialBunk; if (specialBunk != null) { switch (RefundType) { // 非自愿退票,服务费全退 case RefundType.Involuntary: flight.RefundServiceCharge = specialBunk.ServiceCharge; break; } } } } }
/// <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); } }
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); }
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 }); }
public RefundApplyChecker(Order order, RefundApplyformView applyformView) : base(order, applyformView) { }