/** Creates order in the database. */ public Integer createOrder( Integer C_ID, Iterator lineItems, int SC_SUB_TOTAL, int SC_TAX, int SC_SHIP_COST, int SC_TOTAL, int SC_C_DISCOUNT, String CC_TYPE, String CC_NUMBER, String CC_NAME, Date CC_EXPIRY, String SHIPPING, String STREET_1, String STREET_2, String CITY, String STATE, String ZIP, Integer CO_ID) { Integer O_ID = null; try { // get customer record Customer cust = custHome.findByPrimaryKey(C_ID); Integer C_ADDR_ID = cust.getC_ADDR_ID(); // get shipping address_id Integer SHIP_ADDR_ID = null; if (STREET_1 == null || STREET_1.equals("")) { // there is no separate shipping address SHIP_ADDR_ID = C_ADDR_ID; } else { // there is a separate shipping address // don't try to match to an existing address, but create a new one Address address = addressHome.create(STREET_1, STREET_2, CITY, STATE, ZIP, CO_ID); SHIP_ADDR_ID = address.getADDR_ID(); } // generate missing fields for the order record Date O_SHIP_DATE = new Date(System.currentTimeMillis() + Util.getRandomInt(rand, 1, 7) * 3600000 * 24); // create order record Order order = orderHome.create( C_ID, new Date(), new Double(((double) SC_SUB_TOTAL) / 100.0), new Double(((double) SC_TAX) / 100.0), new Double(((double) SC_TOTAL) / 100.0), SHIPPING, O_SHIP_DATE, C_ADDR_ID, SHIP_ADDR_ID, "PENDING"); O_ID = order.getO_ID(); // create oderLine records int i = 1; while (lineItems.hasNext()) { CartItem item = (CartItem) lineItems.next(); orderLineHome.create( new Integer(i), O_ID, item.getSCL_I_ID(), new Integer(item.getSCL_QTY()), new Double(((double) SC_C_DISCOUNT) / 100.0), Util.getRandomAString(rand, 20, 100)); i++; } // create CC_XACTS record // Note that we don't send info to PGE (clause 2.7.3.3) // but rather create a record right away xactHome.create( O_ID, CC_TYPE, CC_NUMBER, CC_NAME, CC_EXPIRY, Util.getRandomAString(rand, 15), new Double(((double) SC_TOTAL) / 100.0), new Date(), SHIP_ADDR_ID); } catch (Exception re) { throw new EJBException(re); } return O_ID; }