Пример #1
0
  /** 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;
  }