Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
 internal Refund.Normal.NormalRefundRoleBill MakeRefundBill(Refund.RefundInfo refundInfo, IEnumerable <Refund.Normal.NormalRefundRoleBill> refundedBills)
 {
     return(Owner.MakeRefundBill(this, refundInfo, refundedBills));
 }