/// <summary> /// 生成支付账单 /// </summary> /// <param name="postponeApplyform">改期申请</param> public static Distribution.Domain.Bill.Pay.PostponePayBill ProducePayBill(Order.Domain.Applyform.PostponeApplyform postponeApplyform) { if (postponeApplyform == null) { throw new ArgumentNullException("postponeApplyform"); } if (!postponeApplyform.Passengers.Any()) { throw new CustomException("缺少乘机人信息"); } if (!postponeApplyform.Flights.Any()) { throw new CustomException("缺少航段信息"); } if (DistributionQueryService.QueryPostponePayBill(postponeApplyform.Id) != null) { throw new RepeatedItemException("改期支付账单已存在"); } var payBill = new Distribution.Domain.Bill.Pay.PostponePayBill(postponeApplyform.OrderId, postponeApplyform.Id) { Remark = "改期收费" }; // 申请方 var applier = new Distribution.Domain.Role.Purchaser(postponeApplyform.PurchaserId); payBill.Applier = applier.MakePayBill(postponeApplyform.Flights, postponeApplyform.Passengers); // 受理方 var accepter = new Distribution.Domain.Role.Platform(); payBill.Accepter = accepter.MakePayBill(postponeApplyform.Flights, postponeApplyform.Passengers, new[] { payBill.Applier }); return(payBill); }
/// <summary> /// 生成采购支付账单 /// </summary> /// <param name="trade">交易信息</param> /// <param name="tradeDeduction">交易方信息</param> public static Distribution.Domain.Bill.Pay.NormalPayBill ProducePurchasePayBill(Distribution.Domain.TradeInfo trade, Distribution.Domain.TradeDeduction tradeDeduction) { if (trade == null) { throw new ArgumentNullException("trade"); } if (trade.Passengers == null || !trade.Passengers.Any()) { throw new CustomException("缺少乘机人信息"); } if (trade.Flights == null || !trade.Flights.Any()) { throw new CustomException("缺少航班信息"); } if (tradeDeduction == null) { throw new ArgumentNullException("tradeDeduction"); } if (tradeDeduction.Purchaser == null) { throw new CustomException("缺少买家信息"); } var originalPayBill = DistributionQueryService.QueryNormalPayBill(trade.Id); if (originalPayBill != null) { throw new RepeatedItemException("支付账单已存在"); } var payBill = new Distribution.Domain.Bill.Pay.NormalPayBill(trade.Id) { Remark = "预订出票" }; var tradeRolePayBills = new List <Distribution.Domain.Bill.Pay.Normal.NormalPayRoleBill>(); // 采购方 var purchaserDeduction = tradeDeduction.Purchaser; var purchaser = new Distribution.Domain.Role.Purchaser(purchaserDeduction.Owner); payBill.Purchaser = purchaser.MakePayBill(trade, purchaserDeduction.Deduction); tradeRolePayBills.Add(payBill.Purchaser); // 分润方 foreach (var royaltyDeduction in tradeDeduction.Royalties) { if (royaltyDeduction.Deduction.Rebate != 0 || royaltyDeduction.Deduction.Increasing != 0) { var royalty = new Distribution.Domain.Role.Royalty(royaltyDeduction.Owner); var royaltyPayBill = royalty.MakePayBill(trade, royaltyDeduction.Deduction); payBill.AddRoyalty(royaltyPayBill); tradeRolePayBills.Add(royaltyPayBill); } } // 平台 var platform = new Distribution.Domain.Role.Platform(); payBill.Platform = platform.MakePayBill(trade, tradeRolePayBills, tradeDeduction.Platform); return(payBill); }