Esempio n. 1
0
        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();
        }
Esempio n. 2
0
 private void UpdateCloseOrder(PhysicalOrderRelation orderRelation, ExecuteContext context)
 {
     _physicalOrder.PaidPledgeBalance += orderRelation.PayBackPledgeOfCloseOrder;
     _physicalOrder.AddBill(new Bill(_physicalOrder.AccountId, _physicalOrder.CurrencyId, orderRelation.PayBackPledgeOfOpenOrder, BillType.PayBackPledge, BillOwnerType.Order, context.ExecuteTime ?? DateTime.Now));
 }