用於驗證購物車項目的範例程式碼
用於驗證購物車項目的這些程式碼僅提供作為參考之用。這份程式碼用於實行 com.ptc.sc.services.plugins.CommerceDelegate 介面之自訂委派的自訂 Java 來源檔案。您可以修改這些範例來驗證購物車項目的其他內容,比如數量與註記。
用於檢查可提供服務之購物車項目有效性的範例程式碼
下列範例程式碼檢查會檢查可提供服務之購物車項目的有效性:
public List<SCItem> validateCartItems(SCList cartItems, SCId cartSCId)
throws Exception {
List<SCItem> invalidItems = new ArrayList<>();
for (SCItem cartItem : cartItems.getItems())
{
SCItem part = cartItem.getObject(CartService.CART_ITEM_
RELATIONSHIP_OBJECT_CONTENT_REF);
if (!validatePart(part, cartSCId))
{
invalidItems.add(cartItem);
}
cartItem.putMetadata(ValidationUtil.METADATA_KEY_PART_VALIDATION,
part.getMetadataValue(ValidationUtil.METADATA_KEY_PART_VALIDATION),
part.getMetadataTitle(ValidationUtil.METADATA_KEY_PART_VALIDATION));
}
return invalidItems; // This is the list of invalid items
}
請在程式碼中注意以下各點:
• validateCartItems() 方法會使用 validatePart() 函數來檢查新增至購物車的指定零件與關聯零件項目是否可提供服務。
• validatePart() 函數會進一步檢查零件的有效性。任何無效的購物車項目都會新增至 invalidItems 清單。如需有關 validatePart() 函數的詳細資訊,請參閱驗證零件的函數。
用於禁用將無法提供服務的零件新增至購物車的範例程式碼
下列範例程式碼會禁用將無法提供服務的零件新增至購物車:
public List<SCItem> validateParts(SCList parts) throws Exception {
List<SCItem> invalidParts = new ArrayList<>();
for (SCItem part : parts.getItems()) {
if (!validatePart(part, null)) {
invalidParts.add(part);
}
}
return invalidParts;
}
請在程式碼中注意以下各點:
• validateParts 方法會使用 validatePart() 函數來檢查指定零件是否可提供服務。如需有關 validatePart() 函數的詳細資訊,請參閱驗證零件的函數。
• 若零件無法提供服務,在 Servigistics InService 使用者介面上便會看不到該零件的「新增至購物車」圖示。
驗證零件的函數
下列範例程式碼會示範 validatePart() 函數。此函數會驗證零件明細項目與關聯零件是否可提供服務:
protected boolean validatePart(SCItem part, SCId cartSCId) throws
Exception {
SCQueryInfo queryinfo = SCRequestContextUtility.getSCQueryInfo();
String serviceAttrVal = part.getAttribute(PartService.ATTRIBUTE
_SERVICEABLE);
if (serviceAttrVal == null || Boolean.parseBoolean(serviceAttr
Val)) {
//Incase of partline items,check if the part itself is also
serviceable.
SCItem associatedPart = part.getObject(PartsListService.
RELATIONSHIP_COLLECTION_ASSOCIATED_PART) != null ?
part.getObject(PartsListService.RELATIONSHIP_
COLLECTION_ASSOCIATED_PART) : null;
if (associatedPart != null) {
String associatedPartServiceability = associatedPart
.getAttribute(PartService.ATTRIBUTE_SERVICEABLE);
if (associatedPartServiceability == null || Boolean.
parseBoolean(associatedPartServiceability)) {
part.putMetadata(ValidationUtil.METADATA_KEY_PART
_VALIDATION, ValidationUtil.METADATA_VALUE_VALID, null);
return true;
} else {
boolean isShoppingCart = cartSCId != null &&
SCECartHelper.isSCEShoppingCart(cartSCId);
String message = SCEResourceBundleUtility.
getLocalizedMessage(SCECartRB.class.getName(),
isShoppingCart ? SCECartRB.ITEM_NOT
_SERVICEABLE_CART : SCECartRB.ITEM_NOT_SERVICEABLE,
queryinfo);
part.putMetadata(ValidationUtil.METADATA_KEY
_PART_VALIDATION, ValidationUtil.METADATA_VALUE_INVALID, message);
return false;
}
}
part.putMetadata(ValidationUtil.METADATA_KEY_PART
_VALIDATION, ValidationUtil.METADATA_VALUE_VALID, null);
return true;
} else {
boolean isShoppingCart = cartSCId != null &&
SCECartHelper.isSCEShopping
Cart(cartSCId);
String message = SCEResourceBundleUtility.getLocalized
Message(SCECartRB.class.getName(),
isShoppingCart ? SCECartRB.ITEM_NOT_SERVICEABLE
_CART : SCECartRB.ITEM_NOT_SERVICEABLE,
queryinfo);
part.putMetadata(ValidationUtil.METADATA_KEY_PART
_VALIDATION, ValidationUtil.METADATA_VALUE_INVALID, message);
return false;
}
}