📄 shoppingcart.java
字号:
while (i.hasNext()) {
count += ((ShoppingCartItem) i.next()).getQuantity();
}
return count;
}
/** Returns the total SHIPPABLE quantity in the cart. */
public double getShippableQuantity() {
double count = 0.0;
Iterator i = iterator();
while (i.hasNext()) {
ShoppingCartItem item = (ShoppingCartItem) i.next();
if (item.shippingApplies()) {
count += item.getQuantity();
}
}
return count;
}
/** Returns the total SHIPPABLE weight in the cart. */
public double getShippableWeight() {
double weight = 0.0;
Iterator i = iterator();
while (i.hasNext()) {
ShoppingCartItem item = (ShoppingCartItem) i.next();
if (item.shippingApplies()) {
weight += (item.getWeight() * item.getQuantity());
}
}
return weight;
}
/** Returns a List of shippable item's size. */
public List getShippableSizes() {
List shippableSizes = new LinkedList();
Iterator i = iterator();
while (i.hasNext()) {
ShoppingCartItem item = (ShoppingCartItem) i.next();
if (item.shippingApplies()) {
shippableSizes.add(new Double(item.getSize()));
}
}
return shippableSizes;
}
/** Returns the total weight in the cart. */
public double getTotalWeight() {
double weight = 0.0;
Iterator i = iterator();
while (i.hasNext()) {
ShoppingCartItem item = (ShoppingCartItem) i.next();
weight += (item.getWeight() * item.getQuantity());
}
return weight;
}
/** Returns a Map of all features applied to products in the cart with quantities. */
public Map getFeatureIdQtyMap() {
Map featureMap = new HashMap();
Iterator i = iterator();
while (i.hasNext()) {
ShoppingCartItem item = (ShoppingCartItem) i.next();
featureMap.putAll(item.getFeatureIdQtyMap());
}
return featureMap;
}
/** Returns true if the user wishes to view the cart everytime an item is added. */
public boolean viewCartOnAdd() {
return viewCartOnAdd;
}
/** Returns true if the user wishes to view the cart everytime an item is added. */
public void setViewCartOnAdd(boolean viewCartOnAdd) {
this.viewCartOnAdd = viewCartOnAdd;
}
/** Returns the order ID associated with this cart or null if no order has been created yet. */
public String getOrderId() {
return this.orderId;
}
/** Returns the first attempt order ID associated with this cart or null if no order has been created yet. */
public String getFirstAttemptOrderId() {
return this.firstAttemptOrderId;
}
/** Sets the orderId associated with this cart. */
public void setOrderId(String orderId) {
this.orderId = orderId;
}
/** Sets the first attempt orderId for this cart. */
public void setFirstAttemptOrderId(String orderId) {
this.firstAttemptOrderId = orderId;
}
/** Sets the currency for the cart. */
public void setCurrency(LocalDispatcher dispatcher, String currencyUom) throws CartItemModifyException {
String previousCurrency = this.currencyUom;
this.currencyUom = currencyUom;
if (!previousCurrency.equals(this.currencyUom)) {
Iterator itemIterator = this.iterator();
while (itemIterator.hasNext()) {
ShoppingCartItem item = (ShoppingCartItem) itemIterator.next();
item.updatePrice(dispatcher, this);
}
}
}
/** Get the current currency setting. */
public String getCurrency() {
if (this.currencyUom != null) {
return this.currencyUom;
} else {
return UtilProperties.getPropertyValue("general.properties", "currency.uom.id.default", "USD");
}
}
public void removeAllFreeShippingProductPromoActions() {
this.freeShippingProductPromoActions.clear();
}
/** Removes a free shipping ProductPromoAction by trying to find one in the list with the same primary key. */
public void removeFreeShippingProductPromoAction(GenericPK productPromoActionPK) {
if (productPromoActionPK == null) return;
Iterator fsppas = this.freeShippingProductPromoActions.iterator();
while (fsppas.hasNext()) {
if (productPromoActionPK.equals(((GenericValue) fsppas.next()).getPrimaryKey())) {
fsppas.remove();
}
}
}
/** Adds a ProductPromoAction to be used for free shipping (must be of type free shipping, or nothing will be done). */
public void addFreeShippingProductPromoAction(GenericValue productPromoAction) {
if (productPromoAction == null) return;
// is this a free shipping action?
if (!"PROMO_FREE_SHIPPING".equals(productPromoAction.getString("productPromoActionEnumId"))) return; // Changed 1-5-04 by Si Chen
// to easily make sure that no duplicate exists, do a remove first
this.removeFreeShippingProductPromoAction(productPromoAction.getPrimaryKey());
this.freeShippingProductPromoActions.add(productPromoAction);
}
public List getFreeShippingProductPromoActions() {
return this.freeShippingProductPromoActions;
}
public void addProductPromoUse(String productPromoId, String productPromoCodeId, double totalDiscountAmount, double quantityLeftInActions) {
if (UtilValidate.isNotEmpty(productPromoCodeId) && !this.productPromoCodes.contains(productPromoCodeId)) {
throw new IllegalStateException("Cannot add a use to a promo code use for a code that has not been entered.");
}
if (Debug.verboseOn()) Debug.logVerbose("Used promotion [" + productPromoId + "] with code [" + productPromoCodeId + "] for total discount [" + totalDiscountAmount + "] and quantity left in actions [" + quantityLeftInActions + "]", module);
this.productPromoUseInfoList.add(new ProductPromoUseInfo(productPromoId, productPromoCodeId, totalDiscountAmount, quantityLeftInActions));
}
public void clearProductPromoUseInfo() {
// clear out info for general promo use
this.productPromoUseInfoList.clear();
}
public void clearCartItemUseInPromoInfo() {
// clear out info about which cart items have been used in promos
Iterator cartLineIter = this.iterator();
while (cartLineIter.hasNext()) {
ShoppingCartItem cartLine = (ShoppingCartItem) cartLineIter.next();
cartLine.clearPromoRuleUseInfo();
}
}
public Iterator getProductPromoUseInfoIter() {
return productPromoUseInfoList.iterator();
}
public double getProductPromoUseTotalDiscount(String productPromoId) {
if (productPromoId == null) return 0;
double totalDiscount = 0;
Iterator productPromoUseInfoIter = this.productPromoUseInfoList.iterator();
while (productPromoUseInfoIter.hasNext()) {
ProductPromoUseInfo productPromoUseInfo = (ProductPromoUseInfo) productPromoUseInfoIter.next();
if (productPromoId.equals(productPromoUseInfo.productPromoId)) {
totalDiscount += productPromoUseInfo.getTotalDiscountAmount();
}
}
return totalDiscount;
}
public int getProductPromoUseCount(String productPromoId) {
if (productPromoId == null) return 0;
int useCount = 0;
Iterator productPromoUseInfoIter = this.productPromoUseInfoList.iterator();
while (productPromoUseInfoIter.hasNext()) {
ProductPromoUseInfo productPromoUseInfo = (ProductPromoUseInfo) productPromoUseInfoIter.next();
if (productPromoId.equals(productPromoUseInfo.productPromoId)) {
useCount++;
}
}
return useCount;
}
public int getProductPromoCodeUse(String productPromoCodeId) {
if (productPromoCodeId == null) return 0;
int useCount = 0;
Iterator productPromoUseInfoIter = this.productPromoUseInfoList.iterator();
while (productPromoUseInfoIter.hasNext()) {
ProductPromoUseInfo productPromoUseInfo = (ProductPromoUseInfo) productPromoUseInfoIter.next();
if (productPromoCodeId.equals(productPromoUseInfo.productPromoCodeId)) {
useCount++;
}
}
return useCount;
}
public void clearAllPromotionInformation() {
this.clearAllPromotionAdjustments();
// remove all free shipping promo actions
this.removeAllFreeShippingProductPromoActions();
// clear promo uses & reset promo code uses, and reset info about cart items used for promos (ie qualifiers and benefiters)
this.clearProductPromoUseInfo();
this.clearCartItemUseInPromoInfo();
}
public void clearAllPromotionAdjustments() {
// remove cart adjustments from promo actions
List cartAdjustments = this.getAdjustments();
if (cartAdjustments != null) {
Iterator cartAdjustmentIter = cartAdjustments.iterator();
while (cartAdjustmentIter.hasNext()) {
GenericValue checkOrderAdjustment = (GenericValue) cartAdjustmentIter.next();
if (UtilValidate.isNotEmpty(checkOrderAdjustment.getString("productPromoId")) &&
UtilValidate.isNotEmpty(checkOrderAdjustment.getString("productPromoRuleId")) &&
UtilValidate.isNotEmpty(checkOrderAdjustment.getString("productPromoActionSeqId"))) {
cartAdjustmentIter.remove();
}
}
}
// remove cart lines that are promos (ie GWPs) and cart line adjustments from promo actions
Iterator cartItemIter = this.iterator();
while (cartItemIter.hasNext()) {
ShoppingCartItem checkItem = (ShoppingCartItem) cartItemIter.next();
if (checkItem.getIsPromo()) {
cartItemIter.remove();
} else {
// found a promo item with the productId, see if it has a matching adjustment on it
Iterator checkOrderAdjustments = UtilMisc.toIterator(checkItem.getAdjustments());
while (checkOrderAdjustments != null && checkOrderAdjustments.hasNext()) {
GenericValue checkOrderAdjustment = (GenericValue) checkOrderAdjustments.next();
if (UtilValidate.isNotEmpty(checkOrderAdjustment.getString("productPromoId")) &&
UtilValidate.isNotEmpty(checkOrderAdjustment.getString("productPromoRuleId")) &&
UtilValidate.isNotEmpty(checkOrderAdjustment.getString("productPromoActionSeqId"))) {
checkOrderAdjustments.remove();
}
}
}
}
}
/** Adds a promotion code to the cart, checking if it is valid. If it is valid this will return null, otherwise it will return a message stating why it was not valid
* @param productPromoCodeId The promotion code to check and add
* @return String that is null if valid, and added to cart, or an error message of the code was not valid and not added to the cart.
*/
public String addProductPromoCode(String productPromoCodeId, LocalDispatcher dispatcher) {
if (this.productPromoCodes.contains(productPromoCodeId)) {
return "The promotion code [" + productPromoCodeId + "] has already been entered.";
}
// if the promo code requires it make sure the code is valid
String checkResult = ProductPromoWorker.checkCanUsePromoCode(productPromoCodeId, this.getPartyId(), this.getDelegator());
if (checkResult == null) {
this.productPromoCodes.add(productPromoCodeId);
// new promo code, re-evaluate promos
ProductPromoWorker.doPromotions(this, dispatcher);
return null;
} else {
return checkResult;
}
}
public Set getProductPromoCodesEntered() {
return this.productPromoCodes;
}
public synchronized void resetPromoRuleUse(String productPromoId, String productPromoRuleId) {
Iterator lineIter = this.iterator();
while (lineIter.hasNext()) {
ShoppingCartItem cartItem = (ShoppingCartItem) lineIter.next();
cartItem.resetPromoRuleUse(productPromoId, productPromoRuleId);
}
}
public synchronized void confirmPromoRuleUse(String productPromoId, String productPromoRuleId) {
Iterator lineIter = this.iterator();
while (lineIter.hasNext()) {
ShoppingCartItem cartItem = (ShoppingCartItem) lineIter.next();
cartItem.confirmPromoRuleUse(productPromoId, productPromoRuleId);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -