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; } }
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; } }
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); } }