module PIM::Services::ReviewService

Constants

REVIEW_STATUS

Public Instance Methods

get_item_review_as_reviewer(primary_key) click to toggle source
# File services.rb, line 3975
def get_item_review_as_reviewer primary_key
  __review_service.getReviewerItemReview(primary_key)
end
get_item_review_as_supplier(primary_key, reviewer) click to toggle source
# File services.rb, line 3979
def get_item_review_as_supplier primary_key, reviewer
  __review_service.getSupplierItemReview(primary_key, reviewer)
end
item_review_map_for_java(item_review) click to toggle source
# File services.rb, line 4086
def item_review_map_for_java item_review
  PIM.javaify(PIM::Utils.as_json(item_review))
end
normalize_item_review(item_review) click to toggle source
# File services.rb, line 4082
def normalize_item_review item_review
  __convert(item_review, to: ItemReview, force: true)
end
save_supplier_item_review(item_review) click to toggle source

Save a single supplier-side review for the item specified in item_review.

item_review must be a PIM::Services::ReviewService::ItemReview, or a Hash with the corresponding keys. The following members must be set:

  • primary_key (MANDATORY)

  • channel_id (MANDATORY)

  • reviewer (MANDATORY) — channel sub-destination / GLN string

  • review_status (MANDATORY) — any of RECEIVED, APPROVED, REJECTED, REVIEWED

Optional members include comment, generated_comment, review_errors, review_warnings, review_remarks, custom_values and date.

# File services.rb, line 4038
def save_supplier_item_review item_review

  review = normalize_item_review(item_review)
  validate_supplier_item_review!(review, require_primary_key: true)

  __review_service.saveSupplierItemReviewFromRuby(item_review_map_for_java(review))
end
save_supplier_item_reviews(item_review, *items) click to toggle source

Save the same supplier-side review for each of the specified items.

channel_id, reviewer and review_status must be set in item_review. items are the primary keys of the items to review (one or more strings).

# File services.rb, line 4052
def save_supplier_item_reviews item_review, *items

  review = normalize_item_review(item_review)
  validate_supplier_item_review!(review, require_primary_key: false)

  primary_keys = PIM.javaify(items.flatten.compact)
  raise "Item review 'primaryKeys' must not be empty" if primary_keys.empty?

  __review_service.saveSupplierItemReviewsFromRuby(item_review_map_for_java(review), primary_keys)
end
save_supplier_item_reviews_for_tags(item_review, *tags) click to toggle source

Save the same supplier-side review for all items tagged with any of the specified tags.

channel_id, reviewer and review_status must be set in item_review. tags are one or more tag strings; all items carrying any of these tags receive the review.

# File services.rb, line 4069
def save_supplier_item_reviews_for_tags item_review, *tags

  review = normalize_item_review(item_review)
  validate_supplier_item_review!(review, require_primary_key: false)

  tag_list = PIM.javaify(tags.flatten.compact)
  raise "Item review 'tags' must not be empty" if tag_list.empty?

  __review_service.saveSupplierItemReviewsForTagsFromRuby(item_review_map_for_java(review), tag_list)
end
send_review(review_hash) click to toggle source

Save and send a review containing data from the specified review hash.

The hash can include the following keys:

  • primary_key: Primary key of the item the review is for (MANDATORY!)

  • review_status: Status for the review, any of RECEIVED, APPROVED, REJECTED, REVIEWED (MANDATORY!)

  • comment: The review’s comment (OPTIONAL, not set if nil)

  • generated_comment: The review’s “generated comment”, i.e. it can not be overwritten by a user (OPTIONAL, not set if nil)

  • custom_values: An optional Hash containing arbitrary values which can be used e.g. in XML transformations (OPTIONAL, not set if nil)

NOTE: If NO ‘generated_comment’ is provided, the ‘comment’ value is used as ‘generated_comment’ instead!

# File services.rb, line 3996
def send_review review_hash

  comment = PIM.get_value(review_hash, :comment)
  generated_comment = PIM.get_value(review_hash, :generated_comment, :generatedComment)

  # Legacy behavior: If only a 'comment' was specified, use that as 'generated_comment' instead
  if generated_comment.nil?
    generated_comment = comment
    comment = nil
  end

  primary_key = PIM.get_value(review_hash, :primary_key, :primaryKey)
  raise "Item review 'primaryKey' must not be empty" if PIM.is_empty?(primary_key)

  review_status = PIM.get_value(review_hash, :review_status, :reviewStatus)
  raise "Item review 'review_status' must not be empty" if PIM.is_empty?(review_status)
  review_status = review_status.to_s
  raise "Item review review status '#{review_status}' for primary key '#{primary_key}' must by any of #{REVIEW_STATUS.join(', ')}" unless REVIEW_STATUS.include?(review_status)

  __review_service.saveReviewerItemReviewFromRuby(
    primary_key,
    review_status,
    comment,
    generated_comment,
    PIM.get_value(review_hash, :custom_values, :customValues)
  )
end
validate_supplier_item_review!(item_review, require_primary_key: if require_primary_key) click to toggle source
# File services.rb, line 4090
def validate_supplier_item_review! item_review, require_primary_key:

  if require_primary_key
    raise "Item review 'primaryKey' must not be empty" if PIM.is_empty?(item_review.primary_key)
  end