示例#1
0
        public static bool ExecuteTransfer(PositionTransferDetails details)
        {
            using (IDalSession session = NHSessionFactory.CreateSession())
            {
                bool success = false;
                SavePositionTransferDetails(details);
                IPositionTransfer transfer = PositionTransferMapper.getTransfer(session, details.Key);

                IPositionTransferDetailCollection transferDetails = transfer.TransferDetails;
                executeFundTransfer(session, transferDetails, transfer);
                session.InsertOrUpdate(transfer);

                if (transfer.AIsInternal)
                    transfer.APortfolioAfter = assemblePortfolio(session, transfer.AccountA.Key, transfer.TransferDate, transfer);

                if (transfer.BIsInternal)
                    transfer.BPortfolioAfter = assemblePortfolio(session, transfer.AccountB.Key, transfer.TransferDate, transfer);

                transfer.TransferStatus = TransferStatus.Executed;
                success = session.InsertOrUpdate(transfer);
                return success;
            }
        }
示例#2
0
        public static int SetupTransfer(PositionTransferDetails details)
        {
            using (IDalSession session = NHSessionFactory.CreateSession())
            {
                SavePositionTransferDetails(details);
                IPositionTransfer transfer = PositionTransferMapper.getTransfer(session, details.Key);

                if (!transfer.IsInitialised)
                {
                    if (transfer.AIsInternal)
                    {
                        transfer.APortfolioBefore = assemblePortfolio(session, transfer.AccountA.Key, transfer.TransferDate, transfer);
                        if ((transfer.TypeOfTransfer == TransferType.Full) || (transfer.TypeOfTransfer == TransferType.Amount))
                            createTransferDetails(transfer.APortfolioBefore, transfer.TypeOfTransfer, transfer.TransferAmount.Quantity, transfer);
                    }

                    if (transfer.BIsInternal)
                    {
                        transfer.BPortfolioBefore = assemblePortfolio(session, transfer.AccountB.Key, transfer.TransferDate, transfer);
                    }

                    transfer.CreatedBy = LoginMapper.GetCurrentEmployee(session);
                    transfer.IsInitialised = true;

                    session.InsertOrUpdate(transfer);
                }
                return transfer.Key;
            }
        }
示例#3
0
        public static void SavePositionTransferDetails(PositionTransferDetails details)
        {
            using (IDalSession session = NHSessionFactory.CreateSession())
            {
                IPositionTransfer transfer = PositionTransferMapper.getTransfer(session, details.Key);
                transfer.AIsInternal = details.AIsInternal;
                if ((details.AIsInternal) && (details.AccountAID != 0))
                {
                    IAccountTypeInternal acc = (IAccountTypeInternal)AccountMapper.GetAccount(session, details.AccountAID);
                    transfer.AccountA = acc;
                }

                transfer.BIsInternal = details.BIsInternal;
                if ((details.BIsInternal) && (details.AccountBID != 0))
                {
                    IAccountTypeInternal acc = (IAccountTypeInternal)AccountMapper.GetAccount(session, details.AccountBID);
                    transfer.AccountB = acc;
                }

                ICurrency baseCurrency = transfer.AccountA != null ? transfer.AccountA.BaseCurrency : transfer.AccountB.BaseCurrency;

                transfer.TypeOfTransfer = details.TypeOfTransfer;
                transfer.TransferAmount = new Money(details.TransferAmount, baseCurrency);
                transfer.TransferDate = details.TransferDate;

                session.InsertOrUpdate(transfer);

            }
        }