Name

sn_install_base.CSMRelationshipService_ConsumerSoldProduct

Description

Implements extension point global.CSMRelationshipServiceEP for sold product consumer relationships. Extension point for CSM Relationship framework.

Script

var CSMRelationshipService_ConsumerSoldProduct = Class.create();
CSMRelationshipService_ConsumerSoldProduct.prototype = Object.extendsObject(sn_install_base.CSMRelationshipService_SoldProductRelatedParty, {
  initialize: function() {
  	sn_install_base.CSMRelationshipService_SoldProductRelatedParty.prototype.initialize.call(this);
  	this.IBUtil = new sn_install_base.InstallBaseUtil();
  },
  
  canProcess: function(relationship, additionalParams) {
  	if(gs.nil(relationship))
  		return false;
  	
  	var isConsumerSoldProduct = gs.nil(additionalParams) ? false : additionalParams[global.CSMRelationshipConstants.IS_CONSUMER_SOLD_PRODUCT];
  	if (isConsumerSoldProduct)
  		return (relationship == global.CSMBaseConstants.SOLD_PRODUCT_RELATED_PARTY) || (relationship == global.CSMRelationshipConstants.RELATIONSHIP_CONSUMER_SOLDPRODUCT);

  	// fallback to Tokyo implementation
  	return relationship == global.CSMRelationshipConstants.RELATIONSHIP_CONSUMER_SOLDPRODUCT;
  },
  
  _addPersonaCriteria: function(relationshipGR) {
  	relationshipGR.addNotNullQuery(global.CSMRelationshipConstants.FIELD_CONSUMER);
  	relationshipGR.addQuery(global.CSMRelationshipConstants.FIELD_CONSUMER, this._getConsumerId());
  },
  
  _addAdditionalConsumerCriteria: function(relationshipGR) {
  	if (this._getConsumerId()) {
  		this.IBUtil.addHouseHoldRelatedQuery(relationshipGR, this._getConsumerId());
  	}
  },
  
  _addAdditionalConsumerEntities: function(entities) {
  	if (this.context.entityName && this.context.entityName == global.CSMRelationshipConstants.FIELD_CONSUMER && this.context.current && this._isChildOf(global.CSMBaseConstants.CASE_TABLE, this.context.current.getTableName())) {
  		// add current.sold_product.consumer
  		if (!gs.nil(this.context.current[global.CSMRelationshipConstants.SOLD_PRODUCT])) {
  			var consumerEntity = this.context.current[global.CSMRelationshipConstants.SOLD_PRODUCT][global.CSMRelationshipConstants.FIELD_CONSUMER] + '';
  			if (!gs.nil(consumerEntity))
  				entities[consumerEntity] = true;
  		}
  		return;
  	}
  	
  	if (this._getConsumerId()) {
  		this.IBUtil.getAdditionalValidSoldProducts(this._getConsumerId(), entities);
  	}
  },
  
  getResponsibilities: function(relationship, accessLevel, respParams) {
  	var responsibilities = this.__getAdditionalParam("responsibilities");
  	if (!gs.nil(responsibilities))
  		return responsibilities;
  	var isSPViewer = (respParams && respParams.isSPViewer) || this.__getAdditionalParam("isSPViewer");
  	responsibilities = sn_install_base.CSMRelationshipService_SoldProductRelatedParty.prototype.getResponsibilities.call(this, relationship, accessLevel);
  	if (isSPViewer && accessLevel == global.CSMRelationshipConstants.ACCESS.READ)
  		responsibilities = this._addSPViewerResponsibility(responsibilities);
  	return responsibilities;
  },
  
  //adds consumer sold product viewer responsibility with out role check
  _addSPViewerResponsibility: function(responsibilities) {
  	if (gs.nil(responsibilities))
  		responsibilities = [];
  	responsibilities.push(global.CSMRelationshipConstants.CONSUMER_SOLD_PRDOUCT_VIEWER);
  	return responsibilities;
  },

  type: 'CSMRelationshipService_ConsumerSoldProduct'
});

Sys ID

52792b9b0f023010e6d4fd820b767e3e

Offical Documentation

Official Docs: