📄 shoppingcartitem.java
字号:
public String getShoppingListId() {
if (attributes != null && attributes.containsKey("shoppingListId"))
return (String) attributes.get("shoppingListId");
return null;
}
public String getShoppingListItemSeqId() {
if (attributes != null && attributes.containsKey("shoppingListItemSeqId"))
return (String) attributes.get("shoppingListItemSeqId");
return null;
}
/** Returns true if shipping charges apply to this item. */
public boolean shippingApplies() {
GenericValue product = getProduct();
if (product != null) {
return ProductWorker.shippingApplies(product);
} else {
// we don't ship non-product items
return false;
}
}
/** Returns true if tax charges apply to this item. */
public boolean taxApplies() {
GenericValue product = getProduct();
if (product != null) {
return ProductWorker.taxApplies(product);
} else {
// we do tax non-product items
return true;
}
}
/** Returns the item's productId. */
public String getProductId() {
return productId;
}
/** Returns the item's description. */
public String getName() {
GenericValue product = getProduct();
if (product != null) {
String productName = ProductContentWrapper.getProductContentAsText(product, "PRODUCT_NAME", this.locale);
// if the productName is null or empty, see if there is an associated virtual product and get the productName of that product
if (UtilValidate.isEmpty(productName)) {
GenericValue parentProduct = this.getParentProduct();
if (parentProduct != null) {
productName = ProductContentWrapper.getProductContentAsText(parentProduct, "PRODUCT_NAME", this.locale);
}
}
if (productName == null) {
return "";
} else {
return productName;
}
} else {
return itemDescription;
}
}
/** Returns the item's description. */
public String getDescription() {
GenericValue product = getProduct();
if (product != null) {
String description = ProductContentWrapper.getProductContentAsText(product, "DESCRIPTION", this.locale);
// if the description is null or empty, see if there is an associated virtual product and get the description of that product
if (UtilValidate.isEmpty(description)) {
GenericValue parentProduct = this.getParentProduct();
if (parentProduct != null) {
description = ProductContentWrapper.getProductContentAsText(parentProduct, "DESCRIPTION", this.locale);
}
}
if (description == null) {
return "";
} else {
return description;
}
} else {
return null;
}
}
/** Returns the item's unit weight */
public double getWeight() {
GenericValue product = getProduct();
if (product != null) {
Double weight = product.getDouble("weight");
// if the weight is null, see if there is an associated virtual product and get the weight of that product
if (weight == null) {
GenericValue parentProduct = this.getParentProduct();
if (parentProduct != null) weight = parentProduct.getDouble("weight");
}
if (weight == null) {
return 0;
} else {
return weight.doubleValue();
}
} else {
// non-product items have 0 weight
return 0;
}
}
/** Returns the item's size (height * width * depth) */
public double getSize() {
GenericValue product = getProduct();
if (product != null) {
Double height = product.getDouble("productHeight");
Double width = product.getDouble("productWidth");
Double depth = product.getDouble("productDepth");
// if all are null, see if there is an associated virtual product and get the info of that product
if (height == null & width == null && depth == null) {
GenericValue parentProduct = this.getParentProduct();
if (parentProduct != null) {
height = parentProduct.getDouble("productHeight");
width = product.getDouble("productWidth");
depth = product.getDouble("productDepth");
}
}
if (height == null) height = new Double(0);
if (width == null) width = new Double(0);
if (depth == null) depth = new Double(0);
double size = height.doubleValue() * width.doubleValue() * depth.doubleValue();
return size;
} else {
// non-product items have 0 size
return 0;
}
}
/** Returns the base price. */
public double getBasePrice() {
if (selectedAmount > 0) {
return basePrice * selectedAmount;
} else {
return basePrice;
}
}
/** Returns the list price. */
public double getListPrice() {
return listPrice;
}
/** Returns the "other" adjustments. */
public double getOtherAdjustments() {
return OrderReadHelper.calcItemAdjustments(new Double(quantity), new Double(getBasePrice()), this.getAdjustments(), true, false, false, false, false);
}
/** Returns the total line price. */
public double getItemSubTotal() {
return (getBasePrice() * quantity) + getOtherAdjustments();
}
/** Returns the total line price for tax calculation purposes. */
public double getItemSubTotalForTax() {
return (getBasePrice() * quantity) + OrderReadHelper.calcItemAdjustments(new Double(quantity), new Double(getBasePrice()), this.getAdjustments(), true, false, false, true, false);
}
/** Returns the total line price for shipping calculation purposes. */
public double getItemSubTotalForShipping() {
return (getBasePrice() * quantity) + OrderReadHelper.calcItemAdjustments(new Double(quantity), new Double(getBasePrice()), this.getAdjustments(), true, false, false, false, true);
}
/** Returns the tax adjustments. */
public double getItemTax() {
return OrderReadHelper.calcItemAdjustments(new Double(quantity), new Double(getBasePrice()), this.getAdjustments(), false, true, false, false, false);
}
/** Returns the shipping adjustments. */
public double getItemShipping() {
return OrderReadHelper.calcItemAdjustments(new Double(quantity), new Double(getBasePrice()), this.getAdjustments(), false, false, true, false, false);
}
public void addAllProductFeatureAndAppls(Map productFeatureAndApplsToAdd) {
if (productFeatureAndApplsToAdd == null) return;
Iterator productFeatureAndApplsToAddIter = productFeatureAndApplsToAdd.values().iterator();
while (productFeatureAndApplsToAddIter.hasNext()) {
GenericValue additionalProductFeatureAndAppl = (GenericValue) productFeatureAndApplsToAddIter.next();
this.putAdditionalProductFeatureAndAppl(additionalProductFeatureAndAppl);
}
}
public void putAdditionalProductFeatureAndAppl(GenericValue additionalProductFeatureAndAppl) {
if (additionalProductFeatureAndAppl == null) return;
// if one already exists with the given type, remove it with the corresponding adjustment
removeAdditionalProductFeatureAndAppl(additionalProductFeatureAndAppl.getString("productFeatureTypeId"));
// adds to additional map and creates an adjustment with given price
String featureType = additionalProductFeatureAndAppl.getString("productFeatureTypeId");
this.additionalProductFeatureAndAppls.put(featureType, additionalProductFeatureAndAppl);
GenericValue orderAdjustment = this.getDelegator().makeValue("OrderAdjustment", null);
orderAdjustment.set("orderAdjustmentTypeId", "ADDITIONAL_FEATURE");
orderAdjustment.set("description", additionalProductFeatureAndAppl.get("description"));
orderAdjustment.set("productFeatureId", additionalProductFeatureAndAppl.get("productFeatureId"));
// NOTE: this is a VERY simple pricing scheme for additional features and will likely need to be extended for most real applications
orderAdjustment.set("amountPerQuantity", additionalProductFeatureAndAppl.get("amount"));
this.addAdjustment(orderAdjustment);
}
public GenericValue getAdditionalProductFeatureAndAppl(String productFeatureTypeId) {
if (this.additionalProductFeatureAndAppls == null) return null;
return (GenericValue) this.additionalProductFeatureAndAppls.get(productFeatureTypeId);
}
public GenericValue removeAdditionalProductFeatureAndAppl(String productFeatureTypeId) {
if (this.additionalProductFeatureAndAppls == null) return null;
GenericValue oldAdditionalProductFeatureAndAppl = (GenericValue) this.additionalProductFeatureAndAppls.remove(productFeatureTypeId);
if (oldAdditionalProductFeatureAndAppl != null) {
removeFeatureAdjustment(oldAdditionalProductFeatureAndAppl.getString("productFeatureId"));
}
//if (this.additionalProductFeatureAndAppls.size() == 0) this.additionalProductFeatureAndAppls = null;
return oldAdditionalProductFeatureAndAppl;
}
public Map getAdditionalProductFeatureAndAppls() {
return this.additionalProductFeatureAndAppls;
}
public Map getFeatureIdQtyMap() {
Map featureMap = new HashMap();
GenericValue product = this.getProduct();
if (product != null) {
List featureAppls = null;
try {
featureAppls = product.getRelated("ProductFeatureAppl");
List filterExprs = UtilMisc.toList(new EntityExpr("productFeatureApplTypeId", EntityOperator.EQUALS, "STANDARD_FEATURE"));
filterExprs.add(new EntityExpr("productFeatureApplTypeId", EntityOperator.EQUALS, "REQUIRED_FEATURE"));
featureAppls = EntityUtil.filterByOr(featureAppls, filterExprs);
} catch (GenericEntityException e) {
Debug.logError(e, "Unable to get features from product : " + product.get("productId"), module);
}
if (featureAppls != null) {
Iterator fai = featureAppls.iterator();
while (fai.hasNext()) {
GenericValue appl = (GenericValue) fai.next();
Double lastQuantity = (Double) featureMap.get(appl.getString("productFeatureId"));
if (lastQuantity == null) {
lastQuantity = new Double(0);
}
Double newQuantity = new Double(lastQuantity.doubleValue() + this.getQuantity());
featureMap.put(appl.getString("productFeatureId"), newQuantity);
}
}
}
if (this.additionalProductFeatureAndAppls != null) {
Iterator aapi = this.additionalProductFeatureAndAppls.values().iterator();
while (aapi.hasNext()) {
GenericValue appl = (GenericValue) aapi.next();
Double lastQuantity = (Double) featureMap.get(appl.getString("productFeatureId"));
if (lastQuantity == null) {
lastQuantity = new Double(0);
}
Double newQuantity = new Double(lastQuantity.doubleValue() + this.getQuantity());
featureMap.put(appl.getString("productFeatureId"), newQuantity);
}
}
return featureMap;
}
/** Removes an item attribute. */
public void removeAttribute(String name) {
if (attributes == null) attributes = new HashMap();
if (attributes.containsKey(name))
attributes.remove(name);
}
/** Sets an item attribute. */
public void setAttribute(String name, Object value) {
if (attributes == null) attributes = new HashMap();
attributes.put(name, value);
}
/** Return a specific attribute. */
public Object getAttribute(String name) {
if (attributes == null) return null;
return attributes.get(name);
}
/** Returns the attributes for the item. */
public Map getAttributes() {
return attributes;
}
/** Add an adjustment to the order item; don't worry about setting the orderId, orderItemSeqId or orderAdjustmentId; they will be set when the order is created */
public void addAdjustment(GenericValue adjustment) {
itemAdjustments.add(adjustment);
}
public void removeAdjustment(GenericValue adjustment) {
itemAdjustments.remove(adjustment);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -