public interface GetProductContractUnitPriceCmd
extends com.ibm.commerce.command.TaskCommand
For the given catalog entry, there may be multiple trading agreements used to calculate the price, and so the price for each of these trading agreements is available. Among these prices, there is a "best" price. The best price is usually the lowest price among all trading agreements for the given catalog entry identifier, but this behavior can be customized.
The information related to calculating prices for all catalog entries is
available through the getCatEntryPrices()
method. This array will
always contain one element. The single CatEntryPrices
object in the
returned array contains the relevant information for the specified catalog
entry. This interface also provides methods to access the same information as
the CatEntryPrices
in the array. In other words, the
CatEntryPrices
object in the array returned by
getCatEntryPrices()
can be accessed by using the methods on that
object, or by calling analogous get
methods on this command.
This is done mainly for backwards compatibility and compatibility with
similar interfaces (see below for similar interfaces).
The table below describes the mapping between methods of this command and
those of the CatEntryPrices
object in the array returned by
getCatEntryPrices()
:
GetProductContractUnitPriceCmd method | CatEntryPrices method | Best or All Prices? |
---|---|---|
getTradingId() |
CatEntryPrices.getTradingId() |
Best |
getTcId() |
CatEntryPrices.getTcId() |
Best |
getOfferId() |
CatEntryPrices.getOfferId() |
Best |
getOffer() |
CatEntryPrices.getOffer() |
Best |
getBasePrice() |
CatEntryPrices.getBasePrice() |
Best |
getPrice() |
CatEntryPrices.getUnitPrice() |
Best |
getApplicableTradingIds() |
CatEntryPrices.getAllTradingIds() |
All |
Not applicable | CatEntryPrices.getTradingTcIds() |
All |
Not applicable | CatEntryPrices.getOfferIds() |
All |
Not applicable | CatEntryPrices#getOffers() |
All |
Not applicable | CatEntryPrices.getTradingBasePrices() |
All |
getApplicableTradingUnitPrices() |
CatEntryPrices.getTradingUnitPrices() |
All |
Note that the methods that return price information per trading agreement (those with the "all" designation) for a catalog entry also include the best price among them.
This command is closely related to GetContractSpecialPriceCmd
and
GetContractUnitPriceCmd
. In fact, the default implementation is the
same for all three. However, because they are used in different situations,
it is possible to customize each situation differently.
To customize price calculations when browsing the catalog in the store front,
register a class that implements this interface (or a subclass of an existing
class such as GetContractUnitPriceCmdImpl
) in the command registry.
The calculations for the other commands will be unaffected.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
COPYRIGHT
IBM copyright notice field.
|
static java.lang.String |
defaultCommandClassName
The default name of this command.
|
static java.lang.String |
NAME
The name of this command.
|
Modifier and Type | Method and Description |
---|---|
java.lang.Long[] |
getApplicableTradingIds()
Returns the identifiers of the trading agreements that were used to
determine the prices for the catalog entry.
|
MonetaryAmount[] |
getApplicableTradingUnitPrices()
Returns the prices that were determined for each of the applied trading
agreements for the catalog entry.
|
MonetaryAmount |
getBasePrice()
Returns the best price of the input catalog entry before any currency
conversions.
|
CatEntryPrices[] |
getCatEntryPrices()
Returns the price related information for the input catalog entries.
|
com.ibm.commerce.order.objects.OfferAccessBean |
getOffer()
Returns the offer access bean that was used to determine the price.
|
java.lang.Long |
getOfferId()
Returns the identifier of the offer that was used to determine the price.
|
MonetaryAmount |
getPrice()
Returns the best price of the catalog entry in the requested currency.
|
java.lang.Long |
getTcId()
Returns the identifier of the term condition which was used to calculate
the best price.
|
java.lang.Long |
getTradingId()
Returns the identifier of the trading agreement which was used to
calculate the best price.
|
void |
reset()
Resets this command so that it is in its default state.
|
void |
setCatEntryId(java.lang.Long anCatEntryId)
Sets the identifier of the catalog entry whose price is to be calculated.
|
void |
setCurrency(java.lang.String astrCurrency)
Sets the desired currency to be used for the output price.
|
void |
setErrorMode(boolean aErrorMode)
Sets whether an exception will be thrown when the price cannot be found
for the input catalog entry.
|
void |
setOfferIds(java.lang.Long[] aOfferIds)
Sets the identifiers of the input offers to be used for price.
|
void |
setQuantity(QuantityAmount aQuantityAmount)
Sets the quantity of the input catalog entry that is to be priced.
|
void |
setStoreId(java.lang.Integer aStoreId)
Sets the identifier of the store to be used for calculating the price.
|
void |
setTradingIds(java.lang.Long[] aTradingIds)
Sets the identifiers of the input trading agreements.
|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
checkIsAllowed, checkResourcePermission, createCommandExecutionEvent, getAccCheck, getCommandContext, getCommandIfName, getCommandName, getCommandStoreId, getDefaultProperties, getExceptionInvokeParameters, getPostInvokeParameters, getPreInvokeParameters, getResources, getStoreId, getUser, getUserId, performExecute, setAccCheck, setCommandContext, setCommandIfName, setCommandStoreId, setDefaultProperties, validateParameters
static final java.lang.String COPYRIGHT
static final java.lang.String defaultCommandClassName
static final java.lang.String NAME
java.lang.Long[] getApplicableTradingIds()
getPrice()
returns null.MonetaryAmount[] getApplicableTradingUnitPrices()
getApplicableTradingIds()
.getPrice()
returns null.MonetaryAmount getBasePrice()
CatEntryPrices[] getCatEntryPrices()
The following values reflect information about the best price for the catalog entry:
CatEntryPrices.getTradingId()
CatEntryPrices.getTcId()
CatEntryPrices.getOfferId()
CatEntryPrices.getOffer()
CatEntryPrices.getBasePrice()
CatEntryPrices.getUnitPrice()
The following values reflect information about all prices for the catalog entry:
CatEntryPrices.getAllTradingIds()
CatEntryPrices.getTradingTcIds()
CatEntryPrices.getOfferIds()
CatEntryPrices#getOffers()
CatEntryPrices.getTradingBasePrices()
CatEntryPrices.getTradingUnitPrices()
This array will contain one element for the input catalog entry specified
by calling setCatEntryId(Long)
.
com.ibm.commerce.order.objects.OfferAccessBean getOffer()
getPrice()
returns null.java.lang.Long getOfferId()
getPrice()
returns null.MonetaryAmount getPrice()
error
mode
is set to true and no price was found.java.lang.Long getTcId()
getPrice()
returns null.java.lang.Long getTradingId() throws com.ibm.commerce.exception.ECSystemException
getPrice()
returns null.com.ibm.commerce.exception.ECSystemException
- Will never be thrown. Implementors should throw an exception
during performExecute()
if the trading
identifier could not be found.void reset()
The original definition of this method described in
com.ibm.websphere.command.Command.reset()
requires that this
method sets the output properties to the values they had before the
execute() method was run. The original definition also requires that
after calling this method, isReadyToCallExecute() method returns true.
In addition to the above, this command requires that input parameters must also be set to their original default values. For example, consider the following sequence of calls:
GetContractUnitPriceCmd cmd = ... cmd.setCurrency(currency); cmd.reset(); cmd.setCatEntryId(id);After these calls are executed,
cmd
will behave as though
only setCatEntryId(Long)
had been called.void setCatEntryId(java.lang.Long anCatEntryId)
This input value is required.
anCatEntryId
- The identifier of the catalog entry whose price is to be
calculated. If null, the array in
#setCatEntryPrices(CatEntryPrices[])
will be used.void setCurrency(java.lang.String astrCurrency)
This input value is optional. The default value is obtained from another
source, such as
CurrencyManager#getCurrency(StoreAccessBean, String, Integer)
.
astrCurrency
- The currency to look up the price. If null, the default value
will be used. If the supplied currency is empty or not
supported for the store, a default store currency will be
used.void setErrorMode(boolean aErrorMode)
This input value is optional. The default value is true.
aErrorMode
- True indicates an exception will be thrown when a price cannot
be found, false indicates exceptions will be ignored and
null
will be returned for the price instead.void setOfferIds(java.lang.Long[] aOfferIds)
This input value is optional. The default value is the list of all qualifying offers.
aOfferIds
- The reference number of one or more offers that are to be used
for determining the price. If null or empty, then the "best"
of all qualifying offers will be used. Otherwise, the "best"
of the specified offers will be returned.void setQuantity(QuantityAmount aQuantityAmount)
For example, consider the table below:
Quantity range | Price per unit |
---|---|
1-5 | 10 USD |
6-10 | 9 USD |
If the quantity amount is not specified, then the nominal quantity
(rounded up to the nearest multiple as specified in the
quantityMultiple attribute) of the Catalog entry is assumed
to be the requested quantity. See the CATENTSHIP
table for
more information. This behavior can be implemented by calling
RetrievePricesCmd
.
This input value is optional. The default value is the nominal quantity for the catalog entry.
aQuantityAmount
- The quantity amount of the catalog entry. If null, the nominal
quantity will be used as described above.void setStoreId(java.lang.Integer aStoreId)
This input value is optional. The default value is
CommandContext#getStoreId()
.
aStoreId
- The reference number of a store to be used for calculating the
price. If null, the command context will be used to determine
the store.void setTradingIds(java.lang.Long[] aTradingIds)
Each member is entitled to a number of trading agreements (possibly
zero), depending on the member and store
.
The specified trading agreements will be checked against the entitled
agreements for the member (obtained from
CommandContext#getUserId()
). Only the valid trading agreements
will be used. If no trading agreements are specified, all entitled
trading agreements will be used.
This input value is optional. The default value is
ContractCmdUtil#getCurrentTradingAgreements(CommandContext)
.
aTradingIds
- The identifiers of the trading agreements to be used to
determine the prices. If null or empty, the current or
entitled trading agreements will be used as described above.