QList<Transaction*> AccountTradeInfo::CreateTransaction(Order const*pOrder,QDateTime const& oTimestamp,size_t nQuantity,double dPrice) { QMutexLocker oLocker(&m_mLock); OrderOperator oOperator; QList<Transaction*> lTransactions; auto iPos = m_lPositions.begin(); while(iPos != m_lPositions.begin()) { Position *pPosition = *iPos; Transaction* pTransaction = oOperator.Close(pPosition,pOrder,oTimestamp,nQuantity,dPrice); lTransactions.append(pTransaction); if(pPosition->GetQuantity() == 0) { iPos = m_lPositions.erase(iPos); RemovePosition(pPosition); } else { break; } } m_lTradeDayTransactions.append(lTransactions); UpdateOrder(const_cast<Order*>(pOrder)); SaveTransaction(lTransactions); return lTransactions; }
void FMultiBoxCustomizationData::BlockRemoved( TSharedRef< const FMultiBlock> RemovedBlock, int32 Index, const TArray< TSharedRef< const FMultiBlock > >& AllBlocks ) { FCustomBlockTransaction Remove = FCustomBlockTransaction::CreateRemove( RemovedBlock->GetAction().ToSharedRef(), Index ); SaveTransaction( Remove, AllBlocks ); }
void FMultiBoxCustomizationData::BlockAdded( TSharedRef< const FMultiBlock > AddedBlock, int32 Index, const TArray< TSharedRef< const FMultiBlock > >& AllBlocks ) { FCustomBlockTransaction Add = FCustomBlockTransaction::CreateAdd( AddedBlock->GetAction().ToSharedRef(), Index ); SaveTransaction( Add, AllBlocks ); }