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