internal static void Payoff(Account account, Guid currencyId, Guid userId, TerminateData terminateData) { PhysicalOrder order = (PhysicalOrder)account.GetOrder(terminateData.OrderId); if (order.PhysicalTradeSide != iExchange.Common.PhysicalTradeSide.Buy) { return; } order.PaidPledgeBalance = -order.PhysicalOriginValueBalance; foreach (var eachInstalmentItem in order.Instalment.InstalmentDetails) { eachInstalmentItem.UpdateByPrePay(0, 0, 0, DateTime.Now, DateTime.Now, userId, order.LotBalance); } Guid sourceCurrencyId = terminateData.SourceCurrencyId != Guid.Empty ? terminateData.SourceCurrencyId : currencyId; decimal value = -(terminateData.SourceAmount + terminateData.SourceTerminateFee); order.AddBill(new Bill(account.Id, sourceCurrencyId, value, Protocal.BillType.PrePay, BillOwnerType.Order, DateTime.Now)); account.AddBalance(sourceCurrencyId, value, null); account.CalculateRiskData(); }
TransactionError ISystemController.PrePayoff(Guid submitorId, Guid accountId, Guid currencyId, decimal sumSourcePaymentAmount, decimal sumSourceTerminateFee, TerminateData terminateData) { return(this.Server.PrePayoff(submitorId, accountId, currencyId, sumSourcePaymentAmount, sumSourceTerminateFee, terminateData)); }
TransactionError ITransactionServerService.InstalmentPayoff(Guid submitorId, Guid accountId, Guid currencyId, decimal sumSourcePaymentAmount, decimal sumSourceTerminateFee, TerminateData terminateData) { return(this.Server.PrePayoff(submitorId, accountId, currencyId, sumSourcePaymentAmount, sumSourceTerminateFee, terminateData)); }