/// <summary> /// 申请退改签 /// </summary> internal BaseApplyform Apply(ApplyformView applyformView, Guid oemId) { var checker = ApplyChecker.GetChecker(this, applyformView); checker.Execute(); var applyform = BaseApplyform.NewApplyform(this, applyformView, oemId); this._applyformLoader.AppendData(applyform); return(applyform); }
internal bool RequireSeparate(BaseApplyform applyform) { IEnumerable <Guid> passengers = applyform.GetAppliedPassengers(); if (applyform is PostponeApplyform) { return(!isAllPassengers(passengers)); } else if (applyform is RefundOrScrapApplyform) { IEnumerable <Guid> flights = applyform.GetAppliedFlights(); return(!isAllPassengers(passengers) && !isAllFlights(flights)); } return(false); }
private static string getAppliedFlights(BaseApplyform applyform) { if (applyform is RefundOrScrapApplyform) { return((applyform as RefundOrScrapApplyform).Flights.Join(",", item => item.OriginalFlight.Departure.Name + "-" + item.OriginalFlight.Arrival.Name)); } else if (applyform is PostponeApplyform) { return((applyform as PostponeApplyform).Flights.Join(",", item => item.OriginalFlight.Departure.Name + "-" + item.OriginalFlight.Arrival.Name)); } else if (applyform is UpgradeApplyform) { return((applyform as UpgradeApplyform).Flights.Join(",", item => FoundationService.QueryAirportName(item.Departure) + "-" + FoundationService.QueryAirportName(item.Arrival))); } return(string.Empty); }
public static void SaveApplyLog(Order.Domain.Order order, BaseApplyform applyform, string operatorAccount) { var logContent = string.Format("申请{0}。乘机人:{1} 航段:{2}", applyform.ToString(), applyform.Passengers.Join(",", item => item.Name), getAppliedFlights(applyform)); var log = new Log.Domain.OrderLog() { OrderId = order.Id, ApplyformId = applyform is UpgradeApplyform ? (applyform as UpgradeApplyform).NewOrderId : applyform.Id, Keyword = "退改签申请", Content = logContent, Role = OperatorRole.Purchaser, Company = order.Purchaser.CompanyId, Account = operatorAccount, VisibleRole = OrderRole.Provider | OrderRole.Supplier | OrderRole.Purchaser | OrderRole.Platform | OrderRole.OEMOwner }; LogService.SaveOrderLog(log); }
/// <summary> /// 根据申请单修改订单内容 /// </summary> internal void Update(BaseApplyform applyform) { var originalPNRInfo = this.PNRInfos.FirstOrDefault(item => PNRPair.Equals(item.Code, applyform.OriginalPNR)); if (originalPNRInfo == null) { throw new CustomException("未找到原编码信息"); } PNRInfo newPnrInfo = null; if (applyform is RefundOrScrapApplyform) { newPnrInfo = originalPNRInfo.UpdateContentForRefund(applyform as RefundOrScrapApplyform); } else if (applyform is PostponeApplyform) { newPnrInfo = originalPNRInfo.UpdateContentForPostpone(applyform as PostponeApplyform); } if (newPnrInfo != null) { AddPNRInfo(newPnrInfo); } }
public static string GetApplyform(BaseApplyform obj) { StringBuilder str = new StringBuilder(); str.Append("<applyform><title>"); //退票申请 if (obj is RefundApplyform) { var applyform = obj as RefundApplyform; str.AppendFormat("<id>{0}</id>", applyform.Id); str.AppendFormat("<applyType>{0}</applyType>", "1"); str.AppendFormat("<status>{0}</status>", (int)applyform.Status); str.AppendFormat("<statusDescription>{0}</statusDescription>", Service.Order.StatusService.GetRefundApplyformStatus(applyform.Status, OrderRole.Purchaser)); str.AppendFormat("<refundType>{0}</refundType>", (int)applyform.RefundType); str.AppendFormat("<originalPNR>{0}</originalPNR>", applyform.OriginalPNR == null ? "" : applyform.OriginalPNR.BPNR + "|" + applyform.OriginalPNR.PNR); str.AppendFormat("<newPNR>{0}</newPNR>", applyform.NewPNR == null ? "" : applyform.NewPNR.BPNR + "|" + applyform.NewPNR.PNR); str.AppendFormat("<amount>{0}</amount>", applyform.Status == RefundApplyformStatus.Refunded ? FormatUtility.FormatAmount(applyform.RefundBill.Purchaser.Amount) : ""); // str.AppendFormat("<applyTime>{0}</applyTime>", FormatUtility.FormatDatetime(applyform.AppliedTime)); str.AppendFormat("<payTime>{0}</payTime>", ""); //退票没有支付时间 str.AppendFormat("<processedTime>{0}</processedTime>", FormatUtility.FormatDatetime(applyform.ProcessedTime)); str.Append("</title><passengers>"); foreach (var item in applyform.Passengers) { str.Append("<p>"); str.AppendFormat("<name>{0}</name>", item.Name); str.AppendFormat("<type>{0}</type>", (int)item.PassengerType); str.AppendFormat("<credentitals>{0}</credentitals>", item.Credentials); str.AppendFormat("<mobile>{0}</mobile>", item.Phone); str.AppendFormat("<settleCode>{0}</settleCode>", item.Tickets.FirstOrDefault().SettleCode); str.AppendFormat("<tickets>{0}</tickets>", item.Tickets.Join("|", num => num.No)); str.Append("</p>"); } str.Append("</passengers><flights>"); foreach (var item in applyform.Flights) { str.Append("<f>"); str.AppendFormat("<departure>{0}</departure>", item.OriginalFlight.Departure.Code); str.AppendFormat("<arrival>{0}</arrival>", item.OriginalFlight.Arrival.Code); str.AppendFormat("<flightNo>{0}</flightNo>", item.OriginalFlight.FlightNo); str.AppendFormat("<aircraft>{0}</aircraft>", item.OriginalFlight.AirCraft); str.AppendFormat("<takeoffTime>{0}</takeoffTime>", FormatUtility.FormatFlightDatetime(item.OriginalFlight.TakeoffTime)); str.AppendFormat("<arrivalTime>{0}</arrivalTime>", FormatUtility.FormatFlightDatetime(item.OriginalFlight.LandingTime)); str.AppendFormat("<bunk>{0}</bunk>", item.OriginalFlight.Bunk.Code); str.AppendFormat("<fare>{0}</fare>", FormatUtility.FormatAmount(item.OriginalFlight.Price.Fare)); str.AppendFormat("<discount>{0}</discount>", item.OriginalFlight.Bunk.Discount.TrimInvaidZero()); str.AppendFormat("<airportFee>{0}</airportFee>", FormatUtility.FormatAmount(item.OriginalFlight.AirportFee)); str.AppendFormat("<baf>{0}</baf>", FormatUtility.FormatAmount(item.OriginalFlight.Price.BAF)); str.AppendFormat("<refundRate>{0}</refundRate>", applyform.Status == RefundApplyformStatus.Refunded ? item.RefundRate.ToString() : ""); str.AppendFormat("<refundFee>{0}</refundFee>", applyform.Status == RefundApplyformStatus.Refunded ? FormatUtility.FormatAmount(applyform.RefundBill.Purchaser.Source.Details.FirstOrDefault(o => o.Flight.Id == item.OriginalFlight.Id) != null ? applyform.RefundBill.Purchaser.Source.Details.First(o => o.Flight.Id == item.OriginalFlight.Id).RefundFee : 0) : ""); str.AppendFormat("<refundServiceCharge>{0}</refundServiceCharge>", FormatUtility.FormatAmount(item.RefundServiceCharge)); str.AppendFormat("<newFlightNo>{0}</newFlightNo>", ""); str.AppendFormat("<newAircraft>{0}</newAircraft>", ""); str.AppendFormat("<newTakeoffTime>{0}</newTakeoffTime>", ""); str.AppendFormat("<newArrivalTime>{0}</newArrivalTime>", ""); str.AppendFormat("<postponeFee>{0}</postponeFee>", ""); str.Append("</f>"); } str.Append("</flights><bills>"); if (applyform.RefundBill != null && applyform.Status == RefundApplyformStatus.Refunded) { str.AppendFormat("<b><type>{0}</type>", "2"); str.AppendFormat("<status>{0}</status>", applyform.RefundBill.Succeed ? "1" : "0"); str.AppendFormat("<amount>{0}</amount>", FormatUtility.FormatAmount(applyform.RefundBill.Tradement.Amount)); str.AppendFormat("<tradeNo>{0}</tradeNo>", applyform.RefundBill.Tradement.TradeNo); str.AppendFormat("<channelTradeNo>{0}</channelTradeNo>", ""); str.AppendFormat("<time>{0}</time>", FormatUtility.FormatDatetime(applyform.RefundBill.Purchaser.Time)); str.Append("</b>"); } str.Append("</bills>"); } //废票申请 if (obj is ScrapApplyform) { var applyform = obj as ScrapApplyform; str.AppendFormat("<id>{0}</id>", applyform.Id); str.AppendFormat("<applyType>{0}</applyType>", "2"); str.AppendFormat("<status>{0}</status>", (int)applyform.Status); str.AppendFormat("<statusDescription>{0}</statusDescription>", Service.Order.StatusService.GetRefundApplyformStatus(applyform.Status, OrderRole.Purchaser)); str.AppendFormat("<refundType>{0}</refundType>", ""); str.AppendFormat("<originalPNR>{0}</originalPNR>", applyform.OriginalPNR == null ? "" : applyform.OriginalPNR.BPNR + "|" + applyform.OriginalPNR.PNR); str.AppendFormat("<newPNR>{0}</newPNR>", applyform.NewPNR == null ? "" : applyform.NewPNR.BPNR + "|" + applyform.NewPNR.PNR); str.AppendFormat("<amount>{0}</amount>", applyform.Status == RefundApplyformStatus.Refunded ? FormatUtility.FormatAmount(applyform.RefundBill.Purchaser.Amount) : ""); // str.AppendFormat("<applyTime>{0}</applyTime>", FormatUtility.FormatDatetime(applyform.AppliedTime)); str.AppendFormat("<payTime>{0}</payTime>", ""); //退票没有支付时间 str.AppendFormat("<processedTime>{0}</processedTime>", FormatUtility.FormatDatetime(applyform.ProcessedTime)); str.Append("</title><passengers>"); foreach (var item in applyform.Passengers) { str.Append("<p>"); str.AppendFormat("<name>{0}</name>", item.Name); str.AppendFormat("<type>{0}</type>", (int)item.PassengerType); str.AppendFormat("<credentitals>{0}</credentitals>", item.Credentials); str.AppendFormat("<mobile>{0}</mobile>", item.Phone); str.AppendFormat("<settleCode>{0}</settleCode>", item.Tickets.FirstOrDefault().SettleCode); str.AppendFormat("<tickets>{0}</tickets>", item.Tickets.Join("|", num => num.No)); str.Append("</p>"); } str.Append("</passengers><flights>"); foreach (var item in applyform.Flights) { str.Append("<f>"); str.AppendFormat("<departure>{0}</departure>", item.OriginalFlight.Departure.Code); str.AppendFormat("<arrival>{0}</arrival>", item.OriginalFlight.Arrival.Code); str.AppendFormat("<flightNo>{0}</flightNo>", item.OriginalFlight.FlightNo); str.AppendFormat("<aircraft>{0}</aircraft>", item.OriginalFlight.AirCraft); str.AppendFormat("<takeoffTime>{0}</takeoffTime>", FormatUtility.FormatFlightDatetime(item.OriginalFlight.TakeoffTime)); str.AppendFormat("<arrivalTime>{0}</arrivalTime>", FormatUtility.FormatFlightDatetime(item.OriginalFlight.LandingTime)); str.AppendFormat("<bunk>{0}</bunk>", item.OriginalFlight.Bunk.Code); str.AppendFormat("<fare>{0}</fare>", FormatUtility.FormatAmount(item.OriginalFlight.Price.Fare)); str.AppendFormat("<discount>{0}</discount>", item.OriginalFlight.Bunk.Discount.TrimInvaidZero()); str.AppendFormat("<airportFee>{0}</airportFee>", FormatUtility.FormatAmount(item.OriginalFlight.AirportFee)); str.AppendFormat("<baf>{0}</baf>", FormatUtility.FormatAmount(item.OriginalFlight.Price.BAF)); str.AppendFormat("<refundRate>{0}</refundRate>", applyform.Status == RefundApplyformStatus.Refunded ? item.RefundRate.ToString() : ""); str.AppendFormat("<refundFee>{0}</refundFee>", applyform.Status == RefundApplyformStatus.Refunded ? FormatUtility.FormatAmount(applyform.RefundBill.Purchaser.Source.Details.First(o => o.Flight.Id == item.OriginalFlight.Id).RefundFee) : ""); str.AppendFormat("<refundServiceCharge>{0}</refundServiceCharge>", FormatUtility.FormatAmount(item.RefundServiceCharge)); str.AppendFormat("<newFlightNo>{0}</newFlightNo>", ""); str.AppendFormat("<newAircraft>{0}</newAircraft>", ""); str.AppendFormat("<newTakeoffTime>{0}</newTakeoffTime>", ""); str.AppendFormat("<newArrivalTime>{0}</newArrivalTime>", ""); str.AppendFormat("<postponeFee>{0}</postponeFee>", ""); str.Append("</f>"); } str.Append("</flights><bills>"); if (applyform.RefundBill != null && applyform.Status == RefundApplyformStatus.Refunded) { str.AppendFormat("<b><type>{0}</type>", "2"); str.AppendFormat("<status>{0}</status>", applyform.RefundBill.Succeed ? "1" : "0"); str.AppendFormat("<amount>{0}</amount>", FormatUtility.FormatAmount(applyform.RefundBill.Tradement.Amount)); str.AppendFormat("<tradeNo>{0}</tradeNo>", applyform.RefundBill.Tradement.TradeNo); str.AppendFormat("<channelTradeNo>{0}</channelTradeNo>", ""); str.AppendFormat("<time>{0}</time>", FormatUtility.FormatDatetime(applyform.RefundBill.Purchaser.Time)); str.Append("</b>"); } str.Append("</bills>"); } //改期申请 if (obj is PostponeApplyform) { var applyform = obj as PostponeApplyform; str.AppendFormat("<id>{0}</id>", applyform.Id); str.AppendFormat("<applyType>{0}</applyType>", "4"); str.AppendFormat("<status>{0}</status>", (int)applyform.Status); str.AppendFormat("<statusDescription>{0}</statusDescription>", Service.Order.StatusService.GetPostponeApplyformStatus(applyform.Status, OrderRole.Purchaser)); str.AppendFormat("<refundType>{0}</refundType>", ""); str.AppendFormat("<originalPNR>{0}</originalPNR>", applyform.OriginalPNR == null ? "" : applyform.OriginalPNR.BPNR + "|" + applyform.OriginalPNR.PNR); str.AppendFormat("<newPNR>{0}</newPNR>", applyform.NewPNR == null ? "" : applyform.NewPNR.BPNR + "|" + applyform.NewPNR.PNR); str.AppendFormat("<amount>{0}</amount>", applyform.Status == PostponeApplyformStatus.Applied || applyform.PayBill == null ? "" : FormatUtility.FormatAmount(applyform.PayBill.Applier.Amount));// str.AppendFormat("<applyTime>{0}</applyTime>", FormatUtility.FormatDatetime(applyform.AppliedTime)); str.AppendFormat("<payTime>{0}</payTime>", applyform.Status == PostponeApplyformStatus.Applied || applyform.PayBill == null ? "" : FormatUtility.FormatDatetime(applyform.PayBill.Applier.Time)); str.AppendFormat("<processedTime>{0}</processedTime>", FormatUtility.FormatDatetime(applyform.ProcessedTime)); str.Append("</title><passengers>"); foreach (var item in applyform.Passengers) { str.Append("<p>"); str.AppendFormat("<name>{0}</name>", item.Name); str.AppendFormat("<type>{0}</type>", (int)item.PassengerType); str.AppendFormat("<credentitals>{0}</credentitals>", item.Credentials); str.AppendFormat("<mobile>{0}</mobile>", item.Phone); str.AppendFormat("<settleCode>{0}</settleCode>", item.Tickets.FirstOrDefault().SettleCode); str.AppendFormat("<tickets>{0}</tickets>", item.Tickets.Join("|", num => num.No)); str.Append("</p>"); } str.Append("</passengers><flights>"); foreach (var item in applyform.Flights) { str.Append("<f>"); str.AppendFormat("<departure>{0}</departure>", item.OriginalFlight.Departure.Code); str.AppendFormat("<arrival>{0}</arrival>", item.OriginalFlight.Arrival.Code); str.AppendFormat("<flightNo>{0}</flightNo>", item.OriginalFlight.FlightNo); str.AppendFormat("<aircraft>{0}</aircraft>", item.OriginalFlight.AirCraft); str.AppendFormat("<takeoffTime>{0}</takeoffTime>", FormatUtility.FormatFlightDatetime(item.OriginalFlight.TakeoffTime)); str.AppendFormat("<arrivalTime>{0}</arrivalTime>", FormatUtility.FormatFlightDatetime(item.OriginalFlight.LandingTime)); str.AppendFormat("<bunk>{0}</bunk>", item.OriginalFlight.Bunk.Code); str.AppendFormat("<fare>{0}</fare>", FormatUtility.FormatAmount(item.OriginalFlight.Price.Fare)); str.AppendFormat("<discount>{0}</discount>", item.OriginalFlight.Bunk.Discount.TrimInvaidZero()); str.AppendFormat("<airportFee>{0}</airportFee>", FormatUtility.FormatAmount(item.OriginalFlight.AirportFee)); str.AppendFormat("<baf>{0}</baf>", FormatUtility.FormatAmount(item.OriginalFlight.Price.BAF)); str.AppendFormat("<refundRate>{0}</refundRate>", ""); str.AppendFormat("<refundFee>{0}</refundFee>", ""); str.AppendFormat("<refundServiceCharge>{0}</refundServiceCharge>", ""); str.AppendFormat("<newFlightNo>{0}</newFlightNo>", item.NewFlight.FlightNo); str.AppendFormat("<newAircraft>{0}</newAircraft>", item.NewFlight.AirCraft); str.AppendFormat("<newTakeoffTime>{0}</newTakeoffTime>", FormatUtility.FormatFlightDatetime(item.NewFlight.TakeoffTime)); str.AppendFormat("<newArrivalTime>{0}</newArrivalTime>", FormatUtility.FormatFlightDatetime(item.NewFlight.LandingTime)); str.AppendFormat("<postponeFee>{0}</postponeFee>", FormatUtility.FormatAmount(item.PostponeFee)); str.Append("</f>"); } str.Append("</flights><bills>"); if (applyform.PayBill != null) { str.AppendFormat("<b><type>{0}</type>", "1"); str.AppendFormat("<status>{0}</status>", applyform.PayBill.Applier.Success ? "1" : "0"); str.AppendFormat("<amount>{0}</amount>", FormatUtility.FormatAmount(applyform.PayBill.Tradement.Amount)); str.AppendFormat("<tradeNo>{0}</tradeNo>", applyform.PayBill.Tradement.TradeNo); str.AppendFormat("<channelTradeNo>{0}</channelTradeNo>", applyform.PayBill.Tradement.ChannelTradeNo); str.AppendFormat("<time>{0}</time>", FormatUtility.FormatDatetime(applyform.PayBill.Applier.Time)); str.Append("</b>"); if (applyform.PayBill.RefundBill != null) { str.AppendFormat("<b><type>{0}</type>", "2"); str.AppendFormat("<status>{0}</status>", applyform.PayBill.RefundBill.Applier.Success ? "1" : "0"); str.AppendFormat("<amount>{0}</amount>", FormatUtility.FormatAmount(applyform.PayBill.RefundBill.Tradement.Amount)); str.AppendFormat("<tradeNo>{0}</tradeNo>", applyform.PayBill.RefundBill.Tradement.TradeNo); str.AppendFormat("<channelTradeNo>{0}</channelTradeNo>", ""); str.AppendFormat("<time>{0}</time>", FormatUtility.FormatDatetime(applyform.PayBill.RefundBill.Applier.Time)); str.Append("</b>"); } } str.Append("</bills>"); } str.Append("</applyform>"); return(str.ToString()); }