boolean bMarket;
int additionalPerms;
int secAcct;
long secFlatFileIndex;
String[] flTaxId;
TradeType eTradeType;
inputStructure.setTradeID(currentTradeID.getAndIncrement());
Object[] customer = new Object[2];
customer = customerSelection.genRandomCustomer();
customerID = Long.parseLong(customer[0].toString());
tierID = (TierId)customer[1];
long[] randomAccSecurity = holdings.generateRandomAccSecurity(customerID, tierID);
inputStructure.setAcctId(randomAccSecurity[0]);
secFlatFileIndex = randomAccSecurity[2];
secAcct = (int)randomAccSecurity[1];
additionalPerms = accountPerms.getNumPermsForAcc(inputStructure.getAcctId());
if (additionalPerms == 1){
flTaxId = person.getFirstNameLastNameTaxID(customerID);
executorIsAccountOwner = true;
}
else{
int exec_is_owner = (driverCETxnSettings.TO_settings.cur_exec_is_owner - AccountPermsGenerator.percentAccountAdditionalPermissions_0) * 100 / (100 - AccountPermsGenerator.percentAccountAdditionalPermissions_0);
if ( rnd.rndPercent(exec_is_owner) ){
flTaxId = person.getFirstNameLastNameTaxID(customerID);
executorIsAccountOwner = true;
}
else{
accountPerms.generateCids(customerID, additionalPerms, inputStructure.getAcctId());
if (additionalPerms == 2){
flTaxId = person.getFirstNameLastNameTaxID(accountPerms.permCids[1]);
}
else{
flTaxId = person.getFirstNameLastNameTaxID(accountPerms.permCids[2]);
}
executorIsAccountOwner = false;
}
}
inputStructure.setExecFirstName(flTaxId[0]);
inputStructure.setExecLastName(flTaxId[1]);
inputStructure.setExecTaxId(flTaxId[2]);
if (rnd.rndPercent(driverCETxnSettings.TO_settings.cur_security_by_symbol)){
char[] tmp = securities.createSymbol(secFlatFileIndex, TableConsts.cSYMBOL_len).toCharArray();
inputStructure.setSymbol(String.copyValueOf(tmp, 0, tmp.length));
inputStructure.setCoNmae(new String());
inputStructure.setIssue(new String());
}
else{
inputStructure.setCoNmae(companies.generateCompanyName( securities.getCompanyIndex( secFlatFileIndex )));
char[] tmp = securities.getSecRecord(secFlatFileIndex)[3].toCharArray();
inputStructure.setIssue(String.copyValueOf(tmp, 0, tmp.length));
inputStructure.setSymbol(new String());
}
inputStructure.setTradeQty(HoldingsAndTrades.TRADE_QTY_SIZES[rnd.intRange(0, HoldingsAndTrades.TRADE_QTY_SIZES.length - 1)]);
inputStructure.setRequestedPrice(rnd.doubleIncrRange(HoldingsAndTrades.fMinSecPrice, HoldingsAndTrades.fMaxSecPrice, 0.01));
bMarket = rnd.rndPercent(driverCETxnSettings.TO_settings.cur_market);
if (rnd.rndPercent(driverCETxnSettings.TO_settings.cur_buy_orders)){
if (bMarket){
eTradeType = TradeType.eMarketBuy;
}
else{
eTradeType = TradeType.eLimitBuy;
}
if (rnd.rndPercent(
driverCETxnSettings.TO_settings.cur_type_is_margin *
100 /
driverCETxnSettings.TO_settings.cur_buy_orders)){
inputStructure.setTypeIsMargin(1);
}
else inputStructure.setTypeIsMargin(0);
}
else{
if (bMarket){
eTradeType = TradeType.eMarketSell;
}
else{
if (rnd.rndPercent(driverCETxnSettings.TO_settings.cur_stop_loss)){
eTradeType = TradeType.eStopLoss;
}
else{
eTradeType = TradeType.eLimitSell;
}
}
inputStructure.setTypeIsMargin(0);
}
iTradeType = eTradeType.ordinal();
if (rnd.rndPercent(driverCETxnSettings.TO_settings.cur_lifo)){
inputStructure.setIsLifo(1);
}
else inputStructure.setIsLifo(0);
char[] tmp = (tradeType.getTupleByIndex(eTradeType.ordinal()))[0].toCharArray();
inputStructure.setTradeTypeId(String.copyValueOf(tmp, 0, tmp.length));
tmp = (statusType.getTupleByIndex(StatusTypeId.E_PENDING.ordinal()))[0].toCharArray();
inputStructure.setStPendingId(String.copyValueOf(tmp, 0, tmp.length));
tmp = (statusType.getTupleByIndex(StatusTypeId.E_SUBMITTED.ordinal()))[0].toCharArray();