/// <summary> /// 生成退款账单 /// </summary> internal NormalRefundBill MakeRefundBill(decimal applyformId, Refund.RefundInfo refundInfo, string remark) { //if(!this.Success) // throw new InvalidOperationException("未支付成功的订单,不能退款"); var refundBill = new NormalRefundBill(OrderId, applyformId) { PayBill = this, Remark = remark }; var tradeRoleRefundBills = new List <Refund.Normal.NormalRefundRoleBill>(); refundBill.Purchaser = Purchaser.MakeRefundBill(refundInfo, getPurchaserRefundedBill(applyformId)); tradeRoleRefundBills.Add(refundBill.Purchaser); if (Provider != null) { refundBill.Provider = Provider.MakeRefundBill(refundInfo, getProviderRefundedBill(applyformId)); tradeRoleRefundBills.Add(refundBill.Provider); } if (Supplier != null) { refundBill.Supplier = Supplier.MakeRefundBill(refundInfo, getSupplierRefundedBill(applyformId)); tradeRoleRefundBills.Add(refundBill.Supplier); } if (_royalties != null) { foreach (var royalty in _royalties) { var royaltyRefundBill = royalty.MakeRefundBill(refundInfo, getRoyaltyRefundedBill(applyformId, royalty.Owner.Id)); refundBill.AddRoyalty(royaltyRefundBill); tradeRoleRefundBills.Add(royaltyRefundBill); } } var platform = new Role.Platform(Platform.Account); refundBill.Platform = platform.MakeRefundBill(Platform.Deduction, refundInfo, getPlatformRefundedBill(applyformId), tradeRoleRefundBills); refundBill.Tradement = Tradement.MakeRefundment(Math.Abs(refundBill.Purchaser.Amount), getRefundedTradeFee(), applyformId.ToString()); _refundBillsLoader.AppendData(refundBill); return(refundBill); }
internal PostponeRefundBill MakeRefundBill(string remark) { if (!Succeed) { throw new InvalidOperationException("改期费未成功支付,不能退款"); } if (RefundBill != null) { throw new Core.CustomException("改期费是一次性退完,不能重复退"); } var refundBill = new PostponeRefundBill(ApplyformId) { PayBill = this, Remark = remark, Applier = Applier.MakeRefundBill() }; var accepter = new Role.Platform(Accepter.Account); refundBill.Accepter = accepter.MakeRefundBill(Accepter.Deduction, new[] { refundBill.Applier }); refundBill.Tradement = Tradement.MakeRefundment(Math.Abs(Applier.Amount), 0, ApplyformId.ToString()); return(refundBill); }