OrderPrepare URL
Prepares an order by determining its prices, discounts, shipping charges, and taxes. If an order reference number is not specified, all current pending orders will be prepared for the current customer at the given store.
URL structure
- http:// host_name/ path/
- The fully qualified name of your WebSphere Commerce server and the configuration path.
Parameter values
- langId
- Sets or resets the preferred language for the duration of the session; the supported languages for a store are found in the STORELANG table
- forUser
- The logon ID of the user on whose behalf the command runs; only a person with the authority to process orders can specify this parameter.
- forUserId
- Same as forUser, but identifying the user by the internal user ID as found in the USERS table.
- URL
- (Required) The URL to be called when the command completes successfully.
- storeId
- The reference number of the store for which the order is to be prepared.
- orderId
- The reference number of the order to be prepared. If this parameter is omitted, this command defaults to the current pending orders. See Order abbreviations for a description. This parameter can be repeated.
- outOrderName
- Names of name-value pairs to be added to the redirection URL. The value of each added name-value pair is the reference number of the prepared order. If the name is not provided, the default name orderId is used. This parameter can be repeated.
- commit
- Controls whether each order is processed in a separate database transaction. A value of 0 specifies that all orders be prepared in one transaction; a value of 1 specifies that a new transaction is started for each order to be prepared. The default value of this parameter is 0.
- remerge
- A list of the order items that are to be merged with other order items in the same order and with the same correlationGroup attribute, if possible. Order items are not merged unless their InventoryStatus is NALC or they are specified by one or more of the allocate, backorder, and reverse parameters. This parameter can be repeated.
- merge
- A list of order items that are to be merged with other order items in the same order if possible, regardless of their correlationGroup attributes. This parameter can be repeated.
- check
- A list of order items that are to be checked by the CheckInventory task command. This parameter can be repeated.
- allocate
- A list of order items that are to be allocated from existing inventory. This parameter can be repeated.
- backorder
- A list of order items that are to be allocated from expected inventory. This parameter can be repeated.
- reverse
- A list of order items whose allocations are to be released (that is, de-allocated from existing or expected inventory, as appropriate). This parameter can be repeated.
- keepAutoAddedOrderItemsBeforeCalculate
- Indicates if the automatically-added order items in the order need to be kept (true) or removed (false) before the order is calculated. The default value is false.
Note for ATP inventory: The remerge, merge, check, allocate, backorder and reverse parameters are applicable only if ATP inventory is enabled (see INVENTORYSYSTEM column in the STORE table). They represent lists of order items that are passed to DoInventoryActionCmd. This command invokes AllocateInventory task command, which calls the CheckInventoryAvailability, AllocateExistingInventory, AllocateExpectedInventory , DeallocateExistingInventory, and DeallocateExpectedInventory, GetEligibleFulfillmentCenters, ReserveInventory, AdjustInventoryReservation task commands as specified below. Also, these parameters accept order-item abbreviations, which are detailed in the help for Order Management subsystem URLs.
The default ATP parameter values are as follows:
- remerge=*
- merge=*n
- check=*n
- allocate=*
- backorder=*
- reverse=*
If you want all order items for a store to be allocated in the OrderPrepare command, pass reverse=*n with allocate=*.
Example
The following example prepares an order with reference number 1 and redirects to the OrderDisplay command to view this order.
http://myhostname/webapp/wcs/stores/servlet/OrderPrepare?orderId=1 &URL=/webapp/commerce/OrderDisplay
Behavior
Prepares the specified orders for display (by the OrderDisplay command) or processing (by the OrderProcess command). If no order numbers are specified, then the command prepares all the current pending orders of the current customer that belong to the specified store. If the errorView is not specified in the storefront; then the OrderNoneErrorView is shown.
- If the value of the commit parameter is 1, a new database transaction is started for every order to be prepared. Otherwise, all orders are prepared in one transaction (the default behavior).
- The status of the specified orders must be P, I, E, W, or N.
- The OrderPrepare command calls the PrepareOrder task command to do the following for each of the specified orders:
- Delete generated order items (refer to the PREPAREFLAGS column in the ORDERITEMS table).
- Check that all order items in the order are buyable (refer to the BUYABLE column in the CATENTRY table).
- If ATP inventory allocation is enabled, call the DoInventoryActionCmd. This invokes AllocateInventory to process the order items identified by the ATP parameters and to obtain estimated availability times, shipping offsets, and fulfillment centers for allocated or backordered order items. Order items can be split or merged by this task command. The default implementation of this task command calls GetEligibleFulfillmentCenters, CheckInventoryAvailability, AllocateExistingInventory, AllocateExpectedInventory, DeallocateExistingInventory, DeallocateExpectedInventory, ReserveInventory, and AdjustInventoryReservation to perform the operations specified by the ATP parameters. These task commands use the RECEIPT, RADETAIL, and their associated tables to determine availability of existing and expected inventory.
- If ATP inventory is not enabled, call DoInventoryActionCmd, which invokes ResolveFulfillmentCenter to assign a fulfillment center to each order item, based on inventory availability. The default implementation of this task command calls the CheckInventory task command to determine inventory availability. The default implementation of the CheckInventory task command uses the INVENTORY table.
- Call the ValidateDynamicKitConfiguration task command.
- Obtain new unit prices for each order item, except those with manually overridden prices (refer to PREPAREFLAGS column of the ORDERITEMS table) by calling the GetContractSpecialPrice task command; or if that is not defined, by calling the GetBaseSpecialPrice task command.
- Do not refresh prices for order items whose prepareFlags attributes specify "quotation".
- Refresh prices and allocate inventory for order items whose configurationId attribute is not null, as if they were Dynamic Kits (that is, use the components in the OICOMPLIST table that reference the order item) unless the prepareFlags attribute specifies "notConfigured".
- For each item, multiply the quantity by the unit price, and store the result in the TOTALPRODUCT column of the ORDERITEMS table.
- Re-calculate the amounts for calculation usages that are identified by the USAGEFLAGS column in the STENCALUSG table. First, all the methods identified by CALMETHOD_ID_INI column of the STENCALUSG table are called. Then, all the methods identified by CALMETHOD_ID_APP column are called. The following behaviors are provided for compatibility with previous versions:
- If the flag is set for usage -1, the ApplyOrderAdjustments task command (if it is defined in the CMDREG table) is called, instead of the method identified by the CALMETHOD_ID_APP column in the STENCALUSG table.
- If this flag is set for usage -2, the ApplyOrderShippingCharges task command (if it is defined in the CMDREG table) is called, instead of the method identified by the CALMETHOD_ID_APP column.
- If this flag is set for usage -3 and for -4, the ApplyOrderTaxes task command (if it is defined in the CMDREG table) is called, instead of the methods identified by the CALMETHOD_ID_APP column in the STENCALUSG table.
- Re-create suborders (rows in the SUBORDERS table) for each distinct shipping address, then summarize the re-calculated information for each of the suborders by calling the methods identified by CALMETHOD_ID_SUM column in the STENCALUSG table for each calculation usage identified by the CALUSGAEFLAGS column. You can specify whether to use suborders or not.
- Lock the order to indicate that it is ready for the OrderProcess command. The lock can be reset either by expiry, by changing the Order (for example, by using the OrderItemUpdate command), or explicitly by using the OrderUnlock command. The expiry period for a lock is stored in the QUOTEGOODFOR column of the STORE table.
- Behavior for IBM Gift Center and WebSphere Commerce order integration:
- For each order item, determines if the order item is associated with a gift registry:
- If the item is associated with a gift registry, directly invokes performExecute() for OrderPrepare.
- If the item is associated with a gift registry, before invoking performExecute() for OrderPrepare, calls a method getGiftRegistryPrePostShipAddress() in GiftRegistryDataBean to determine whether to use pre-event shipping address or a post-event shipping address.
- Retrieves the appropriate address from the getGiftRegistryPrePostShipAddress () method.
- Determine if ORDERITEM.ADDRESS_ID is specified:
- If the address ID is specified, updates the existing address with the shipping address information retrieved from the gift registry.
- If the address ID is not specified, copies the address information and creates a copy in the ADDRESS table with the values STATUS = 'G' (to indicate an IBM Gift Center shipping address); MEMBER_ID = user's memberId; NICKNAME = OrderId:ExternalId.
- Assigns this newly created address to the order item's shipping address (and reuses this address for all the order items in this order that are associated with the same gift registry).
- Note for IBM Gift Center that the behavior above is implemented by extending OrderPrepareCmdImpl. The detailed implementation for this command is called GiftRegistryOrderPrepareCmdImpl. If you are using the IBM Gift Center sample application, after publishing the GiftCenterConsumerDirect.sar, the CMDREG table is updated to specify that the implementation of OrderPrepareCmd as GiftRegistryOrderPrepareCmdImpl. Also, since ADDRESS.STATUS = 'G' is introduced, the implementation for ValidateOrderAddressCmd is now GiftRegistryValidateOrderAddressCmdImpl so that ADDRESS.STATUS = 'G' is also considered valid.
Exception conditions
- If no orders match the specified parameters, the command throws the ECApplicationException exception specifying the ErrorOrderNoneCmd error view command.
- If any of the products or items in the order are not buyable, the command throws the ECApplicationException exception specifying the BadOrderDataErrorView error view command. For further information about exception conditions for order errors, refer to Error Codes for Order Error Views.
- The command throws the ECApplicationException exception, specifying the RetrievePriceErrorView error view command if any of the following conditions are true:
- Input trading agreements (contracts) are not valid or eligible for use.
- Trading agreements that are used in the order apply payment methods that are incompatible.
- Price Lists cannot be retrieved for any of the products or items.
- If any calculation indicated by the USAGEFLAGS column in the STENCALUSG table was unable to calculate a value for each order item in an order, and if the USAGEFLAGS column in the STENCALUSG table indicates that a value must be calculated, then an ECApplicationException exception is thrown.
- If an order has no order items, an ECApplicationException exception is thrown.
Related concepts
Order Management subsystemRelated reference
Order Management subsystem URLs
IBM Gift Center and WebSphere Commerce order integration